2014-10-12 5 views
0

Я хочу сравнить края двух изображений «jpg». Для этого я использовал функцию «imshowpair». Но мне нужно получить разницу как процентное значение. Как мне это сделать? Пожалуйста, помогите ....Разница двух изображений в процентах

img1 = imread('3.jpg'); 
img2 = imread('4.jpg'); 

gr1 = rgb2gray(img1); 
gr2 = rgb2gray(img2); 

ed1 = edge(gr1,'canny'); 
ed2 = edge(gr2,'canny'); 

comp1 = imshowpair(ed1,ed2,'diff'); 
+0

Вы должны показать нам, что вы пробовали с фактическими фрагментами кода. – dramzy

+0

Я добавил код, который я использовал .. –

+0

Я не понимаю ваш вопрос. 'imshowpair' с опцией' diff' просто вычитает два изображения вместе и помещает абсолютный знак. Я не понимаю, как вы можете получить это в процентах. Не могли бы вы пояснить, что вы имеете в виду в процентах? Вы хотите сравнить, сколько разных пикселей есть в одинаковых пространственных местоположениях между изображениями? – rayryeng

ответ

0

Любые два изображения I и J того же размера можно сравнить с различными способами; существует множество методов сходства и различий, которые могут быть использованы (косинус-метрика, кросс-корреляция, кросс-корреляция градиента, взаимная информация и т. д.).

В вашем случае, как я понимаю ваш вопрос, «каково отношение пикселей, которые отличаются в обоих изображениях». На этот вопрос ответ:

d = sum(abs(I(:)-J(:)) > eps)/numel(I); 

но поймите, что это довольно слабая сравнительная метрика. Например, он не сообщает вам , как разные изображения находятся в тех местах, где они не равны.

Это может быть улучшено (например, путем вычисления средней разницы) и может быть расширено до случая, когда I и J не имеют того же размера (например, путем их первого изменения размера или сравнения пар случайных паттов равного размера вместо).

Смежные вопросы