Мы создаем инструмент, который позволит сделать цепочку фотографий. С реальными фотографиями будут смешаны фотографии чистых листов бумаги. Я хочу отделить серию фотографий, идентифицируя изображения пустых страниц.
Я пытаюсь найти способ идентифицировать чистый лист. Либо путем подсчета цветов, либо каким-либо другим методом. Может быть, размер файла?
У меня есть GraphicsMagick, так что, возможно, там есть что-то полезное, и код будет на PHP, но может быть во всем, если он будет работать хорошо.
Вы можете справиться с количеством цветов, но я немного обеспокоен тем, что это работает хорошо, хотя трудно сказать, не имея больше образцов изображений. Так что если у вас возникнут трудности с этим, вы можете посмотреть на гистограммы двух пунктов: бумага а также «не бумага».
Бумага
Не бумага
Вы можете видеть, что бумажная гистограмма имеет очень крутые стороны и не имеет хвостов, тогда как «не бумага» гистограмма имеет более толстые хвосты. Куртоз изображения — это мера именно жирности хвоста. Более высокий эксцесс означает, что большая разница в изображении является результатом нечастых крайних отклонений, в отличие от частых отклонений небольшого размера. Так что вы ожидаете «не бумага» иметь более высокий эксцесс, потому что он имеет «комки» других вещей в изображении, а не довольно однородной бумаге.
Если вы получите 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
Как я уже сказал, вы можете справиться с количеством цветов, но, возможно, подумайте об этом, если у вас возникнут проблемы.
попробуй использовать imagecolorat
refrence Вот
<?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, то это белая бумага.
gm identify IMG_0551.JPG -format %k
что-нибудь <10k скорее всего чистый лист.