| 基于OpenCV激光中心定位的改进算法 |
利用激光进行各种精密测量时,摄像系统的物面分辨率和图像中目标的定位精度是很重要的。物面分辨率提高的代价非常昂贵,因而,通过软件处理提高定位的精度是光学测量及数字图像处理中的重要技术[3]。目前,常见的激光光斑中心拟合算法有:质心法、空间矩[4]、圆拟合[5]、椭圆拟合、高斯拟合算法,本文重点研究椭圆拟合法定位激光光斑的中心。针对椭圆形构件,文献[6-8]介绍了一种特征根法及二次曲线标准化法椭圆拟合拟合椭圆;文献[7]中,介绍了一种二次曲线标准化法拟合椭圆;文献[8]对这两种方法进行比较,发现特征根法拟合椭圆对初值得依赖程度高。
1 OpenCV激光光斑中心定位图 1展示了OpenCV激光光斑中心定位的流程图。首先,调用OpenCV的库函数,将一幅多通道的彩色影像转换为单通道的R、G、B影像。其次,OpenCV中可以剪裁感兴趣的矩形区域,该区域也被称为ROI。接下来,影像二值化一般选取大津算法[9],分类的原理是计算背景和前景的最大类间方差;当然,若灰度阈值明确时,可直接通过输入灰度阈值分类即可。为了剔除二值化影像中的孤立像素、毛刺和小桥(连通两块区域的像素),而总的位置和形状不变,所以采用开运算对图像进行处理[10]。经过上述处理后,图像上仍可能存在多个连通域,故需要对连通域进行分割,再通过连通域的属性(面积、周长等),进一步提高光斑所在连通域的定位[11]。计算连通域的轮廓,再调用OpenCV中的椭圆拟合算法,拟合激光光斑对应的椭圆,求解激光光斑中心。
![]() |
| 图 1 OpenCV激光光斑中心定位流程图 Fig.1 Flow Chart of OpenCV Laser Spot Center Positioning |
2 改进的二次曲线标准化法
以平面坐标X=(x y)T表示的一般二次曲线方程为:
| $ a_{0}+a_{1} x+a_{2} y+a_{3} x^{2}+a_{4} x y+a_{5} y^{2}=0 $ | (1) |
式(1)中,实对称矩阵可对角化[12],实际就是求解式(2):
| $ \left(\begin{array}{cc} \lambda_{1} & 0 \\ 0 & \lambda_{2} \end{array}\right)=\left(\begin{array}{cc} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{array}\right)^{\mathrm{T}}\left(\begin{array}{cc} a_{3} & \frac{a_{4}}{2} \\ \frac{a_{4}}{2} & a_{5} \end{array}\right)\left(\begin{array}{cc} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{array}\right) $ | (2) |
由矩阵的对交项为0可知:a3sinθcosθ-0.5a4sin2θ+0.5a4cos2θ-a5sinθcosθ=0,可推出:1/tan2θ=(a5-a3)/a4,令(a5-a3)/a4=
| $ \tan ^{2} \theta+2 \varsigma \tan \theta-1=0 $ | (3) |
根据求根公式,当
| $ \tan \theta=\left\{\begin{array}{l} -\varsigma+\sqrt{\varsigma^{2}+1}, \varsigma \geqslant 0 \\ -\varsigma-\sqrt{\varsigma^{2}+1}, \varsigma<0 \end{array}\right. $ | (4) |
令:
| $ \left(\begin{array}{l} x \\ y \end{array}\right)=\left(\begin{array}{cc} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{array}\right)\left(\begin{array}{l} p \\ q \end{array}\right)=R\left(\begin{array}{l} p \\ q \end{array}\right) $ | (5) |
可得:
| $ a_{0}+\left(\begin{array}{ll} b_{1} & b_{2} \end{array}\right)\left(\begin{array}{l} p \\ q \end{array}\right)+\left(\begin{array}{ll} p & q \end{array}\right)\left(\begin{array}{cc} \lambda_{1} & 0 \\ 0 & \lambda_{2} \end{array}\right)\left(\begin{array}{l} p \\ q \end{array}\right)=0 $ | (6) |
其中:
| $ \left(\begin{array}{ll} b_{1} & \left.b_{2}\right)=\left(a_{1} \cos \theta-a_{2} \sin \theta\right. & \left.a_{1} \sin \theta+a_{2} \cos \theta\right) \end{array}\right. $ |
将公式展开,坐标分量的交叉项已经消失:
| $ a_{0}+b_{1} p+b_{2} q+\lambda_{1} p^{2}+\lambda_{2} q^{2}=0 $ | (7) |
将其合并为:λ1xx2+λ2yy2+b0=0,即
| $ \left(\begin{array}{ll} x x & y y \end{array}\right)\left(\begin{array}{ll} \lambda_{1} & \\ & \lambda_{2} \end{array}\right)\left(\begin{array}{l} x x \\ y y \end{array}\right)+b_{0}=0 $ | (8) |
其中:
| $ \left\{\begin{array}{l} x x=p+b_{1} /\left(2 \lambda_{1}\right) \\ y y=q+b_{2} /\left(2 \lambda_{1}\right) \\ b_{0}=a_{0}-b_{1}^{2} /\left(4 \lambda_{1}\right)-b_{2}^{2} /\left(4 \lambda_{2}\right) \end{array}\right. $ |
转化为椭圆的标准式,可得:
| $ \frac{x x^{2}}{-b_{0} / \lambda_{1}}+\frac{y y^{2}}{-b_{0} / \lambda_{2}}=1 $ | (9) |
标准坐标系坐标(xx yy)T与测量平面坐标系坐标(x y)T的关系为:
| $ \left(\begin{array}{l} x x \\ y y \end{array}\right)=\left(\begin{array}{l} b_{1} /\left(2 \lambda_{1}\right) \\ b_{2} /\left(2 \lambda_{2}\right) \end{array}\right)+\boldsymbol{R}^{\mathrm{T}}\left(\begin{array}{l} x \\ y \end{array}\right) $ | (10) |
在测量平面坐标系中,椭圆的中心为:
本文采用3幅激光光斑影像,截取仅包含激光光斑部分的影像。在使用改进的二次曲线标准化法提取椭圆中心时,需要考虑按照几倍中误差的原理剔除粗差点,一般情况下,按照两倍或三倍中误差阈值删除粗差点,本文将分别对两种情况讨论。对激光光斑的轮廓点使用OpenCV椭圆拟合函数拟合,计算激光光斑的椭圆参数,结果见表 1。表 1中,x0、y0、a及b分别表示椭圆中心在屏幕坐标系中的横坐标、纵坐标、椭圆长半轴及椭圆短半轴。
| 表 1 OpenCV提取激光光斑椭圆参数 Tab.1 OpenCV Extraction of Laser Spot Ellipse Parameters |
![]() |
使用改进的二次曲线标准法,设置三倍中误差阈值删除粗差点,对光斑轮廓点拟合椭圆,可得三幅影像光斑的椭圆参数见表 2。表 2中,前五列的含义与表 1一致,有效点表示参与椭圆拟合的点数,删除点表示排除的点数,中误差表示椭圆拟合的精度。
| 表 2 改进的二次曲线标准化法椭圆参数(三倍中误差) Tab.2 Modified Ellipse Parameter of Quadratic Curve Standardization(Triple Median Error) |
![]() |
图 2中,绘制了三幅影像轮廓点与拟合椭圆之间的关系,绿色点表示有效点数,蓝色线段表示拟合成功的椭圆。
![]() |
| 图 2 三幅影像轮廓点及其拟合椭圆图 Fig.2 Three Image Contour Points and Their Fitted Ellipses |
使用改进的二次曲线标准法,设置二倍中误差阈值删除粗差点,对光斑轮廓点拟合椭圆,可得三幅影像光斑的椭圆参数见表 3。
| 表 3 改进的二次曲线标准化法椭圆参数(二倍中误差) Tab.3 Modified Ellipse Parameter of Quadratic Curve Standardization(Double Median Error) |
![]() |
图 3中,绘制了三幅影像轮廓点与拟合椭圆之间的关系,绿色点表示有效点,红色点表示删除点,蓝色线段表示拟合成功的椭圆。
![]() |
| 图 3 三幅影像轮廓点及其拟合椭圆图 Fig.3 Three Image Contour Points and Their Fitted Ellipses |
从表 1和表 2的结果可知,当粗差探测的阈值设置为三倍中误差时,三幅影像轮廓点使用改进的二次曲线法均未探测到粗差点,拟合椭圆的中误差在0.05个像素左右,椭圆中心的横纵坐标与OpenCV方法获得的坐标相差均在0.02个像素,椭圆长短半轴差值最大为0.001个像素;从表 3和表 2的结果可知:当粗差探测的阈值设置为二倍中误差时,各影像轮廓点中均会出现粗差点,由于粗差点的删除,使得椭圆拟合的单位权中误差变小,拟合椭圆的中误差在0.03个像素,椭圆的长短半轴及中心坐标最大出现约3个像素的变动。
4 结束语本文描述了OpenCV激光光斑中心定位的原理,并详细的给出了一种改进的二次曲线标准化法椭圆拟合理论推导。从实验结果分析,OpenCV方法拟合椭圆与设置三倍中误差阈值的改进的二次曲线标准化法结果基本一致。由此可知,OpenCV方法拟合椭圆可能不考虑如何剔去粗差点,而是直接采用所有点参与椭圆拟合。因而,本文建议:采用本文的改进的二次曲线法拟合椭圆,并设置二倍中误差作为粗差探测的阈值,可以获得拟合精度更高的椭圆及其对应的光斑中心。
| [1] |
王丽丽, 胡中文, 季杭馨. 基于高斯拟合的激光光斑中心定位算法[J]. 应用光学, 2012, 33(5): 985-990. |
| [2] |
秦小文, 温志芳, 乔维维. 基于OpenCV的图像处理[J]. 电子测试, 2011(7): 39-41. DOI:10.3969/j.issn.1000-8519.2011.07.011 |
| [3] |
唐冠群. 几种激光光斑中心定位算法的比较[J]. 北京机械工业学院学报, 2009, 24(1): 61-64. DOI:10.3969/j.issn.1674-6864.2009.01.016 |
| [4] |
郑毅. 基于空间矩的激光光斑中心亚像素定位[J]. 激光与红外, 2005, 35(7): 521-523. DOI:10.3969/j.issn.1001-5078.2005.07.019 |
| [5] |
孔兵, 王昭, 谭玉山. 基于圆拟合的激光光斑中心检测算法[J]. 红外与激光工程, 2002, 31(3): 275-279. DOI:10.3969/j.issn.1007-2276.2002.03.020 |
| [6] |
王解先, 周善石. 椭圆形构件变形测量的数据处理[J]. 同济大学学报(自然科学版), 2007, 35(2): 253-256. DOI:10.3321/j.issn:0253-374X.2007.02.022 |
| [7] |
宫玮清. 隧道断面监测的椭圆拟合方法研究[J]. 测绘工程, 2014, 23(7): 51-54. DOI:10.3969/j.issn.1006-7949.2014.07.012 |
| [8] |
侯阳飞, 王解先. 两种椭圆拟合算法研究[J]. 工程勘察, 2018, 46(3): 71-74. |
| [9] |
李了了, 邓善熙, 丁兴号. 基于大津法的图像分块二值化算法[J]. 微计算机信息, 2005, 21(14): 76-77. |
| [10] |
卢雅琴, 邬凌超. 基于数学形态学的车牌定位方法[J]. 计算机工程, 2005, 31(3): 224-225. DOI:10.3969/j.issn.1000-3428.2005.03.079 |
| [11] |
甘玲, 林小晶. 基于连通域提取的车牌字符分割算法[J]. 计算机仿真, 2011, 28(4): 336-339. DOI:10.3969/j.issn.1006-9348.2011.04.083 |
| [12] |
王解先, 冯宝新. Jacobi数值方法在实对称矩阵求逆中的应用[J]. 大地测量与地球动力学, 2010, 30(1): 74-76. |
2021, Vol. 46







