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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

机器视觉算法基础.docx

1、机器视觉算法基础机 器 视 觉基于visual C+ 的数字图像处理摘要机器视觉就是用机器代替人眼来做测量和判断。它通过图像摄取装置将被摄取目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来获取信息。本文主要介绍的是数字图像处理中的一些简单应用,通过对图像进行滤波、增强、灰度变换、提取特征等处理来获取图像的信息,达到使图像更清晰或提取有用信息的目的。关键字:机器视觉、灰度图处理、滤波、边缘提取、连通区域1 概述本次设计是根据“机器视觉”课程的作业要求,使用工具visual c+ 完

2、成一些简单数字图像处理。按照作业要求,本文介绍了以下五种处理的原理、实现方法和实现结果:1、 24位彩色到灰度图的转换2、 直方图均衡化3、 均值滤波和中值滤波4、 拉普拉斯算子5、 灰度变换然后,本文着重介绍了一种轮廓提取的方法,对焊缝缺陷的轮廓进行提取,分析了该方法的优缺点、存在的问题、拟解决方法。最后,根据课堂兴趣,分析了一种数连通区域的方法,对一幅含有米粒的图进行了举例。2技术路线数字图像的处理方法很多,常用的有空域和频域的方法。以灰度图为例,空域的方法是直接对各个像素的或某个像素区域进行变换,即f(x,y) g(x,y),方法举例有均值滤波、中值滤波、微分运算、灰度变换等;频域的方法

3、是通过傅里叶变换得到图像的频谱特征,再根据频率特性设计滤波器,达到预期的目的。本文中举例的几种方法都是在空域进行的。其界面设计如图2.1所示。其中二值化处理、反相处理等是对单个像素点进行处理,均值滤波、轮廓提取是对一块像素区域进行处理。图2.1 图像处理界面3实现方法3.1 灰度图转换日常生活中获取的很多图像都是彩色图像,为方便处理,首先应该进行灰度图转换。对于一幅位图,其结构由文件头、位图信息头、颜色信息和图像数据四部分组成。从一幅24位真彩色图到灰度图的转换过程中,需要改变除需要修改文件的数据区以外,文件头、文件信息头的部分信息也要做相应计算修改。本文采取了一种简单的方法,在不修改文件头、

4、文件信息头的条件下,完成灰度图的 转换,具体实现如下:1、 已知原图像数据存储区为m_pData,新建一片存储区m_pData2;2、 通过公式0.3*r+0.59*g+0.11*b得到各像素的灰度信息,存储在m_pData2中;3、 将m_pData中各像素的r、g、b值设定为相应的灰度值;4、 用m_pData中的数据进行显示和保存,用m_pData2中的数据进行计算。这种实现方法的优点是不需要计算修改文件头,但是每次显示或者存盘都要将m_pData2中的数据复制到m_pData中,比较麻烦。3.2 直方图均衡化将图像从彩色转换到灰度图后,可以对其进行各种转换。直方图均衡化是把原始图像的灰

5、度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。这是对图像的非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同,适用于背景和前景都太亮或者太暗的图像。一幅灰度级为0,L-1范围的数字图像的直方图是离散函数:h(rk) = nk(rk是第k级灰度,nk是图像中灰度级为rk 的像数个数)直方图均衡化的目的即通过点运算使得输入图像转化为在每一灰度级上都有相同的像素点数的输出图像,即输出图像的直方图是平的。h(rk) = wide*height/L(wide、height为图像的宽和高,单位:像素)为达到以上目的,灰度级为k的像素应映射到的灰度级为:其具体的实现步骤如下

6、:1、 统计直方图数组,用一个数组p记录pi,即直方图分布;2、 i从1开始,令si = si-1 + pi,即得到累积分布;3、 一个数组L记录新的s的索引值:令Li = si * (256-1),这里默认L=256;4、 依次循环每一个像素,取原图的像素值作为数组L的下标值,取该下标对应的L数组值为均衡化后的像素值。3.3均值滤波和中值滤波由于在图像的形成、传输、和接收的过程中,不可避免的存在着外部干扰和内部干扰,会存在着一定的噪声,因此需要进行平滑或滤波。改善图像质量的方法很多,这里简要描述常用的均值滤波和中值滤波。均值滤波,即采用当前像素的邻域平均灰度值来代替原值,达到减弱噪声的目的。

