2010-04-30 6 views
0

Возможно ли сравнить цвет двух изображений с использованием Matlab, если два изображения имеют разные размеры? Проблема, с которой сталкивается, заключается в том, что я хочу обнаружить наличие цветного патча в изображение?Сравнение цветов двух изображений с использованием matlab

+0

Вы могли бы предоставить отзывы о представленных ответах? Вы нашли то, что ищете? Более подробная информация или обратная связь необходимы для полного ответа на ваш вопрос. – Geoff

+0

Здравствуйте, извините за поздний ответ, попробовали все данные подходы, но решение, предоставленное estanford, сработало хорошо для меня. Спасибо всем вам за помощь. – user265536

ответ

0

Это было бы немного грубо, но вы можете обрезать изображения до минимального общего размера, если это будет достаточно для вашего приложения:

A = imread("image1.jpg"); 
B = imread("image2.jpg"); 

rows = min(size(A,1), size(B,1)); 
cols = min(size(A,2), size(B,2)); 

croppedA = A(1:rows, 1:cols, :); 
croppedB = B(1:rows, 1:cols, :); 
1

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

Если они семантически разные, то их гистограммы будут вероятно отличается.

1

У вас есть панель обработки изображений? Если это так, вы можете подойти к этой проблеме, взяв изображения, разбив их на свои цветные каналы компонентов, изменив размер отдельных каналов и повторно собрав их в измененные цветные изображения. Я написал программу, чтобы сделать это некоторое время назад, и я помню код ищет что-то вроде этого:

function imout = ResizeRGB(imin,height,width) 
imout = zeros(height,width,3); 

iminR = imin(:,:,1); 
iminG = imin(:,:,2); 
iminB = imin(:,:,3); 

imoutR = imresize(iminR, [height width]); 
imoutG = imresize(iminG, [height width]); 
imoutB = imresize(iminB, [height width]); 

imout(:,:,1) = imoutR; 
imout(:,:,2) = imoutG; 
imout(:,:,3) = imoutB; 

(Поскольку у меня нет под рукой ПТИ на данный момент, эта программа должна рассматриваться псевдокод, даже если это более или менее в правильном синтаксисе Matlab. Я не могу запустить его без IPT, поэтому я не могу сказать, является ли это ошибкой или нет.)

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

С другой стороны, если у вас есть изображение патча и изображение, которое может содержать патч, вы можете рассмотреть возможность использования бинарной маски для порога результатов кросс-корреляции (xcorr2 в IPT). Для получения дополнительной информации об этом подходе есть учебное пособие на веб-сайте MathWorks: http://www.mathworks.com/products/demos/image/cross_correlation/imreg.html

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