数字图像处理课程设计 基于光斑定位问题的分析_第1页
数字图像处理课程设计 基于光斑定位问题的分析_第2页
数字图像处理课程设计 基于光斑定位问题的分析_第3页
数字图像处理课程设计 基于光斑定位问题的分析_第4页
数字图像处理课程设计 基于光斑定位问题的分析_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于光斑定位问题的分析

摘要:痴中心检测室光学测量中常用的关键技术。检测算法的精度和速度直接矍响

了测量的精度和速度。常用最优化光斑中心检测算法有均值法、重心法及Hough变换法、

基于最小二乘法的圆拟合。文章针对光斑定位的问题,提出了一种选择方案。本文探究光

斑定位依靠的是逐像素迭代均值定位法,算法简单易懂,它在光斑图像分布比较均匀情况

下精度、速度均较高。利用MATLAB仿真环境,验证算法具有一定的有效性,能够解决

光斑定位和圆心检测问题。采用上述方法均有其可取之处。

关键字:光斑均值边缘检测滤波MATLAB

引言

光斑中心检测在激光扫描三角法、准直仪、光斑分析仪等光学测量、检测手段中是一项

关键技术。在模式识别领域中也一直是研究的热点。人们提出了很多圆检测的算法。例如:

二值化均值法、重心法、Hough变换圆检测、最小二乘拟合、遗传算法以及结合圆几何特

性的算法。

逐像素迭代均值法属于最优化方法这类算法主要特点是准确性高,但是通常需要预先进

行分割或分组处理,无法直接用于多个圆检测,对噪声的敏感度高于前一类方法。而且在

处理复杂光斑情况下会有些偏差,而本文算法增加了中值滤波,使得算法在中值算法的基

础上具有抗噪声的能力,同时降低了对参数的依赖,提高了检测的速度、稳定性。

正文

1问题分析

据定位高精度光斑圆心坐标的要求,对计算机处理图像圆心的多种算法进行研究和比较,分

析产生误差的来源和解决的方法,提出采用约束条件预处理的迭代均值计算圆心的方法.采

用径向误差作为约束条件选择有效的图像边界点,既可避免不必要的计算,又简单易僮,提高

了精度,是一种准确有效的算法。

那么现在就立足于图像的本质,提出具体的解决步骤,

1、先对图像中值滤波做去噪等预处理工作;(如是彩色图像应第一步进行灰度化再

去噪)

2、对灰度图像做迭代阈值分割处理,使之为二值图像,再进行边缘跟踪,提取边缘;

3、把包围圆心位置的几个像素点找到包围起来求取其均值从而找到圆心所在位置。

2算法思路

在分析之后对算法的设计和选择就清晰了。那么现在就阐述算法的具体步骤。

当图像为简单的圆光斑,再把它看做理想的圆的话,可以认为圆点必然是在水平x方向

横跨最多像素点的那一行中。因此算法设计上,针对每个圆,首先找出满足这个条件的一

行(或几行,取中间行或中间两行),然后在Y方向上找到该像素行的中间位置,即为圆

心'—综合来说,圆心位置可能是落在某一个像素上,或X方向两个像素之间,或Y方向

两个像素之间,或XY方向的4个像素之间,所以求其平均以达到减小偏差的目的。算法

必须考虑这几种情况,算出精度为0.5的圆心位置。

算法的实现重点在于怎样分离出一个一个的圆,我采用的是逐像素法,先处理最开头的

一个圆(底部坐标靠近左下角原点),然后把这个圆从图像中去除(对二值化图像,就是

把该圆的白色像素变黑),之后再处理下一个圆(寻得条件同样是,底部坐标靠近左下角

原点)……直到处理完。怎么判断处理完呢?具体就是当该图像完全黑化的时候停止继续

寻觅圆。

该算法的应用条件是:

()图片为二值化黑白图片,(非二值化图像可以通过简单的预处理达到,

1uint80

若处理后图像有噪声,此算法已内置滤波器,可对其处理)

(2)图片中仅含圆形,若不满足可进行一定的预处理。(光斑图片素材可在文件夹

内找到)

均值方法处理较好的前提是在该光斑为较为理想标准的圆。彳旦从事实上并不理想一虽

然也可满足以上算法能找到圆心。把该圆规范化成一个标准的圆,这样可使找出的圆心具

有更高的可信度。

总而言之,本算法(逐像素迭代均值法)的适用条件为:

(1)处理的光斑最好是严格的圆或近似圆。如果是椭圆且偏心太厉害的话,径向误差方

法也变得无效。

