湖北工业大学机器视觉作业.doc

上传人:rrsccc 文档编号:9340497 上传时间:2021-02-20 格式:DOC 页数:9 大小:383.50KB
返回 下载 相关 举报
湖北工业大学机器视觉作业.doc_第1页
第1页 / 共9页
湖北工业大学机器视觉作业.doc_第2页
第2页 / 共9页
湖北工业大学机器视觉作业.doc_第3页
第3页 / 共9页
湖北工业大学机器视觉作业.doc_第4页
第4页 / 共9页
湖北工业大学机器视觉作业.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《湖北工业大学机器视觉作业.doc》由会员分享,可在线阅读,更多相关《湖北工业大学机器视觉作业.doc(9页珍藏版)》请在三一文库上搜索。

1、1、 列举至少三种零件表面三维数据获取的方法。针对其中一种,详细介绍其测量原理或方法。 1.接触式测量方法:坐标测量机、层析法。2.非接触式测量方法:基于光学三角形原理的扫描法、基于相位偏移测量原理的莫尔条纹法、基于工业CT断层扫描图像、立体视觉测量方法。基于光学三角形原理的扫描法是以光作为光源,其结构模式可以分为光点、单线条、多光条等,将其投射到被测物体表面,并采用光电敏感元件在另一位置接受激光的反射能量,根据光点或光条在物体上成象的偏移,通过被测物体基平面、象点、象距等之间的关系计算物体的深度信息。介绍一种使用激光的三角形测量法。硬件由线激光发生器、CCD摄像头、图像采集卡、相应的连接线与

2、电源以及微型计算机组成。如果采用两个参数完全相同的CCD摄像头对称放置,可以减少测量盲区,提高测量精度。三角形测量法利用基准面、像点、物距、像距等之间的关系计算物体的Z坐标值。 图中,i入射光L透镜N成像屏,u透镜L的物距v透镜L的像距OL光轴与入射光线i的交点A物面上的光点A,O分别是A、O的像点h物面上光点相对于基准面的M高度入射光线与光轴的夹角M目标平面M参考平面根据透镜成像原理,以入射光与透镜光轴交点所在平面M为基准面,则光点A相对于基准面M的高度h的计算公式为: 2、 列举至少三种边缘提取算法,详述一种亚像素边缘提取算法的原理。 1.Roberts边缘检测算子。采用对角线方向相邻两像

3、素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感。2. Sobel边缘算子。是一组方向算子,从不同的方向检测边缘。不是简单求平均值再差分,而是加强了中心像素上下左右四个方向像素的权重。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高,通常对灰度渐变和噪声较多的图像处理得较好。3.Prewitt边缘算子。利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘。不仅能检测边缘,而且对噪声具有平滑作用。4.高斯拉普拉斯算子(Laplas)。是一个二阶导数算子,利用边缘点处二阶导函数出现零交叉原理检测边缘。该算子是一个与方向无关的各向同性边缘

4、检测算子。但其方向信息丢失,常产生双像素,对噪声有双倍加强作用,因此它很少直接用于边缘检测,它将高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉了噪声,再进行边缘检测,所以效果不错。5.Canny算子。是一类最优边缘检测算子,也使用拉普拉斯算子,但它使用两种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时才将弱边缘包含在输出图像中,因此这种方法较其它方法而言不容易被噪声“填充”,更容易检查出真正的弱边缘。灰度重心法可以认为是一种以灰度为权值的加权形心法。由灰度重心法定位算法的原理,灰度图像中目标S的灰度重心为:,。其中为权值,取。灰度重心法适合处理背景灰度值较小、而目标灰度值

5、较高的情况,例如天文图像中的恒星,其目标的灰度分布多为抛物面或高斯曲面,此时该方法通常可以获得较高的定位精度。但是实际图像中目标特征情况很复杂,例如亮背景和暗目标、目标和背景的灰度值都比较大等情况,此时用灰度作为权值便不适用了。改进的权值选取方法一一阈值灰度重心法。对于目标灰度值大于背景灰度值的情况,权值按式设为,而对于目标灰度值小于背景灰度值的情况,权值按式设为,其中T为区分目标和背景的阈值。三、双目视觉测量空间点距离的实验。图示采用游标卡尺上的特征点(黑色圆点)作为待测点,通过游标卡尺上的读数和计算的坐标进行比较,以判断测量结果的准确性实验。试阐述其测量的基本原理。 图1. 双摄像头模型俯

6、视图 图2, 双摄像头模型立体视图 ,得到f的量纲是像素点,(摄像头中心距)的量纲由定标棋盘格的实际尺寸和用户输入值确定,一般总是设成毫米,当然为了精度提高也可以设置为0.1毫米量级,的量纲也是像素点。因此分子分母约去,z的量纲与相同。图2解释了双摄像头获取空间中某点三维坐标的原理。实际的坐标利用的都是相似三角形的原理,其表达式如同Q矩阵所示。 ,而。其中,是主点在右图像上的x坐标。空间中某点的三维坐标就是(X/W, Y/W, Z/W)。为了精确地求得某个点在三维空间里的距离,我们需要获得的参数有焦距f、视差d、摄像头中心距。如果还需要获得X坐标和Y坐标的话,那么还需要额外知道左右像平面的坐标