7、特点是实现简单,有一定程度的滤波效果,但是是以图像模糊为代价的。其实现步骤如下:1、 取得原图像大下,新建数据区;2、 循环取得各点像素值,根据设定的模板大小求取邻域内的像素平均值,放到新建的数据区;3、 依次循环直至整幅图像处理完;4、 将新建数据区的数据复制到原数据区。中值滤波是采用当前像素的邻域内灰度值居中的像素值来代替原值,是一种统计滤波方式。因为一些干扰噪声往往具有较大或较小的灰度值,因此可以被滤掉,对于椒盐噪声有较好效果。其实现方法如下:1、 取得原图像大小,新建数据区;2、 循环取得各点像素值,根据设定的模板大小求取邻域内的像素中间值,放到新建的数据区;3、 依次循环直至整幅图像

8、处理完;4、 将新建数据区的数据复制到原数据区。3.4灰度变换在得到原图像灰度图的基础上,可以对原图像进行一些基本变换,达到便于分辨、滤除噪声、图像锐化等目的。例如,二值化处理可以缩减图像信息量,便于实时处理;反色变换可以突出一些很亮的细节;对数变换可以压缩图像亮区的灰度值,拉伸暗区的灰度值,从而突出暗区的图像特征;幂次变换可以增强图像对比度这里简要举例如下。1、反转变换反色变换实现比较简单,只需要依次读取个像素点的灰度值,令其等于L-1-r(r为原灰度值)即可,不需要另外开辟内存空间。2、幂次变换幂次变换即依次求取各个像素点的幂次即可,根据需要乘以相应系数,达到不同效果。即:在做幂次变换的过

9、程中,当取值较大时易产生数据溢出现象,经过将s调整为长整型解决这个问题。3、对数变换对数变换即依次求取各个像素点的对数,也可乘以相应系数,达到不同效果。即:在以上处理中,可能会出现灰度值大于L-1或者小于0的情况,需要再进行线性变换处理,或者直接将小于0的灰度值设为0,将大于L-1的灰度值设为L-14、 分段线性变换对原图像不同的像素值进行不同程度的变量或变暗处理能达到增强对比度或者突出某些细节的作用。分段线性变换即是通过设定不同区域的处理方法达到不同处理效果的变换。其实现方法如下:4.1、设定分段线性变换的两个转折点;4.2、新建数据区,大下为L;4.3、循环计算0L-1各个像素值变换后的值

10、,放到新建的数据区;4.4、依次循环每一个像素,取原图的像素值作为新建数据区的索引,取该索引对应的新建数据区的像素值。4.5、依次处理直至整幅图像处理完毕。这种方法先一次计算完0L-1的所有灰度值对应的像素值,对于较大的图像可以节约计算量。3.5拉普拉斯算子在实际的图像处理过程中,往往需要突出图像中的细节或增强被模糊了的图像细节,以便于识别或后续处理。其基本方法是进行微分运算,找到变化较显著的点或线,即认为是边界。通常可以用一阶微分和二阶微分。一阶微分的极值处是边界点,二阶微分的过零点为边界点。这里介绍一种基于二阶微分的图像增强方法:拉普拉斯算子。拉普拉斯算子是x和y方向上的二阶微分相加得到的

11、,是各向同性滤波器。通过将该算子与原图像做卷积运算达到边缘提取的效果。常用的算子有以下几种:程序实现方法如下:1、 取得原图像大小,新建数据区;2、 循环取得各点邻域像素值,根据设定的模板大小(这里是3*3)依次做卷积运算,放到新建的数据区;3、 依次循环直至整幅图像处理完;4、 将新建数据区的数据复制到原数据区。通过拉普拉斯算子可以提取轮廓,但是同时也放大了噪声信号,所以可以先滤波,再提取轮廓。另外,拉普拉斯算子与原图卷积之后,还要做过零检测,才能得到单像素边缘,这里略掉此步。4 轮廓提取在了解了图像的基本处理方法的基础上,下面具体分析焊缝缺陷的轮廓提取。这里以一副24位位图(如图4.1所示

12、)为例。图4.1 焊缝缺陷4.1构造CDib类在新建完一个单文档应用程序后,首先应构造一个图像处理的基类,用来封装位图的基本操作。该类需完成文件的读写操作、位图信息获取、位图的显示等内容。4.2灰度转换在打开位图后,首先需要进行灰度转换,将24位位图转换为灰度图,便于后续处理。如前所述,这里的灰度转换只修改了数据区,未改变文件的文件头和位图信息头。处理后图像如图4.2所示。图4.2 灰度图4.3一阶微分对灰度图进行一阶微分处理,得到大致的轮廓。处理后图像如图4.3所示。图4.3 一阶微分(prewitt)4.4滤波对一阶微分后的图像进行滤波处理,保留裂纹的轮廓,衰减其余部分。在这里进行了膨胀、