(2)因为采用了逐像素处理,因此也必须满足之前所述该算法的条件。

杳看文献资料,当采用“径向误差预处理的最小二乘”进行拟合运算时得到的效果会更

好一些。提取圆心坐标,未用过算法,故不予置评。下面第3部分对圆检测算法做一些简

要介绍。

3常用圆检测算法介绍

1Hough变换

先从基本的圆检测Hough变换入手。假设希望在图像平面(X-Y平面)考察并确定一个

圆周,令任』2.3,...〃}为图像中确定的圆周上的点的集合,而(x,y)为集合中的

一点,它在参数系(。/J)中方程为:

(«-x)2+(/?-y)2=r2(4)

显然该方程为三维推面,对于图像中的任意确定的一点均有参数空间的一个三维锥面与之

对应。对于圆周上的母可点集合{(西y)},这些三维锥面构成圆锥面簇,如下图所示:

图4圆锥面簇

若集合中的点在同一圆周上,这些圆锥簇相交于参数空间上某一点(即,4,彳)),这点

恰好对应于图像平面的圆心坐标及圆的半径。对于离散图像,(4)式可以改写为:

|(即rj+(%轨(5)

其中<是考虑到对图像进行数字化和量化的补偿。

Hough变换的基本思想在于证据积累,一般情况下圆变换的参数空间为三维的,在三

维空间上进行证据累加的时间空间消耗是非常大的。在具体应用中几乎是不可能的,不现

实的。

若对图像平面上的N个点进行Hough变换,则总耗时为N*R*(R+1)*L而用于

累加阵列的存储空间约为R*6*〃字节(设〃〃分别为图像的高度和宽度,积累单元采

用单字节)。可见,以上运算的时空开销是相当大的。

2逐像素迭代中值法(重点探究)

r迭代式阈值选择

迭代式阈值选择方法的基本思想是:开始时选择一个阈值作为初始估计值,然后按

某种策略不断地改进这T古计值,知道满足约束条件为止。在迭代过程中,关键之处在于

选择什么样的阈值改进策略。好的阈值改进策略应该具备两个特征:(1)能够快速收敛;

(2)在每一个迭代过程中,新产生阈值优于上一次的阈值。下面来具体介绍下迭代式阈

值选择的数学模型:

1)选择图像中灰度的中值作为初始阈值To。

2)利用阈值T把图像分割成两个区域——R1和R2,用下式计算区域Ri和R2的灰度

均值3和口2:

u二皿口二一”i

氏-晦nJ&-疏4

3)计算出5和口2后,用下式计算出新的阈值Ti+i:

T+“

小1--^―

4)重复步骤。直到E+]和T]的差小于约束条件。

2。逐像素扫描

逐像素扫描提取图像特征:

L位置

当图像中的物体不是一个点时,物体的位置用物体面积的中心点表示,若图像中的物体对

应的像素位置坐标为(Xi,yJ(i=0,1....,n-l;j=0,1,…,m-1),则可用下式计算物体位置坐

n-lm-1n-1m-1

i=0j=0i=0j=0

2、周长

若将图像中的像素视为单位面积小方块时,则图像中的区域和背景均由小方块组成。

区域的周长即为区域和背景St隙的长度之和,此时边界用隙码表示,计算出隙码的长度就

是物体的周长。如图所示图形,边界用隙码表示时,周长为24。

若将像素视为一个个点时,则周长用链码表示,求周长也就是计算链码的长度。

当链码值为奇数时,其长度为企;

当链码值为偶数时,其长度为1;即周长p可表示为:p=Ne+&N。

此算法计算周长的就是利用这种计算方法。

程序存放于xintai.m文件中

3、面积

面积是衡量物体所占范围的一种方便的客观度量。面积与其内部灰度级的变化无关,而

完全由物体或区域的边界决定。同样面积条件下,一个形状简单的物体其周长相对较短。

本算法计算面积的方法是像素计数法C

像素计数法

最简单的面积计算方法是统计边界及其内部的像素的总数。根据面积的像素计数法的定

义方式,求出物体边界内像素点的总和即为面积,计算公式如下

NM

A=WW,(x'y)

x=0y=0

%====形态特征值计算===%

A=bwarea(I);%计算目标的面积(存在于xintai.m中)

4、圆心坐标

迭代二值化后找到光斑中心周围像素点取平均:

xO=mean(r);

yO=mean(c);

(5)半径

R=JMA为面积(xintai.m)

(6)圆度、精度

2

圆度:C=---E,£为修正因子(xintai.m)

面积x4n

22

精度:Rsq=V(X-x0)+(Y-y0),(或者称为欧几里得距离)(主文件PB.m中)

4设计步骤

逐像素跟踪处理获得光斑大小

功能存放于主文件PB.m

GUI输出结果

求得圆点坐标及偏差精度Rsq

具体设计耗时共9天,界面设计1天,通用选题图像处理分析理解编程3天,通用处理

找错1天,专用处理定题分析理解并寻找文献资料1天,编写代码2天,排错半天「仑文

形成1天半。所做的"光斑定位"没有做到老师要求的那种高精度定位,不知道是不是老

师要求的那种高精度定位,因为在处理复杂光斑时,发现图像特征参数,如圆度有较大偏

差,姑且先把其列为专用选题内的命题。另外,程序仍有很多bug,限于作者水平,未改

出来。

1°GUI界面设计(2011.1.1设计)

,点击GUIDE国,设计空白GUI,得到所需要的界面

(1)打开MATLAB

Axes功能是显示图像;另外几个静态文本是为了显示对应的数据;

界面把显示光斑定位特征值的SatiesText设计为Enabe,方便复制计算结果。

对"原始图像"、"处理后图像"这两个SatiesText设计为Unable,是为了不便于更改图

像路径,减少Bug产生的机会。

(2)点击Menu-Editor■皇,设计主菜单栏,设计了“文件"、"通用处理"、"专用

处理"、"帮助”根栏目及其对应的子栏目。

文件I通用前专用处理帮助

(3)设计完毕,下一步是往各按钮里写代码。

2。通用选题图像处理设计(2011.1.2-2011.1-5)(简要介绍)

(详情可在程序上做具体试验,PB.m文件内有详细的注解,对理解算法很方便,在此限

于篇幅不做介绍。另外,在图片文件夹内有处理后的效果图)

(离散小波变换

(差分梯度算子锐化效果图)

(同态增析效果图)

(分水岭阈值分割效果,较自动阈值好)

(中值滤波效果图)

(一个属于边界描述算法得到的效果图,处理先自称为色彩描绘,有点意思)

通用选题图像处理就介绍到这,下面进入正题:简单光斑定位的介绍。

3。光斑定位(2011.1.6-1.8)

1、打开、读取、保存

先打开并读取一张灰色或者彩色的椒盐光斑图片,格式为bmp。打开功能在函数

Open_Ca1Iback实现。

[filename,pathname]=uigetfile(1*.bmp');

set(handles.editl,,string1,[pathname,filename]);%设置edit1的字符内容

file=get(handles.editl,'string');

Al=imread(file);

axes(handles.axesl);%将打开的图像文件显示在轴1

imshow(Al);%对图像进行显示

本论文图片示例为“flue叩eper.bmp”。

而既可以读取彩色也可以读取灰色功能函数,要在全局范围下均实现,限于作者水平,会把

这个编的很麻烦,所以只在函数flucalocation_Callback下实现。

file=get(handles.editl,'string');

image=imread(file);

[x,yzz]=size(image);

if(z==l)

gray=image;

else

gray=rgb2gray(inage);当彩色图像灰度化

end

保存aexs2显示的最终效果图,功能在Save_Callback下实现。

[filename,pathname]=uiputfile('*.bmp');%得到保存图像的文件名和路径

set(handles.edit2,'string',[pathname,filename]);

%显示保存图像的文件名和路径

A=getimage(handles.axes2);%得到图像

imwrite(A,filename,'bmp*);%将图像写入文件

2、灰度图像去除噪声

选取5x5模板对灰度图像滤波,去处噪声,并在axes4显示效果。

d=5;

med-medfilt2(gray,[drd]);心中值滤波,d为中值谑波所选取的模板大小

axes(handles.axes4);imshow(med);

3、灰度图像二值化

在这一步阈值分割,探到光斑图像的边缘,得到二值化黑白图像标准光斑图像。

bw=optimumthreshold(med);答图像二值化最优阈值迭代

主程序PB.m调用0Ptimumthreshold.m中的阈值迭代函数;

functionil=optimumthreshold(I)

[x,y]=size(I);

b=double(I);

zO=max(max(max(I)));%求巴图象中最大的灰度

zl=min(min(min(I)));会最小的灰度

T=(zO+zl)/2;%T赋初值,为最大值和最小值的平均值

TT=0;%TT赋初值

S0=0.0;n0=0.0;

%为计算灰度大于阈值的元素的灰度总值个数赋值

Sl=0.0;nl=0.0;

务为计算灰度小于阈值的元素的灰度总值个数赋值

allow=0.05;%新旧阈值的允许接近程度

d=abs(T-TT);告定义两次阈值之间的差值

count=0;当记录几次循环

while(d>=allow)

%迭代最佳阈值分割算法,当两次阈值差值大于规定值时,开始循环

count=count+l;务记录循环次数

fori=l:x,为循环开始,按行进行

forj=l:y,3按列进行循环

ifI(i,j)>=T,

%如果某一点的灰度大于阈值,则将其灰度值加到S0上.并统计这样点的个数

S0=S0+b(i,j);

nO=nO+l;

end

ifI(i,j)<T,

当如果某一点的灰度值小亍阈值,将其灰度值加到S1上,并统计这样点的个数

Sl=Sl+b(izj);

nl=nl+l;

end

end彩循环结束

TO=SO/nO;段计算灰度值小于阈值的那些点的平均灰度值

Tl=Sl/nl;冢计算灰度值大于阈值的那些点的平均灰度值

TT=(TO+T1)/2;%计算这两部分的平均值

d=abs(T-TT);%比较得到的阈值与使用的阈值的差值

T=TT;告并用计算得到的阈值代替使用的阈值,进行下一次的循环-.

end%当不满足条件时,退出循环

il=im2bw(I,T/255);

金图像在最佳阈值下二值化

end

4、寻找光斑中心坐标

对得到的bw灰度图像进行区域标定,利用for循环寻找与L值相等的像

素点,提取出来,对其求平均,得到光斑中心坐标(x0,yo)。并用green"+〃

标记。(X,Y)为其估值,round函数功能是找与对应值最接近的整数值。

[L,n]=bwlabel(bw);

holdon

forj=l:n

[rzc]=find(L==j);

xO=mean(r);

yO=mean(c);

1

plot(yO,xO,'Marker','o','MarkerEdgeColor'z'r,'MarkerFaceColor•,

Markersize',10);

1

plot(yO,x0z*Marker*+*,*MarkerEdgeColor',*g);

Z=[x0,y0];

X=round(xO);

Y=round(yO);

D=[X,Y];

end

axes(handles.axes5);imshow(bw);

%set(handles.edit2,*string*z'简单光斑定位图像,);

2

定义精度为估值点与得到的平均值点之间的距离:Rsq=V(X-x0)+(Y-y0)2

Rsq=sqrt((X-xO)入2+(Y-yO)A2);

读取"flucapeper.bmp"得至I」的圆心坐标是(128.4567,128.4511),精度为0.64194

5、二值化图像特征提取

令L为周长,A为面积,C为圆形度,R为矩形度,E为伸长度

[L,A,C,R,E]=xintai(bw);

在MATLAB的commandwindow显示:

光斑面积为:

A=

2.6553e+003

光斑周长为:

L=

228

光斑半径为:

R=

29.0722

6、结果分析

得到的结果与该光斑的中心精确值(128.4541,128.4541)相差很小,相对误差在

0.002%,光斑半径精确值为29.0720,相对误差在0.0006%故具有较高的可信度。得至IJ

这个精确的值主要源于图像中光斑质量好,近似为圆,复杂度较低,容易确定其几何特征。

在aexsl中显示原始图像(带噪声彩色(或灰色)图片),在aexs4中显示滤波结果(预

处理阶段)

在aexsS中显示二值化结果(迭代二值化阶段)

在aexs2中显示最终处理后所得图像结果(主要确定光斑中心阶段)

圆度C=0.97795

精度Rsq=0.64194(坐标估值与所得平均值之间的距离差)

圆心坐标(128.4567,128.4511)

程序显示一张两个激光光斑的图片"guangban23.bmp",得到的结果:

1

1

1用心坐标(5224878.550.0224)

精确坐标为(525.4832,554.3278),误差较大,相对误差达到了0.5%,效果不好。而且,

在设计上也只考虑了一幅图片只有一个光斑的问题,对于一幅图片两幅光斑问题,结果显

示的是探的第2个光斑的几何特征参数,在设计上有欠缺。

四、结论

本程序是在MATLAB7.80R2009a版本环境下生成的,在做定位时,有些功能不需要编写

代码,直接调用函数,较为方便,可操作性好。特别是对于简单的光斑,其定位精度较高。

而对于较为具体的激光光斑问题,结果显示这种算法效果并不理想,不适宜做具体问题,

但在理论上还是有其一定的价值。

五、结束语

最后感谢班导师工振东老师,您一学期的精彩授课和实垃室内耐心解答,让我受益颇多。

在实验室的几次点拨,对于解决程序问题起了很好的帮助。在学《图像处理》前,我对图

像处理方面的知识为0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论