7、系与立体坐标系中原点的偏移和。其中f, , 和可以通过立体标定获得初始值,并通过立体校准优化,使得两个摄像头在数学上完全平行放置,并且左右摄像头的, 和f相同(也就是实现图2中左右视图完全平行对准的理想形式)。而立体匹配所做的工作,就是在之前的基础上,求取最后一个变量:视差d(这个d一般需要达到亚像素精度)。从而最终完成求一个点三维坐标所需要的准备工作。四、某项目要求对外圆直径约为80mm 的齿环进行检测,具体检测项目如下: 1. 测量齿顶圆,测量分辨率 0.1mm; 2. 齿形检测。针对每个齿的检测项目包括齿全部或部分缺失、齿歪斜、齿上有毛刺; 3. 对齿进行计数(齿形有缺陷的不能计数);

8、4. 判断环耳的缺失(比例) 5. 齿环表面字符识别。 试完成以下任务: 1. 选择和设计满足所有检测项目的合适的相机和光源,并画出视觉系统安装示意图; 2. 针对每一项检测需求,设计合适的检测方案。说明算法思路,并选用某种软件(Matlab, Opencv,Labview,HALCON, hexsight, Mil, VisionPro 等)对运算效果做简要说明。视觉系统选择:CCD摄像机:德国SVS-VISTEK公司的svs282的500万像素的面阵CCD摄像机;光照系统:四个LED光源;PC机:安装有NI公司的NI PCI-1411单色四通道图像采集卡和Matlab软件。一、 齿顶圆的测

9、量:检测方案:首先对图像灰度化,二值化(注意:二值化的好坏对检测结果有很大影响,常用的有SOBEL算子);然后检测图像中的边缘点,并保存其坐标位置。设置角度theta的变化范围和步长,半径r的变换范围和步长;最后利用公式x=a+rcos(theta),y=b+rsin(theta)求出a和b的值。(注意:x和y为实际的图像空间某个边缘点的坐标,a和b为其对应的参数空间的坐标),如果a和b的值在合理的范围之类,则对该位置进行累加。Matlab程序及说明:function hough_space,hough_circle,para = hough_circle(BW,step_r,step_ang

10、le,r_min,r_max,p);%HOUGH_SPACE,HOUGH_CIRCLE,PARA = HOUGH_CIRCLE(BW,STEP_R,STEP_ANGLE,R_MAX,P)%-算法概述-% 该算法通过a = x-r*cos(angle),b = y-r*sin(angle)将圆图像中的边缘点% 映射到参数空间(a,b,r)中,由于是数字图像且采取极坐标,angle和r都取% 一定的范围和步长,这样通过两重循环(angle循环和r循环)即可将原图像% 空间的点映射到参数空间中,再在参数空间(即一个由许多小立方体组成的% 大立方体)中寻找圆心,然后求出半径坐标。%-%-输入参数-%

11、BW:二值图像;% step_r:检测的圆半径步长% step_angle:角度步长,单位为弧度% r_min:最小圆半径% r_max:最大圆半径% p:以p*hough_space的最大值为阈值,p取0,1之间的数%-%-输出参数-% hough_space:参数空间,h(a,b,r)表示圆心在(a,b)半径为r的圆上的点数% hough_circl:二值图像,检测到的圆% para:检测到的圆的圆心、半径%-m,n = size(BW);size_r = round(r_max-r_min)/step_r)+1;size_angle = round(2*pi/step_angle);ho

