在本文中,我们将学习如何使用色调饱和值(HSV)颜色模型作为特征提取的基础,建立一个简单的模型来区分白天和黑夜,并打开cv进行图像处理。本教程的代码在此处提供,白昼和黑夜分类器Day and Night Classifier
引言
色调饱和值(HSV)是RGB的替代颜色模型。色调(H)是色轮中的三原色和三次色。饱和度(S)是颜色的纯度和强度,它越低,颜色越接近灰色。值(V)指的是颜色的相对明度或暗度。这些值中的每个值都有一个限制;H的取值范围为0-360,S和V的取值范围为0-100。
我们将利用颜色模型的value(V)属性。决定亮度图像的图像的值(V)。这是我们要提取的特征。然后我们会设置一个阈值,可以将白天的图像与夜间的图像分开。
虽然我们可以设置一定的阈值,但是我们试图利用训练图像在基本推导的基础上找到一个最优的阈值。
我们将使用OpenCV库从图像中提取这些特征。
必备条件
OpenCV是一个计算机视觉软件包,我们将使用它来处理和操作图像。numpy用于数值计算,matplotlib用于图像显示。
1.导入用于测试的库和镜像
我们将使用可以在这里找到的户外图像,用于训练和测试的户外图像。该图像已经被注释,即被分类为白天和夜间图像。outdoor images for training and testing.
2.图像及其标签的预处理
我们已经指定了到训练图像的路径,但是原始图像有噪声,并且没有很好地优化以进行分析。例如,图像可能有不同的大小,或者标签可能会被我们发短信。这是设计模型的第一步。数据清理。所以我们会写一个帮手来帮助我们。
下面是我们的图像文件夹结构的外观
因此,我们希望我们的帮助器读取此目录并输出带有相应标签的图像,以便img001.jpg具有日期标签。
此外,我们将使用数字对标签进行编码。1表示白天,0表示夜晚。
以下是代码:
第8-18行负责检查文件夹中的所有图像,如果是图像,则将其附加到listimg_list。
第24行是我们标准化图像的位置,在本例中,我们将图像的大小调整为1110×600
第28-32行是我们将标签从文本编码为数字的位置。如果为day,则为1,否则为0
第34-43行是我们从第8行创建的列表并标准化图像和编码标签的位置。
让我们将其导入到我们的项目中,并运行以下代码来查看是否设置了帮助器。
这将为您提供形状(600,1110,3)标签:1的输出
你应该从容不迫地品味这一刻,不是吗?:}
3.获取图片的平均亮度
接下来,我们将编写一个函数(基于HSV颜色模型)来获取图像的平均亮度。因此,该分类问题的特征是亮度。我们正在提取并使用它来解释新的图像。
基本上,我们选择HSV颜色模型的V值,并将其除以图像的面积。
在示例图像上运行此功能可以了解图片的亮度。
4.使用标记昼夜差异的所选阈值估计标签
一旦我们有了一张照片的平均亮度,我们就可以在白天和晚上的照片之间划出一个阈值。
以下是评估标签的代码:
相当直截了当,对吧?
但是我们怎么知道门槛呢?最大的要求。
答案是:我们在计算了一系列白天和夜间图像的平均亮度后进行选择,然后根据它做出一个直观的猜测。
这是我们的起点。在这种情况下,我们选择120。
RESULT=ESTIMATE_LABEL(img,120)
但是120是最理想的门槛吗?
5.寻找最佳阈值
我们可以在阈值为120结束我们的模型预测,我们将有86%的准确率。但是,我们是否可以通过调整或修改阈值来提高精确度,使其接近白天和黑夜之间的微妙界限-就像白天和黑夜本身一样。
因此,LIL优化器代码:
在这里,我们基于阈值来估计标签,如果它是正确的,我们就离开它。如果不是,我们计算当前阈值和平均亮度的平均值-因为阈值基于平均亮度。
运行此命令会产生阈值的新值-116。
PS:可以用一种不同的方式调整阈值,即平均阈值和avg_brightness。这是我在这段代码中使用的技术。
6.测试图像上的分类器用完
我们有我们的门槛。我们有我们的估计器。让我们在测试图像上运行我们的模型,看看我们做得怎么样。
我们从清理考试日开始,然后重新安排(第7行)。既然我们已经有了门槛。我们可以估算一下我们的牌子。然后我们记录我们的输出-无论分类是否正确。
我们的准确率是87.5%,而仅仅选择120作为阈值时的准确率是86%。而且还有改进的空间。
想。还可以做些什么来进一步提高准确性?您能再添加一个功能来跟踪平均亮度吗?有没有办法将阈值移到最佳值?
…
就这样,我们走到了旅途的终点。没有昂贵数学的机器学习模型。请不要客气,不要再提问题了。这里是GitHub上完整代码的链接。full code on github
注:此任务是UDacity计算机视觉课程…的一部分通过教学,你可以学到更多的东西。
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/29/%e5%88%a9%e7%94%a8hsv%e9%a2%9c%e8%89%b2%e6%a8%a1%e5%9e%8b%e5%92%8copencv%e6%9e%84%e5%bb%ba%e6%98%bc%e5%a4%9c%e5%88%86%e7%b1%bb%e5%99%a8/