标签:
一种简易旋转平台标定方法及其matlab实现
摘要:平台标定是保证旋转平台精度的基本措施之一,针对旋转平台中心点的标定问题,在视觉系统的定位使用中,必须使用同一坐标系,将视觉系统中的镜头坐标系及运动坐标系联系在一起,即标定
关键字:旋转中心标定;中心位置检测;matlab实现;
背景:在现代工业自动化生产中,机器视觉的应用与日俱增,在工业中,用于装配、焊接、工业检测(如质量检测)等用途的机器人及各种自动化的工作系统,在配有旋转平台的自动定标系统后,具有更高的作业精度。本文主要探究手机自动贴膜机旋转平台的旋转中心标定的方法。
一 实现方法
在旋转平台的旋转中心标定中,图像本身受到环境因素或设备因素的影响,有时会带有较为明显的噪声,需要对相机所拍摄的进行相应的预处理,然后进行图像的特征边缘提取,提取图像的边缘坐标进行定位,就边缘坐标进行线性拟合,得出手机边缘在旋转平面的直线方程,利用平台旋转过程中相机相继拍得的三幅图像,拟合出三条不同的直线,利用平台的旋转中心到直线的距离相等,标定出可能想旋转中心位置。
流程图:
实现过程:
2.1图像预处理
图像预处理是对图像进行一系列变换处理,使图像符合确定质心坐标模块的要求,即把图像的最大边缘保存下来,在旋转平台标定过程中,图像的预处理主要包括:①图像的灰度化,彩色图像中的每个像素的颜色有R、G、B三个分量决定,每个分量有255中值可取,这样一个像素点可以有1600多万255*255*255的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理过程中将图像转变成灰度图像以使后续的图像的计算量变得少一些,灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征;②去噪,由于图像的噪声主要来源于旋转平台,即图像背景所引起的噪声,采用高斯平滑滤波器对图像进行规整、除噪等操作。
2.2图像边缘提取
边缘提取的最大好处就是能够突出边缘区域,同时使图像中无关的部分暗淡,基于图像预处理后的图像特征,选取Canny算子来对图像进行边缘提取,Canny算子检测边缘的方法是寻找图像梯度的局部极大值,梯度是用高斯滤波器的导数计算的。该方法使用两个阈值来分别检测强边缘和弱边缘,而且仅当弱边缘与强边缘相连时,弱边缘才会包含在输出中。此方法不容易受噪声的干扰,能够检测到真正的弱边缘[1]。
2.3删除小面积对象
在提取的边缘图像中,还存在着手机按钮、散热孔等体积较小,又无法通过滤波等操作去除的小面积对象,需要设置小面积的阈值后进行删除,留下最大面积的手机边缘进行下一步操作。
2.4确定质心坐标
确定提取的图像边缘需要系统能够快速准确地确定图像的质心坐标,二值图像中质心坐标(K,L)可用公式:
K=( )/( ),L=( )/( ) (1)
1,(i,j)∈目标
求出式中:A(i,j)=
0,(i,j)∈背景
(i,j)是图像中像素的坐标,m,n是图像的行和列,当目标和视觉系统之间发生相对运动时,只要重复计算(1)式就可以实现目标质心的搜索和跟踪[2]。
2.5确定提取的图像边缘
根据图像质心坐标(K,L)的位置来确定用以计算边缘直线方程的图像边缘,提取图像边缘中的一小段,K-△≤x≤K+△,1≤y≤(L/2),其中△可以取K/10以适应不同的图像,然后提取出这一部分图像。
2.6线性拟合
提取图像边缘的坐标,根据最小二乘准则:使全部样本观测值的残差平方和达到最小,即:min =min ,其中ei=Y- ,来确定未知参数a0,a1,a2……an的估计量,且给定置信区间C,置信区间越小,当拟合曲线时,样本均值 作为拟合点的可靠度越高,反之越低[3],就手机图像边缘客观事实而言,边缘为直线状,故在选取置信区间C的时候,C应该取较小的某一区间。
2.7确定旋转中心坐标
本文根据三条经过旋转平移后的直线确定平台的旋转中心,经过以上的线性拟合可以确定的三条直线分别为:p1:y=a1x+c1;p2:y=a2x+c2;p3:y=a3+c3。由于旋转中心M到三条的距离相等,即相当于这三条直线是旋转中心在半径d的球面上的三条切线,且p1,p2,p3在旋转平面内两两相交形成三角形,可知,在空间内到此三角形的三边距离都相等的点共有四个,一个是内心D(内角平分线的交点),还有3个旁心E,F,G(外角平分线和不相邻的内角平分线的交点)。
用函数的方法推导点到直线距离:
点M到直线p上任意一点的距离的最小值就是点M到直线p的距离,在p上取任意点Q(x,y),用两点间的距离公式可得距离d,为了利用直线方程Ax+By+C=0的有利条件,陪凑系数处理得:
(A^2+B^2)[(x-x0)^2+(y-y0)^2]
=A^2(x-x0)^2+B^2(y-y0)^2+A^2(y-y0)^2+B^2(x-x0)^2
=[A(x-x0)+B(y-y0)]^2+[A(y-y0)+B(x-x0)]^2
≥[A(x-x0)+B(y-y0)]^2=(Ax0+By0+C)^2(∵Ax+By+C=0)
≥|AX0+By0+C|/( )
当且仅当A(y-y0)=B(x-x0)时取等号所以最小值就是d=|AX0+By0+C|/( )。
分析图一可知在空间中有四个点D,E,F,G到直线p1,p2,p3的距离相等,即可能为旋转平台的旋转中心M,设M为(x0,y0),p1,p2,p3的直线方程为直线方程的标准式,p1:a1x+b1y+c1=0;p2:a2x+b2y+c2=0;p3:a3x+b3y+c3=0,则有:
a1x0+b1y0+c1=±d* ;
a2x0+b2y0+c2=±d* ;
a3x0+b3x0+c3=±d* ;
上式距离取值为d,d,d计算M1点坐标:
a1x0+b1y0-d* =-c1;
a2x0+b2y0-d* =-c2;
a3x0+b3y0-d* =-c3;
此方程为一个超定线性方程,可用矩阵的方法求解: =
解得 : = ,由此可以解得第一个中心点M1(x0,y0)和M1点到这三条直线的距离d。
上式距离取值为-d,d,d计算M2点坐标:
解得: =
上式距离取值为d,-d,d 计算M3点坐标:
解得: =
上式距离值为d,d,-d 计算M4点坐标:
解得: =
由以上解可以看出,通过上述方法可以得出旋转平台可能的四个坐标点,在没有其他约束条件的情况下,我们可以通过将旋转平台旋转三次并记录相应的实际旋转角度theta,通过这四条线的任意三条直线的计算出不用的四个坐标点,然后给定适合的置信区间△,匹配出此8个坐标中完全相同或者两点之间的距离小于△的两点M,N,取这两点的中间坐标作为旋转平台的旋转中心S。
二 实验结果
图2
图2中a为水平放置的一手机原图,b,c,d,e分别为经旋转平台旋转0°,-3°,3°,6°的手机图片经预处理后的图像,图像中显示的图像边缘呈现为间断的白色线条,经放大后可以看出边缘是连通的。
确定旋转平台中心位置的结果:
*选取b,c,d确定中心坐标M
P1=-0.0000 56.0001;
P2=-0.0000 56.0021;
P3=0.0000 55.9949;
M1 =
M2 =
M3 =1.0e+06*
M4 =1.0e+06*
*选取e,c,d确定中心坐标N
P1=0.0000 55.9892;
P2=-0.0000 56.0021;
P3=0.0000 55.9949;
N1 =
N2 =
N3 =1.0e+06*
N4 =1.0e+06*
结果分析
上述结果经过简化后,可得:
M=1.0e+06 * N=1.0e+06 *
给定置信区间△=0.01,在M,N找到两点间距离≤△的一对坐标,即: ≤△,如果存在这样的两个点,取旋转中心坐标为:x=(xi+xj)/2;y=(ji+yj)/2。
经处理过后可得到平台的中心坐标为:Z(302.4708,111.9997)
附录:
新建一个m文件,命名为findline,录入代码如下:
function [D]=findline(G)
B=rgb2gray(G);
% h = fspecial(‘gaussian’, 12, 15);
% B=imfilter(B,h); %如果图像背景具有较多的噪声,可用高斯平滑滤波器进行滤波处理
BW=edge(B,’canny’);
C=bwareaopen(BW,900,8);
C=double(C);
[m,n]=size(C);
%找质心坐标
sum1=0;
sum2=0;
sum=0;
for i=1:m
for j=1:n
l1=i*C(i,j);
l2=C(i,j);
sum1=sum1+l2;
sum2=sum2+l1;
j=j+1;
end
end
K=fix(sum2/sum1);%质心横坐标
for i=1:m
for j=1:n
l1=j*C(i,j);
l2=C(i,j);
sum1=sum1+l2;
sum2=sum2+l1;
j=j+1;
end
end
L=fix(sum2/sum1);%质心纵坐标
a=(L:m);
b=(K-100:K+10);
D=C(a,b);
% subplot(1,2,1);
% imshow(C);
% subplot(1,2,2);
% imshow(D);
新建一个m文件夹,命名为ispoly,录入代码如下:
function [p,B]=ispoly(A)%A为给出的图像
% h = fspecial(‘gaussian’, 12, 15);
% F=imfilter(A,h);
B=findline(A);
[x,y]=find(B==0);
n=1;
p=polyfit(x,y,n) %拟合所需的直线方程
新建一个m文件夹,命名为findpoint,录入代码如下:
function [x0,y0]=findpoint(a1,c1,b1,a2,c2,b2,a3,c3,b3)
d=sqrt(a1*a1+b1*b1);
a1=a1/d;
b1=a1/d;
c1=c1/d;
d=sqrt(a2*a2+b2*b2);
a2=a2/d;
b2=b2/d;
c2=c2/d;
d=sqrt(a3*a3+b3*b3);
a3=a3/d;
b3=b3/d;
c3=c3/d;
C=[-c1;-c2;-c3];
B1=[a1,b1,-1;a2,b2,-1;a3,b3,-1];
M1=B1\C;
B2=[a1,b1,1;a2,b2,-1;a3,b3,-1];
M2=B2\C;
B3=[a1,b1,-1;a2,b2,1;a3,b3,-1];
M3=B3\C;
B4=[a1,b1,-1;a2,b2,-1;a3,b3,1];
M4=B4\C;
M=[M1(1),M1(2);M2(1),M2(2);M3(1),M3(2);M4(1),M4(2)]
④新建一个m文件夹,命名为Demar,录入命令入下:
G1=imread(‘E:\某些\图片\图像处理图片\PG1.jpg’);
B1=rgb2gray(G1);
% h = fspecial(‘gaussian’, 12, 15);
% B=imfilter(B,h);
BW1=edge(B1,’canny’);
C1=bwareaopen(BW1,900,8);
subplot(2,3,1);
imshow(G1);
title(‘a(原图)’);
subplot(2,3,2);
imshow(C1);
title(‘b(0°)’);
C2=imrotate(C1,-3,’nearest’,’loose’);
subplot(2,3,3);
imshow(C2);
title(‘c(-3°)’);
C3=imrotate(C1,3,’nearest’,’loose’);
subplot(2,3,4);
imshow(C3);
title(‘d(3°)’);
C4=imrotate(C1,6,’nearest’,’loose’);
subplot(2,3,5);
imshow(C4);
title(‘e(6°)’);
p1=ispoly(C1);%拟合
p2=ispoly(C2);
p3=ispoly(C3);
K=[p1,-1,p2,-1,p3,-1];
M=findpoint(K(1,1),K(1,2),K(1,3),K(1,4),K(1,5),K(1,6),K(1,7),K(1,8),K(1,9))%找中心坐标点
p1=ispoly(C4);%拟合
p2=ispoly(C2);
p3=ispoly(C3);
K=[p1,-1,p2,-1,p3,-1];
N=findpoint(K(1,1),K(1,2),K(1,3),K(1,4),K(1,5),K(1,6),K(1,7),K(1,8),K(1,9))%找中心坐标点
运行Demar文件,可以达到相应的M,N点坐标及距三条拟合直线的距离。
保持Demar文件运行的数据,新建一个文件夹,命名为Text,录入命令如下:
for i=1:4
for j=1:4
S=sqrt((M(i,1)-N(j,1))^2-(M(i,2)-N(j,2))^2);
if S==0.01
Mx=(M(i,1)+N(j,1))/2
My=(M(i,2)+N(j,2))/2
end
end
end
Z=[Mx,My]
其中的S为给定的置信区间,可以根据实际情况进行调试,从而计算出选择平面的旋转中心坐标Z点
参考文献:
[1] 柏春岚.Matlab在图像边缘提取中的应用
[2] 宋克欧,黄凤岗,兰晓亭. 二值图像目标质心快速搜索跟踪算法. 哈尔滨工程大学.计算机与信息科学系 150001
[3] 杨晓华,金平,姚卫星.用考虑置信区间长度影响的最小二乘拟合S-N曲线
标签:
原文地址:http://blog.csdn.net/malena_meak/article/details/51330071