2010-04-30 185 views
0

如果兩幅圖像的大小不同,是否可以使用Matlab比較兩幅圖像的顏色?我面臨的問題是,我想要檢測出彩色補丁的存在一個圖像?使用matlab對兩幅圖像進行顏色比較

+0

您會提供有關所提供答案的反饋嗎?你有沒有找到你要找的東西?需要更多詳細信息或反饋才能完全解決您的問題。 – Geoff 2010-05-07 15:08:42

+0

你好,對於最近的回覆抱歉,已經嘗試了所有給定的方法,但由estanford提供的解決方案對我來說效果很好。感謝你們所有人的幫助。 – user265536 2010-05-18 03:18:49

回答

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; 

(因爲我沒有IPT的時刻派上用場,該程序應被視爲僞即使它是或多或少正確的matlab語法。我不能運行它沒有IPT,所以我不能告訴它是否越野車)

一旦你調整圖像,使他們有共同的尺寸,問題與相同尺寸的兩幅圖像的顏色比較問題相同。另一方面,如果您有補丁的圖片和可能包含該補丁的圖片,則可以考慮使用二進制掩碼來限制互相關結果(IPT中的xcorr2)。有關該方法的更多信息,請參見MathWorks網站上的教程:http://www.mathworks.com/products/demos/image/cross_correlation/imreg.html