确定图像是否为“空白”纸张

时间:2015-04-28 04:36:24

标签: php image image-recognition graphicsmagick

我们正在制作一个工具,可以拍摄一系列照片。与真实照片混合将是空白纸张的照片。我想通过识别空白页面的图像来分离系列照片。

我正试图找到一种识别空白表的方法。通过计算颜色或其他方法。也许文件大小?

我有GraphicsMagick,所以也许有一些有用的东西,代码将在PHP中,但如果它运行良好可以在任何东西。

3 个答案:

答案 0 :(得分:1)

你可能会对颜色的数量做得很好,但我对这种效果感到有些不安 - 尽管没有更多的样本图像很难说。因此,如果您遇到困难,您可能希望查看两个项目的直方图 - paper "而不是纸张"

<强>纸张

enter image description here

不是纸

enter image description here

你可以看到纸张直方图有很陡的边和没有尾巴,而&#34;不是纸张&#34; 直方图有更粗的尾巴。图像的峰度恰恰衡量了 - 尾巴的肥胖程度。较高的峰度意味着图像中的更多差异是不频繁的极端偏差的结果,而不是频繁适度的偏差。所以你会期望&#34;而不是纸张&#34; 具有更高的峰度,因为它具有图像中其他东西的&#34; lumps&#34; 而不是相当统一的论文。

如果你让ImageMagick报告两张图像的峰度,你可以看到明显的差异。

identify -verbose notpaper.jpg | grep -E "kurtosis:|Red:|Green:|Blue:|Overall"
    Red:
      kurtosis: 1.03434
    Green:
      kurtosis: 1.22576
    Blue:
      kurtosis: 0.593927
    Overall:
      kurtosis: 1.49035

对于论文......

identify -verbose paper.jpg | grep -E "kurtosis:|Red:|Green:|Blue:|Overall"
    Red:
      kurtosis: -0.953723
    Green:
      kurtosis: -0.980636
    Blue:
      kurtosis: -1.06634
    Overall:
      kurtosis: -0.0151458

正如我所说,你可能会对颜色的数量做得很好,但如果你遇到问题,可以考虑一下。

答案 1 :(得分:0)

尝试使用imagecolorat参考Here

<?php
$im = imagecreatefrompng("php.png");
$rgb = imagecolorat($im, 10, 15);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;

var_dump($r, $g, $b);
?>

或者

<?php
$im = imagecreatefrompng("php.png");
$rgb = imagecolorat($im, 10, 15);

$colors = imagecolorsforindex($im, $rgb);

var_dump($colors);
?>

这将是这样的

array(4) {
  ["red"]=>
  int(119)
  ["green"]=>
  int(123)
  ["blue"]=>
  int(180)
  ["alpha"]=>
  int(127)
}

检查白色值并进行比较。如果所有值都是255,255,255那么这是白皮书。

答案 2 :(得分:0)

gm identify IMG_0551.JPG -format %k任何&lt; 10k都很可能是空白页。