2012-10-03 2 views
-1
nspace1=rgb2ycbcr(ims); 
nspace2= rgb2ycbcr(imt); 
ms=double(nspace1(:,:,1)); 
mt=double(nspace2(:,:,1)); 
m1=max(max(ms)); 
m2=min(min(ms)); 
m3=max(max(mt)); 
m4=min(min(mt)); 
d1=m1-m2; 
d2=m3-m4; 

% Normalization 
dx1=ms; 
dx2=mt; 
dx1=(dx1*255)/(255-d1); 
dx2=(dx2*255)/(255-d2); 
[mx,my,mz]=size(dx2); 

답변

4

두 이미지 (imsimt)를 정확히 동일한 방식으로 처리하고 있습니다. 각 행의 기능을 정확하게 설명하려고합니다.

ycbcrmap = rgb2ycbcr (지도) : 당신이 문서를 자신을 보면 당신은 물론 또한/당신의 두뇌/execute the code step by step를 사용하여 변수를 각 단계를 검토 ..

nspace1=rgb2ycbcr(ims); 
ms=double(nspace1(:,:,1)); 

rgb2ycbcr documentation에서이 스스로 찾을 수 있습니다 지도의 RGB 값을 YCbCr 색상 공간으로 변환합니다. map은 Mx 3 배열이어야합니다. ycbcrmap은 YCbCr 휘도 (Y) 및 색차 (Cb 및 Cr) 색상 값을 열로 포함하는 Mx 3 매트릭스입니다.

그래서 nspace1에는 이미지 ims의 각 RGB 입력에 대한 YCbCr 값이 포함되어 있습니다. 두 번째 줄은 각 픽셀에 대해 YCbCR 삼중 항의 첫 번째 요소를 추출합니다. 위의 내용을 읽을 수있는 휘도입니다.

m1=max(max(ms)); 
m2=min(min(ms)); 

첫 번째 max은 각 열의 최대 값을 찾아서 행을 남깁니다. 두 번째 max은 결과 행의 최대 값을 찾고 전체 행렬의 절대 최대 값을 남깁니다. min(min(...))에 대해서도 마찬가지입니다.

d1=m1-m2; 

이는 휘도의 수치 범위입니다.

dx1=ms; 
dx1=(dx1*255)/(255-d1); 

은 주석에서 알 수있는 것처럼 정규화라고 가정하고 있지만 정규화처럼 보이지는 않습니다. 나는이 있어야한다고 생각 : 0

[mx,my,mz]=size(dx2); 

255 사이의 값으로 모든 휘도 값을 변환

dx1 = (ms-m2)*255/d1; 

내가 어려운 것을 안, 파악하는 당신까지 마지막을 떠나 .

+0

+1 : 좀 더 일반적으로 휘도 (또는 그 값에 대한 값의 간격)를 'dx1 = abs (range (2) -range 1)) * (ms - m2)/d1 + min (범위)' – gevang

+0

@ Mark Ransom '255-d1'로 나누는 것보다 .. 여전히 틀린 imo –

+0

@GuntherStruyf 물론 네 말이 맞아. 내 의견을 삭제하십시오. m1 = 255 및 m2 = 0을 사용하면 쉽게 실패하는 것을 알 수 있습니다. –

관련 문제