par*_*ars 2 opencv image-processing blur motion-blur
我想检测图像的模糊程度,可能可以称为“模糊扩展”。我为此找到了一篇有用的论文:
http://www.cs.cmu.edu/~htong/pdf/ICME04_tong.pdf
我使用 OpenCV 并实现了本文中的所有步骤,但结果与本文的结果不同。
有人可以给我任何检测“模糊扩展”的建议吗?
您可以使用下一个算法检测模糊图像:
计算灰度图像的最大绝对二阶导数(对于每个点):
d[x,y] = max(abs(2*d[x,y] - d[x,y+1] -d[x,y-1]), abs(2*d[x,y] - d[x+1,y] -d[x-1,y]));
Run Code Online (Sandbox Code Playgroud)计算这个估计图像的直方图(最大绝对二阶导数)。
找到此直方图的上分位数 (0,999)。
如果该值小于阈值(大约 25% 的图像动态范围),则图像模糊。
如果要估计模糊值,请对缩小图像执行步骤 2-5。
您可以自己编写这些算法,也可以使用Simd 库实现中的算法(免责声明:我是作者)。
Simd::BgrToGray或Simd::BgraToGray(对于第 1 步)。Simd::AbsSecondDerivativeHistogram (对于步骤 2-5)。Simd::ReduceGray2x2 (对于第 6 步)。