如何在 Matlab 中的同一张图上连接 3 个直方图

How to concatenate 3 histograms on the same graph in Matlab

我在 Matlab 中使用 imhist 函数计算了 rgb 图像的 3 个直方图,每个通道一个。我想在同一张图上绘制这些直方图,例如,第一个(红色)通道的直方图在 x 轴上从 0 延伸到 255,第二个通道的直方图从 256 延伸到 511,最后是直方图第三个通道从 512 延伸到 767。 我怎样才能做到这一点?

假设精度为 uint8,每次调用 imhist 都会得到一个 256 x 1 的向量,因此您可以将它们连接成一个 768 x 1 的向量。之后,使用 histc 标志调用 bar。假设您将图像存储在 im 中,请执行以下操作:

red = imhist(im(:,:,1));
green = imhist(im(:,:,2));
blue = imhist(im(:,:,3));
h = [red; green; blue];
bar(h, 'histc');

例如,使用图像处理工具箱中的 onion.png 图像:

im = imread('onion.png');

图片是这样的:

使用上面的代码绘制串联直方图生成此图: