检测照片与渲染图像

时间:2014-10-13 22:23:41

标签: image image-processing numpy photos

我正在尝试,给定一个随机图像并使用NumPy,检测它是照片与“渲染”图像(如地图)。图像可以是彩色或黑色&白色和渲染图像中的渐变可能很容易使用0-255,因此计算颜色对灰度无效。我无法使用EXIF / etc元数据。

方法到目前为止我已经很快就尝试了,没有任何跳出来:

  • 转换为灰度,然后查看直方图
  • 2D FFT然后查看每个频段的频率直方图(RGB和YUV)
  • 看看手段&亮度的标准偏差
  • 使用CannySobel过滤器进行边缘检测
  • 比较每张图片中随机21x21补丁的GLCM属性
  • 将图像压缩为JPEG(适用于照片)或Deflate(也称为PNG)(适用于地图)并比较每像素位数

(随意建议我回去看看)

我通常会分析较大区域的随机样本,而不是像下面显示的示例那样的小作物,因此忽略偶然边缘情况的方法应该有效。

目前有前景的潜在客户如下所述,我尚未看到的想法是:

  • 没有留下

我应该关注哪些算法/方法?

HSV

仍然是黑白图像的进展中的工作:) - 但色调&所有渲染图像的饱和度很多比照片更苛刻,并且通常也具有高出2-5倍的最大值。

image_hsv = skimage.color.rgb2hsv(image_rgb)

hue_band, sat_band, val_band = np.squeeze(np.dsplit(image_hsv, 3))

band_hist, _ = np.histogram(hue_band.ravel(), bins=256)
peak_idx = np.signal.argrelmax(band_hist, order=20)[0]

peaks = band_hist[peak_idx]

对比度

通过以下代码计算,检查对比度似乎稍好一些。照片通常看起来<= 130,并且地图通常>≥150。虽然黑白地图的对比度非常低(例如,下图中为11):

# image_rgb is a 3D numpy array: [
#                                 [ [r,g,b], [r,g,b], ... ],
#                                 [ [r,g,b], [r,g,b], ... ],
#                                 ...
#                                ]

# these constants from http://en.wikipedia.org/wiki/Relative_luminance
rgb2lum = numpy.array([0.2126, 0.7152, 0.0722])
luminance = numpy.dot(image_rgb, rgb2lum)

# for B&W images, luminance == image_bw already
rms_contrast = numpy.sqrt(numpy.mean(numpy.square(luminance)))

目前的方法

我目前所使用的是:

  1. 从图像中分析最多8x 512x512px随机补丁,这些补丁都会对结果进行投票:
    1. 对于RGB图像,将色块转换为HSV颜色
    2. 创建B&amp; W数据或Hue波段(np.histogram()
    3. 的直方图(256个分档)
    4. 计算直方图中的非空格,如果小于100则投票为“地图”。
    5. 获取直方图的峰值(signal.argrelmax(hist, order=20)
    6. 如果最大峰值中的总像素的> 9%,则最大峰值> = 2倍于峰值的平均值,则投票为'map ”。
    7. 否则,投票为'photo'
  2. 如果补丁中50%的投票数为“地图”,则结果为“地图”
  3. 在彩色图像上运行时非常好,如果数据集中有多个图像,并且可以在每个图像级别重新投票,结果会再次变好。

    B&amp; W图像仍有点受欢迎。

    示例图像

    高对比度彩色照片。有些可能会过度暴露:
    High-contrast colour photo

    低对比度彩色照片:
    Low-contrast colour photo

    高对比度B&amp; W照片。同样,有些可能会过度暴露:
    High-contrast B&W photo

    低对比度B&amp; W照片:
    Low-contrast B&W photo

    低对比度彩色地图:
    Low-contrast colour map

    高对比度地图:
    High-contrast map

    B&amp; W地图:
    B&W Map

1 个答案:

答案 0 :(得分:0)

我同意这可能略微超出了SO的范围。也许将其提交给Cross Validated

为了让您入门,我建议您查看每张图片的texture features,而不是颜色或对比度。你所拥有的边缘检测思想是朝着正确方向迈出的一步。

将每张图片转换为一组数字纹理特征后,您可以使用binary classifier将照片与合成图像分开。