检测图像/视频序列中的模糊

gol*_*ean 33 image-processing

我曾经在照片stackexchange上问过这个问题,但是认为它也可能在这里有用,因为我想在我的实现中以编程方式实现它.

我正在尝试为我的成像​​管道实现模糊检测算法.我想要检测的模糊是 -

1)相机抖动:使用手拍摄的照片,当快门速度较低时移动/抖动.

2)镜头聚焦误差 - (景深)问题,例如聚焦于不正确的物体导致一些模糊.

3)运动模糊:使用不够高的快门速度拍摄场景中的快速移动物体.例如,夜间移动的汽车可能会在图像中显示其前灯/尾灯的痕迹,如模糊.

如何检测这种模糊并以某种方式量化它以根据计算出的"模糊度量"做出一些决定?

模糊检测背后的理论是什么?

我正在寻找好的阅读材料,我可以在C/Matlab中为此实现一些算法.

谢谢.

-广告.

mpe*_*kov 38

当您考虑原因时,运动模糊和相机抖动是一回事:相机和物体的相对运动.你提到慢速快门 - 这两种情况都是罪魁祸首.

焦点失误是主观的,因为它们取决于对摄影师的意图.不知道什么摄影师希望把重点放在,这是不可能实现这一目标.即使你确实知道你想要关注什么,它仍然不会是微不足道的.

抛开那种现实主义,让我向你保证,模糊检测实际上是一个非常活跃的研究领域,并且已经有一些指标可以在你的图像上试用.以下是我最近使用过的一些内容:

  • 边缘宽度.基本上,对图像执行边缘检测(使用Canny或其他方法),然后测量边缘的宽度.模糊的图像将具有更宽的边缘,更加分散.更清晰的图像将具有更薄的边缘.Google为Marziliano提供的"无参考感知模糊指标" - 这是一篇着名的论文,它描述了这种方法,足以实现全面实施.如果您正在处理运动模糊,则边缘将在运动方向上模糊(宽).
  • 存在细节.看看我对这个问题的答案(编辑过的部分).
  • 频域方法.拍摄图像的DCT系数的直方图(假设您正在使用JPEG)可以让您了解图像的精细细节. 这是您直接从JPEG文件中获取DCT系数的方法.如果非DC项的计数较低,则图像可能模糊.这是最简单的方法 - 频域中有更复杂的方法.

还有更多,但我觉得这应该足以让你开始.如果您需要有关这两个点的更多信息,请启动Google学术搜索并环顾四周.特别是,查看Marziliano论文的参考资料,了解过去曾尝试过的内容.


rug*_*312 8

有一篇很好的论文叫做:" 聚焦测量算子分析形状从焦点 "(https://www.researchgate.net/publication/234073157_Analysis_of_focus_measure_operators_in_shape-from-focus),它对30种不同的技术进行了比较.

在所有不同的技术中,基于"拉普拉斯"的方法似乎具有最佳性能.大多数图像处理程序如:MATLAB或OPENCV已经实现了这种方法.以下是使用OpenCV的示例:http://www.pyimagesearch.com/2015/09/07/blur-detection-with-opencv/