图像对比度增强实验_第1页
图像对比度增强实验_第2页
图像对比度增强实验_第3页
图像对比度增强实验_第4页
图像对比度增强实验_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子科技大学通信学院图像对比度增强实验指导书2011年6月图像对比度增强实验一、 实验目的本实验是针对拟开设的图像处理课程而开发的综合性实验。该实验与概率统计、高等数学、信号处理等课程都有一定程度的联系。通过本实验,促使学生利用上述课程相关知识,更好地掌握图像增强的基本方法和原理。要求学生达到:掌握经典的数字图像空域增强算法的实现方法;了解实验所用的图像处理算法的运行效果;学会分析与比较各种方法的差异。二、 实验内容与要求1. 2学时:掌握图像对比度增强原理;2. 2学时:掌握图像变换原理;3. 2学时:给定输入图片,在MATLAB上实现线性变换增强和直方图增强仿真;4. 8学时:构建图像采集

2、系统,在已有的采集软件平台上将仿真算法用C语言实现;5. 2学时:测试实际输入图片增强效果。三、 实验开设方式本实验开设方式为两人一组实验,实验授课时间2学时,上机14学时。四、 实验器材硬件环境:计算机一台;USB摄像头一个;三脚架一个;软件环境:Winxp操作系统;VC6.0开发环境;Open CV1.0,gsl-1.8五、 实验原理图像增强的目的是针对应用或人们主观需求,对输入图像进行某种处理,使得处理后的图像在特定结构或对比度等方面有明显的改善,其源头可以追溯到1969年。随着应用需求的不断发展,世界各国对此问题展开了广泛的研究。特定结构或对比度不够清晰,可能来自质量不佳的成像设备、恶

3、劣的大气条件、不恰当图像压缩算法等,其特点是图像中像素灰度集中在一个相对较小的范围,导致后端处理设备的观察者不能有效对图像进行判读。造成图像对比度不够清晰的原因是多方面,包括电子系统的热噪声、光照过强、光照过弱、目标反射率过低、大雾天气、逆光拍摄、压缩等等。由于其产生原因的多样性,导致图像对比度不够清晰在图像中体现出来的现象也不同,可以分为以下3类:整体偏暗、整体偏亮、分布在亮和暗的两端,并且有可能在空间分布上存在多个区域。现有的对比度增强技术根据其处理方法理论依据不同可分为:直方图均衡化、基于Retinex理论的图像增强、基于梯度场重建的图像增强;根据其处理范围,又可以分为全局处理与局部处理

4、两大类。本试验将主要论述直方图均衡化和基于梯度场重建的图像增强两种方法,其中直方图均衡化仅描述基本原理,其实现由学生独立完成,而基于梯度场重建的图像增强方法,本实验将重点阐述,并给出参考代码,要求学生在此基础上进行进一步的完善。直方图均衡化的基本原理就是对图像进行灰度变换。灰度变换有逆反处理、阈值变换、灰度拉伸、灰度切分、灰度级修正、动态范围调整等方法。虽然它们对图像的处理效果不同,但处理过程中都运用了点运算,通常可分为线性变换、分段线性变换、非线性变换。其缺点是需要用户根据不同的图像调整不同的变换函数。灰度变换是最简单的对比度增强技术,它可增大图像动态范围,扩展对比度,使图像清晰、特征明显,

5、是图像增强的重要手段之一。它主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。灰度变换不改变图像内的空间关系,灰度级的改变是根据某种特定的灰度变换函数进行。实验所需基本结构如图1所示。图1 实验所需基本结构图本实验把成像设备(即摄像头)采集的一幅图像,传入计算机,由图像增强技术算法实现的编程软件处理后,对图像进行增强,然后实时显示增强后的图像。图像对比度增强技术,不仅要保持图像整体的一致性,还需要对图像的局部区域进行增强处理,使其具有最佳的表现力。因此,本实验采用梯度场方法。技术方案特点有:a) 梯度域增强避免了亮度不同对增强算子的影响b) 重

6、建图像是基于最小二乘法,与原始的图像在亮度方面不同c) 重建图像在梯度域与原始图像具有强烈的相似性d) 重建图像具有亮度平均值的相对保持性e) 重建图像的边界条件周期延拓(采用DST变换要求)f) 所有算子都是直接计算g) 较为复杂的DST变换有快速算法(一) 算法原理计算机处理的图像是离散的网格数据,必须对前面的连续函数描述形式进行离散化处理。令原始图像为,增强后图像为,尺寸为(行X列),则增强后的梯度图像为:(1)是图像的梯度,定义图像的一阶前向差分:令是梯度图像提升因子,(2)其中是梯度场增益因子,取值为0.30.45,是梯度场归一化因子,是梯度场归一化偏移因子,保证为有界值,取值为,。

