在 matlab 中:我有一个 RGB 图像“img”。如果我写:
tmpImg=imhist(img);
我得到了整个图像的直方图。我想计算“minVal”和“maxVal”之间的像素直方图。
我怎么做?谢谢
您可以在每个通道的值范围内使用逻辑索引,即对于图像 I,I
介于minVal
和之间的值maxVal
是
I(I>minVal&I<maxVal)
因此,对于 3 通道(彩色)图像,您可以拥有每个通道的直方图,如下所示:
I = double(imread('peppers.png')); % example image
minVal = 50;
maxVal = 200;
nBins = 50; % histogram bins
for i=1:3
C = I(:,:,i);
[countsC(i,:),binsC(i,:)] = hist(C(C>minVal&C<maxVal),nBins);
end
figure; hold all; % draw 3 "bounded" histograms on same plot
c = {'r','g','b'};
for i=1:3
stem(binsC(i,:), countsC(i,:), c{i}, '.');
end
axis tight