实验一 直方图处理
实验目的
理解图像直方图的概念,掌握图像直方图的绘制方法
掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理。
实验要求
1.读入图像,可使用 imread。
2.输出图像,可使用 imshow。
3.绘制图像的归一化的直方图,可使用 IPT 函数 imhist。
4.对图像进行直方图均衡化,可使用 IPT 函数 histeq,对均衡化前后的图像以及直方图进
行对比。
实验原理
一幅数字图像在范围[0,
G
]内共有
L
个灰度等级,其直方图定义为离散函数
h(r
k
) n
k
其中
r
k
是区间[0,
G
]内的第
k
级亮度,
n
k
是灰度级为
r
k
的图像中的像素数。
通常,我们会用到归一化直方图,即使所用所有元素
h
(
r
k
)除以图像中的像素总数
n
所
得到的图形:
p(r
k
)
h(r
k
) n
k
n n
其中
k
=1,2,…,
L
。
Matlab 中提供了 IPT 函数 imhist 来绘制图像的直方图,但是除此之外绘制直方图的方
法还有很多,可以通过条形图、杆状图等方式来表示直方图。
直方图均衡化主要用于增强动态范围偏小的图像的反差。该方法的基本思想是把原始的
直方图变换为均匀分布的形状,这样就增加了像素灰度值的动态范围,从而达到增强图像整
体对比度的效果。
直方图均衡化一般采用原始图的累计分布函数作为变换函数。假设灰度级归一化至范围
[0, 1]内,
p
r
(
r
)表示给定图像中的灰度级的概率密度函数,对于离散的灰度级,均衡化变
换为:
s
k
T (r
k
)
p
r
(r
j
)
j1 j1
k k
n
j
n
式中
k
=1,2,…,
L
,
s
k
是输出图像中的亮度值,它对应于出入图像中的亮度值
r
k
。
实验心得:
1. matlab的函数的功能很强大,一个简单的函数调用就可以解决复杂的问题。这样,就需
要在函数调用时注意函数的参数,否则很容易出错。比如函数
histeq(a,n),就要注意其中
的n为灰度值的个数。
2. 对于自己编写函数实现某些特定的功能时,需要对原理掌握清楚,如实验二中需自己编
写函数实现图像的均衡,就要求对直方图的均衡原理掌握到位。
3. 使用读图像函数imread()时需注意该程序的物理路径和函数参数,即图像的物理路径需