JPEG图像的伪影检测

4
有没有已知的算法可以在不查看图像的情况下自动检测出图像质量的退化?我考虑明显(可见)的损失重新编码的图像伪影,例如颜色失真、边缘噪声、块状等。例如,使用JPEG 80质量从原始来源编码的图像是好的。
我希望这是一个正确的提问地点,但如果管理员认为我应该在DSP stackexange或类似的地方提问,请转链。

2
你的意思是“不看图像”吗?这个文件能被读取吗? - Denys Séguret
可以读取。我的意思是不需要在图像查看器中打开它,通过观察图像来检测这些伪影。我希望能够自动检测可能的可见伪影,并保证准确性。 - vlad
2个回答

2

1

您需要评估寻找您定义的工件的方法。一旦对这些工件进行了表征,您将需要编写每种方法以查找这些工件。这些方法可能最好用于差异图像-原始(或中间)减去编码文件。您可能需要单独分析每个颜色通道。最简单的方法是阈值-编码图像的任何部分是否超出某个阈值?对于块状和边缘噪声,我想您可能会使用某种Hough变换来识别差异图像中的形状/线条,并可能使用小波变换或类似的东西,可以调整到特定频率模式以挑选出边缘周围的振铃。

编辑(回应klo的评论):没有参考,我不确定您是否能够实现您想要的。您仍然可以尝试在单个颜色通道上应用我提到的技术。困难的部分将是没有参考,您不一定会测量任何伪影,而是图像特征。您仍然可以使用一些先验信息,例如任何块状物都将与图像框架完全对齐-不旋转。任何真实图像可能不太可能具有许多完全与框架对齐的漂亮块状特征。您还可以应用边缘查找算法,如高斯差分或Canny边缘检测,然后在定位的边缘附近应用小波滤波器以寻找振铃。

对于已知的可编程方法,请参见Python的scikits-image(您从邮件列表中发布的帖子中了解到)或可能是具有Python绑定的OpenCV。我不熟悉Matlab的功能,但那也可能很好用。


是的,我正在寻找关于已知可编程方法来检测一些提到的工件的指针。原始图像不可用,否则我可能会做类似你描述的事情。 - vlad
刚才我也收到了Stefan的回复,我引用一下作为参考:“最简单的方法可能是加载图像,然后将其另存为JPG格式。如果图像大小保持不变,则您可能最初就有一个JPG文件。” - vlad
所以,看起来这是那种容易提出问题,但解决方案如果可能会过于复杂的问题之一。我曾经在一个场合使用过OpenCV(按照书上的SURF检测器),但我不知道是否有函数可以提供有关图像退化的一些信息。感谢您的输入。 - vlad

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