激光十字光斑中心位置的定位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
激光十字光斑中心位置的定位
摘要: 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
数字图像处理技术已经在各个领域上都有了比较广泛的应用。
图像处理的信息量很大,对处理速度的要求也比较高。
Matlab强大的运算和图形展示功能,使图像处理变得更加的简单和直观。
确定激光十字光斑的中心位置可采用多种方法,本文论述了三种方法确定十字光斑中心点分别为:调用多重函数法、FOR循环寻找坐标取平均值法、求两直线交点坐标法。
文中对每种方法作了简要的介绍和分析。
通过处理结果对三种方法做出了综合评价。
关键词:数字图像处理,Matlap,十字光斑,中心定位
目录
第一章调用多重函数实现中心点定位 (3)
1.1 基本流程 (3)
1.2 程序设计 (3)
1.3 显示结果分析 (4)
第二章通过FOR循环寻找坐标取平均值实现中心点定位 (5)
2.1基本流程 (5)
2.2 程序设计 (5)
2.3 显示结果分析 (6)
第三章通过计算两直线交点坐标实现中心点定位 (7)
3.1基本流程 (7)
3.2 程序设计 (8)
3.3显示结果分析 (9)
第四章三种方法的综合评价 (9)
4.1 处理速度 (9)
4.2 结果精度 (10)
第五章心得体会 (10)
第六章参考文献 (11)
第一章调用多重函数实现中心点定位
1.1 基本流程
调用函数实现中心点定位的基本流程图:
↓
↓
↓
↓
↓
1.2 程序设计
A=imread('111.jpg');%读取111.jpg图片
B1=im2bw(A);%转化成二值图像
B=~B1;%反色,目的是下面的函数只计算白色矩形方框
L=bwlabel(B);%计算图像矩阵的连通区域
sta=regionprops(L,'Area','BoundingBox');
area=[sta.Area];%把原图中每个白点的个数记录在area中
boundingbox=[sta.BoundingBox];%把BoundingBox的内容存放在boudingbox中;num=size(area);%计算中共的数目
answer(1,1:num(2))=boundingbox(1:4:end);%第一行存放每个白色区域左上角的X坐标answer(2,1:num(2))=boundingbox(2:4:end);%第二行存放每个白色区域左上角的Y坐标answer(3,1:num(2))=boundingbox(3:4:end);%第三行存放每个白色区域X轴的宽度
answer(4,1:num(2))=boundingbox(4:4:end);%第三行存放每个白色区域Y轴的宽度answer(5,1:num(2))=area(1:end);%第五行存放每个色白区域的面积
c(1,1)=answer(1,4);c(1,2)=answer(2,4);
c(1,3)=(answer(1,2)+answer(3,2));c(1,4)=(answer(2,3)+answer(4,3));
D(1,1)=rdivide(c(1,1)+c(1,3),2);D(1,2)=rdivide(c(1,2)+c(1,4),2)
fprintf('十字中心位置叉丝线横坐标%6.2f\n',D(1,1));
fprintf('十字中心位置叉丝线纵坐标%6.2f\n',D(1,2));
1.3 显示结果及分析
程序运行后现实的结果为:
“十字中心位置叉丝线横坐标158.50”
“十字中心位置叉丝线纵坐标151.50”
通过程序
>> E=rgb2gray(A);
E(151:152,158:159)=0;
>> imshow(E);
显示图像如图1-2
图1-1 原图像图1-2 处理后光斑显示图像由图1-2观察得中央黑点位置即为十字中心位置。
第二章通过FOR循环寻找坐标取平均值实现中心点定位
2.1基本流程
FOR循环寻找坐标取平均值实现中心点定位基本流程图
2.2 程序设计
I = imread('111.jpg');
I=rgb2gray(im2double(I))
B = imadjust(I,stretchlim(I),[0,1]);
[M, N] = size(B);
k=1;
for i=1:M
if(B(i,1)==1)
m(k)=i;
k=k+1;
end
end
z=1;
for o=1:M
if(B(o,M)==1)
m1(z)=o;
z=z+1;
end
end
n=1;
for j=1:N
if(B(1,j)==1)
p(n)=j;
n=n+1;
end
end
q=1;
for h=1:N
if(B(M,h)==1)
p1(q)=h;
q=q+1;
end
end
x(1,1)=mean(p);
x(1,2)=1;
x(2,1)=mean(p1);
x(2,2)=M;
x(3,1)=1;
x(3,2)=mean(m);
x(4,1)=N;
x(4,2)=mean(m1);
c(1,3)=(x(1,1)+x(2,1));c(1,4)=(x(3,2)+x(4,2));
D(1,1)=rdivide(c(1,1)+c(1,3),2);D(1,2)=rdivide(c(1,2)+c(1,4),2) fprintf('十字中心位置叉丝线横坐标%6.2f\n',D(1,1));
fprintf('十字中心位置叉丝线纵坐标%6.2f\n',D(1,2));
2.3 显示结果及分析
程序运行后显示的结果为:
“十字中心位置叉丝线横坐标159.50”
“十字中心位置叉丝线纵坐标149.50”
通过程序
>> B(149:150,159:160)=0;
>> imshow(B);
显示图像如图2-2
图2-1 原图像图2-2 处理后定位图像
由图2-2观察中央黑点即为定位的中心位置。
第三章通过计算两直线交点坐标实现中心点定位
3.1基本流程
此方法中需用到第二章FOR循环寻找坐标的方法,通过坐标确定两直线,进而求得两直线交点。
计算两直线交点坐标实现中心点定位基本流程图
将读取的图像转化为二值图像
通过FOR循环分别找出第一行,最后一行,第一列,最后压一列,值为1 的像素的坐
标值
对第一行值为1的像素所在列数进行记录,并取平均值,即为十字最上方的横坐标,同
理对待最后一行,求得十字最下方的横坐标;对第一列值为1的像素所在行数进行记录,
并取平均值,即为十字最左方的纵坐标,同理对待最后一列,求得十字最右方的纵坐标
通过最上方点的坐标与最下方点的坐标确定了直线1,通过最左方与最右方的坐标确定
了直线2
有直线1和直线2 的直线方程,求得两直线的交点坐标,即为十字中心点的位置
3.2 程序设计
I = imread('111.jpg');
I=rgb2gray(im2double(I))
B = imadjust(I,stretchlim(I),[0,1]);
[M, N] = size(B);
k=1;
for i=1:M
if(B(i,1)==1)
m(k)=i;
k=k+1;
end
end
z=1;
for o=1:M
if(B(o,M)==1)
m1(z)=o;
z=z+1;
end
end
n=1;
for j=1:N
if(B(1,j)==1)
p(n)=j;
n=n+1;
end
end
q=1;
for h=1:N
if(B(M,h)==1)
p1(q)=h;
q=q+1;
end
end
x(1,1)=mean(p);
x(1,2)=1;
x(2,1)=mean(p1);
x(2,2)=M;
x(3,1)=1;
x(3,2)=mean(m);
x(4,1)=N;
x(4,2)=mean(m1);
K(1,1)=(x(1,2)-x(2,2))/(x(1,1)-x(2,1));
K(1,2)=(x(4,2)-x(3,2))/(x(4,1)-x(3,1));
Del(1,1)=(x(3,2)-x(1,2)+K(1,1)*x(1,1)-K(1,2)*x(3,1))/(K(1,1)+K(1,2));
Del(1,2)=(K(1,1)*K(1,2)*(x(3,1)-x(1,1))+K(1,2)*x(1,2)-K(1,1)*x(3,2))/(K(1,2)-K(1,1));
fprintf('十字中心位置叉丝线横坐标%6.2f\n',Del(1,1));
fprintf('十字中心位置叉丝线纵坐标%6.2f\n',Del(1,2));
3.3 显示结果分析
“十字中心位置叉丝线横坐标159.44”
“十字中心位置叉丝线纵坐标149.56”
通过程序
>> B(149:150,159:160)=0;
>> imshow(B);
显示图像如图3-2
图3-1 原图像图3-2 处理后的定位图像
图3-2中中央黑点即为十字中心点的位置。
第四章三种方法的综合评价
4.1处理速度
在实际操作的过程中,人为感觉,调用函数的方法较其它两种方法的处理速度要稍快些,而计算两直线交点的方法较慢。
4.2 结果精度
将图1-2,图2-2,图3-2放大,分别显示为图4-1, 图4-2, 图4-3
图4-1第一种方法放大图图4-2第二种方法放大图
图4-3第三种方法放大图
通过分析上述三幅图,图4-1较为精确,而图4-2与图4-3黑点位置几乎完全一致,精度一致。
第五章心得体会
在这次数字图像处理的课程设计过程中,首先加深了我对于数字图像处理这门课程的认识,通过对相关知识的进一步了解和掌握,清楚的认识到这门课程在实际应用的广泛性。
通过Matlab编程的过程之中,进一步掌握了Matlab的使用,明白了这个软件作为许多应用方向工具的强大之处,通过对一些小错误的改造还认识到了以往自己没有注意到的一些小的细节问题。
参考文献
1.张汗灵·MA TLAB在图像处理中的应用·清华大学出版社,2008·5 引用部分51页-56页,61页-66页
2.张德丰·详解MA TLAB数字图像处理·电子工业出版社,2010·7 引用部分1页-31页,33页—38页,138页-140页
3.闫敬文·数字图像处理·(MA TLAB版)·国防工业出版社,2002·2 引用部分233页-241页
11。