第三章 图像增强
燕山大学电气工程学院 赵彦涛
3.1图像增强的概念
对于一般可理解的图像增强,是指使经过增强处理后的图像其视觉效果更好,如对于某些图像看起来比较灰暗,增强处理后使其亮度增强,人眼看起来更舒服;也就是说,改善曝光不足或曝光过度对图像的影响。淡化背景,强化前景;广义的图像增强指处理后的图像比原始图像更适合于特定应用,更有利于后续图像处理,消除噪声干扰,强化有用信息等都可认为为后续的计算机处理、分析更有利。
根据其处理数据所进行空间不同,图像增强的方法可分为空域(空间域)图像增强方法和变换域(频域)增强方法。空域图像增强方法是直接处理构成图像的像素点的灰度值,而变换域图像增强方法是经过图像变换后,增强方法在其变换域中间接进行。
图像增强是与具体问题紧密相联系的,增强的目的不同,图像类型不同,采用的方法也不同,没有一种增强算法能适用于所有的应用场合。 3.2图像增强的点运算
所谓点运算就是输出图像上的每个像素的灰度值仅由相应输入像素点的值确定。空域方法是指直接对图像的像素点的灰度值进行操作,空域处理可定义为
)),((),(y x f T y x g = (1)
式中,),(y x f 是输入图像,),(y x g 是处理后的图像,T 是一种操作方法。
3.2.1 直接灰度变换
直接进行灰度变换是图像增强最简单的一类方法,设处理前后的图像的像素点的灰度值分别为r 和s ,变换方式为
)(r T s = (2)
式中,T 是把灰度值r 变换为s 的映射。由于处理的是数字量,变换函数的值通常存储在一个一维向量中,通过函数或者查表将灰度值r 映射为s 。对于8比特的灰度值,一个包含这种映射的查找表要有256个记录。 3.2.1.1 图像的直方图
图像的直方图表示图像中各种灰度级的个数(或概率),反映了一幅图像中灰度级与出现这种灰度级的概率之间的关系。对于一个8 bit (有256个灰度等级)的图像,直方图就是
N
n r p k
染发剂怎么洗
k =
)( (4) 式中,k r 是第k 个灰度等级, k n 为图像中灰度等级为k r 的像素点的个数,N 是
该图像中所有像素点的个数,这里]255,0[ k ,)(k r p 代表原始图像第k 个灰度级出现的概率。
炒绿豆芽的家常做法例如,如果有一个图像为图**:
v 0=5/64
v 1=12/64v 2=18/64v 3=8/64v 4=1/64v 5=5/64v 6=8/64v 7=5/64
该图像像元总数为8*8=64, 灰度值的范围为[0,7],则其直方图计算结果为图*,
直方图为图*。
图像直方图是图像明暗信息的统计结果,给出了图像中灰度级分布的全局描述。如果图像的灰度级是狭窄的,说明图像中像素点的灰度级集中在一小段,那么就意味着图像的对比度较差(图b 中可看出其灰度等级多集中在比较灰度值比较小的区域内,这样的图像看起来比较暗),而广泛分布的直方图意味着图像中像素点的灰度值几乎分布在灰度级的整个区间里面,因此对比度很好(图a ),通过直方图修改可实现图像增强。
3.2.1.2 EmguCV 直方图显示
在EmguCV 中,直方图显示的控件为HistogramBox ,要显示直方图,还用到类DenHistogram 。首先从工具栏中将控件HistogramBox 添加到主程序面板中,然后在HelloWorld 例程中直接修改ImageGrabbed()函数:阻燃标准
050100150200250
500
1000
1500
2000
2500
3000
050100150200250
200
英语手抄报怎么写400
600
800
1000
1200
void _capture_ImageGrabbed(object nder, EventArgs e)
{
Image<Gray, Byte> image = _capture.RetrieveGrayFrame();
int rBins = 256;
RangeF rRange = new RangeF(0f, 255f);
histogramBox1.ClearHistogram();
DenHistogram hist = new DenHistogram(rBins, rRange);
hist.Calculate(new IImage[] { image }, fal, null);
histogramBox1.AddHistogram("直方图", Color.Red, hist);
imageBox1.Image = image;
histogramBox1.Refresh();
}
首先要创建一个DenHistogram对象hist,然后通过其成员函数Calculate()计算图像的直方图,然后
把hist添加到histogramBox1的直方图显示。如果得到是视频,可以通过成员函数ClearHistogram()清除直方图、通过Refresh()刷新显示,结果如图*所示。
由于_capture_ImageGrabbed()函数分属不同线程,为解决此问题,可在构造函数Form1()中添加代码:
CheckForIllegalCrossThreadCalls = fal;
3.2.1.3 直方图均衡化
直方图均衡化通过调整图像灰度级,使图像的直方图均匀的分布在灰度级的整个区域,实现增加像素灰度值的动态范围,从而达到增强图像整体对比度的效果,直方图均衡化的目的如图*所示,
a 输入图像直方图b均衡化后图像直方图
图直方图均衡化的目的
EmguCV中,类Image有一个成员函数可直接实现其均衡化
void _EqualizeHist()
需要注意的是该函数的返回值为空,该函数直接原始图像变量。
釜山行结局
Image<Bgr, byte> frame = new Image<Bgr, byte>(‘”Lena.jpg”);
frame._EqualizeHist();
将彩色图像frame进行直方图均衡化后的结果直接反映在图像frame上。
图*为均衡化结果,左侧图为原始图像,右侧为均衡化后的图像。
3.2 图像空域滤波增强
空域滤波是直接针对图像中的像素点的灰度值借助模板进行邻域操作,按照其特点,空间滤波的方法可分为线性滤波和非线性滤波两大类。线性滤波的概念源于频域中信号处理所使用的傅立叶变换,非线性空间滤波则一般只能在空域中进行,即直接对邻域进行操作。
图像空域滤波方法根据功能划分,主要分为图像平滑和图像锐化。图像平滑可以减弱或消除傅立叶空间的高频分量,但不影响低频分量。由于图像经傅立叶变换后的高频部分对应原始图像的边缘部分,而低频部分对应图像的平滑部分,高频分量滤除后相当于去除了图像的边缘,使图像模糊,图像的平滑的作用主要是模糊和噪声消除。
阶梯式退休3.2.1 邻域平均法
设有一幅N×N的图像f(x,y),若平滑图像为g(x,y),则有
式中 x,y =0,1,…,N-1;
向往背景音乐s 为(x,y )邻域内像素坐标的集合; M 表示集合s 内像素的总数。
可见邻域平均法就是将当前像素邻域内各像素的灰度平均值作为其输出值的去噪方法。
• 邻域平滑特点: • (1)算法简单。
• (2)降低噪声的同时使图像产生模糊,特别在边缘和细节处。而且邻域越大,在去噪能力增强的同时模糊程度越严重。
模板操作是数字图像处理中常用的一种运算方式,图像的平滑、锐化等都要用到模板操作。其实现的方法为图*所示,不失一般性,假设要计算像素点P5用所给3×3模板的滤波过程为:
P 5new = Pi ∗Hi 9
i =1
H1H4H7H2H5H8H3H6H9
求婚说什么
3×3邻域3×3模板
P1.H1+P2.H2+P3.H3+P4.H4+P5.H5+P6.H6+P7.H7+P8.H8+P9.H9=P5的新值
从图像的左上角,依次向右向下移动,一直运算到图像的右下角,计算出原始图
像中所有的像素点的值(边缘点不处理,或需要特殊处理)。 空域低通滤波(图像平滑)的模板有: