DSP

论文阅读——椭圆检测 2017:Effective ellipse detection method

2019-07-13 15:58发布

这篇论文全名叫Effective ellipse detection method in limited-performance embedded system for aerospace application,一种适用于航天应用的高性能嵌入式椭圆检测方法。这篇论文发表在Advances in Mechanical Engineering 是4区的SCI。这篇论文主要是将椭圆检测应用于航天,针对航天问题专门做的椭圆检测,下面对其进行进一步分析。 这次阅读,主要是分析其与传统方法不一样的地方,即分析这篇论文针对航天部分主要改进了那些地方,其他常见的方法不具体细说,查阅之前论文即可读明白 航天问题主要难点是:受限的计算性能和内存资源,这篇论文在保证精度和速度的前提下解决这个问题。 论文使用了FPGA A3PE1500-FG676 Actel和DSP TMS320C6672 TI结合着实现了这个算法,这个算法与之前一样,是基于边缘连接的方法。

文章目录

1 边缘轮廓的提取

这部分主要是检测边缘,提取边缘线。与传统方法不同的是,这里用了加速边缘提取的方法,如果嵌入式需要加速,直接阅读其论文即可,这里仅仅是加速,因此不细致分析了(有需要应用嵌入式加速的话在评论区告诉我,我会给补上,方法不是很难)。 在复现时候,建议使用matlab里的canny进行边缘提取,有两点好处,第一,噪声少,第二,sobel梯度平滑,不会有太多的噪声。 提取的边缘满足两个性质:
  • 边缘段个数大于阈值Th1Th_1
  • 弧段中点到其首尾连成的直线的距离应该大于阈值Th2Th_2,防止其为直线。

2 弧段分割与组合

分割部分

这部分与传统方法不同的是,这里没有利用多边形逼近算法来近似其曲率信息,其使用sobel角度变换程度来判断分割点。 e3=(p1,p2,..,pn)e^3 = (p_1,p_2,..,p_n)为提取出的一条边缘点,θ=(θ1,θ2,...,θn) heta = ( heta_1, heta_2,..., heta_n)为期对应的sobel梯度。G=(g1,g2,..,gn)G=(g_1,g_2,..,g_n)为对应的梯度变化率,其计算方式为gi=θi+1θig_i = heta_{i+1}- heta_{i}值得注意的是,在这里计算gig_i没有完全写清楚,在相减之后,一定要将梯度再进行角度处理,防止出现大于180°的角度变量量。 每个弧段的极大值S=(s1,s2,...,sn1)S=(s_1,s_2,...,s_{n-1})计算方式如下所示:
si={1(gi>gi1 and gi>gi+1) and gigi1>Th30otherwises_i = left{egin{array}{ll}1 & (g_i>g_{i-1} ~and ~g_i>g_{i+1}) ~and~|g_i-g_{i-1}|>Th_3\ 0 & otherwise end{array} ight.

组合部分

分割出来的弧段仍然需要满足上述提取边缘时候给出的两个准则,即个数大于阈值Th1Th_1,中点到起始点对应的直线的距离小于Th2Th_2。两个弧段是否可以组合需要需要满足三个条件,这些条件将会在下一节进行说明(我怎么感觉这个论文的结构有问题,(/ω\))。

3 椭圆提取

任意两个弧段组合需要满足三个条件。 条件1: 条件1的说明可以具体看下面这张图,针对于航天目标来说,很少出现同一个椭圆其梯度差异很大的情况,因此作者认为两个弧段的组合其梯度应具有相似性。这也是与常规方法不同的地方。 对于一个弧段ei4e^4_i,设其首尾点,弧段中点为p1,pn,pn/2p_1,p_n,p_{n/2}。从p1,pnp_1,p_n中点到pn/2p_{n/2}构成向量vv,同时在点pn/2p_{n/2}处的梯度为θn/2 heta_{n/2},那么这个弧段按照如下公式进行标记。 Dei4={if 3π2>θvθn/2>π2+otherwiseD_{e^4_i}=left{egin{array}{ll} - & if ~ dfrac{3pi}{2}>| heta_{v}- heta_{n/2}|>dfrac{pi}{2}\ + & otherwise end{array} ight. 如果两个边缘弧段li4,lj4l^4_i,l^4_j可以组合,那么其应满足Dli4Dlj4>0D_{l^4_i}D_{l^4_j}>0,否则不能组合。
在这里插入图片描述 条件2: 这个条件主要是判断两个弧段的位置关系,对于弧段eie_i,根据其首尾点可以计算出一条直线li:f(x)=ax+by+c=0,a0l_i:f(x) = ax+by+c = 0,ageqslant 0。 先计算弧段ii的凹凸性,根据弧段ii的中点pn/2p_{n/2}