可调精度的神经网络摄像机标定方法 技术领域:
本发明涉及一种可调精度的神经网络摄像机标定方法,用于对摄像机进行标定。属于先进制造与自动化技术领域。
背景技术:
计算机视觉的基本任务是从摄像机获取的图像信息计算出物体的三维空间几何信息,图像上每一个点的位置与物体表面相应点的几何位置有关。图像中这些位置的相互关系由摄像机成像几何模型决定。模型地参数称为摄像机参数,包括确定摄像机内部几何与光学参数(内部参数)以及摄像机相对于世界坐标系的关系(外部参数)。这些参数必须通过实验来确定,这个过程称为摄像机标定。目前常用的标定方法有线性法、非线性优化法、两步法、双平面法、主动标定法等,这些方法都是利用成像的几何性质,标定出摄像机的内部与外部参数。
目前使用神经网络进行摄像机标定方法仍然不为多见。直接将整个图像区域作为训练与识别的区域,没有考虑到在图像的不同部分对应的透镜径向畸变严重程度是不同的,因而最后的识别误差较大,如文献“摄像机神经网络标定技术”(赵清杰,孙增圻,兰丽。控制与决策。2002;17(3),May:336-342)所介绍。某些文献考虑到了这一因素,但是却没有就神经网络的训练区域进行明确划分,只是简单的将图像区域根据经验人为的划分为图像中心区域与非中心区域,对图像中心区域以外的部分认为畸变程度是一样的,这种方法在一定程度上提高了系统的识别率,但是仍然不能从根本上解决距图像中心越远,畸变严重程度越大这一问题,简单的将图像外层区域划分为一类,仍然存在着较大的误差。如文献“Junghee Jun and Choongwon Kim,“Robust Camera CalibrationUsing Neural Network”,IEEE TENCON,1999,pp694-697.)所介绍。
发明内容:
本发明的目的在于针对现有技术的不足,提出一种可调精度的神经网络摄像机标定方法,降低图像径向畸变带来的误差,实现简单、灵活与高精度的摄像机标定。
为实现这样的目的,本发明首先根据径向畸变程度的不同对图像区域进行划分,由初始半径得到一系列同心圆环,将同心圆环作为神经网络的训练区域。可以根据畸变严重程度改变区域划分的数目,对远离图像中心的区域,即畸变程度严重的区域,划分的类别细密,而靠近图像中心畸变轻微的区域,划分粗疏,以减小因径向畸变带来的误差。对标定图像进行区域划分后,将标定纸的世界坐标作为输入,而将图像坐标作为输出,构成三输入、两输出BP神经网络对所划分区域进行训练。最后使用训练好的神经网络进行摄像机标定。
本发明的方法具体包括以下几个步骤:
1.神经网络训练区域的划分。
在可调精度的神经网络摄像机标定法中,摄像机的球面镜头存在畸变现象,且距离透镜中心越远,畸变程度越严重,因此如果不加区别的将所有的图像点作为一类样本进行训练与识别将会给结果带来很大的误差。透镜畸变包括两个部分:径向变形与偏心。由于误差主要由径向畸变引起,所以在实际应用中,一般只考虑径向畸变面忽略偏心。本发明只考虑径向畸变并且认为畸变误差关于透镜中心对称。
本发明首先对棋盘标定纸采集所得到的标定图像进行区域划分。由于畸变量关于图像中心径向对称,将图像划分为若干同心圆环。每个圆环内畸变量差异不大,相邻圆环内畸变相对量的改变幅度在设定的某个允许误差范围之内。通过计算本发明可以得到畸变误差的径向相对量与到图像中心的径向距离的平方近似成正比,根据径向畸变程度的不同将整幅图像划分为一系列间距不断缩小的同心圆环作为神经网络的训练区域。
本发明确定了训练区域即同心圆环之间的半径关系为rn=r1n,]]>rn为第n个训练区域的半径,rl为第1个训练区域的半径。在实际应用中,首先将一标定纸图像作为训练样本,根据需要的精度设定初始半径rl,然后由上述关系可以自动得到整幅图像上所有训练区域。
2.使用神经网络对所划分区域进行训练。
对标定图像进行区域划分后,根据训练划分区域的数目决定神经网络的数目,对每一个同心圆环,即训练区域使用对应的神经网络进行训练。对图像进行去噪处理后,将灰度图像进行二值化处理得到二值化图像。对二值化图像进行Hough(霍夫)直线检测,得到一系列相互交叉的直线。求取每个交叉点的二维图像坐标,将二维图像坐标作为神经网络的输出样本,而在标定纸中与交叉点二维图像对应的三维世界坐标作为输入。本发明使用BP神经网络作为训练用的网络。将各个坐标分别输入到对应的BP神经网络中进行训练。最后将各个划分区域上神经网络所得到的训练结果作为整幅图像的训练结果。
3.使用训练好的神经网络进行摄像机标定。
对任意物体进行图像采集得到的物体图像进行相应的区域划分,计算图像中任意坐标点到图像中心点的距离r,根据训练区域即同心圆环之间的半径关系公式可以得到,nx=rn2/r12,]]>如果n-1<nx≤n,则图像点对应于第n个神经网络。将图像点对应的世界坐标输入到训练好神经网络中,输出的结果即为得到的标定好的真实的图像坐标。
本发明的方法简单、灵活、实现容易,可以根据不同的畸变严重程度自动完成神经网络训练区域的划分,在避免人为因素引起误差的同时缩短了构造神经网络训练区域所需要的时间。在实际应用中,通过改变区域划分的数目,大大降低因径向畸变带来的误差,可以满足实际摄像机标定中的不同精度要求。
附图说明:
图1为本发明神经网络区域划分示意图。
图2为不同初始半径对应的训练区域。
图3为识别率—初始半径变化曲线。
图4为训练时间—初始半径变化曲线。
具体实施方式:
为了更好的理解本发明的技术方案,以下结合附图和实施例作进一步的详细描述。
图1为本发明神经网络区域划分示意图。由于摄像机的球面镜头存在径向畸变现象,且距离透镜中心越远,畸变程度越严重,因此如果不加区别的将所有的图像点作为一类样本进行训练将会给结果带来很大的误差。
描述非线性畸变可用下列公式:
x′=x~+δx(x,y)]]>
y′=y~+δy(x,y)---(1)]]>
(x′,y′)表示真实的图像坐标,表示未修正的图像坐标。(δx(x,y),δy(x,y))是畸变量。
径向畸变的修正量可以由距图像中心的径向距离的偶次幂多项式模型来表示:
δx(x,y)=(x~-xp)(κ1r2+κ2r4+κ3r6+···)]]>
δy(x,y)=(y~-yp)(κ1r2+κ2r4+κ3r6+···)---(2)]]>
其中(xp,yp)是图像中心位置坐标的精确值,而
r=(x~-xp)2+(y~-yp)2]]>
是到图像中心的径向距离。
所以由(2)得到总的畸变径向相对量为,
δ=1r(δx2(x,y)+δy2(x,y))1/2]]>
=κ1r2+κ2r4+···]]>
≈κ1r2]]>
可以看到透镜的畸变量的径向相对量与到图像中心的径向距离的平方近似成正比,由于在整个图像中各部分的畸变量是不同的,距离图像中心越近,畸变量越小,靠近图像边缘,畸变量越大。
由于畸变量关于图像中心径向对称,且畸变相对量与距图像中心的半径的平方成正比,将图像划分成若干同心圆,不妨用D1,D2,…Dn来表示,每个圆环内畸变量差异不大。相邻圆环内畸变相对量的改变幅度在某个允许误差的范围ε之内。
D1:δ1=κ1r12=ϵ,]]>
D2:δ2-δ1=κ1r22-κ1r12=ϵ,]]>
Dn:δn-δn-1=κ1rn2-κ1rn-12=ϵ,---(3)]]>
由(3)可以得到:
rn2=nκ1ϵ---(4)]]>
由(4)可以获得不同圆的半径为:
r1=1κ1ϵ,r2=2κ1ϵ,···,rn=nκ1ϵ----(5)]]>
不妨设ϵκ1=t,]]>则对于(5)来说:r1=t,r2=t2,···,rn=tn---(6)]]>
可以得到:rn=r1n---(7)]]>
由(7)可以得到:rn=r1n,]]>rn-1=r1n-1,···,]]>r2=r12]]>
于是:rn-rn-1=r1(n-n-1)]]>
rn-1-rn-2=r1(n-1-n-2)]]>
r2-r1=r1(2-1)]]>
不难得到:rn-rn-1<rn-1-rn-2<…<r2-r1<r1
由此可知畸变划分区域为一系列间距不断缩小的同心圆环。将得到的同心圆环作为神经网络的训练区域。
图2是实验用的棋盘标定纸。本发明将标定纸的世界坐标作为输入,而将图像坐标作为输出,构成三输入、两输出BP神经网络。
对棋盘标定纸进行图像采集,得到标定图像,如图2(图2a-2d)所示。对图像进行去噪处理后,将灰度图像进行二值化处理得到二值化图像。对二值化图像进行Hough(霍夫)直线检测,得到一系列相互交叉的直线。
求取每个交叉点的二维图像坐标又知图像中心点坐标为(xp,yp),可以得到交叉点到图像中心点的距离:r1=(x~i-xp)2+(y~i-yp)2.]]>如果rn>r1>rn-1,则交叉点坐标属于第n个划分区域,也即对应于第n个神经网络,将第n个神经网络的训练输出样本。与对应的三维世界坐标则作为作为神经网络的训练输入样本,然后对神经网络进行训练。依次类推,可以得到整幅图像上,各个划分区域中神经网络的训练输入与输出样本。
如图2a-d所示,分别采用不同的初始半径,其中图2a为初始半径r1=180,对应于两个同心圆,即系统有两个供训练与识别的神经网络。在图2b中,初始半径r1=150,对应于三个同心圆。图2c对应于初始半径r1=130,对应于四个畸变区域。而在图2d中,初始半径r1=120,对应于五个同心圆。在图2中不难看出训练区域是一系列间距不断缩小的同心圆环。
图3为识别率—初始半径变化曲线。图3中曲线的横坐标对应于图2中所设定的初始半径。纵坐标对应于识别率。r1=180时,识别率为95.05%;当r1=150时,识别率为97.79%;当r1=130时,识别率为99.01%;当r1=120时,识别率为99.45%。因此可以知道,初始半径越大,同心圆数目越少,系统中的神经网络数目也越少,同时识别精度越低。
图4为训练时间—初始半径变化曲线。图4中曲线的横坐标对应于图2中所设定的初始半径。纵坐标对应于神经网络所需要的训练时间。r1=180时,训练时间为25s;当r1=150时,训练时间为44s;当r1=130时,训练时间为60s;当r1=120时,为70s。由此可以知道,初始半径越大,同心圆数目越小,系统所需要的训练时间越少。