基于vc的砂轮表面金刚石识别毕业设计(编辑修改稿)内容摘要:

k = ( i )表示第 j 行第 k 列坐标的像素亮度为 ( i )。 [2] 在计算机视觉领域中,图像中物体的颜色、亮度信息作为一种最基本的视觉特征,基于 VC++的砂轮表面金刚石识别 8 因 其直观、便于分析、对比度高易于区分等特性,常被运用于物体的识别、分类算法之中。 具体到金刚石检测这个项目中,通过对样本图像的肉眼观察,我们可以发现含有金刚石的矿石部分像素亮度值,显著大于不含金刚石的杂质部分。 这提示我们将样本图片由三通道的彩色图像转化为单通道的灰度图像,并通过对像素点亮度值的考察进行后续处理。 程序实现 对一张彩色图片,将对应像素点的 RGB 三通道值转化为亮度 I 的公式为: I = x R + x G + x B ( ) 式 ( )中, R、 G、 B 分别为像素点红、绿、蓝三通道对应的强度值, I 为灰度图相应位置像素点的灰度值。 对于一张宽 width、高 height 的彩色图像 sourceImage,将其转化为灰度图像 grayImage 的方法即为遍历 sourceImage,对图中每个像素点进行式 ( )的转换处理,程序伪代码如下: for ( y = 0。 y height。 y++ ) for( x = 0。 x width。 x++ ) grayImage [x, y] [I] = x sourceImage [x, y] [R] + x sourceImage [x, y] [G] + x sourceImg [x ,y] [B] 在 OpenCV 库中,封装好的图像结构类指针以及对应的函数方法可以帮助我们在图像层面对样本进行处理。 研究者可以使用 OpenCV 中的 Iplimage 类图像指针对图像进行读取,而 cvCvtColor ( ) 函数能将三通道的彩色图像转化为单通道的灰度图像。 通过下列函数,同样可以实现上段中伪代码的功能 [7]: Iplimage * sourceImage = cvLoadImage ( )。 基于 VC++的砂轮表面金刚石识别 9 Iplimage * grayImage = cvCreateImage ( cvGetSize( sourceImage ), sourceImage depth, 1)。 cvCvtColor ( sourceImage, grayImage, CV_BGR2GRAY )。 上述代码中, cvCreateImage( )函数创建了一幅与 sourceImage 同样宽高的单通道图像,CV_BGR2GRAY 参数通知程序转换图像的方式为“ BGR 彩色图到灰度图”。 以数字图像处理中常见的 Lena 图为例,进行灰度转换后,得到的灰度图与原始彩色图像对比如图 ( 31 )所示,其中图 (a)为原始的 RGB 三通道彩色图像,图 (b)为经过转换后的灰度图像。 (a) (b) 图 ( 31 ) Lena 图的灰度转换 (a)原始彩色 RGB 三通道图像; (b)灰度图像。 中值滤波 经过灰度转换后的样本图像包含了丰富的目标信息,为后续搜寻轮廓算法提供了特基于 VC++的砂轮表面金刚石识别 10 征基础。 仔细观察原始样本图像可以发现,图像中杂质矿石部分中参杂了少数离散的亮点“噪声”。 由于项目的最终目的是计算金刚石轮廓包含的面积,而这部分亮点噪声会对轮廓的搜寻产生干扰,因此需要消除,而首选的方式即为中值滤波。 理论基础 作为一种传统的非线性平滑技术,中值滤波擅于处理离散、突发的噪声,尤其对消除椒盐噪声有非常好的效果,并能保护信号或图像信息的边缘不被模糊。 中值滤波在图像处理领域的定义为:对 x 坐标处的像素点,规定 长度 n 作为邻域窗口范围,对领域内像素强度值序列 I(xn), I(xn+1), ...I(x), ...I(x+n1), I(x+n)进行大小排序,选择该序列的中值作为 I(x)滤波后的强度值。 由于离散的噪声与邻域的像素值具有很大差异,在窗口排序后通常排列在序列的头部或尾端,并有较大的可能性选取周围邻域像素点强度作为中值,从而达到消除噪声的效果。 在数字图像处理的实际运用中,考虑到图像像素分布在二维( x,y)空间,选取的邻域通常为一个以当前滤波像素点为中心, n x n 大小的正方形窗口,对窗口中 n2 个像 素点强度值进行排序并选取中值。 椒盐噪声是一种在图像上随机分布,离散的亮暗点噪声。 通常情况下,中值滤波被应用于处理椒盐噪声。 在金刚石检测项目中,虽然待处理的噪声均为亮点,没有“椒”噪声,但由于其显著离散的特性,我们仍可使用中值滤波对其进行处理,以期获得较好的效果。 程序实现 在实际环境中,我们选取 3 x 3 的正方形邻域作为滤波窗口。 对 节中获得的灰度图像 grayImage,利用滤波窗口遍历像素点进行滤波得到滤波后图像 mfilterImage,算法伪代码如下: 基于 VC++的砂轮表面金刚石识别 11 for ( y = 0。 y height。 y++ ) for( x = 0。 x width。 x++ ) { queueVal [9] ={ grayImage [x1, y1] [I], grayImage [x, y1] [I], ..., grayImage [x, y+1] [I], grayImage [x+1, y+1] [I] }。 sort( queueVal [0], queueVal [8] )。 mfilterImage [x, y] [I] = queueVal [4]。 } 其中, sort( )函数的功能为对指定数组序列根据值进行排序,上述伪代码中并未包含滤波像素点在图像边缘、滤波窗口无法获得足够像素值的情况,需要进行额外的界限处理,防止程序数据越界。 OpenCV 库中提供了多种线性和非线性滤波,其中也包含了中值滤波,根据参数的调整还可以更改滤波窗口的大小: Iplimage * mfilterImage = cvCreateImage ( cvGetSize( grayImage ), grayImage depth, 1)。 cvSmooth ( grayImage, mfilterImage, CV_MEDIAN, 3)。 cvSmooth ( )提供了丰富的参数控制图像的滤波效果, CV_MEDIAN 通知程序对图像进行中值滤波,数字 3 则控制滤波窗口的边长大小。 在使用 OpenCV 库函数处理的情况下,只需保证原图像与处理图像具有同样大小和通道数,无需考虑图像边界问题,OpenCV 封装的函数算法会根据当前像素点坐标自动调整窗口序列。 图 ( 32 )展示了 3x3 正方形窗口中值滤波的金刚石砂轮灰度图像,其中图 ( a )为原基于 VC++的砂轮表面金刚石识别 12 始灰度图像,图 ( b )为中值滤波后的二值图像。 通过观察可以发现,图 ( a )中大部分离散的小亮点噪声在图 ( b )中都被消除了,而且图 ( b )保留了目标轮廓的大部分信息,并没有造成边缘模糊过重的现象。 (a) (b) 图 ( 32 ) 金刚石砂轮图像的中值滤波 (a)原始灰度图像; (b)中值滤波后的灰度图像。 阈值变换 得到中值滤波的图像之后,依据对样本图像的观察,我们发现图像中不同种类 (含/不含金刚石)的矿石亮度值有明显差异,可以通过阈值变换的方式对图像做进一步处理。 理论基础 阈值变换是数字图像处理中的一种常用手段,通过阈值变换可以彰显或抑制图像中符合像素值条件要求的区域,进而提取其中的有效信息。 [2] 基于 VC++的砂轮表面金刚石识别 13 对于图像中某像素点亮度值 I,给予一个阈值 T,比较 I 与 T 的大小,若其满足事先预设的条件( I 小于 T 或 I 大于 T)则进行相应的处理。 常见的处理方法有如下几种: ( 1 ) 满足条件者保留原始亮度值,不满足者亮度值置 0; ( 2 ) 满足条件者亮度值置为最大,不满足者亮度值 置 0; ( 3 ) 满足条件者亮度值置为阈值 T,不满足者亮度值置 0。 在金刚石检测的应用中,不含金刚石的杂质部分对后续处理没有帮助,反而会造成干扰,需要从图像中除去信息;而包含金刚石的部分则是后续考察的对象,需要重点突出。 同时,金刚石矿层部分亮度较高基于上述两点原因,决定采用方法 ( 2 )作为程序算法的处理方法。 程序实现 对于 中得到的中值滤波灰度图 mfilterImage,类似于灰度变换,阈值变换的过程也需要通过遍历图像中的像素点来进行处理。 程序的伪代码如下: for ( y = 0。 y height。 y++ ) for( x = 0。 x width。 x++ ) if ( mfilterImage [x,y] [I] T) thresImage [x, y] [I] = 255。 else thresImage [x, y] [I] = 0。 通过上述运算,我们获得了阈值变换后的图像 thresImage。 此时的 thresImage 为一幅二值灰度图像,各像素点取值非 0 即为 255。 同样地,在 OpenCV 库中,也有封装好的阈值转换函数供研究者调用: Iplimage * thresImage = cvCreateImage ( cvGetSize (mfilterImage ), mfilterImage depth, 1)。 基于 VC++的砂轮表面金刚石识别 14 cvThreshold ( mfilterImage, thresImage, pixThres, 255, CV_THRESH_BINARY )。 在上述代码中, cvThreshold ( ) 将 mfilterImage 图像的像素值根据条件阈值 pixThres。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。