升级检测方法

信息处理 图像处理 图片
2022-01-25 13:54:38

我正在尝试实施一种解决方案,该解决方案将在某种程度上评估一张图片,告诉它从较小的图像放大的可能性有多大。

我的方法如下:

  1. 拍一张来历不明的照片(缩放与否)
  2. 使用一些仅锐化明显边缘的技术进行锐化 (1)
  3. 使用高斯差提取边缘
  4. 测量结果图像的熵

然后缩小图像并将其放大回相同的大小并比较熵。或者然后放大图像并将其缩小到相同的大小并比较熵。

听起来合理吗?我应该使用什么技术作为(1)?另外,也许我应该分小步做,这样我就不会引入太多的人工点?我的意思是,如果图像被放大(最好是立即放大到目标尺寸),这并不重要 - 但如果图像没有放大,这种增量改进对于图片来说会比立即拍摄和放大更好吗?

4个回答

这是穷人的方法:

var histogram = []
foreach pixel
    histogram.append(abs(pixel.value - pixel.south.value))
    histogram.append(abs(pixel.value - pixel.east.value))
sort(histogram)
sharpness = histogram[histogram.count * 0.95]
upscaled = sharpness < X // You choose X experimentally

鉴于升级方法可以进行后处理,并且数据可以四舍五入或量化,完美的检测听起来很困难。但是,如果使用了基本的放大方法,使用多项式插值(线性、二次、三次),则图像可能具有几乎分段的多项式部分。分段多项式部分在现实世界的图像中非常不自然。

然后,可以使用具有一些消失矩的不同双正交小波(低次多项式对小波不可见)。小波子带至少在视觉上可以表现出接近于零的系数组、不同于自然噪声的方差块,或者像蒙德里安绘画那样的垂直和水平条纹。如下图所示。

地质模型神器

这不是真正的图像,而是作为图像投射的地质网格。黄色条纹告诉我们,所谓的细网格确实放大了 1 倍5使用简单的线性插值,我们可以在原始数据上进行验证。然而,这对于双三次和量化可能不太明显。

这是图像伪造检测的一个实例。图像伪造检测, Hany Farid 的一项调查(重采样一章)可以为您提供其他想法。

我不太确定它是如何工作的,但我使用了它并且工作正常。也许您可以尝试一下并弄清楚它是如何完成的?

http://rest7.com/image_upscaled

在那里,您可以上传您的图片并获得原始尺寸,如下所示:

{
  "is_upscaled": true,
  "current_width": "2000",
  "current_height": "928",
  "original_width": "1750",
  "original_height": "696",
  "accuracy": "82%",
  "success": 1
}

比较图像的一种简单方法是模板匹配

它通常用于在较大的图像中找到较小的图像。

您也可以使用它来比较两个相同大小的图像的相似程度。

我链接到的opencv文章列出了许多不同的相关函数,例如平方差之和和相关系数。

这对于您正在做的事情是否足够准确,只有在您尝试过之后才会变得清晰。