13、腐蚀处理,处理后图像如图4.4所示。图4.4 一阶微分滤波后图像4.5相加将滤波后的图像与原灰度图相加。为了不至于显得太亮,对滤波后的图像进行了一次分段线性变换,将最大灰度值压缩到100。处理后图像如图4.5所示。图4.5 相加4.6轮廓提取最后对图像进行轮廓提取。这里使用了Log算法(不完全)和canny算法。比较结果显示canny算法(高低阈值分别取0.913和0.3)效果更优。Canny算法的具体步骤包括以下几步:1、 用高斯滤波器平滑图象; 2、 用一阶偏导的有限差分来计算梯度的幅值和方向; 3、 对梯度幅值进行非极大值抑制;4、 用双阈值算法检测和连接边缘。Canny算法的最后结果如

14、图4.6所示。图4.6 轮廓图4.7检验为了检验边缘提取的准确性,将轮廓图与原灰度图叠加,其效果如图4.7所示。此效果基本上满足要求,轮廓大致形态吻合,但是轮廓线与原图中轮廓有一定误差。分析其原因,可能是轮廓提取的步骤中,先做一阶微分再与原图相加不是很合理,对一阶微分图进行膨胀和腐蚀也有一定误差,最终导致轮廓膨胀了。另外,轮廓尚未封闭,方法有待改进。图4.7 叠加图因此,对于这幅图还做了如下两种轮廓提取方法。方法二如图4.8所示。处理步骤依次为:将原图灰度化,中值滤波(3*3),均值滤波(9*9),原灰度图减去滤波后的图,二值化(阈值14),膨胀,腐蚀,canny提取轮廓,与原灰度图相加。方法

15、三如图4.9所示。处理步骤与方法二类似,只是去掉了膨胀和腐蚀。相比方法一,这两种方法的效果也是基本上满足要求,但是轮廓的封闭性好一些,尤其是方法三,与原图的吻合性也相对较好。但是,这样处理的轮廓边缘带有毛刺,尚不能完全消除,尚待解决。图4.8 轮廓提取方法二图4.9 轮廓提取方法三另外,与MATLAB提取的轮廓图做一对比。MATLAB提取的轮廓图如图4.10所示,其步骤如图4.11所示。此轮廓图基本上完全封闭,相比以上三种方法效果最好。图4.10 轮廓图(MATLAB)图4.11 MATLAB提取轮廓步骤5 数米粒数目在得到图像的轮廓的基础上,下面再具体分析一个数出米粒数目的例子。其原图如图5

16、.1所示。图5.1 原图首先对原图用canny算法进行轮廓提取,高低阈值分别取0.71和0.3时效果如图5.2所示。图5.2 轮廓图然后数出米粒数目。其实现方法如下:定义要检测的连通区域为x(0或255),这里取255,即白色;1、 在已经得到轮廓图的前提下,进行二值化处理;2、 逐行检测,当检测到像素值为x时,进行判断:如果右上点为x,则标记为与右上点相同,同时检测左前点、左上点是否为x,是则将它们做上相同标记;如果左上点为x,则标记为与左上点相同;如果左前点为x,则标记为与左前点相同;否则做上新的标记。此算法实现简单,但是在修改标记时对图像进行了多次局部扫描。可以通过在第一次扫描时先做不同标记,最后对图像做一次整体扫描来解决。按照如上方法扫描完整幅图像后得到米粒数目为83,基本正确。但是轮廓提取过程中图像内部存在没滤掉的白色线条,使得数出来的米粒数目可能不准确。预计可以通过轮廓处理算法的改进或者轮廓提取前滤波达到更好效果。

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

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