




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数字图像处理设计1、 设计题目 基于Visual C+的图像平滑、锐化处理2、 设计要求基于Visual C+的MFC程序设计,实现对灰度图像简单的平滑处理与拉普拉斯锐化处理。并能得到处理后所需的图像。3、 设计原理(一)、图像平滑 1 图像平滑的基本概述图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。 2 图像平滑的基本方法 (1)线性滤波(领域平均法)对一些图像进行线性滤波可以去除图像中某些类型的噪声。领域平均法就是一种非常适合去除通过扫描得到的图像中的噪声颗粒的线性滤波。领域平均法是空间域
2、平滑噪声技术。对于给定的图像中的每个像素点,取其领域S。设S含有M个像素,取其平均值作为处理后所得图像像素点处的灰度。用一像素领域内各像素灰度平均值来代替该像素原来的灰度,即领域平均技术。领域S的形状和大小根据图像特点确定。一般取的形状是正方形、矩形及十字形等,S的形状和大小可以在全图处理过程中保持不变,也可以根据图像的局部统计特性而变化,点(m,n)一般位于S的中心。如S为33领域,点(m,n)位于S中心,则 假设噪声n是加性噪声,在空间各点互不相关,且期望为0,方差为,图像g是未受污染的图像,含有噪声图像f经过加权平均后为 由上式可知,经过平均后,噪声的均值不变,方差,即方差变小,说明噪声
3、强度减弱了,抑制了噪声。 (2)中值滤波 中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。设有一个一维序列,取窗口长度为m(m为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m个数,其中为窗口的中心位置,再将这m个点按其数值大小排列,取其序号为正中间的那作为输出。用数学公式表示为: 例如,有一个序列为1,3,4,0,7,则中值滤波为重新排序后的序列0,1,3,4,7中间的值为3。此例若用平均滤
4、波,窗口也是取5,那么平均滤波输出为。因此平均滤波的一般输出为: 对于二维序列进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为: 其中,A为滤波窗口。(2) 、图像锐化 1 图像锐化的基本概述图像在传输过程中,通常质量都要降低,除了噪声因素外,图像一般都要变得模糊。这主要是因为图像的传输或转换系统的传递函数对高频成分的衰减作用,造成图像的细节轮廓不清晰。图像锐化就是补偿图像的轮廓,使图像比较清晰。 2 图像锐化的基本方法 (1)微分算子法设有一副图像,它的梯度用数学概念描述为一个向量,定义为 该向量的模为
5、 上式所表示的称为图像的梯度,它是x,y的函数,实际上也是图像的梯度图像。对于数字图像来讲,微分和只能用查分来近似。上式按差分运算近似后的梯度表达式为 但是,实际计算时,用这种方式计算量较大,为了节省计算机计算的时间,在计算精度允许的情况下,可蔡勇绝对差法。对应的绝对差算法为 必须注意的是,用梯度计算时,对于一个MN的数字图像f(x,y)(x=0,M-1,y=0,N-1),点(M-1,y)和(X,N-1)的梯度是无法进行计算的。因此,图像f(x,y)的最后一行(第M-1行)和最后一列(第N-1列)的像素的梯度值应该进行特殊处理。常用的方法是(M-1,y)的梯度值用(M-2,y)的梯度值来代替,
6、(x,N-1)的梯度值用(x,N-2)的梯度值来代替。 (2)拉氏算子拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性,比较适用于改善因为光线的漫反射造成的图像模糊。其原理是,在摄像记录图像的过程中,光点将光漫反射到其周围区域,这个过程满足扩散方程: 经过推导,可以发现当图像的模糊是由光的漫反射造成时,不模糊图像等于模糊图像减去它的拉普拉斯变换的常数倍。另外,人们还发现,即使模糊不是由于光的漫反射造成的,对图像进行拉普拉斯变换也可以使图像更清晰。拉普拉斯锐化的一维处理表达式是: 在二维情况下,拉普拉斯算子使走向不同的轮廓能够在垂直的方向上具有类似于一维那样的锐化效应,其表达式为: 对于离
7、散函数,拉氏算子定义为 其中 = = = = = 同理 类似的有 所以有 则拉式算子的模板表示为: 4、 源程序清单 #include stdafx.h #include DIPDemo.h #include DIPDemoDoc.h #include DIPDemoView.h #include mainfrm.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_;#endif IMPLEMENT_DYNCREATE(CDIPDemoView, CScrollView) BE
8、GIN_MESSAGE_MAP(CDIPDemoView, CScrollView) /AFX_MSG_MAP(CDIPDemoView) ON_COMMAND(ID_ENHA_SMOOTH, OnEnhaSmooth) ON_COMMAND(ID_ENHA_SHARP, OnEnhaSharp) /AFX_MSG_MAP END_MESSAGE_MAP() CDIPDemoView:CDIPDemoView() : m_bLBtnDblClkSrv(0) / TODO: add construction code here CDIPDemoView:CDIPDemoView() void C
9、DIPDemoView:OnDraw(CDC* pDC) BeginWaitCursor(); / 显示等待光标 CDIPDemoDoc* pDoc = GetDocument(); / 获取文档 ASSERT_VALID(pDoc); if(pDoc-m_Image.IsValidate() CPalette* pOldPalette; CPalette* pPalette = pDoc-GetDocPalette(); if(pPalette!=NULL) pOldPalette = pDC-SelectPalette(pPalette, FALSE); pDC-RealizePalett
10、e(); /更新系统调色板 pDoc-m_Image.Draw(pDC); /绘制图像 if(pPalette!=NULL) pDC-SelectPalette(pOldPalette, FALSE); EndWaitCursor(); / 恢复正常光标 void CDIPDemoView:OnEnhaSmooth() / 图像平滑 CDIPDemoDoc* pDoc = GetDocument(); / 获取文档 CImgProcess imgInput = pDoc-m_Image; / 输入对象 if (imgInput.m_pBMIH-biBitCount!=8) AfxMessage
11、Box(不是8-bpp灰度图像,无法处理!); return; / 检查图像是灰度图 CImgProcess imgOutput = imgInput; / 输出的临时对象 intnTempH;/ 模板高度 intnTempW; / 模板宽度 FLOAT fTempC;/ 模板系数 intnTempMX;/ 模板中心元素X坐标 intnTempMY;/ 模板中心元素Y坐标 FLOATaValue25 = 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0
12、.0, 0.0, 0.0, 0.0, 0.0, 0.0,; BeginWaitCursor(); / 更改光标形状 nTempH = 3; nTempW = 3; nTempMX = 1; nTempMY = 1; fTempC = (FLOAT) (1.0 / 9.0); / 初始化对话框变量值 imgInput.Template(&imgOutput, nTempH, nTempW, nTempMY, nTempMX, aValue, fTempC); / 调用Template()函数实现平滑滤波 pDoc-m_Image = imgOutput; / 将结果返回给文档类 pDoc-Set
13、ModifiedFlag(TRUE); / 设置脏标记 pDoc-UpdateAllViews(NULL); / 更新视图 EndWaitCursor(); / 恢复光标 void CDIPDemoView:OnEnhaSharp() / 拉普拉斯锐化 CDIPDemoDoc* pDoc = GetDocument(); / 获取文档 CImgProcess imgInput = pDoc-m_Image; / 输入对象 if (imgInput.m_pBMIH-biBitCount!=8) AfxMessageBox(不是8-bpp灰度图像,无法处理!); return; / 检查图像是灰度
14、图 CImgProcess imgOutput = imgInput; / 输出的临时对象 int nTempH; / 滤波器的高度 int nTempW; / 滤波器的宽度 int nTempMX; / 中心元素的X坐标 int nTempMY; / 中心元素的Y坐标 FLOATfCoef;/ 模板系数 BeginWaitCursor(); nTempW = 3; nTempH = 3; fCoef = 1.0; nTempMX = 1; nTempMY = 1; / 设置拉普拉斯模板参数 imgInput.Template(&imgOutput, nTempH, nTempW, nTemp
15、MY, nTempMX, Template_Laplacian2, fCoef); / 调用Template()函数用拉普拉斯模板锐化 pDoc-m_Image = imgOutput; / 将结果返回给文档类 pDoc-SetModifiedFlag(TRUE); / 设置脏标记 pDoc-UpdateAllViews(NULL); / 更新视图 EndWaitCursor(); / 恢复光标 5、 设计结果设计程序运行结果如下图所示,运行后原始图像如下: 进行图像平滑处理后如下图所示:图像进行拉普拉斯锐化后如下示:6、 收获和体会在这一个礼拜的图像处理程序设计中,我经过多次的实践和多次的失
16、败,终于在最后成功设计好了程序。同时深刻体会到图像平滑让图像中的细节成分越来越少,而相对的,图像锐化则是凸显图像的细节部分。图像平滑处理,在很多噪声的情况下,图像平滑能够有效的减弱噪声对图像的影响。无论是高斯噪声、椒盐噪声还是乘性噪声,都能很好的在图像平滑中将这几种噪声很好的去除。虽然不能完全复原如原图一样的情况,但是在图像平滑过后,噪声在图像中的存在确实少了许多。但是对于一些本身比较清晰的图像,效果就不那么明显了。图像平滑的弊端在于会把图像本身一些很好的细节部分给模糊掉,从而降低图像的质量。对一些分辨率很高而且细节很唯美的图像来说,图像平滑来处理噪声反而效果不是很好。而在图像的锐化中则是让图像变得更为清晰。通过图像锐化可以使图像的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 畜牧业疫病防控合作项目合同
- 2025综合承包施工合同
- 2025届高考政治一轮复习专题四发展社会主义市抄济23围绕主题抓住主线精练含解析
- 自考行政管理视野拓展试题及答案
- 2025年度合作协议 个人加盟外贸企业代理合同
- 2025如何编写租赁合同
- 行政决策科学化的路径试题及答案
- 2025城市更新项目房屋征收补偿合同范本
- 2025版终止解除租赁合同协议书模板
- 行政管理创新与市政学试题及答案
- 四川省绵阳市高中2022级第三次诊断性考试地理试题及答案(A卷)
- 压疮引起的疼痛护理
- 上海市静安区2025年高三二模英语试卷(含答案)
- 车间卫生打扫管理制度
- 造价风险防范管理制度
- 护理管理学中的化学性伤害
- 供暖项目可行性研究报告
- 《浙江省中药饮片炮制规范》 2015年版
- 辅导员考试基础知识考题盘点
- 阀门技术协议合同
- 2025江苏省安全员B证考试题库
评论
0/150
提交评论