所以我希望将图像的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直方图值,如何使用该直方图将其与其他直方图进行比较,以便我可以将图像分类为具有与另一个图像几乎相同的颜色?
答案 0 :(得分:1)
您可以使用Kullback Leibler Divergence来计算2个直方图之间的距离 这很容易,因为您可以将直方图视为分布。
由于KL发散不是对称的,因此可以计算两次(即[X,Y]和[Y,X])并取平均值。