ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:102.41KB ,
资源ID:3750843      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3750843.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(图象处理基本算法.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

图象处理基本算法.docx

1、图象处理基本算法形态学一般是使用二值图像,进行边界提取,骨架提取,孔洞填充,角点提取,图像重建。基本的算法:膨胀腐蚀,开操作,闭操作,击中击不中变换几种算法进行组合,就可以实现一些非常复杂的功能,而且逻辑严密。这里给出形态学的一般原理,以及用形态学进行边界提取,角点提取好骨架提取的原代码一 引言 数学形态学是一门建立在集论基础上的学科,是几何形态学分析和描述的有力工具。数学形态学的历史可回溯到19世纪。1964年法国的Matheron和Serra在积分几何的研究成果上,将数学形态学引入图像处理领域,并研制了基于数学形态学的图像处理系统。1982年出版的专著Image Analysis and

2、Mathematical Morphology是数学形态学发展的重要里程碑,表明数学形态学在理论上趋于完备及应用上不断深入。数学形态学蓬勃发展,由于其并行快速,易于硬件实现,已引起了人们的广泛关注。目前,数学形态学已在计算机视觉、信号处理与图像分析、模式识别、计算方法与数据处理等方面得到了极为广泛的应用。 数学形态学可以用来解决抑制噪声、特征提取、边缘检测、图像分割、形状识别、纹理分析、图像恢复与重建、图像压缩等图像处理问题。该文将主要对数学形态学的基本理论及其在图像处理中的应用进行综述。二 数学形态学的定义和分类 数学形态学是以形态结构元素为基础对图像进行分析的数学工具。它的基本思想是用具有

3、一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。数学形态学的应用可以简化图像数据,保持它们基本的形状特征,并除去不相干的结构。数学形态学的基本运算有4个:膨胀、腐蚀、开启和闭合。它们在二值图像中和灰度图像中各有特点。基于这些基本运算还可以推导和组合成各种数学形态学实用算法。(1)二值形态学 数学形态学中二值图像的形态变换是一种针对集合的处理过程。其形态算子的实质是表达物体或形状的集合与结构元素间的相互作用,结构元素的形状就决定了这种运算所提取的信号的形状信息。形态学图像处理是在图像中移动一个结构元素,然后将结构元素与下面的二值图像进行交、并等集合运算。 基本的形态运

4、算是腐蚀和膨胀。 在形态学中,结构元素是最重要最基本的概念。结构元素在形态变换中的作用相当于信号处理中的“滤波窗口”。用B(x)代表结构元素,对工作空间E中的每一点x,腐蚀和膨胀的定义为: 用B(x)对E进行腐蚀的结果就是把结构元素B平移后使B包含于E的所有点构成的集合。用B(x)对E进行膨胀的结果就是把结构元素B平移后使B与E的交集非空的点构成的集合。先腐蚀后膨胀的过程称为开运算。它具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。先膨胀后腐蚀的过程称为闭运算。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。 可见,二值形态膨胀与腐蚀可转化为集合的逻辑运算,算法简单,适于并

5、行处理,且易于硬件实现,适于对二值图像进行图像分割、细化、抽取骨架、边缘提取、形状分析。但是,在不同的应用场合,结构元素的选择及其相应的处理算法是不一样的,对不同的目标图像需设计不同的结构元素和不同的处理算法。结构元素的大小、形状选择合适与否,将直接影响图像的形态运算结果。因此,很多学者结合自己的应用实际,提出了一系列的改进算法。如梁勇提出的用多方位形态学结构元素进行边缘检测算法既具有较好的边缘定位能力,又具有很好的噪声平滑能力。许超提出的以最短线段结构元素构造准圆结构元素或序列结构元素生成准圆结构元素相结合的设计方法,用于骨架的提取,可大大减少形态运算的计算量,并可同时满足尺度、平移及旋转相

6、容性,适于对形状进行分析和描述。(2)灰度数学形态学 二值数学形态学可方便地推广到灰度图像空间。只是灰度数学形态学的运算对象不是集合,而是图像函数。以下设f(x,y)是输入图像,b(x,y)是结构元素。用结构元素b对输入图像y进行膨胀和腐蚀运算分别定义为:对灰度图像的膨胀(或腐蚀)操作有两类效果:(1)如果结构元素的值都为正的,则输出图像会比输入图像亮(或暗);(2)根据输入图像中暗(或亮)细节的灰度值以及它们的形状相对于结构元素的关系,它们在运算中或被消减或被除掉。灰度数学形态学中开启和闭合运算的定义与在二值数学形态学中的定义一致。用b对f进行开启和闭合运算的定义为:(3)模糊数学形态学 将

7、模糊集合理论用于数学形态学就形成了模糊形态学。模糊算子的定义不同,相应的模糊形态运算的定义也不相同。在此,选用Shinba的定义方法。模糊性由结构元素对原图像的适应程度来确定。用有界支撑的模糊结构元素对模糊图像的腐蚀和膨胀运算按它们的隶属函数定义为:其中,x,yZ2代表空间坐标,ua,ub分别代表图像和结构元素的隶属函数。从(7),(8)式的结果可知,经模糊形态腐蚀膨胀运算后的隶属函数均落在0,1的区间内。模糊形态学是传统数学形态学从二值逻辑向模糊逻辑的推广,与传统数学形态学有相似的计算结果和相似的代数特性。模糊形态学重点研究n维空间目标物体的形状特征和形态变换,主要应用于图像处理领域,如模糊

8、增强、模糊边缘检测、模糊分割等。三数学形态学在图像处理中的主要应用近年来,数学形态学在图像处理方面得到了日益广泛的应用。下面主要就数学形态学在边缘检测、图像分割、图像细化以及噪声滤除等方面的应用做简要介绍。(1)边缘检测边缘检测是大多数图像处理必不可少的一步,提供了物体形状的重要信息。对于二值图像,边缘检测是求一个集合A的边界,记为B(A):对于灰度图像,边缘检测是求一幅图像的形态学梯度,记为g:数学形态学运算用于边缘检测,存在着结构元素单一的问题。它对与结构元素同方向的边缘敏感,而与其不同方向的边缘(或噪声)会被平滑掉,即边缘的方向可以由结构元素的形状确定。但如果采用对称的结构元素,又会减弱

9、对图像边缘的方向敏感性。所以在边缘检测中,可以考虑用多方位的形态结构元素,运用不同的结构元素的逻辑组合检测出不同方向的边缘。梁勇等人构造了8个方向的多方位形态学结构元素,应用基本形态运算,得到8个方向的边缘检测结果,再把这些结果进行归一化运算、加权求和,得到最终的图像边缘。该算法在保持图像细节特征和平滑边缘等方面,取得了较好的效果。边缘检测源代码:1. /*2. 形态学基本操作采用二值图像3. */4. #include5. #include6. intmain()7. IplImage*image,*image2,*image3;8. image=cvLoadImage(E:imagemap

10、leleaf.tif,0);9. cvNamedWindow(image,1);10. cvShowImage(image,image);11. 12. 13. /*边界提取*/14. image2=cvCreateImage(cvSize(image-width,image-height),image-depth,1);15. image3=cvCreateImage(cvSize(image-width,image-height),image-depth,1);16. inti,j;17. intleft,right,up,down;18. intn=2;/窗口大小为5*519. intr

