Я хочу сделать проверку качества изображения. Возможно, рассчитать некоторый показатель этого качества.
Например, скажем, пользователь A загружает что-то вроде http://img.ruphp.com/image/Selfie.jpg
и пользователь B загружает что-то вроде http://img.ruphp.com/image/selfie.jpg
Очевидно, что фото B профессионально и качественно. Другое дело, что использовать размер и вес изображения (?) Нехорошо, потому что изображение B может быть изменено, фотошоп или что-то еще (потеряны некоторые данные изображения).
Есть ли способ обнаружить эту разницу? 🙂 Есть идеи?
Я все еще думаю о дальнейших показателях, но на данный момент …
Профиль IPTC и / или авторское право
Я бы сказал, что большинство профессиональных фотографов не выпустили изображение из двери без профиля IPTC и уведомления об авторских правах.
Вы можете найти это с помощью ImageMagick следующим образом:
identify -verbose image.jpg | grep -i profile
и ваше второе изображение
Profile-8bim: 104 bytes Profile-iptc: 92 bytes
Вы действительно можете прочитать профиль следующим образом:
convert b.jpg 8BIMTEXT:- 8BIM#1028="IPTC" 2#103#Original Transmission Reference="53616c7465645f5fb085443d8e4c5898afc929fa83c3cc27d7bf6da5d5f63efdf47888b1a19ac93e" 2#0="�"
или
convert b.jpg IPTCTEXT:- 2#103#Original Transmission Reference="53616c7465645f5fb085443d8e4c5898afc929fa83c3cc27d7bf6da5d5f63efdf47888b1a19ac93e" 2#0="�"
Разрешение (dpi)
Другой дискриминант, вероятно, будет резолюцией. Большинство мобильных телефонов, любителей и веб-изображений имеют разрешение 72dpi или 96dpi. Большинство профессиональных фотографов, как правило, предпочитают 300 точек на дюйм для печати высокого качества, поэтому я, вероятно, установил бы порог около 150 точек на дюйм. Вы можете получить разрешение следующим образом:
identify -verbose image.jpg | grep -i resolution
или быстрее и более лаконично
identify -format %x image.jpg 300
Я отмечаю, что ваше первое изображение имеет 72dpi, а второе – 300 точек на дюйм.
Область применения
Другая идея, о которой я думаю, – это то, что происходит, если вы попытаетесь улучшить изображение в цифровом виде, а затем увидите различия между улучшенным изображением и оригиналом и попытайтесь что-то вывести из этого. Предположительно, профессионально отредактированный образ не будет таким восприимчивым к усилению на основе, что он уже должен быть «хорошим». Итак, скажем, мы выбираем параметр ImageMagick -enhance
и -enhance
ваши два изображения, а затем изучаем различия между оригинальными и улучшенными изображениями. Я собираюсь переключиться на формат PNG
без потерь, чтобы избежать эффектов квантования JPEG
.
# Make PNG convert a.jpg a.png # Enhance "a.png" and save as "ae.png" convert a.png -enhance ae.png # Compare "a.png" with "ae.png" compare -metric rmse a.png ae.png -format "%[distortion]" resa.png 360.479 (0.00550055)0.00550055
Теперь выполните ту же процедуру для второго, профессионального изображения:
# Make a comparably sized PNG convert b.jpg -resize 1200x1200 b.png convert b.png -enhance be.png compare -metric rmse b.png be.png -format "%[distortion]" resb.png 421.08 (0.00642527)0.00642527
Я все еще думаю об этом …
Imagemagick читать качество
$ identify -verbose tornado_ok.jpg | grep Quality
Для получения дополнительной информации об идентификации
Получил информацию по этому вопросу