12、ugh_space = zeros(m,n,size_r); rows,cols = find(BW);ecount = size(rows); % Hough变换% 将图像空间(x,y)对应到参数空间(a,b,r)% a = x-r*cos(angle)% b = y-r*sin(angle)for i=1:ecount for r=1:size_r for k=1:size_angle a = round(rows(i)-(r_min+(r-1)*step_r)*cos(k*step_angle); b = round(cols(i)-(r_min+(r-1)*step_r)*sin(k*

13、step_angle); if(a0&a0&b=max_para*p);length = size(index);hough_circle=zeros(m,n);for i=1:ecount for k=1:length par3 = floor(index(k)/(m*n)+1; par2 = floor(index(k)-(par3-1)*(m*n)/m)+1; par1 = index(k)-(par3-1)*(m*n)-(par2-1)*m; if(rows(i)-par1)2+(cols(i)-par2)2(r_min+(par3-1)*step_r)2-5) hough_circl

14、e(rows(i),cols(i) = 1; end endend% 打印结果for k=1:length par3 = floor(index(k)/(m*n)+1; par2 = floor(index(k)-(par3-1)*(m*n)/m)+1; par1 = index(k)-(par3-1)*(m*n)-(par2-1)*m; par3 = r_min+(par3-1)*step_r; fprintf(1,Center %d %d radius %dn,par1,par2,par3); para(:,k) = par1,par2,par3;end检测结果:Center 62 59

15、radius 52二、齿形检测:用虚拟圆扫描法检测齿轮齿形:齿环的大小齿轮可能出现缺齿、披锋、翘曲变形等齿形缺陷,通过前面所述的图像预处理、阈值分割及亚像素定位后,可以分别得到齿轮的优化齿形轮廓以及内圆孔圆心的亚像素坐标。如图所示:如图5-5所示,半径为r的虚拟圆为分度圆,包络齿轮齿顶圆区域的最小长度L可以通过对齿轮的轮廓图像进行点搜索来确定。设齿轮的齿数为z ,模数为 m ,则齿轮分度圆半径与齿轮齿顶圆直径之比l 为:设齿轮齿顶圆直径的长度为D,分度圆半径为r(单位:像素),由几何关系可得: L D由比例关系可求出:虚拟圆扫描法检测齿形过程如下: 以内圆孔圆心的亚像素坐标 ),(00yx 为

16、圆心,半径为 r 的虚拟圆与齿轮轮廓有2z个交点。通过搜索判断可求出这些交点的整像素坐标 ),(iiyx ,利用降维灰度矩亚像素定位法,求出这些交点的亚像素坐标 ),(iiyx ,将这些交点的横纵亚像素坐标点分别存入两个一维数组中。通过对一系列两相关交点之间的距离比值与设定的比值系数进行比较,来确定齿形是否合格。3、 齿数的测量:利用Matlab编程测量,其程序如下:RGB = imread(4.jpg);BW = im2bw(RGB);BW=bwareaopen(BW,25);BW=BW;imshow(BW);STATS = regionprops(BW,BoundingBox);%圆心坐标

17、Center=STATS.BoundingBox(1)+STATS.BoundingBox(3)/2,STATS.BoundingBox(2)+STATS.BoundingBox(4)/2;%齿顶圆半径BigRadius=STATS.BoundingBox(3)/2;viscircles(Center,BigRadius,EdgeColor,r);for Radius=BigRadius:-1:1 x=round(cos(pi/1000:pi/1000:2*pi )*Radius+Center(1); y=round(sin(pi/1000:pi/1000:2*pi )*Radius+Cent

18、er(2); bw=zeros(size(BW); bw(y+size(bw,1)*(x-1)=1; if bw=(bw&BW) break; endend%齿根圆半径SmallRadius=Radius+1;viscircles(Center,SmallRadius,EdgeColor,r);5、 齿环表面字符识别:读取图像,然后对字符图像灰度化和二值化,在此基础上做倾斜矫正,对矫正的图像进行滤波平滑处理,然后对字符区域进行提取分割出单个字符,识别方法采用模板匹配的方法逐个对字符与预先制作好的字符模板比较,如果结果小于某一阈值则结果就是模板上的字符。模板匹配的字符识别Matlab代码如下:%

19、基于模板匹配的字符识别templatePath=G:licenseTemple; fileFormat=.bmp;templateImage=zeros(40,20,36);Timage=zeros(36,800);for i=1:36 %读取模板 stri=num2str(i-1); imagePath=templatePath,stri,fileFormat; tempImage=imread(imagePath); templateImage(:,:,i)=tempImage; clear imagePath stri tempImage;endcharacterImage=zeros(

20、40,20,6);Uimage=zeros(6,800);characterPath=G:matlab-wavlet; charFileFormat=.jpg;for i=1:6%读取待识别字符 stri=num2str(i+1); imagePath=characterPath,stri,charFileFormat; tempImage=imread(imagePath); characterImage(:,:,i)=tempImage; clear imagePath stri tempImage;end%V=zeros(1,36);%5X=zeros(1,36);%5W=zeros(1

21、,36);%U=zeros(1,6);%T=zeros(1,36);Y=zeros(1,36);for i=1:6 U=length(find( characterImage(:,:,i)=0); for j=1:36 T=length(find( templateImage(:,:,j)=0); tempV=characterImage(:,:,i)& templateImage(:,:,j); V=length(find(tempV)=0); tempW=xor(tempV,templateImage(:,:,j); W=length(find(tempW)=0); tempX=xor(t

22、empV,characterImage(:,:,i); X=length(find(tempX)=0); TUV=(T+U+V)/3; tempSum=sqrt(T-TUV)*(T-TUV)+(U-TUV)*(U-TUV)+(V-TUV)*(V-TUV)/2); Y(j)=V/(W/T*X/U*tempSum); end MAX,indexMax=max(Y); stri=num2str(indexMax-1); imagePath=templatePath,stri,fileFormat; image=imread(imagePath); figure(i); imshow(image); clear imagePath indexMax;end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1