2017-10-23 1 views
0

그래서 히스토그램에 배치 된 이미지의 RGB 값을 원하고 그 히스토그램을 다른 이미지의 히스토그램과 비교합니다. 현재 이것은 코드 : I 잠재적 거의을 갖는 것으로 화상을 분류 할 수 있도록Matlab의 이미지에서 RGB 값의 히스토그램 비교

if (size(cimg, 3) ~= 3) 
error('rgbhist:numberOfSamples', 'Input image must be RGB.') 
end 
nBins = 256; 
rHist = imhist(cimg(:,:,1), nBins); 
gHist = imhist(cimg(:,:,2), nBins); 
bHist = imhist(cimg(:,:,3), nBins); 
hFig = figure; 
%figure 

subplot(1,2,1);imshow(cimg) 
subplot(1,2,2); 
hold on 
h(1) = stem(1:256, rHist); %hold on 
h(2) = stem(1:256 + 1/3, gHist, 'g'); 
h(3) = stem(1:256 + 2/3, bHist, 'b'); 
hold off 
set(h, 'marker', 'none') 
set(h(1), 'color', [1 0 0]) 
set(h(2), 'color', [0 1 0]) 
set(h(3), 'color', [0 0 1]) 
axis square 

코드는 RGB 히스토그램 값과 함께 이미지를 출력하고, I는 해당 히스토그램을 사용하는 방법의 다른 히스토그램과 비교함에 다른 이미지와 같은 색상?

답변

1

Kullback Leibler Divergence을 사용하여 2 개의 히스토그램 사이의 거리를 계산할 수 있습니다.
히스토그램을 배포판으로 취급하기는 쉽습니다.

KL 다이버전스가 대칭이 아니기 때문에 (즉 [X, Y]와 [Y, X]) 두 번 계산할 수 있고 평균을 취할 수 있습니다.

관련 문제