11、,s,flag;20. unsignedchar*ptr,*dst;21. for(i=0;iheight;i+)22. 23. for(j=0;jwidth;j+)24. 25. /窗口设定26. left=j-n;27. right=j+n;28. up=i-n;29. down=i+n;30. /窗口出界处理31. if(left=image-width)right=image-width-1;33. if(up=image-height)down=image-height-1;35. 36. /腐蚀处理37. dst=(unsignedchar*)image2-imageData+im

12、age2-widthStep*i+j;38. flag=1;39. for(r=up;r=down;r+)40. 41. for(s=left;simageData+r*image-widthStep+s;44. 45. if(*ptr!=255)46. flag=0;47. 48. 49. 50. if(flag=1)51. 52. *dst=255;53. 54. else55. *dst=0;56. 57. 58. 59. 60. cvSub(image,image2,image3,0);61. cvNamedWindow(image3,1);62. cvShowImage(image3

13、,image3);63. cvSaveImage(mapleleafboard.bmp,image3);64. cvWaitKey(0);65. cvReleaseImage(&image);66. cvReleaseImage(&image2);67. cvReleaseImage(&image3);68. cvDestroyAllWindows();69. return0;70. 原图:边界提取:(2)图像分割基于数学形态学的图像分割算法是利用数学形态学变换,把复杂目标X分割成一系列互不相交的简单子集X1,X2,XN,即:对目标X的分割过程可按下面的方法完成:首先求出X的最大内接“圆”X1

14、,然后将X1从X中减去,再求X-X1的最大内接“圆”X2,依此类推,直到最后得到的集合为空集为止。下面以二值图像为例,介绍用数学形态学方法求解子集X1,X2,XN的过程。设B为结构元素,B可以是圆、三角形、正方形等简单的几何基元,那么“简单”形状集合Xi可以用下面的公式来定义:式中ni为一整数,用上式定义Xi分割目标,有时会产生分割过程不唯一的现象。为此可采用下面公式来定义简单集合Xi:其中Li为一个点或一条线,当Li为点时,则与(12)式定义等价。(13)式定义的简单形状Xi可由niB沿线Li移动而产生。即将“产生器”niB的中心沿“脊骨”Li移动产生。如果niB为圆,则得到的Xi称Blum

15、带。它具有一些特殊的性质,如Xi的边界是光滑的,Xi的最大圆与其边界相切,Xi的脊骨与产生器都是唯一的等等。有了简单形状集合Xi的定义,则目标X可按下面方法分割。首先按式(14)求出X的最大内切结构元素Xi:数学形态学用于图像分割的缺点是对边界噪声敏感。为了改善这一问题,刘志敏等人提出了基于图像最大内切圆的数学形态学形状描述图像分割算法和基于目标最小闭包结构元素的数学形态学形状描述图像分割算法,并使用该算法对二值图像进行了分割,取得了较好的效果。邓世伟等人提出一种基于数学形态学的深度图像分割算法。作者首先利用形态学算子获得分别含有阶跃边缘与屋脊边缘的凸脊和凹谷图像,然后利用控制区域生长过程得到

16、最终的分割结果。与传统方法相比,该方法速度快,抗噪性能好。(3)形态骨架提取形态骨架描述了物体的形状和方向信息。它具有平移不变性、逆扩张性和等幂性等性质,是一种有效的形状描述方法。二值图像A的形态骨架可以通过选定合适的结构元素B,对A进行连续腐蚀和开启运算来求取,设S(A)代表A的骨架,定义为:蒋刚毅等人运用数学形态学方法,对交通标志的内核形状提取形态骨架函数,将其作为用于模式匹配的形状特征。A的形态骨架函数SKF(A)表示为:SKF(X)中值较大的点对应大的n,并代表了形态骨架的主要成分,即表达了形状的主体结构;而SKF(X)中值较小的点对应小的n,是形态骨架的细节成分,与形状的边缘信息相联

17、系。形态骨架函数完整简洁地表达了形态骨架的所有信息,因此,根据形态骨架函数的模式匹配能够实现对不同形状物体的识别。算法具有位移不变性,因而使识别更具稳健性。骨架提取原代码:1. /*/2. /*骨架提取*/3. /*/4. #include5. #include6. intmain()7. IplImage*image=cvLoadImage(E:imagebone.tif,0);8. cvNamedWindow(image,1);9. cvNamedWindow(image2,1);10. cvNamedWindow(image3,1);11. cvNamedWindow(image4,1)

18、;12. cvNamedWindow(image5,1);13. cvNamedWindow(image6,1);14. 15. cvNamedWindow(result,1);16. cvShowImage(image,image);17. /cvWaitKey(0);18. /当前图片image2当前被腐蚀后的图片image3被腐蚀开操作之后的图片image519. /image4作为开操作的中间值作差后的图片image6并之后的图片result20. IplImage*image2,*image3,*image4,*image5,*image6,*result;21. image2=cv

19、CreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);22. image3=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);23. image5=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);24. image4=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);25. image6=cvCrea

20、teImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);26. result=cvCreateImage(cvSize(image-width,image-height),IPL_DEPTH_8U,1);27. 28. /循环标志flag29. boolflag=true;30. /腐蚀判断标志flag231. boolflag2=true;32. inti,j,r,s;33. unsignedchar*ptr,*dst;34. unsignedcharB9=255,255,255,255,255,255,255,255,255;35.

21、 /对result进行赋值全部为036. for(i=0;iheight;i+)37. 38. for(j=0;jwidth;j+)39. 40. dst=(unsignedchar*)(result-imageData+result-widthStep*i+j);41. *dst=0;42. 43. 44. image2=cvCloneImage(image);45. cvShowImage(image2,image2);46. /cvWaitKey(0);47. while(flag)48. 49. /flag=false;50. cvShowImage(image2,image2);51

22、. /进行腐蚀操作,开环操作作差并52. for(i=0;iheight;i+)53. 54. for(j=0;jwidth;j+)55. 56. dst=(unsignedchar*)(image3-imageData+i*image3-widthStep+j);57. if(i=0)|(j=0)|(i=image-height-1)|(j=image-width-1)58. 59. *dst=0;60. /break;61. 62. else63. flag2=true;64. for(r=i-1;r=i+1;r+)65. 66. for(s=j-1;simageData+r*image2-widthStep+j);69. if(*ptr!=255)70. flag2=false;71. 72. 73. 74. 75. if(flag2)76. 77. *dst=255;78. 79. else*dst=0;80. 81. 82. 83. cvShowImage(image3,image3);84. 85. 86. /开操作先腐蚀后膨胀87. for(i=0;iheight;i+)88. 89. for(j=0;jwidth;j+)90. 91.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1