我们正在制作一个工具,可以拍摄一系列照片。与真实照片混合将是空白纸张的照片。我想通过识别空白页面的图像来分离系列照片。
我正试图找到一种识别空白表的方法。通过计算颜色或其他方法。也许文件大小?
我有GraphicsMagick,所以也许有一些有用的东西,代码将在PHP中,但如果它运行良好可以在任何东西。
答案 0 :(得分:1)
你可能会对颜色的数量做得很好,但我对这种效果感到有些不安 - 尽管没有更多的样本图像很难说。因此,如果您遇到困难,您可能希望查看两个项目的直方图 - paper 和"而不是纸张" 。
<强>纸张强>
不是纸
你可以看到纸张直方图有很陡的边和没有尾巴,而&#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都很可能是空白页。