如何在 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');
图片是这样的:
使用上面的代码绘制串联直方图生成此图:
我在 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');
图片是这样的:
使用上面的代码绘制串联直方图生成此图: