如何利用matlab绘制直方图?

如题所述

首先需要说明的是,如果你说的是一道完整的题目,则这道题目没有唯一解,因为题目中没有说明原始图像的灰度级数(比如原始图像是16个灰度级的,或者是32个灰度级的,等等)。为了给你提供一个解题思路,现在人为假设原始图像是16个灰度级的,其它灰度级的解法类似。
1、图像的灰度直方图求法为:
(1)先计算图像中各个灰度级的出现频率,用h(i)表示灰度级i的出现频率,其值等于灰度级出现次数/图像像素个数:
h(0)=2/16
h(1)=1/16
h(2)=3/16
h(3)=2/16
h(4)=0/16
h(5)=1/16
h(6)=4/16
h(7)=1/16
h(8)=1/16
h(9)=1/16
h(10)=h(11)=h(12)=h(13)=h(14)=h(15)=0/16。
然后以灰度级i为横轴,出现频率h(i)为纵轴即可绘制出图像对应的直方图。
(2)图像进行直方图均衡化处理的过程为:
先计算累积分布,用r(i)表示灰度级i的累积分布:
r(0)=h(0)=2/16
r(1)=r(0)+h(1)=2/16+1/16=3/16
r(2)=r(1)+h(2)=3/16+3/16=6/16
r(3)=r(2)+h(3)=6/16+2/16=8/16
r(4)=r(3)+h(4)=8/16+0/16=8/16
r(5)=r(4)+h(5)=8/16+1/16=9/16
r(6)=r(5)+h(6)=9/16+4/16=13/16
r(7)=r(6)+h(7)=13/16+1/16=14/16
r(8)=r(7)+h(8)=14/16+1/16=15/16
r(9)=r(8)+h(9)=15/16+1/16=16/16=1
r(10)=r(11)=r(12)=r(13)=r(14)=r(15)=1
将累积分布进行量化(量化时需要用到原始图像的灰度级数,这也是为什么前面需要说明的原因),量化后的灰度级用rq(i)表示,量化公式为rq(i)=ROUND(r(i)*15),(说明:量化公式中的15等于原始图像灰度级数减1),可得:
rq(0)=ROUND(r(0)*15)=2
rq(1)=ROUND(r(1)*15)=3
rq(2)=ROUND(r(2)*15)=6
rq(3)=ROUND(r(3)*15)=8
rq(4)=ROUND(r(4)*15)=8
rq(5)=ROUND(r(5)*15)=8
rq(6)=ROUND(r(6)*15)=12
rq(7)=ROUND(r(7)*15)=13
rq(8)=ROUND(r(8)*15)=14
rq(9)=ROUND(r(9)*15)=15
rq(10)=ROUND(r(10)*15)=15
rq(11)=ROUND(r(11)*15)=15
rq(12)=ROUND(r(12)*15)=15
rq(13)=ROUND(r(13)*15)=15
rq(14)=ROUND(r(14)*15)=15
rq(15)=ROUND(r(15)*15)=15
因此,原始图像中的灰度级和均化后图像中的灰度级之间的对应关系为:
0->2
1->3
2->6
3->8
4->8
5->8
6->12
7->13
8->14
9->15
10->15
11->15
12->15
13->15
14->15
15->15
将原始图像中对应的灰度值按照上述对应关系替换成相应的灰度值,即可得到均化图像,结果如下:
3 8 13 8
6 12 2 12
14 6 12 8
15 6 12 2
(在电脑上直接做的,仅供参考。ROUND(.)表示四舍五入。)
温馨提示:内容为网友见解,仅供参考
无其他回答

matlab直方图怎么画(Matlab统计图绘制基础)
a为要绘制的变量,b为柱形的个数。subplot(a,b,c)显示图像的位置布局,显示b行a列个图像,此图像是其中的第c个。hist(a,b)a is the variable to be drawn, and b is the number of bars.subplot(a,b,c) displays the position layout of the image, displaying images in row b and co...

matlab如何画直方图
1、双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。2、使用直接输入法创建一个数组v :v=[21,17,18,13,15,30,19,12,23,24,25,26,29]; 该数组用来表示直方图的统计数据。3、使用函数hist(v); 绘制直方图。4、使用函数title()给直方图添加标题。5、使用函数xlabel('u')和ylabe...

如何用matlab画直方图
首先随机产生一组数据作为例子,在这里,我们随机产生一组数据,并将其圆整为整数,方法是: a=round(10*rand(5,1))接下来,可以用MATLAB的内置函数bar进行绘图,方法是 bar(a)在这里,我们可以自己定义直方图的宽度,系统默认的宽度为0.8,因此,我们可以依据默认的宽度设置自己想要的宽度,例如,在...

如何利用matlab绘制直方图?
h(10)=h(11)=h(12)=h(13)=h(14)=h(15)=0\/16。然后以灰度级i为横轴,出现频率h(i)为纵轴即可绘制出图像对应的直方图。(2)图像进行直方图均衡化处理的过程为:先计算累积分布,用r(i)表示灰度级i的累积分布:r(0)=h(0)=2\/16 r(1)=r(0)+h(1)=2\/16+1\/16=...

如何用matlab绘制直方图
在matlab中绘制直方图的命令是bar,虽然命令简单,但是可以有各种用法。启动matlab,在命令行窗口中输入以下命令。这是bar命令最简单的用法。将命令改为bar(y,0.3)后。可以看直方图的明显变细了,后面的0.3是设置它的宽度的数值。将命令改为bar(y,'r')后。可以看到直方图的颜色变成了红色,当然也...

怎么用matlab画出直方图轮廓
matlab中直方图的绘制方法:1、核心函数 imhist()使用imhist()直接绘制直方图。2、使用bar函数绘制直方图 例如:>> h=imhist(f)>> h1= h(1:10:256)>> horz=1:10:256 >> bar(horz,h1)bar函数的格式为: bar( horz,v,width) width的默认值是0.8 3、使用stem函数绘制直方图 在上面...

MATLAB直方图
将生成的矩阵`y`通过`hist(y,x)`绘制直方图,其中`x`定义了每个数据段的中间值。这段代码运行后,将根据输入的随机数矩阵创建直方图,直观地展示数据在不同区间内的分布情况。在实际应用中,数据的随机性意味着每次运行代码时得到的直方图可能会有所不同。因此,通过观察直方图,我们可以对数据分布的...

MATLAB图像处理:99:创建图像直方图
首先,将图像读入MATLAB的工作区,以便后续处理。以展示米粒的示例图像为例,使用imhist函数创建了一个包含64个bin的直方图。这个直方图直观地展示了图像的强度分布,可以看到它在大约100的位置有一个高峰,这是图像中深灰色背景的体现。这个内容是基于MATLAB官方文档,提供了一个直观且实践操作的学习路径。

matlab绘制直方图
hist是直接绘制直方图,我们首先给出一个随机数组: aa=randn(1000,1); hist(aa); %当然可以设定直方图内条形的数量: hist(aa,20); 横坐标为数值的分布情况,纵坐标为在横坐标范围内的数据量。hist还可以输出数据,比如下图: 其中,counts是表示将aa从小到大分成了十组数, centers表示每组数据的...

如何用matlab画直方图
matlab中,绘制二维直方图的函数是bar,绘制三维直方图的函数是bar3,以下分别列出其用法: 调用格式:bar(x,y,选项) ,其中,x,y是维数相同的矩阵或者向量,配对的x,y按对应的列元素为横纵坐标绘制,选项是一些绘图控制选项,可选; 例如,绘制y=2exp(-0.5x)的条形图 bar3(x,y)或者bar3(y),前者在x指定的位置上...

相似回答
大家正在搜