是否有已知的算法可以在不查看图像的情况下以编程方式检测图像质量下降?
我考虑有损重新编码的明显(可见)图像伪影,如颜色失真、边缘噪声、块状等
。例如,从原始源编码的 JPEG 质量 80 的图像很好。
我希望这是一个正确的地方,但如果版主认为我应该在 DSP stackexange 或类似网站上提问,请重新链接。
是否有已知的算法可以在不查看图像的情况下以编程方式检测图像质量下降?
我考虑有损重新编码的明显(可见)图像伪影,如颜色失真、边缘噪声、块状等
。例如,从原始源编码的 JPEG 质量 80 的图像很好。
我希望这是一个正确的地方,但如果版主认为我应该在 DSP stackexange 或类似网站上提问,请重新链接。
有一个名为 CMFD(Copy-Move Forgery Detection)的库,它执行伪影检测和其他算法来检测图像伪造。它可从http://www5.cs.fau.de/research/software/copy-move-forgery-detection/免费获得。
从我所做的少数测试来看,它确实可以很好地检测到伪造品,但有很多误报。
您需要评估用于查找您定义的工件的方法。一旦你有了这些特征,你就需要编写每个方法来找到这些工件。这些方法可能最好用于差异图像 - 原始(或中间)减去编码文件。您可能必须分别分析每个颜色通道。最简单的是一个阈值——编码图像的任何部分是否偏离了某个阈值?对于块状和边缘噪声,我想您可能会使用某种霍夫变换来识别差异图像中的形状/线条,并可能使用小波变换或类似的东西,可以调整到特定的频率模式以挑选出边缘周围的振铃.
编辑(回应 klo 的评论):没有参考,我不确定你是否能够完成你想要的。您仍然可以尝试在单个颜色通道上应用我提到的技术。困难的部分是,如果没有参考,您不一定会测量任何工件,而是测量图像特征。您仍然可以使用一些先验信息,例如任何块状将完全与图像框架定向 - 不旋转。任何真实的图像都不太可能有许多完全以框架为导向的块状特征。您还可以应用边缘查找算法,例如高斯差分或 Canny 边缘检测,然后在定位边缘附近应用小波滤波器以查找振铃。
对于已知的可编程方法,请参阅 python 的 scikits-image(您从您的帖子到邮件列表中了解)或可能具有 Python 绑定的 OpenCV。我不熟悉 Matlab 的功能,但这可能也可以。