如何识别/检查模糊图像?

6
我们如何在C#中识别给定图像是否模糊,或者它有多少百分比模糊?是否有可用的API?或者有什么算法可以帮助我们实现这一功能?
谢谢!

你知道原始图片是什么吗? - tom10
我没有原始图像,如果有的话,检查它们之间的相似性就非常容易了。 我想分析从相机拍摄的图像,并想要分离模糊的图像。 - Zaheer
6个回答

9
你可以进行2D-FFT并搜索频率系数是否超过一定阈值(以消除由于四舍五入/边缘误差而产生的误报)。模糊图像从不会具有高频系数(在频率空间中具有大的X/Y值)。
如果您想与某个特定的模糊算法进行比较,请将单个像素通过2D-FFT运行,并检查其他图像是否具有超出参考FFT范围的频率分量。这意味着您可以使用相同的算法,无论使用什么类型的模糊算法(盒式模糊,高斯模糊等)。

4
+1 - 这就是正确的方向:当然,找到这个门槛并不是易事。 - Jacob
3
+1,这绝对是正确的做法。也许您想先对图像应用窗函数,这样在边界处就不会有尖锐的角(FFT“期望”周期性信号)。 - Niki
3
需要注意的是边缘会增加高频功率。此外,可以将低频总功率与高频功率进行比较,而不是使用绝对阈值。 - tom10

4

针对一个非常具体的问题(查找拍摄于古籍上的模糊照片),我编写了这个基于ImageMagick的脚本:

https://gist.github.com/888239


1

仅凭模糊的位图,您可能做不到。

如果给出原始位图和模糊位图,则可以逐像素比较两者并使用简单的差异来告诉您它有多模糊。


1

考虑到您可能没有原始图像,对模糊图像执行某种边缘检测可能是值得尝试的。

这篇论文提出了一种使用Harr小波变换的方法,但正如其他帖子所说,这是一个相当复杂的主题。


0

虽然我是在提问后8-9年才发布这个答案,但当时我通过对图像应用模糊处理并与原始图像进行比较来解决了这个问题。

这个想法是,当我们对非模糊图像应用模糊处理并进行比较时,图像之间的差异非常大。但是当我们对模糊图像应用模糊处理时,图像之间的差异几乎只有10%。 通过这种方式,我们解决了识别模糊图像的问题,结果相当不错。

结果发表在以下会议论文中: 通过图像过滤创建数字生活故事(2010)


-1

嗯...你有原始图像吗?虽然这不是一件简单的事情,如果可能的话...

这只是一个随机的想法,但你可以通过对“模糊”和原始图像进行傅里叶变换,并逐渐低通滤波原始图像以查看是否可以获得具有非常相似频率特征的东西来完成它。测试“相似性”本身就是相当复杂的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接