1、对偶二次曲线原理
二次曲线也称圆锥曲线,其几何定义是一个平面与两个顶点相对的圆锥相交所产生的交线。
通常二次曲线指的是点二次曲线,它是定义在曲线点上的方程。而在射影几何中,齐次点和齐次线存在着可以互换的二元关系,因此也相应地存在着一个定义在直线(即曲线的切线)上而非点上的对偶二次曲线。如下图所示:
在非齐次坐标系下,设点 \(p=[u,v]^T\) 为二次曲线上的一点,则其二次曲线方程为:
其中,\(A\) 、\(B\)、\(C\)、\(D\)、\(E\)、\(F\) 为二次曲线 \(C\) 的参数。
那么相应地,在齐次坐标系下,若存在满足 \(p_i^TQp_i = 0\) 的点 \(p_i = [u, v, 1]^T\) ,则该点位于二次曲线 \(Q\) 上,其二次曲线方程矩阵形式的表达式为:
由此可知,过(非退化)二次曲线 \(Q\) 上的点 \(p\) 的切线由 \(l=Qp\) 确定。类似地,存在对偶(也即线)二次曲线可由一个 \(3 \times 3\) 的矩阵 \(Q^*\) 表示:
当 \(l_i = [a_i, b_i,c_i]^T\) 满足 \(l_i^T = C^*l_i = 0\) 时, \(l_i\) 为二次曲线 \(Q\) 的切线。其中 \(Q^{*}\) 为 \(Q\) 的伴随矩阵(或者逆矩阵),\(Q\) 为满秩。
根据定义,二次曲线的中心为无穷远处关于二次曲线的极点。若将直线 \(l\) 的极点定义为 \(p_0\) ,则有 \(p_0 = Q^{*} l\),那么对偶二次曲线 \(Q^{*}\) 的中心 \(e_c = (u_c,v_c)\) 可以直接从参数中获得:
其中, \(\lambda\) 为比例因子,\(l_{\infin}\) 为无穷远处直线。根据上式可知,求得对偶二次曲线参数后便可直接得到椭圆的中心坐标。而对偶二次曲线 \(Q^{*}\) 的参数向量 \(\theta = [A^{*}, B^{*}, C^{*}, D^{*}, E^{*}, F^{*}]^T\) 的求取则需要借助其切线方程来获取。若给定一组切线方程 \(l_i\) 则可通过最小二乘法对参数进行估计。
2、对偶椭圆检测公式推导
在图像的某个椭圆边界像素 \(p=(u_i,v_i)\) 处的梯度为 \(\nabla{G_i} = [G_{ui},G_{vi}]^T \neq 0\),此时梯度方向垂直于轮廓,即该方向为法线方向,那么该位置对应的切线为:
由此,通过获得椭圆轮廓边缘周围像素的梯度信息,即可获得确定椭圆参数所需的切线集合。
对获取到的某个椭圆区域内所有梯度非零位置的像素计算得到一系列切线方程系数\(l_i\),若将对偶二次曲线 \(Q^{*}\) 的参数向量设置为 \(\theta = [A^{*}, B^{*}, C^{*}, D^{*}, E^{*}, F^{*}]^T\),则通过最小化 \(J(\theta)\) 可以估算出 \(Q^{*}\) 的参数:
其中,\(W\) 为所有切线的总数量。 \(\omega_i\) 是每条切线所在像素点处的梯度强度,即 \(\omega_i = \Vert \nabla{G_i} \Vert\) , 一般对于梯度强度大的位置,其对参数估计的贡献也就越大。
将所有切线代入上式后,转换成 \(Ax=B\) 形式,通过最小二乘法推导即可求得 \(Q^{*}\) 的参数。
将 \(Q^{*}\) 求逆后,即可得到椭圆方程参数 \(Q\) 中的各系数。于是可得椭圆圆心坐标\((x_0,y_0)\) :
参考文献
-
王若瑾,张旭,张学昌.基于对偶二次曲线的快速椭圆检测[J].计算机时代,2023,(07):6-10.DOI:10.16644/j.cnki.cn33-1094/tp.2023.07.002.
-
李兆鹏.基于圆模式平面标靶的相机标定方法研究[D].江南大学,2022.DOI:10.27169/d.cnki.gwqgu.2022.000877.