版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
玻璃缺陷检测系统软件设计分析案例目录TOC\o"1-3"\h\u8482玻璃缺陷检测系统软件设计分析案例 117646第1章软件开发实现 1106261.1软件前处理 1115381.2软件检测过程 2273711.5本章小结 10625第2章对实验结果进行分析 1022072.1玻璃缺陷表面分析 1040952.2玻璃缺陷后处理 11275412.2.1气泡缺陷与污点缺陷 1113822.2.2划痕缺陷与玻筋缺陷 11279482.2.3缺陷识别结果 1295622.3玻璃缺陷检测结果分析 13165722.4本章小结 14第1章软件开发实现1.1软件前处理本系统是一个能对玻璃缺陷进行完整,实时的检测,从原始图像的处理到最后图像的分类,在使用前应提前配置好VS2015的环境:VS环境配置:1、新建一个项目,我这里建了一个空项目2、进入属性管理器,菜单栏->视图->其他窗口->属性管理器3、对Debug|X64进行配置,右键Microsoft.Cpp.x61.user,点击属性4、这里我们对属性中的VC++目录->包含目录和VC++目录->库目录进行添加相关路径,对链接器->输入->附加依赖项进行添加相关路径5、包含目录中加入C:\OPENCV\opencv\build\includeC:\OPENCV\opencv\build\include\opencvC:\OPENCV\opencv\build\include\opencv2库目录中加入C:\OPENCV\opencv\build\x64\vc14\libOpenCV3.1.0环境变量配置选择此电脑(计算机)右键属性->高级系统设置->环境变量->系统变量->找到Path->在变量值中添加路径C:\Opencv3.1.0\opencv\build\x64\vc14\bin1.2软件检测过程该系统主要检测过程:首先提供足够的光源,由相机对图像进行捕捉传入电脑当中,然后对图像进行预处理这样能够去除影响图像质量的因素,使图像质量变得更好,下一步是对缺陷检测,获得缺陷的大小,位置等信息,这些信息能够对缺陷的分类产生帮助,最后依据缺陷特征进行分类。下面为检测流程图1.1:开始开始图像采集图像预处理缺陷检测缺陷分类结束图1.1玻璃缺陷检测流程图1.图像预处理:玻璃缺陷图像的采集由于光照变化和噪声影响,可能相机得到的照片质量不高,表现在亮度不匀称以及图像不清楚,所以我们先要对图像进行预处理的步骤。主要是进过灰度转换,滤波等方法,这样能够大大的降低图像模糊和损失的概率。开始开始灰度化处理图像滤波求取梯度结束图1.2预处理流程图(1)灰度化处理:相机采集到的为彩色图像,存放的格式为RGB,如果直接处理会消耗更多的时间,检测速度也会变缓慢,颜色的影响并不大,所以进行灰度化处理能够加快检测速度。(2)图像滤波:在保证不丢失图像细节下对噪声进行抑制,处理的情况会对图像处理有影响,为了避免重要信息缺失我们选择中值滤波。以下是主要的程序:int_tmain(intargc,_TCHAR*argv[]){//IplImage*face=cvLoadImageIplImage*face=cvLoadImage//IplImage*lbp_face=cvCreateImage(cvGetSize(face),IPL_DEPTH_8U,1);IplImage*Gayface=cvCreateImage(cvSize(face->width,face->height),face->depth,1);//先分配图像空间cvCvtColor(face,Grayface,CV_BGR2GRAY);//把载入图像转换为灰度图IplImage*lbp_face=cvCreateImage(cvGetSize(Gayface),IPL_DEPTH_8U,1);//先分配图像空间cvNamedWindow("GrayImage",1);cvShowImage("GrayImage”,Gayface);//Matface2=imread("C://input//buti.jpg",CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);Matface2=imread("C://input//yalefaces//01//s1.bmp",CV_LOAD_IMAGE_ANYDEPTH)CV_LOAD_IMAGE_ANYCOLOR);//MatGray_face2=Mat::zeros(face2.size(),IPL_DEPTH_8U,1);//cvCvtColor(face2,Gray_face2,CV_BGR2RAY);Matlbp_face2=Mat::zeros(face2.size(),face2.type());//Mat:copyTo(lbp_face,face);(3)梯度求取:图像滤波过后,需加强缺陷部分,我们可以用Scharr对x或y方向进行图像差分。主要程序如下:cv::Matscharr_x,scharr_y; //求x方向的梯度 cv::Scharr(src,scharr_x,CV_16S,1,0,1,0,cv::BORDER_DEFAULT); cv::convertScaleAbs(scharr_x,scharr_x); //求y方向的梯度 cv::Scharr(src,scharr_y,CV_16S,0,1,1,0,cv::BORDER_DEFAULT); cv::convertScaleAbs(scharr_y,scharr_y); //合并梯度 cv::addWeighted(scharr_x,0.5,scharr_y,0.5,0,dst);图1.3预处理2.缺陷检测:图像预处理过后,已经能基本得到缺陷图像,但缺陷并没有完全的分离出来,所以就需要对缺陷进一步的检测,首先应对缺陷进行初步的检测分析,然后对缺陷进行边缘检测防止获得的缺陷不完整,对所选区域进行图像分割处理,结束结束图像初步检测分析边缘缺陷处理图像分割图像合并开始图1.4缺陷检测流程图首先进行初步分析后需对边缘进行检测,这里我们使用Canny算法,主要程序如下:importcv2img=cv2.imread("C:/Users/DELL/Desktop/img.jpg")gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)gauss=cv2.GaussianBlur(gray,(3,3),1)defdoCanny(x):position=cv2.getTrackbarPos("CannyBar","Canny")canny=cv2.Canny(gauss,position,position*2.5)cv2.imshow("Canny",canny)dWindow("Canny")cv2.createTrackbar("CannyBar","Canny",1,100,doCanny)cv2.waitKey(0)图1.5边缘检测然后进行图像分割,依据缺陷与背景之间灰度的差异,我们可以设置灰度阀值采用自适应阀值图像分割,主要程序如下:Imean=cv2.boxFilter(I,cv2.CV_32FC1,winSize)out=I-(1.0-ratio)*Imeanout[out>=0]=255out[out<0]=0out=out.astype(np.uint8)returnoutif__name__=='__main__':image=cv2.imread('img7.jpg',cv2.IMREAD_GRAYSCALE)img=adaptiveThresh(image,(5,5))cv2.imshow('origin',image)cv2.imshow('dealimage',img)cv2.waitKey(0)3.缺陷分类:每个缺陷都有不同的特征差异,能够对缺陷进行分类,几何特征是分类最好的特征,然后使用外接矩形的方法来对缺陷来定位。以下为主要程序:{//取得轮廓面积doubletestdbArea=fabs(cvContourArea(c,CV_WHOLE_SEQ));//取得轮廓长度doubletestdbLength=cvArcLength(c);c->block_max;if(testdbArea>=50&&testdbLength<=5000)cvRectangle(&(CvMat)contours,cvPoint(testrect.x,testrect.y+testrect.height),cvPoint(testrect.x+testrect.width,testrect.y),cvScalar(255,0,255),1);doublewidth=testrect.width;doubleheight=testrect.height;doublejuxingmianji=width*height;//找外界圆//cvMinEnclosingCircle(c,¢er,&radius);//cout<<radius<<endl;//cout<<center.x<<";"<<center.y<<endl;//画外接圆//cvCircle(&(CvMat)contours,cvPointFrom32f(center),(int)radius,cvScalar(255,0,255),2);}图1.6缺陷分类结果图最后对缺陷进行定位,主要程序如下:最小外界矩形的宽度和高度width,height=cv2.minAreaRect(cnt)//最小外界矩形的宽度和高度ifwidth*height>100://最小的外接矩形rect=cv2.minAreaRect(cnt)box=cv2.boxPoints(rect)#获取最小外接矩形的4个顶点box=0(box),cv2.drawContours(img,[box],0,(255,0,255),2);if0notinbox.Ravel():绘制最小外界矩形;foriinrange():cv2.line(image,tuple(box[i]),tuple(box[(i+1)%4]),0)
returnfalse;缺陷进行定位后结果图如下:图1.7缺陷定位1.5本章小结本章主要基于VS2015与OpenCV软件的结合使用,对玻璃缺陷图像进行预处理,以此来消除图中无关信息恢复有用信息,提高可靠性,然后进行轮廓的提取,使用Canny算法,降低噪声和边缘检测的错误率,对轮廓的提取有很大的帮助,最后对缺陷进行分类以及定位。第2章对实验结果进行分析2.1玻璃缺陷表面分析如果仅仅提取玻璃缺陷图像,会忽略缺陷自身难以区分以及环境等造成的影响,为了消除这些影响,就需要对缺陷进行进一步的分析,这样就能很好地解决图像问题的产生。作出以下流程图:开始开始采集玻璃缺陷图像图像处理特征分类特征处理图像处理完毕结束图2.1图像后处理流程图2.2玻璃缺陷后处理2.2.1气泡缺陷与污点缺陷在进行气泡与污点缺陷的边缘检测后,图像中存在内外轮廓分辨不清楚的问题,采用轮廓分级的处理方法,下面为轮廓分级图2.2:图2.2轮廓分级图中S1,S2,S3,S4,S5分别为连通域,S1为背景连通域,S1包含S2、Ss,S2、Ss为同级连通域,S2包含S3、S4,S3为孔,S3包含S4。frame为父级轮廓,B1与B4为同级外层轮廓,B2为孔轮廓,B3为B2内的外层轮廓。根据轮廓的分级能够解决内外轮廓区分的问题。2.2.2划痕缺陷与玻筋缺陷划痕是条状缺陷,气泡缺陷和污点缺陷的面积远大于划痕缺陷的面积,为保证检测不出现问题,所以根据面积先去除灰尘以及划痕,但划痕缺陷的宽度与灰尘纸屑的宽度相近,不能通过滤波来处理,本文采用除尘算法,通过设定周长阀值来将过短的周长轮廓去除掉。玻筋缺陷在经过差影运算,最大类间法等一系列的算法处理后,原本不清楚的图像处理后变得清晰,中间断裂处通过膨胀,腐蚀等操作后能够很好地缝合。2.2.3缺陷识别结果图像
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医师考证道题库高频重点提升附完整答案详解【易错题】
- 新能源汽车辅助系统检修课件 项目三 新能源汽车转向系统
- 2026年消防设备操作员押题宝典试题附答案详解【综合卷】
- 自动驾驶传感器集成方案
- 山地林业有害生物普查与防治手册
- 2025云南省昭通市巧家县教育投资有限责任公司招聘17人笔试历年典型考点题库附带答案详解
- 商品采购与库存管理手册
- 2025九江银行招聘合规经理(鹰潭)1人笔试历年典型考题及考点剖析附带答案详解2套
- 2025-2030中国无线点餐行业竞争动态及投资效益预测报告
- 互联网投资分析与决策手册
- 电缆采购投标方案(技术方案)
- 工业区物业服务手册
- 知道网课智慧树《哲学导论(湖南师范大学)》章节测试答案
- JBT 3341-2024 蓄电池托盘堆垛车(正式版)
- 天津市基坑倾斜桩无支撑支护技术规程
- GJB9001C质量保证大纲
- DB37∕T 3487-2019 山东省钢质内河浮桥承压舟建造规
- 中铁二局 综合投资报告
- 近代物理实验指导书
- 人文地理学课件
- LY/T 2837-2017云南松抚育技术规程
评论
0/150
提交评论