![图像处理课程报告_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/e1b4eeda-6395-4030-b776-3dc1a2a507e5/e1b4eeda-6395-4030-b776-3dc1a2a507e51.gif)
![图像处理课程报告_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/e1b4eeda-6395-4030-b776-3dc1a2a507e5/e1b4eeda-6395-4030-b776-3dc1a2a507e52.gif)
![图像处理课程报告_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/e1b4eeda-6395-4030-b776-3dc1a2a507e5/e1b4eeda-6395-4030-b776-3dc1a2a507e53.gif)
![图像处理课程报告_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/e1b4eeda-6395-4030-b776-3dc1a2a507e5/e1b4eeda-6395-4030-b776-3dc1a2a507e54.gif)
![图像处理课程报告_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-10/20/e1b4eeda-6395-4030-b776-3dc1a2a507e5/e1b4eeda-6395-4030-b776-3dc1a2a507e55.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 图像处理课程报告课 程: 班 级: 学 号: 学生姓名: 指导教师: 2014年11月 目 录一、课程背景1二、课程选题1三、设计思想11. 线性变换12. 二值化23. 灰度拉伸24. 直方图均衡化3四、数据结构与算法设计5五、运行结果7六、困难及解决方法9七、主要代码10八、总结心得15 一、课程背景 随机计算机技术的发展,数字图像的采集和应用,特别是加工技术近年来得到极大的重视和长足的进展,出现了许多有关的新理论、新方法、新算法、新手段和新设备,并已使得数字图像技术在科学研究、工业生产、医疗卫生、教育、娱乐、管理和通信等方面得到了广泛的应用,对失去社会发展、改善人们的生活水平都起到了重
2、要的作用。 正因为图像处理在社会生活中有着越来越重要的作用,这也就体现了我们学习这门课程的必要性。而通过课程的学习可以让我们掌握一些图像处理的初步技术,从而为今后在图像处理的学习方面打下了基础。 二、课程选题 由于老师并没有做出规定去做哪一道题目,这给了我们很大程度上的自主性。我根据自身的情况和能力,选择了图像的直方图均衡化、灰度拉伸、二值化、线性变换等题目。通过对这些算法的编写,更加深入地了解了图像处理的过程,并且也在一定程度上提高了自己的编程能力。 三、设计思想1. 线性变换 图像的线性变换就是将图像中所有的点按照线性灰度变换函数进行变换。该线性灰度变换函数f(x)是一个一维线性函数: f
3、(x)=fA*x+fB灰度变换方程为: D2=f(D1)=k*D+d式中参数k为线性函数的斜率,d为线性函数的在y轴上的截距,D1为输入图像的灰度,D2为输出的图像灰度。(如图所示) 当k1时,输出的图像的对比度增大,图像的像素值在变换后全部增大,整体显示效果增强;当0k1时,输出图像的对比度和整体效果都将削弱;当k1)物体灰度区间以改善图像;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率1)物体灰度区间以改善图像质量。原理与算法:当xx1:f(x) = y1/x1*x;当x1=xx2:f(x) = (255-y2)/(255-x2)*(x-x2)+y2; 其
4、中x1,y1,x2,y2是图中ac,bd两个转折点的坐标。4. 直方图均衡化 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。 直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(
5、x,y)处的灰度f映射为g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g=EQ(f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数):(1)EQ(f)在0fL-1范围内是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。(2)对于0fL-1有0gL-1,这个条件保证了变换前后灰度值动态范围的一致性。 累计分布函数即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。此时的直方图均衡化映射函数为:Gk = EQ(fk) = (ni/n) = pf(fi) ,(k=0,
6、1,2,L-1)上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出fk到gk的灰度映射关系。在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对源图的直方图均衡化。 原始直方图 累积直方图 四、数据结构与算法设计1.线性变换的实现过程比较简单,只需给出直线的斜率和截距,即可计算出变换后的像素值大小,然后逐个赋新的像素值,即可得到变换后的图像。这里我利用MFC提供给用户
7、一个对话框,用于输入斜率和截距的值。2. 二值化的实现过程也比较简单,只需提供一个阈值,然后通过与阈值的大小比较给各个像素赋值0或255,从而得到新的图像。3. 对于灰度拉伸算法,首先我用两个点(X1,Y1)(X2,Y2)来存储用户输入的两个点的坐标。然后采用了一个字符型的一维数组用来作为灰度映射表,用以存储通过函数计算而来的各个像素的新的值的大小,然后再重新赋给各个像素点,从而得到新的图像。BYT bMap256;/ 灰度映射表bMapi = (BYTE) bY1 * i / bX1;bMapi = bY1 + (BYTE) (bY2 - bY1) * (i - bX1) / (bX2 -
8、bX1);bMapi = bY2 + (BYTE) (255 - bY2) * (i - bX2) / (255 - bX2);/各个像素的新的灰度值的计算公式并且同线性变换一样,我也为用户提供了一个输入点坐标的对话框,如图:4.至于直方图的均衡化,我同样采用了一个字符型的一维数组用来作为灰度映射表,用以存储通过函数计算而来的各个像素的新的值的大小。同时我还用了一个长整型的一维数组用以存储各个灰度值得像素的个数,从而得到新的直方图的分布,并赋予像素新的灰度值得到新的图像。最后利用MFC输出了直方图的分布。BYTEbMap256;/ 灰度映射表LONGlCount256;/ 灰度计数表lpSrc
9、 = (unsigned char *)lpDIBBits + lLineBytes * i + j; lCount*(lpSrc)+; /灰度值的计数bMapi = (BYTE) (lTemp * 255 / lHeight / lWidth); /计算新的灰度值 五、运行结果 原图像 图像取反后 线性变换后 二值化后 灰度拉伸后 直方图均衡化后 原图像直方图分布 均衡化后直方图分布 六、困难及解决方法(1)选题由于徐老师没有要求具体做什么,这个长期习惯老师出题然后自己动手编程的我带来一定干扰。自主选题也是一种自主学习能力,结合自己的兴趣与能力选择适合自己的选题。于是我根据自己的兴趣点选择了
10、以上算法并进行了实现。(2)查资料由于自己之前使用MFC的次数不多,所以对MFC中一些操作并不是很熟悉。所以在写程序,设计MFC框架的时候,从书上、网上查了很多相关资料,在查阅资料的同时,也加深了我对于MFC中一些用法的理解,从而也在一定程度上提高了我的编程能力。(3) 直方图灰度分布均衡化的理解在写程序之前对于直方图均衡化的理解不是很透彻,之后经过自己的思考以及在代码中调试,加深了自己对于该方法的理解,并且在程序中得到了很好地实现。(4) 灰度映射表的设计一开始的设计导致算法的复杂度偏高,并且在计算的过程也比较复杂。然后我采用了一维数组的方式来存放灰度映射之后的灰度值的大小,使得算法的复杂度
11、降低,计算也比较简单。(5) 灰度直方图的绘制 由于对MFC不是很熟悉,一开始并不知道如何去绘制直方图。然后通过查阅相关资料使得该问题得以解决。 七、主要代码/该函数用来对图像进行灰度的线性变换操作。/ FLOAT fA - 线性变换的斜率/ FLOAT fB - 线性变换的截距BOOL CDibImage:LinerTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, FLOAT fA, FLOAT fB)unsigned char*lpSrc;/ 指向源图像的指针LONGi;/ 循环变量LONGj;LONGlLineBytes;/ 图像每行的字
12、节数FLOATfTemp;/ 中间变量lLineBytes = WIDTHBYTES(lWidth * 8);/ 计算图像每行的字节数for(i = 0; i lHeight; i+)/ 每行for(j = 0; j 255)/ 判断是否超出范围*lpSrc = 255;else if (fTemp 0)*lpSrc = 0;else*lpSrc = (unsigned char) (fTemp + 0.5);/ 四舍五入return TRUE;/该函数用来对图像进行二值化。 BOOL CDibImage:ThresholdTrans(LPSTR lpDIBBits, LONG lWidth,
13、 LONG lHeight, BYTE bThre)unsigned char*lpSrc;/ 指向源图像的指针LONGi;/ 循环变量LONGj;LONGlLineBytes;/ 图像每行的字节数lLineBytes = WIDTHBYTES(lWidth * 8);/ 计算图像每行的字节数for(i = 0; i lHeight; i+)/ 每行for(j = 0; j lWidth; j+)/ 每列/ 指向DIB第i行,第j个象素的指针lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j;if (*l
14、pSrc) bThre)/ 判断是否小于阈值*lpSrc = 0;else*lpSrc = 255;return TRUE;/ 该函数用来对图像进行灰度拉伸。/ BYTE bX1- 灰度拉伸第一个点的X坐标/ BYTE bY1- 灰度拉伸第一个点的Y坐标/ BYTE bX2- 灰度拉伸第二个点的X坐标/ BYTE bY2- 灰度拉伸第二个点的Y坐标BOOL CDibImage:GrayStretch(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, BYTE bX1, BYTE bY1, BYTE bX2, BYTE bY2)unsigned char*l
15、pSrc;/ 指向源图像的指针LONGi;/ 循环变量LONGj;BYTEbMap256;/ 灰度映射表LONGlLineBytes;/ 图像每行的字节数lLineBytes = WIDTHBYTES(lWidth * 8);/ 计算图像每行的字节数/ 计算灰度映射表for (i = 0; i 0)/ 判断bX1是否大于0(防止分母为0)bMapi = (BYTE) bY1 * i / bX1;elsebMapi = 0;for (; i = bX2; i+)if (bX2 != bX1)/ 判断bX1是否等于bX2(防止分母为0)bMapi = bY1 + (BYTE) (bY2 - bY1
16、) * (i - bX1) / (bX2 - bX1);elsebMapi = bY1;for (; i 256; i+)if (bX2 != 255)/ 判断bX2是否等于255(防止分母为0)bMapi = bY2 + (BYTE) (255 - bY2) * (i - bX2) / (255 - bX2);elsebMapi = 255;for(i = 0; i lHeight; i+)/ 每行for(j = 0; j lWidth; j+)/ 每列/ 指向DIB第i行,第j个象素的指针lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (l
17、Height - 1 - i) + j;/ 计算新的灰度值*lpSrc = bMap*lpSrc;return TRUE; /该函数用来对图像进行直方图均衡化。BOOL CDibImage:InteEqualize(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)unsigned char*lpSrc;/ 指向源图像的指针LONGlTemp;/ 临时变量LONGi;/ 循环变量LONGj;BYTEbMap256;/ 灰度映射表LONGlCount256;/ 灰度计数表LONGlLineBytes;/ 图像每行的字节数lLineBytes = WIDTHBY
18、TES(lWidth * 8);/ 计算图像每行的字节数for (i = 0; i 256; i +)/ 重置计数为0lCounti = 0;/ 计算各个灰度值的计数for (i = 0; i lHeight; i +)for (j = 0; j lWidth; j +)lpSrc = (unsigned char *)lpDIBBits + lLineBytes * i + j;lCount*(lpSrc)+;/ 计算灰度映射表for (i = 0; i 256; i+)lTemp = 0;for (j = 0; j = i ; j+)lTemp += lCountj;/ 计算对应的新灰度值bMapi = (BYTE) (lTemp * 255 / lHeight / lWidth);for(i = 0; i lHeight; i+)/ 每行for(j = 0; j lWidth; j+)/ 每列/ 指向DIB第i行,第j个象素的指针lpSrc = (unsigned char*)lpD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓储物流中心装修合同-@-1
- 时尚发廊装修合同样本-@-1
- 液态食用油罐车运输协议
- 大型商场装修协议模板
- 交通运输渣土运输协议
- 商铺改造半包装修合同模板
- 宠物运输合同模板-@-1
- 福建围墙垂直绿化施工方案
- 主播转让合同范本
- 波纹管涵拆除施工方案
- 9.2溶解度(第1课时饱和溶液不饱和溶液)+教学设计-2024-2025学年九年级化学人教版(2024)下册
- 2024年审计局公务员招录事业单位招聘考试招录139人完整版附答案【研优卷】
- 潍坊市人民医院招聘真题
- 销售人员薪资提成及奖励制度
- 2017年江苏南京中考满分作文《无情岁月有味诗》5
- 2023年宏观经济学考点难点
- 2024-2030年中国智慧水务行业应用需求分析发展规划研究报告
- 黑龙江申论真题2021年(乡镇)
- 山体排险合同模板
- 医保专(兼)职管理人员的劳动合同(2篇)
- 特殊感染手术的配合与术后处理课件
评论
0/150
提交评论