1.imhist函数:

h=imhist(f,b)

其中,f为输入图像,h是该图像的直方图数据,b是用来形成直方图的“容器”数目,即把所有灰度级分成几份的数量(b默认为256)。若按上面一行代码中使用imhist函数,则并不会画出图像对应的直方细杆图,而是得到直方图数据的一个向量(h)。若要画出直方细杆图,则要写成这种形式:

imhist(f,b)

就会直接画图了。

2.bar函数:

bar(horz,z,width)

上述形式就可直接绘制直方条形图,其中参数z是一个包含将被绘制的点的行向量,即对应上面imhist函数得到的h;horz是一个与z同维数的向量,对应水平刻度,若horz省掉,水平轴会从0-length(z)等分为若干个单位;witdth是一个介于0和1之间的数,默认为0.8,对应条形的宽度。

3.stem函数:

stem(horz,z,'LineSpec')

上述形式就可直接绘制直方细杆图,其中参数horz、z和bar函数中的一样;LineSpec是对应下表的一个三元组:

LineSpec对应的三元组表
颜色说明符线型说明符标记点说明符
符号颜色符号线型符号标记
m深红-.虚点线h六角星
y:点线p五角星
c--虚线<左指三角形
b-实线>右指三角形
g绿v下指三角形
r^上指三角形
wd菱形
ks方形
\times
.
*星号
o
+加号

例如,当LineSpec=’y-o‘,生成的杆状图其线条和标记点都是黄色,线条为实线,标记点为圆。若LineSpec='fill',则默认颜色为蓝色,线条为实线,标记点为圆。

4.plot函数:

plot(horz,z,'LineSpec')

上述形式就可直接绘制直方折线图,其参数与上述几个函数对应的相同参数意义一致。

四种函数画直方图的演示代码如下:

img=imread('e.jpg');
figure1=figure;
imshow(img)%展示原始图像

%绘制细杆状图
figure2=figure;
subplot(121)
imhist(img)%得到每一个灰度级对应的像素点个数组成的向量,并画出来对应的细杆状图
subplot(122)
imhist(img,50)

%绘制直方图
h=imhist(img,20); %将0-255的灰度值分成20分
horz=linspace(0,255,20);
figure3=figure;
bar(horz,h)


%绘制杆状图
figure4=figure;
stem(horz,h,'fill')

%绘制折线图
figure5=figure;
plot(horz,h,'b-o')

结果如下:

 

 

 

 

感谢阅读!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