第三章 空间域图像增强

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章 图像增强

燕山大学电气工程学院 赵彦涛

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/64v 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 ,要显示直方图,还用到类DenseHistogram 。首先从工具栏中将控件HistogramBox 添加到主程序面板中,然后在HelloWorld 例程中直接修改ImageGrabbed()函数:

0501001502002500

500

1000

1500

2000

2500

3000

0501001502002500

200

400

600

800

1000

1200

void _capture_ImageGrabbed(object sender, EventArgs e)

{

Image image = _capture.RetrieveGrayFrame();

int rBins = 256;

RangeF rRange = new RangeF(0f, 255f);

histogramBox1.ClearHistogram();

DenseHistogram hist = new DenseHistogram(rBins, rRange);

hist.Calculate(new IImage[] { image }, false, null);

histogramBox1.AddHistogram("直方图", Color.Red, hist);

imageBox1.Image = image;

histogramBox1.Refresh();

}

首先要创建一个DenseHistogram对象hist,然后通过其成员函数Calculate()计算图像的直方图,然后把hist添加到histogramBox1的直方图显示。如果得到是视频,可以通过成员函数ClearHistogram()清除直方图、通过Refresh()刷新显示,结果如图*所示。

由于_capture_ImageGrabbed()函数分属不同线程,为解决此问题,可在构造函数Form1()中添加代码:

CheckForIllegalCrossThreadCalls = false;

3.2.1.3 直方图均衡化

直方图均衡化通过调整图像灰度级,使图像的直方图均匀的分布在灰度级的整个区域,实现增加像素灰度值的动态范围,从而达到增强图像整体对比度的效果,直方图均衡化的目的如图*所示,

a 输入图像直方图b均衡化后图像直方图

相关文档
最新文档