激光十字光斑ppt.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

汇报人:聂添舜制作日期:2016.3.24燕山大学仪表科学与工程系学号:120103020123指导教师:王书涛摘要课程设计内容:确定图像十字光斑中心点的位置。使用了三种方法:求两直线交点坐标定位法、找多个坐标取平均值定位法、基于图像灰度值差异定位法。最后对三种方法的运行精度和处理速度进行比较。目录求两直线交点坐标定位法找多个坐标值取平均值定位法基于图像灰度值差异定位法三种方法的比较与分析一、求两直线交点坐标定位法求两直线交点坐标定位法1、读取图像。2、提取图像R分量3、将R分量图像二值化。4、找出十字光斑图像的最小横坐标a1、最大横坐标a2和最小纵坐标b1、最大纵坐标b2,然后利用循环语句找出a1行,a2行,b1列,b2列中像素为1的坐标值。5、对a1、a2行值为1的像素所在列数进行记录,并取平均值,即为十字最上方的横坐标x1、x2。对b1、b2列值为1的像素所在行数进行记录,并取平均值,即为十字最左方的纵坐标y1、y2。6、对最上方与最下方的横坐标取平均值,即为中心点的横坐标;对最左方与最右方的纵坐标取平均值,即为中心点的纵坐标。整体设计思路求两直线交点坐标定位法1.先读取要处理的图像clearall;clc;I=imread('D:\十字光斑图像\十字光斑.JPG');I1=imread('D:\十字光斑图像\十字光斑2.JPG');I2=imread('D:\十字光斑图像\十字光斑3.JPG');2.提取图像的R分量(因为其对比度较高)R=I1(:,:,1);subplot(121);imshow(I1);title('原图像');subplot(122);imshow(R);title('原图像的R分量');3.利用全局阈值分割法将R分量图像二值化B=im2bw(R,graythresh(R));%将图像二值化figure,imshow(B);title('二值化图像');求两直线交点坐标定位法5、对a1行值为1的像素所在列数进行记录,并取平均值,即为十字最上方的横坐标x1,同理对待a2行,求得十字最下方的横坐标x2;对b1列值为1的像素所在行数进行记录,并取平均值,即为十字最左方的纵坐标y1,同理对待b2列,求得十字最右方的纵坐标y2。c=1;fori=1:Mif(B(i,b1)==1)m(c)=i;c=c+1;endendd=1;foro=1:Mif(B(o,b2)==1)m1(d)=o;d=d+1;endende=1;forj=1:Nif(B(a1,j)==1)n(e)=j;e=e+1;endendf=1;forh=1:Nif(B(a2,h)==1)n1(f)=h;f=f+1;endend4.再利用find函数分别找出十字光斑图像的最小横坐标a1、最大横坐标a2和最小纵坐标b1、最大纵坐标b2,然后利用循环语句找出a1行,a2行,b1列,b2列中像素为1的坐标值。[a,b]=find(B);a1=min(a);a2=max(a);b1=min(b);b2=max(b);[M,N]=size(B);求两直线交点坐标定位法6.利用所找到的四个点(x1,a1)、(x2,a1)、(b1,y1)、(b2,y2)可写出两条直线方程,再利用解线性方程组方法求得交点,即求得中心点坐标。x1=mean(n);%纵坐标为a1x2=mean(n1);%纵坐标为a2y1=mean(m);%横坐标为b1y2=mean(m1);%横坐标为b2k1=(a2-a1)/(x2-x1);%十字竖线的斜率k2=(y2-y1)/(b2-b1);%十字横线的斜率O=[k1,-1;k2,-1];P=[k1*x1-a1;k2*b1-y1];L=O\P;%解线性方程组X=L(1);Y=L(2);fprintf('激光十字线中心位置点横坐标%6.2f\n',X);fprintf('激光十字线中心位置点纵坐标%6.2f\n',Y);X1=round(X);Y1=round(Y);R(Y1-1:Y1+1,X1-1:X1+1)=1;figure,imshow(R);title('将中心点显示出来');求两直线交点坐标定位法将中心点显示到图像中运行结果二、找多个坐标取平均值定位法找多个坐标取平均值定位法1、读取图像。2、提取图像R分量3、将R分量图像二值化。4、找出十字光斑图像的最小横坐标a1、最大横坐标a2和最小纵坐标b1、最大纵坐标b2,然后利用循环语句找出a1行,a2行,b1列,b2列中像素为1的坐标值。5、对a1、a2行值为1的像素所在列数进行记录,并取平均值,即为十字最上方的横坐标x1、x2。对b1、b2列值为1的像素所在行数进行记录,并取平均值,即为十字最左方的纵坐标y1、y2。6、对最上方与最下方的横坐标取平均值,即为中心点的横坐标;对最左方与最右方的纵坐标取平均值,即为中心点的纵坐标。整体设计思路找多个坐标取平均值定位法1.先读取要处理的图像clearall;clc;I=imread('D:\十字光斑图像\十字光斑.JPG');I1=imread('D:\十字光斑图像\十字光斑2.JPG');I2=imread('D:\十字光斑图像\十字光斑3.JPG');2.提取图像的R分量(因为其对比度较高)R=I1(:,:,1);subplot(121);imshow(I1);title('原图像');subplot(122);imshow(R);title('原图像的R分量');3.利用全局阈值分割法将R分量图像二值化B=im2bw(R,graythresh(R));%将图像二值化figure,imshow(B);title('二值化图像');找多个坐标取平均值定位法5、对a1行值为1的像素所在列数进行记录,并取平均值,即为十字最上方的横坐标x1,同理对待a2行,求得十字最下方的横坐标x2;对b1列值为1的像素所在行数进行记录,并取平均值,即为十字最左方的纵坐标y1,同理对待b2列,求得十字最右方的纵坐标y2。c=1;fori=1:Mif(B(i,b1)==1)m(c)=i;c=c+1;endendd=1;foro=1:Mif(B(o,b2)==1)m1(d)=o;d=d+1;endende=1;forj=1:Nif(B(a1,j)==1)n(e)=j;e=e+1;endendf=1;forh=1:Nif(B(a2,h)==1)n1(f)=h;f=f+1;endend4.再利用find函数分别找出十字光斑图像的最小横坐标a1、最大横坐标a2和最小纵坐标b1、最大纵坐标b2,然后利用循环语句找出a1行,a2行,b1列,b2列中像素为1的坐标值。[a,b]=find(B);a1=min(a);a2=max(a);b1=min(b);b2=max(b);[M,N]=size(B);找多个坐标取平均值定位法6.对最上方与最下方的横坐标取平均值,即为中心点的横坐标;对最左方与最右方的纵坐标取平均值,即为中心点的纵坐标。x1=mean(n);x2=mean(n1);y1=mean(m);y2=mean(m1);X=(x1+x2)/2;Y=(y1+y2)/2;fprintf('激光十字线中心位置点横坐标:%6.2f\n',X);fprintf('激光十字线中心位置点纵坐标:%6.2f\n',Y);X1=round(X);Y1=round(Y);R(Y1-1:Y1+1,X1-1:X1+1)=0;figure,imshow(R);title('将中心点显示出来');找多个坐标取平均值定位法将中心点显示到图像中运行结果三、基于图像灰度值差异定位法基于图像灰度值差异定位法1、读取图像。2、提取图像R分量3、创建一个3*3的邻域平均模板h,利用其对图像进行处理。突出图像中某些邻域灰度值较大的点4、利用循环对其进行规定次数多的处理。5、找出处理后图像中灰度值最大的一个或多个点的行值和列值,对这些点的列值取平均值,即为中心点的横坐标,同理,对这些点的行值取平均值,即为中心点的纵坐标。整体设计思路基于图像灰度值差异定位法1.先读取要处理的图像clearall;clc;I=imread('D:\十字光斑图像\十字光斑.JPG');I1=imread('D:\十字光斑图像\十字光斑2.JPG');I2=imread('D:\十字光斑图像\十字光斑3.JPG');2.提取图像的R分量(因为其对比度较高)R=I1(:,:,1);subplot(121);imshow(I1);title('原图像');subplot(122);imshow(R);title('原图像的R分量');3.创建一个3*3的邻域平均模板h,利用其对图像进行处理。其目的是突出图像中某些邻域灰度值较大的点(因为图像中十字斑中心点附近邻域点灰度值之和较其它点大)B=R;h=fspecial('average',3);%创建一个3*3的邻域平均模板基于图像灰度值差异定位法5、找出处理后图像中灰度值最大的一个或多个点的行值和列值,对这些点的列值取平均值,即为中心点的横坐标,同理,对这些点的行值取平均值,即为中心点的纵坐标。[x,y]=find(B==max(max(B)));%找出灰度值最大的点的坐标X=mean(y);Y=mean(x);%因为可能有多个最大值相等,所以取这些点的坐标的均值近似估计为中心点的位置fprintf('激光十字线中心位置点横坐标%6.2f\n',X);fprintf('激光十字线中心位置点纵坐标%6.2f\n',Y);X1=round(X);Y1=round(Y);R(Y1-1:Y1+1,X1-1:X1+1)=0;figure,imshow(R);title('将中心点显示出来');4.利用循环对其进行规定次数多的处理。i=1;whilei=5;B=imfilter(B,h);i=i+1;end基于图像灰度值差异定位法将中心点显示到图像中运行结果四、三种方法的比较和分析三种方法的比较和分析放大三种方法处理后的结果图,进行对比第一种方法第二种方法第三种方法三种方法的比较和分析通过对比,可知:第三种方法的结果最为精确,第一种和第二种方法黑点位置几乎一致,精度差不多。而通过对其它图片的分析可知,第一种方法结果较第二种方法精确。对于某些十字斑靠近边缘,且倾斜角较大的图像,第一种方法适用性较好,且较精确,但第二种方法则不适用,故第二种方法存在局限性。第三种方法根据中心点及其较小邻域内灰度值最大的特点来实现定位,所以采用3*3邻域平均模板对图像R分量进行处理,目的是使邻域灰度值较大的点的灰度值更加突出,然后找出最大的一个或几个点求均值,即为中心点。结果精度比较运行速度比较当第三种方法模板处理次数较大时,运行时间明显变长。不过选取的次数比较小,所以时间与前两种方法几乎一样。心得体会通过这次计算机视觉课程设计,我深刻地理解计算机视觉是一种基于矩阵运算的综合性学科,同时也加深了我对于计算机视觉这门课程的认识,也认识到Matlab这个软件强大的数字图像处理能力,在对课题的思考与设计过程中,通过对不懂的问题的思考与解决的过程,进一步学习了计算机视觉的知识和Matlab在图像处理方面的编程知识。这次课程设计,我学到了很多,也明白了自己存在的一些知识方面的欠缺,收获很多。感谢陈华老师的悉心指导以及各位同学耐心帮助。谢谢观看

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功