在Matlab中比较来自图像的RGB值的直方图

时间:2017-10-23 15:54:51

标签: image matlab image-processing compare histogram

所以我希望将图像的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直方图值,如何使用该直方图将其与其他直方图进行比较,以便我可以将图像分类为具有与另一个图像几乎相同的颜色?

1 个答案:

答案 0 :(得分:1)

您可以使用Kullback Leibler Divergence来计算2个直方图之间的距离 这很容易,因为您可以将直方图视为分布。

由于KL发散不是对称的,因此可以计算两次(即[X,Y]和[Y,X])并取平均值。