imagemagick - сравните два JPEG с маскирующим изображением - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу сравнить два изображения в формате JPG.Я знаю параметр "fuzz" из-за компенсации JPG.Теперь я хочу сравнить эти два изображения с маской - я не хочу сравнивать весь прямоугольник, только его часть.В результате я хочу, чтобы разница в пикселях вычислялась как процентная разница, а на втором шаге я хочу изображение, которое показывает разницу в красном / черном.

Я нашел эту статью: Новая функция сравнения

Мой старый способ (сравните весь прямоугольник):

/usr/bin/compare -metric ae /mnt/usbstorage/tmp/15.jpg /mnt/usbstorage/tmp/14.jpg -compose src /dev/null 2>&1
=> 8432 Pixels different

Мой старый способ (сравните весь прямоугольник и нарисуйте его в изображение):

/usr/bin/compare -metric ae /mnt/usbstorage/tmp/15.jpg /mnt/usbstorage/tmp/14.jpg -compose src /dev/null -highlight-color Red -lowlight-color Black /mnt/usbstorage/tmp/diff.gif

Моя новая попытка (сравните изображения с маскирующим изображением):

/usr/bin/compare -read-mask /mnt/usbstorage/tmp/mask.png -metric ae /mnt/usbstorage/tmp/15.jpg /mnt/usbstorage/tmp/14.jpg -compose src /dev/null 2>&1
=> 8432 Pixels different

Различные пиксели не изменятся!8432 <=> 8432 ... так что моя маска ничего не меняет!

Когда я делаю эту команду, чтобы сохранить разницу в новом изображении, для маски есть серые места, а для черных - нет.-пиксели и красные области для разных пикселей -> идеально.Изображение идеальное, сравнение пикселей остается прежним.Почему?

Я не понимаю - у вас есть объяснение / пример?Я что-то не так делаю?

Вот файлы:

14.jpg

15.jpg

mask.png

1 Ответ

0 голосов
/ 14 февраля 2019

Маскированное сравнение работает только в IM 7.0.3.9 или выше.В IM 7 перед сравнением необходимо добавить магию:

magick compare -metric rmse -read-mask mask.png 14.jpg 15.jpg 14_15_diff.png


enter image description here

Красные области - это области, где они различаются под маской.Белые области находятся там, где они одинаковы под маской.Серые области находятся за пределами маски.

...