7、增强后的图像应满足:,根据变分原理可得,重建的图像与增强后的梯度图像满足如下泊松方程:(3)其中(4)增强梯度场G梯度的散度用后向一阶差分逼近:(5)求解泊松方程的边界条件为:将输入的原始图像扩展为(行X列),且满足:(6)重建图像的取值可能超出8bit范围,需要对其进行归一化处理,(7)归一化后的图像为:(8)下面将阐述如何从泊松方程中求取重建图像Div(G)2D IDST计算特征值2D DSTG(x,y)BijAij重建图像令,向量U是重构图像的一个逼近,矩阵T是一个1 1 -4 1 1的对角矩阵,F是包含边界条件的散度矩阵。分别是矩阵的行列索引值。离散正弦变换:给定向量,其正弦变换为:正

8、变换:逆变换:(二) OpenCV 1.0安装手册1) 安装OpenCV从下载OpenCV安装程序。假如要将OpenCV安装到C:Program FilesOpenCV。(图2,图3为OpenCV 1.0rc1的安装界面,OpenCV 1.0安装界面与此基本一致。)在安装时选择"将OpenCVbin加入系统变量"(AddOpenCVbin to the systerm PATH)。图2 软件安装目录选择图3 软件安装路径设置2) 配置Windows环境变量检查C:Program FilesOpenCVbin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当

9、前Windows用户(或重启)后重新登陆才生效。(可以在任务管理器里重启explorer.exe) 图4 软件安装环境变量设置3) 配置Visual C+ 6.0 全局设置:菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:C:Program FilesOpenCVlib然后选择include files,在下方填入路径:C:Program FilesOpenCVcxcoreincludeC:Program FilesOpenCVcvincludeC:Program FilesOpenCVcvauxincl

10、udeC:Program FilesOpenCVmlincludeC:Program FilesOpenCVotherlibshighguiC:Program FilesOpenCVotherlibscvcaminclude图5 VC6.0开发软件环境路径设置然后选择source files,在下方填入路径:C:Program FilesOpenCVcvsrcC:Program FilesOpenCVcxcoresrcC:Program FilesOpenCVcvauxsrcC:Program FilesOpenCVotherlibshighguiC:Program FilesOpenCVot

11、herlibscvcamsrcwindows最后点击“ok”,完成设置。项目设置:每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib图6 VC6.0开发软件库文件包含设置(三) gsl-1.8安装手册安装步骤如下:1)下载gsl(2)安装gsl-1.8.ex

12、e安装后在安装目录下将有如下目录:contribgsl-1.8 一些说明文件bin 二进制文件libgsl.dll gsl的动态链接库(基于gcc的正式版本)libgsl_d.dll gsl的动态链接库(基于gcc的调试版本)libgslcblas.dll cblas的动态链接库(基于gcc的正式版本)libgslcblas_d.dll cblas的动态链接库(基于gcc的调试版本)gsl-histogram.exe 用于计算数据直方图的程序gsl-randist.exe 用于生成服从指定分布数据的程序lib 库文件libgsl.a gsl的静态链接库(基于gcc的正式版本)libgsl_d.

13、a gsl的静态链接库(基于gcc的调试版本)libgslcblas.a cblas的静态链接库(基于gcc的正式版本)libgslcblas_d.a cblas的静态链接库(基于gcc的调试版本)libgsl_dll.a libgsl.dll的gcc输入库libgsl_d_dll.a libgsl_d.dll的gcc输入库libgslcblas_dll.a libgslcblas.dll的gcc输入库libgslcblas_d_dll.a libgslcblas_d.dll的gcc输入库libgsl.def 输出libgsl.dll的定义libgslcblas.def 输出libgslcbl

14、as.dll的定义doc 有关文档infoman1man3各种格式的gsl帮助文件includegsl 头文件gsl include files,其中使用到的主要有bin,lib,includegsl。3)设置Visual C+ 6.0编译环境,有两种方式: 一、将临时目录下bin中的WinGsl.dll和WinGslD.dll复制到Microsoft Visual StudioVC98Bin下;整个Gsl目录复制到Microsoft Visual StudioVC98Include下;lib目录下的所有.lib文件全部复制到Microsoft Visual StudioVC98Lib下。在使

15、用gsl函数时,在新建的工程中,projectsettingslink,在object/library modules中加入你用到的库文件,如WinGsl.lib等,加入多个可以用空格隔开。 二、打开VC,toolsoptionsdirectories,将解压目录下的lib,gsl分别加入到库文件和头文件的搜索路径中,将 WinGsl.dll和WinGslD.dll复制到Microsoft Visual StudioVC98Bin下。在新建的工程中将你所使用到的库文件加入到object/library modules。4) 将解压目录中的文件拷贝到对应目录Ø 将文件WinGslDll

16、.inl拷贝到 .Vc98include目录Ø 将目录Gsl中的文件拷贝到.Vc98include目录或者在工程中添加该目录路径Ø 将目录C:Program FilesGnuWin32bin添加工程设置的库目录中Ø 拷贝.OpenCVbin目录中的动态库到工作目录中配置完成后,请检查以下几项:1、 库添加Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上cxcore.lib cv.lib ml.lib cvaux.lib h

