2010-04-30 6 views
0

두 이미지의 크기가 다른 경우 두 이미지의 색상을 비교할 수 있습니까? 직면하고있는 문제는 컬러 패치가 있는지 감지하고 싶습니다. 이미지?색상 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; 

(나는 순간에 편리한 IPT를 가지고 있지 않기 때문에, 그 프로그램이 고려되어야한다 의사를 그것은 다소 정확한 MATLAB 문법입니다 .IPT없이 실행할 수 없기 때문에 버그인지 아닌지 알 수 없습니다.)

이미지의 크기를 조정하여 크기가 같으면 문제가 발생합니다 동일한 크기의 두 이미지의 색상을 비교하는 문제와 동일합니다.

패치의 그림과 패치가 포함될 수있는 그림이있는 경우 교차 상관 관계 결과 (IPT의 xcorr2)를 임계 값으로 설정하기 위해 바이너리 마스크를 사용하는 것이 좋습니다. 이러한 접근 방식에 대한 자세한 내용은 MathWorks 웹 사이트의 자습서를 참조하십시오. http://www.mathworks.com/products/demos/image/cross_correlation/imreg.html