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

  • 格式:doc
  • 大小:248.50 KB
  • 文档页数:11

1

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

摘要: 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用 计算机对其进行处理的过程。数字图像处理技术已经在各个领域上都有了比较广泛的应用。图像处理的信息量很大,对处理速度的要求也比较高。Matlab强大的运算和图形展示功能,使图像处理变得更加的简单和直观。确定激光十字光斑的中心位置可采用多种方法,本文论述了三种方法确定十字光斑中心点分别为:调用多重函数法 、 FOR循环寻找坐标取平均值法 、 求两直线交点坐标法 。文中对每种方法作了简要的介绍和分析。通过处理结果对三种方法做出了综合评价。

关键词: 数字图像处理,Matlap,十字光斑 ,中心定位

2

目录

第一章 调用多重函数实现中心点定位……………………………………………………………………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

3

第一章 调用多重函数实现中心点定位

1.1 基本流程

调用函数实现中心点定位的基本流程图:

将计算出的矩形区域像素总数,包含被标注区域的最小矩形boundingbox的长宽值,左上角的横纵坐标值以及被标注区域的数量分别放入自定义的矩阵中

通过已知的坐标值和矩形boundingbox的长宽值计算出四个矩阵中靠近十字中心的坐标值

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轴的宽度 将读取的图像转化为二值图像

将二值图像反色

通过bwlable函数计算图像矩阵的连通区域,并对连通区域进行标注

通过regionprops函数对标注矩阵中每一个标注区域进行测量和计算

对计算出的坐标值取平均值,所求的坐标即为十字光斑中心点的位置 4

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观察得中央黑点位置即为十字中心位置。

5

第二章 通过FOR循环寻找坐标取平均值实现中心点定位

2.1基本流程

FOR循环寻找坐标取平均值实现中心点定位基本流程图

通过FOR循环分别找出第一行,最后一行,第一列,最后压一列,值为1 的像素的坐标值

对第一行值为1的像素所在列数进行记录,并取平均值,即为十字最上方的横坐标,同理对待最后一行,求得十字最下方的横坐标;对第一列值为1的像素所在行数进行记录,并取平均值,即为十字最左方的纵坐标,同理对待最后一列,求得十字最右方的纵坐标

对最上方与最下方的横坐标取平均值,即为中心点的横坐标;对最左方与最右方的纵坐标取平均值,即为中心点的纵坐标

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; 将读取的图像转化为二值图像 6

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