17、ighgui.lib cvcam.lib2、 Include路径OpenCVcxcoreincludeOpenCVcvincludeOpenCVcvauxincludeOpenCVmlincludeOpenCVotherlibshighguiOpenCVotherlibscvcaminclude3-gsl-1.8库安装WinGslGnuWin32bin3、 Lib路径OpenCVlib3-gsl-1.8库安装WinGslLibGnuWin32lib4、 Source路径OpenCVcvsrcOpenCVcxcoresrcOpenCVcvauxsrcOpenCVotherlibshighguiO

18、penCVotherlibscvcamsrcwindows六、 实验步骤:l 步骤0:根据对应实验类型搭建相应的实验硬件环境;l 步骤1:根据实验原理中第2条和第3条所述,在本地计算机上安装OpenCV和GSL库,并在VC6.0环境下进行相应的配置,使程序能够在VC6.0下编译通过。l 步骤2:正确安装和配置好OpenCV和GSL库后,打开“图像处理实验.dsw”工作空间,点击BuildExecute(执行“图像处理实验.exe”)。在图像处理实验界面中点击图像增强按钮。弹出图像增强窗口,如图7:图7(a) 图像处理实验窗口 图7(b) 图像增强窗口图7 图像增强窗口l 步骤3:图像过曝增强实

19、验:点击连接摄像头,采集图像。若发现无法正常对焦,调节摄像头前的对焦调节旋钮,保证采集到的图像清晰准确。如图8所示:图8 连接摄像头1) 将摄像头对准亮度比较亮的的场景,如实验室的光源。点击“采集图像”按钮,采集一帧过曝图像,如图9:图9 采集到的一帧过曝图像2) 点击“START”开始图像增强处理。3) 点击“X_gradient”,显示原图的X方向的梯度图像,截取实验结果并记录。4) 点击“Y_gradient”,显示原图的Y方向的梯度图像,截取实验结果并记录。5) 点击“X_Gradient”,显示增强后的X方向的梯度图像,截取实验结果并记录。6) 点击“Y_Gradient”,显示增强

20、后的Y方向的梯度图像,截取实验结果并记录。7) 点击“增强图像”,显示增强后的图像结果,截取实验结果并记录。l 步骤4:图像过暗增强实验:重复步骤3中的过程,但采集的图像为光源比较弱的场景,如实验室的桌底。完成增强实验,并记录实验结果。l 步骤5:混合图像增强实验:重复步骤3中的过程,但采集的图像为一半光源较强,一半光源较弱的场景。如以实验室桌子平面为分界线。完成增强实验,并记录实验结果。七、 算法与部分代码解析本实验项目是基于梯度场的图像增强方法,要求实验参与者完成算法的部分修改工作。为提高工作效率,本节将把算法中部分功能与C语言代码进行对照,以便实验参与者能快速进入工作状态。(一) 梯度场

21、提取算子梯度场提升算子为:,其表达形式是连续函数的表达形式,为了在计算机上实现,需要对其进行数字化。本项目目前采用的数字化方式为:其对应的C代码为:. rgbhance.c文件中的函数/*单通道图像增强*void enhance(IplImage *src,IplImage *dst,IplImage *gradientx,IplImage *gradienty,IplImage *Gradientx,IplImage *Gradienty)采用先定义卷积核,而后采用卷积核与图像卷积(滤波)而得到梯度值。/定义卷积核float Fxdval=0, 0, 0,/ forth x differen

22、tial coefficient kernel 0, -1, 1, 0, 0, 0;float Fydval=0, 0, 0,/ forth y differential coefficient kernel 0, -1, 0, 0, 1, 0; 要点:本处可作为改进之一!(二) 梯度场提升因子该算子决定了图像增强的效果。其对应的C代码为:. rgbhance.c文件中的函数/*单通道图像增强*void enhance(IplImage *src,IplImage *dst,IplImage *gradientx,IplImage *gradienty,IplImage *Gradientx,

23、IplImage *Gradienty)/计算所有可能值的提升因子,建提升因子表 for (k=0; k<256; k+)for(l=0; l<256; l+)akl=1/pow(sqrt(k*k+l*l)/255.0+pow(10.0,-6),0.3);(三) 任意长度数据的DST与IDST变换通常库函数仅提供2的幂次的傅立叶函数变换,建议修改该变换函数,实现对任意长度数据的快速变换。其对应的C代码为:. rgbhance.c文件中的函数/*单通道图像增强*void enhance(IplImage *src,IplImage *dst,IplImage *gradientx,I

24、plImage *gradienty,IplImage *Gradientx,IplImage *Gradienty)/对每行做快速反正弦变换nWidth=divxValueImage->width;nHeight=divxValueImage->height;f=(double*)malloc(sizeof(double)*nHeight*nWidth);for(y=0;y<nHeight;y+)midst(Temp+nWidth*y,f+nWidth*y,nWidth);/对行作快速正弦变换for(y=0;y<nWidth;y+)mdst(f+nHeight*y,Temp+nHeight*y,nHeight);(四) 改变增强的色彩空间针对彩色空间,本项目采用HSV空间模型,将RGB空间的图像数据转换为HSV空间图像,之后增强亮度分量V,最后转回到RGB空间显示。如果是灰度图像,则直接增强灰度图像。其对应的C代码为: 在文件 .rgbhance.c 中的第41行函数“void rgb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论