比较2图像的焦点

我正在尝试开发对象检测算法。 我打算比较2个不同焦距的图像。 一个正确聚焦在物体上的图像和一个正确聚焦在背景上的图像。

通过阅读有关自动对焦算法 。 我认为它可以通过对比度检测无源自动对焦算法来完成。 它适用于传感器上的光强度。

但我不确定图像文件中的光强度值是否与传感器的值相同。 (它不是RAW图像文件.jpeg图像。)jpeg图像中的光强度值是否与传感器上的相同? 我可以用它来检测对比度检测的焦点正确性吗? 有没有更好的方法来检测哪个图像区域正确聚焦在图像上?

我试图稍微处理图像,我看到了一些进展。 这就是我使用opencv做的事情:

  • 使用cvtColor将转换后的图像转换为灰色(I,Mgrey,CV_RGB2GRAY);
  • 对它们进行下采样/抽取,因为它们很大(几Mb)
  • 使用http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=sobel#cv.Sobel获取绝对水平和垂直渐变的总和。 结果如下。 聚焦时的前景看起来比背景更亮,反之亦然。

在此处输入图像描述

您可以尝试使用原始灰度图像上的matchTemplate()转换来匹配和减去这些图像; 然后使用结果的凸包assembly件作为初始化掩模,用于抓取切割和插入彩色图像。 如果你不熟悉抓斗,请查看我对这个问题的回答 。

但可能是一个更简单的方法也可以在这里工作。 您可以尝试将强烈模糊应用于渐变图像而不是精确匹配,并查看在这种情况下给您带来的差异。 下面的图片展示了当我改变二进制掩码中的差异时的想法。

在此处输入图像描述在此处输入图像描述

查看图片会很有帮助。 我理解你是正确的你尝试使用焦点(或模糊)提示将背景与前景分开。 图像中的对比度取决于焦点,但取决于目标的对比度。 因此,如果目标是云,你将永远不会获得锋利的边缘或高对比度。 最后,使用少量压缩的jpeg图像不应影响算法的关键属性。

我会尝试在一行中获得所有可能焦距的多个图像,然后根据焦距(甚至更好的聚焦距离)构建对比度图。 无论对象自身的对比度如何,此图中的峰值都将为您提供到对象的距离。 但请注意,这种视觉提示的准确性随着观看距离而急剧下降。

这是我希望您在小窗口中测量绝对梯度之和时获得的:

在此处输入图像描述

下一步将是将焦点区域与图形中没有特定峰值的纯色区域组合在一起,但同样属于同一对象。 有时获得聚焦区域的凸包可以帮助确定对象的原始边界。