激光十字光斑中心位置的定位

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档