目录
写在前面
最近正在尝试在室外使用灰度摄像头,但是不同时间点阳光照射情况都有不小的差别,感觉对大津法的影响稍微有些大。所以就想能不能用现有的资源简陋地补偿一下曝光时间。
不过我最后没有测试这个模型,因为我后来使用了一个更强力的算法,能够直接无视曝光的差异。但我觉得这个模型还是有一些借鉴意义的。它非常简陋,以至于初学者都能够直接上手,但是从理论上来看是能够实现的。和chatgpt讨论这个模型时,chatgpt也给出了肯定的答复。
希望能对大家起到一定的帮助。
大津法阈值
大津法(Otsu)是一种用于图像分割的算法,它可以将图像分成两个或更多的部分,其中每个部分具有相似的灰度值。
大津法的原理是基于图像的灰度直方图,它假设图像由前景和背景组成,前景和背景的像素灰度值不同。通过对图像的灰度直方图进行分析,找到一个阈值,将图像分为两个部分,使得分割后两个部分的类内方差最小、类间方差最大,从而达到最优化分割的目的。
简单来说就是将图像的灰度值聚成两个类,聚类的条件是:找到一个阈值使得聚出来的两个类之间的方差最大,简单来说,也就是前景类和背景类两个类的灰度值差异性最大。
更简单来说,就是找到一个阈值,使得前景和背景的对比度最大。
所以通过大津法获取的阈值是一个能够表征图像对比度的量。
平均阈值
该方法基于图像中像素灰度值的平均值,将低于平均值的像素视为背景,高于平均值的像素视为前景。
图像的平均阈值可以通过以下步骤计算:
- 将灰度图像中所有像素的灰度值相加,得到灰度值的总和。
- 将总和除以像素数量,得到平均灰度值。
- 将平均灰度值作为阈值,将像素分为背景和前景两部分。
图像的平均阈值简单易懂,并且计算速度比较快,适用于对比较均匀的图像进行分割。但是对于复杂的图像,由于亮度分布不均匀,可能会出现分割效果不佳的情况。
简单来说,平均阈值求的是整个图像的平均灰度值。
显而易见,平均阈值,也就是平均灰度值是一个能够表征图像平均亮度的量。
曝光时间自调节模型
计算本次图像的大津法阈值和平均阈值,并与上一次的大津法阈值和平均阈值进行比较。
计算它们的变化量,并用大津法阈值的变化量除以平均阈值的变化量得到一个参数:
其中,表示本次图像的大津法阈值与上次图像的大津法阈值之差,用于表征本次相较于上一次的对比度变化情况。表示本次图像的平均阈值与上次图像的平均阈值之差,用于表征本次相较于上一次的平均亮度变化情况。
▲根据参数判断本次图像的阈值选取是否合理:
如果过大,说明在图像的平均亮度没有太大变化的情况下,由于阈值选取而导致的图像对比度的变化剧烈,显然这在大多数情况下是不合理的。
如果过小,说明在图像的平均亮度剧烈变化的情况下,由于阈值选取而导致的图像对比度没有明显变化,显然这在大多数情况下也是不合理的。
如果介于某个合适的范围之间,那么就说明平均亮度和图像对比度在相互作用的情况下合理变化,大概率是合理的。
▲如果通过判断出阈值选取不合理,可以通过现有条件补偿阈值或者曝光时间。下面以补偿曝光时间为例说明。
如果需要调整曝光时间,可以根据上一次的曝光时间和反映平均亮度变化的平均阈值,来计算本次的曝光时间:
其中,是需要根据实验调节得到的参数,可以理解为对于每个单位的平均亮度变化,需要增加多少单位的曝光时间来适应光线的变化。
总结
这样的数学模型可以帮助我们自动调节摄像头的曝光时间,来适应不同的光线条件,以获得更好的二值化效果和图像质量。
但是该模型仅能用于对精度要求较低的场合,适用于初学者。如果想要达到更好的效果,需要修正模型,或是换用更高级的算法。
另外,使用该模型,对于的测试和选取亦十分重要。