【问题标题】:How Can I Check for Blurry Images?如何检查模糊图像?
【发布时间】:2015-03-02 14:16:38
【问题描述】:

我正在寻找一种以编程方式检查图像是否模糊的方法,并且有兴趣听到我必须这样做的任何选项。我可以使用任何编程语言,尽管我最熟悉 PHP 和 Python。

提前感谢您提出的任何想法。

【问题讨论】:

标签: image image-processing image-segmentation blurry


【解决方案1】:

这里有很多关于计算高斯拉普拉斯算子和理论知识的建议,但我感觉你想要一些实用且简单的东西,所以我建议你像这样使用 ImageMagick 在命令行计算拉普拉斯算子。它安装在大多数 Linux 发行版上,可用于 Windows 和 OS X。

这是一个清晰的图像:

然后我在命令行中像这样计算它的拉帕拉克算子

convert face1.jpg colorspace gray -define convolve:scale='!' -bias 50% \
   -morphology Convolve Laplacian:0   laplacian.png

并得到这样的统计数据,查看最小值/最大值和标准偏差:

identify -verbose laplacian.png | grep -E "min|max|deviation"

  min: 44 (0.172549)
  max: 200 (0.784314)
  standard deviation: 4.52133 (0.0177307)

现在我对模糊版本做同样的事情

我明白了:

identify -verbose laplacian.png | grep -E "min|max|deviation"
min: 118 (0.462745)
max: 135 (0.529412)
standard deviation: 0.835725 (0.00327735)

您可以从 PHP 中退出并使用我给出的命令,或者使用 PHP 绑定 ImageMagick。

如果您不想要图像输出并且只对统计信息感兴趣,则可以避免创建这样的中间文件:

convert blur.jpg -colorspace gray       \
  -define convolve:scale='!' -bias 50%  \
  -morphology Convolve Laplacian:0 -verbose info: | grep -Ei "min|max|deviation"

【讨论】:

  • 我知道这个答案很古老,但我想问一下,为了识别模糊图像,我应该查看哪个值(最小值、最大值或 sd?)?我将此命令应用于各种模糊图像,我发现结果各不相同。一些模糊图像的最大值约为 129,而其他模糊图像的最大值约为 200。对于普通图像也是如此。我无法根据最大值识别图像。示例:普通图像(最小值:51,最大值:205),模糊图像 #1(最小值:125,最大值:129),模糊图像 #2(最小值:55,最大值:201)...
  • @Raptor 事情已经过去了 7 年,在 Stack Overflow 上也有新的、知识渊博的人。我鼓励您提出一个带有代表图像的新问题,因为问题是免费的,并引起新成员的注意,而不是在这个旧问题上标记您将获得有限的观众。
  • 我当然会。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-06-10
  • 2010-12-08
  • 1970-01-01
  • 2014-02-02
  • 2017-12-21
  • 2013-10-26
  • 2014-12-18
  • 1970-01-01
相关资源
最近更新 更多