在Matlab中使用"imhist"函数在同一图上绘制多个直方图

5

我刚开始接触Matlab,并尝试进行一些图像处理。我有两张彩色图片,需要将它们转换成灰度图。我的目标是在同一张图中展示这两张灰度图的直方图,以便比较它们。我的代码如下:

a=imread('image1.jpg')
agray=rgb2gray(a)
b=imread('image2.jpg')
bgray=rgb2gray(b)
figure,imhist(agray)
figure,imhist(bgray)

这段代码可以分别查看两个直方图,但我不知道如何将它们合并成一个图以便进行比较。请帮忙!

2个回答

4

如果您希望将两个数据在同一 坐标轴 上呈现,且不介意遮挡下方的条形图,则可以尝试以下方法(由于我没有图像工具箱,所以未经过测试):

a=imread('image1.jpg')
agray=rgb2gray(a)
b=imread('image2.jpg')
bgray=rgb2gray(b)
[counts,x] = imhist(agray)
stem(counts,x,'b')
hold on
[counts,x] = imhist(bgray)
stem(counts,x,'r')

1
在我的Matlab版本中,使用stem(x,counts,'b','Marker','none')会更美观。此外,分号;也是你的好朋友;) - Buck Thorn
是的,没有标记会好得多;而且更类似于没有输出参数的 imhist - Luis Mendo
1
不客气!如果某个答案对您有用,在StackOverflow中,将其标记为“已接受”(在答案左侧打勾)是标准做法。每个问题只能标记一个答案为已接受。我告诉你这个信息是因为我看到你是新来的。 - Luis Mendo

1
尝试这个!
figure (x),
subplot(2,1,1); imhist(agray);
subplot(2,1,2); imhist(bgray);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接