0

可能重复:
有没有办法检测图像是否模糊?

如何使用opencv计算给定图像的模糊度和清晰度?opencv 中是否有任何功能可以做到这一点?如果opencv中没有函数我该如何实现它?不,想法会很棒..

输入将是图像,输出应该是图像的模糊度和清晰度。

4

2 回答 2

3

我不知道opencv。

如果我试图获得一个图像在从锐利到模糊的光谱上的近似测量值,我会从观察开始,即图像部分的锐度从相邻像素之间的对比度中是显而易见的——比如max(c1 * abs(r1 - r2), c2 * abs(g1 - g2), c3 * abs(b1 - b2))在哪里c1-3对红、绿、蓝各通道的感知重要性进行加权,两个像素分别为(r1,g1,b1)和(r2,g2,b2))。

可以进行许多调整,例如提高每种颜色对功率的贡献,以强调亮度标度的黑暗(功率 <1)或明亮(功率 >1)端的变化。请注意,该max()方法分别考虑每个颜色通道的清晰度:尽管只有一个通道发生变化,但从 (255,255,255) 到 (0,255,255) 的变化非常显着。

您可能会发现从 RBG 转换为另一种颜色表示形式会更好,例如色相/饱和度/值(网上会有很多网站解释 HSV 空间和转换公式)。

在摄影方面,我们通常想知道图像的对焦部分是否清晰(由于浅景深导致的前景/背景模糊/散景是正常且经常需要的质量) - 最清楚的指示是高对比度在图像的某些部分,建议您想要相邻像素对比度的最大值。也就是说,一些聚焦的图像仍然可以具有非常低的局部对比度(例如纯色表面的图片)。此外,传感器上损坏的像素元件、镜头/传感器上的污垢以及高 ISO/长时间曝光噪声都可能表现为对比度极高的斑点。所以你的结果的有效性总是值得怀疑的,但它可能是正确的,有一定比例的时间。

于 2012-12-20T07:05:12.103 回答
2

我建议您对图像进行频繁分析。高波段的能量会告诉你图像非常清晰,而低波段的能量通常意味着图像模糊。对于计算频谱,您可以使用 FFTW 库。

问候,

于 2012-12-20T09:10:13.967 回答