精华内容
下载资源
问答
  • 椭圆检测算法

    2017-12-03 17:25:15
    对含有多种几何图形的图片进行边缘检测,并标记出椭圆
  • 椭圆检测算法整理

    万次阅读 2018-04-23 23:36:31
    一、常见的椭圆检测算法思路及代码 1)OpenCV中的椭圆检测算法 博客1:opencv轮廓检测之椭圆检测:代码 2)基于霍夫变换的椭圆检测算法 博客1: Hough变换检测椭圆 附带matlab与opencv代码 3)基于随机...

    一、常见的椭圆检测算法思路及代码

    1)OpenCV中的椭圆检测算法

    博客1:opencv轮廓检测之椭圆检测:代码

    2)基于霍夫变换的椭圆检测算法

    博客1: Hough变换检测椭圆 附带matlab与opencv代码

    3)基于随机霍夫变换的椭圆检测算法

    论文1: 一种基于随机Hough变换的椭圆检测算法研究

    二、高效实用椭圆检测算法

    1)快速椭圆检测算法
    参考论文1:A fast and effective ellipse detector for embedded vision applications
    代码链接1:fast_ellipse_detector

    展开全文
  • 讨论了几种基于Hough变换及其改进方法的椭圆检测算法(包括利用椭圆极点与极弦性质的提取算法、利用三点确定椭圆的提取算法、利用椭圆几何对称性算法等)。比较这些算法并选取几种分别应用于真实图像,并列出检测...
  • 为实现序列图像中的动态...结合随机抽样一致理论和最小二乘拟合法设计了鲁棒性的椭圆检测算法,实现了序列图像中椭圆目标的快速、鲁棒检测。仿真结果及物理实验表明,本文算法能快速稳定的检测出序列图像中的椭圆目标。
  • 为了提高数字图像中椭圆检测的效率和准确性,提出了一个基于最小二乘法的改进的随机椭圆检测算法.该算法随机选取图像中的3个边缘点,在以这3个点为中心的窗口内,从边缘点中拟合出可能椭圆,并通过随机选取的第4个...
  • 结合纤维增强复合材料截面图中椭圆为实心,并且椭圆之间没有交又和嵌套的性质,提出了一种基于顺序扫描的椭圆检测算法。该算法首先找出椭圆的中心,然后采用一个快速确定短半轴端点的方法,计算出短半轴的长度和斜率,...
  • 椭圆检测算法(包括利用椭圆极点与极弦性质的提取算法、 利用三点确定椭圆的提取算法、 利用椭 圆几何对称性算法等) .比较这些算法并选取几种分别应用于真实图像 ,并列出检测结果.最后 ,提 出存在的问题和进一步研究...
  •   ...本文是2018年《Pattern Recognition》期刊(2区SCI)上的一篇文章,是最新的椭圆检测,论文题目为《Accurate detection of ellipses with false detection

            本文是2018年《Pattern Recognition》期刊(2区SCI)上的一篇文章,是最新的椭圆检测,论文题目为《Accurate detection of ellipses with false detection control at video rates using a gradient analysis》,从标题来看,梯度分析是常用的,其中比较吸引我的地方是false detection control,在阅读的时候我会详细进行分析。Prasad文章对我在初期研究椭圆检测时提供了巨大的帮助。

    〇 摘要部分

             视频序列下的椭圆检测是一个开放的挑战。作者提供的额方法采用弧段选择、智能组合、梯度信息的重复利用过来显著的在不影响检测性能的前提下减少计算复杂度。因此使用了较少计算量的几何性质,比如圆弧平滑度、曲线的相对位置和椭圆中心的置信区域。作者进行了参数敏感度分析,仿真数据集分析,实际数据集测试,效果良好1

    一 介绍部分

            椭圆检测应用:工业检验、医学诊断、交通标志识别、安全性、人脸识别、机器人平台的目标跟踪。

            椭圆检测有三种问题需要解决:遮挡椭圆、不完全椭圆、重叠椭圆。提高精度就会浪费大量时间,提高时间往往导致精度下降,本文在精度和时间上均有提升。

    1.1 相关工作2

    • 基于霍夫变换(HT) HT和其他几何方法组合的混合方法可以克服HT方法的缺点。例如,Cakir等人基于特征模型的HT变换提高了检测精度。Chen等人使得HT和边缘分割检测的优点结合在一起,使其可以在工业场景上得以实现。

    • 基于边缘连接的(论文中说是边缘分割检测方法,方法上是一样的) Mei等人根据椭圆的曲率和凸性条件,采用直线段去逼近潜在的椭圆弧段。Bai等人使用椭圆的凸性去组合弧段来识别候选椭圆。Liu等人提出了一种分层的方法,基于一个事实:椭圆的任何部分都可以通过几何约束在椭圆重建中识别自身。作者认为,边缘分割的检测方法是检测图像中多个椭圆的最有效的方法,比HT的方法需要更少的计算成本,这种方法处理包含复杂背景,遮挡的图像时,检测精度下降。

            还有很多文章提出了代数函数和几何特征用于椭圆弧段的选择来提升椭圆检测精度。比如,弧段的对称性用于分解参数空间,减少聚类参数。距离度量用于实现一组弧段的配准。Mulleti等人依赖finite-rate-of-innovation signals的采样结构来从部分数据估计椭圆的参数。Chang Liu等人使用给定的相机内参矩阵拟合一个旋转曲面的横截面的椭圆投影。Jia等人使用一个投影不变算子来显著检出不希望候选并挑选椭圆。

    1.2 提出的方法

    • 弧段提取与分类。目的是提取出椭圆弧段,抛除无用信息。

    • 椭圆检测。 每个像素的梯度信息用于将椭圆候选弧段分类到4个象限3。然后利用一个事实,同一个椭圆的弧段具有相同的椭圆中心。作者定义了两个几何约束,来识别可能属于同一个椭圆的弧段几何。我们使用mean-shift来找到这样一组弧段的中心,并在分解的参数空间中获得其他参数4。基于投票或者累计的方法会在噪声的情况下有损失,所以mean-shift方法可以缓解这个问题。

    • 椭圆验证。椭圆验证的目的是为了剔除虚假椭圆。作者提出了一个几何的控制策略。

    1.3 方法的创新性

            作者的算法在上述的几个步骤都有自己独特的创新点,对提升结果起到了良好的作用。而且提出算法的新颖特征是以最少的计算来实现当前任务,有效的提升了检测速度。关于作者给出的创新性,我将完全的翻译出来放在下面。

    • 1 本文提出了一种结合弧段提取与弧段组合的椭圆检测方法。弧段检测设计重要的弧段分割步骤,我们在2,3中给出的创新点有助于在低的计算消耗上进行精确的弧段检测。使用几何约束进行弧段分组,在4,5点中有更多的讨论,保证椭圆检测的有效性并优化计算损耗。

    • 2 在平滑弧段检测(smooth arc detection)的步骤中,作者提出了一种新的方法来识别精确的分裂点(突然变化的部分),来更好的从曲线中分割出平滑的可能属于椭圆的弧段。首先在大范围进行粗略的突变搜索,然后用更细的范围确定这些点。

    • 3 作者仅仅使用一个不等式与角度向量来确认分裂点,相比于其他方法所使用的不等式。这提供了计算速度快的优点5

    • 4 包围盒包围一个弧所形成的向量方向用于精确的确定一个弧的凹凸性,在后面可以进行弧段分类。这加快的弧段组合的效率。

    • 5 我们使用包围一个弧段的包围盒周长的一半和半轴长度的比率还衡量椭圆的完整性,来提高检测精度,这比其他更复杂的测量椭圆完整性的方法要快得多。

    • 6 提出了一种基于由一个数学模型表达的椭圆的内在几何属性的错误检测控制的方法来决定检测结果,这种方法有效的避免了错误检测。

    二 弧段的分割与分类

    在这里我先列出文章出现的参数,免得后期阅读麻烦。

    符号 描述
    OBBmin 最小区域包围盒,是一个包围盒,数据类型是RotateRect(openCV)
    threr 包围盒OBBmin长边与短边的比值阈值
    threa 包围盒OBBmin的面积阈值
    threθ 曲率阈值,用于识别turning corner
    threp 距离约束阈值
    threcenter 椭圆几何中心确定阈值

    2.1 预处理阶段

            使用自适应Canny边缘检测来得到边缘图。每个边缘点的表达形式为:pi=(xi,yi,ηi),其中xi,yi就是边缘点坐标,ηi为每个边缘点对应的梯度方向。

            随后,为了获得没有分支的边缘线,曲线按照边缘方向被分为两类。由于图像的离散性,无法计算出像素处曲线的精确梯度方向。但是,作者感兴趣的是梯度的大致方向而非精确方向,因此使用一个正负性来表示方向。在论文中,如果方向落在1,3象限则认为是正方向,在2,4象限则为负方向。对于那些垂直或水平的方向的像素点,就直接抛弃。

            在同一方向上的两个连续边缘点的8连通性用于提取连通边缘曲线。对于那些短边缘线,直接剔除。然后计算出曲线的包围盒OBBmin,如果包围盒长边与短边的比值大于设定阈值threr,则认为这个曲线近似为直线段或其直径非常大,表明这个椭圆的中心点不在图像中。如果这个包围盒的面积小于阈值threa,说明这个直线段非常小,不足以提供有效的信息。这些情况的曲线会被抛弃。剩下的这些曲线会被认为是可能构成椭圆的曲线候选。

            这个小节的目的就是提取出候选曲线,这些曲线可能是椭圆的一部分。

    2.2 弧段提取

            椭圆的边缘段是平滑且连续的,这是常识。在这个论文中,曲率的变化量和曲率的方向变化被称为转角和拐点。

            首先使用一系列直线段对曲线进行逼近,目的就是方便估计曲线的曲率信息。作者提出了一种弧段分割算法。一个弧段用直线段逼近后,得到一组直线段l1,l2,...,lnθi表示li1,li之间的夹角,也就是直线段方向的变化角度。如果θi很小,表示这个点的曲率很小。如果θi很大,则说明点pi附近曲率变化大,被认为是一个turning corner。如果|θi|>threθ,则pi是一个turning corner。

            椭圆的弧段变化方向应该具有相同的符号,如果符号不同,则这里存在拐点,作者使用||θi||θi1||<|θiθi1|来识别拐点,其实这个公式就是三角不等式,如果这个式子两边相等,则说明是同一个方向,否则就说明方向不同,存在拐点。

            下图A表示的就是角度变化过大的点,图B表示是方向不同的拐点,在这两个点都将会将一个曲线分割为两个平滑曲线。

    拐角与拐点

            在进行弧段分割时候,会有一些突变点导致弧段一分为二,并且产生小的弧段,论文的处理方式没看明白,给出的算法流程,个别符号有点混淆,我等源码下来之后更新这个突变点的处理问题。

    2.3 基于凹凸性的弧段分类

            前面,作者根据梯度方向将弧段分为正负两个方向,在这里又根据弧段的凹凸性得到新的两个方向。然后将每个平滑弧段分类到4个象限中。分类方法很简单,这里不列公式说明。

            下图表示的是分类流程,原图检测到边缘之后,根据方向和弧段提取得到一组平滑曲线(图C),然后根据曲线的凹凸性,再次进行分类得到图(D)

    弧段分类

    三 椭圆检测

            我们从分布在4个象限的弧中选择两个弧段τab=(aa,ab)作为一个象限约束弧段集合,这个集合表示弧段有可能来自同一个椭圆。下标表示来自不同的象限,因此有六种不同的弧段组合,(aI,aII),(aI,aIII),(aI,aIV),(aII,aIII),(aII,aIV),(aIII,aIV)。进一步只保留满足相对位置约束的集合,并计算可能构成这些弧段的椭圆中心作为它们的边缘。然后我们基于弧段集合的中心的接近度创建这些弧段的超集。这是基于两个圆弧所估计的两个中心位于可接受范围的区域的情况下,这样的弧集极有可能属于同一椭圆。

    象限描述

    3.1 构成一个椭圆的弧段选择

            作者提供了一个函数Ω来表述两个弧段的相关距离约束来丢弃不满足同一个椭圆的弧段。

    Ω(aa,ab)={aIl(x)aIIr(x)if(aa,ab)(I,II)min(aIr(y)aIIIl(y),aIr(x)aIIIl(x))if(aa,ab)(I,III)aIr(y)aIVl(y)if(aa,ab)(I,IV)aIIl(y)aIIIl(y)if(aa,ab)(II,III)min(aIIl(y)aIVr(y),aIVl(x)aIIr(x))if(aa,ab)(II,IV)aIVl(x)aIIIr(x)if(aa,ab)(III,IV)

            其中,ail(x),air(x),ail(y),air(y)是沿着xy轴的最左端和最右端的坐标。对这个公式的解释可以参考上图,aIl一定在aIIr的右边,即aIl(x)aIIr(x)一定大于0,其他同理。这个公式就是用来约束距离(这个公式原理上没有问题,但是似乎有的地方打错了,论文的解释是没有问题的。这个主要就是约束谁在左边,谁在上面的问题,等代码要到了我再细研究)。

            如果Ω(aa,ab)小于阈值threp=1,这个集合不可能构成一个椭圆,丢弃这个集合。参数threp=1这个就是理论值,没有必要进行讨论,所以我觉得这个不算是参数。

    3.2 椭圆中心的确认

            这个小节使用了大量的椭圆的几何性质。

    • 图A表示相对于椭圆中心对称的两个点的的梯度方向是共线或者反向共线的。

    • 图B阐述了一个定理:在一对弧段上,通过两组不同的平行弦的中点的两条直线的交点是椭圆的中心点。但是这个方法对于小椭圆是无效的,因为小的椭圆对应的两组平行弦之间的距离较小,导致检测出的中心点误差较高。

    • 图C是另一种利用几何性质得到椭圆中心点的方法。椭圆的中心点经过连接弦的中点和通过弧的末端由切线形成的交点的直线,那么两个弧段就会构成两个直线,其交点就是椭圆中心点。但是这个方法依赖于末端的梯度方向,梯度的误差直接影响检测的误差6

    椭圆中心的确认

            作者提出了一个新的计算椭圆中心点的方法,这个方法不需要考虑椭圆的尺寸或精确的切线信息。不考虑椭圆尺寸是图C所示的优点,不需要精确的切线信息,不代表不适用,使用大量的直线就可以起到修正的作用,进而提高精度。

            下图就是作者使用的思想。以弧段aa为例,将一个弧段从中点分为两段得到三个点P1,P12,P2,然后应用上述的思想得到直线l1,l2,进而得到一个中心点C12。同理得到C34,求解中心点的公式直接参考论文即可,这里不讲怎么推导的。如果C12C34之间的距离小于阈值threcenter,则其满足约束,否则不属于同一个椭圆。

    这里写图片描述

            到这,弧段的约束有三个:象限约束、关联距离约束和邻近中心约束。

            根据上述的方法可以确定4条直线l1,l2,l3,l4,任意两个直线的交点理论上都是一个椭圆中心点。但是,由于不可避免的失真,交叉点通常分布在一个小范围内的确切中心。为了得到一个更好的结果,我们使用了7个点,分别是6个交点与C12C34的中心点来估计椭圆中心点。理论上,误差越小,这7个点越密集,所以理论的中心点周围具有高密度的交点。传统方法是计算这7个点的中值作为其椭圆中心点,而作者则使用mean-shift 算法来找到高密度区域进而得到中心点坐标,进而提高了其对噪声的鲁棒性(mean-shift算法最近看见许多啊,但我不理解的是直接使用两个弧段上所有的点进行拟合会有很大误差吗?椭圆拟合算法还是很多的)。

    3.3 参数估计

            这个小节阐述的是估计椭圆参数,完全用的是椭圆的拟合性质,没有看到拟合的内容,因为这个是计算椭圆参数,具体内容就可以直接看论文了,有需要的话我会详细重新推导一遍,这里就不细说(我还是不理解为啥不用拟合的方法→_→,可能用这个方法会很快地估计出椭圆参数吧)。

    四 验证和聚类

    4.1 候选椭圆的验证

    用上面的方法得到椭圆仍然会存在一些虚假椭圆,验证方法能够进一步剔除错误椭圆。下面列出验证的两个要点。

    • 长度比值的确认。 我们采用包围圆弧的包围盒的周长的一半和半轴长度之和的比率来测量椭圆周长。假设一个椭圆候选有一个弧段对τ=(a1,a2)拟合得到,这两个弧段的包围盒尺寸为mi×ni,i=1,2,椭圆半长短轴为A,B,则长度比值的确认公式如下所示。这个值越大,说明越有效,如果K(τ)大于阈值threl则进入下一个验证条件。否则被认为是一个错误检测。这个条件的分数为s(K(τ))=K(τ)

    K(τ)=i=12(mi+ni)2(A+B)

    • 通过周长比确认 这个条件的核心就是找到一对弧段中,有多少个像素点可以被认为是拟合出的椭圆上的点(通过距离判断,这里有个阈值threφ),在椭圆上的点与弧段所有的点的比值作为这个条件的分数s(φ(τ))=φ(τ)

    4.2 椭圆聚类

            经过上述的验证,多个弧段几何可以被拟合为真椭圆,这些也有可能属于同一个椭圆。因此需要采用聚类的方法消除重复的椭圆。对于属于同一个椭圆的多弧段集合,最后采用分数最高的作为最终结果。

    五 用于错误检测控制的几何性质

            这个是一个比较新的点子,这节我会详细进行翻译分析。

            由于椭圆的固有属性可以用数学模型来表达,作者开发了一个几何反馈回路来显著的消除错误检测。这里我们用下面的几何约束来描述椭圆的几何性质:设弦Q1Q2的中点是QM,则斜率kQ1Q2kQMO的乘积等于B2A2,这个也就是中点弦公式(不禁想起了我7年前高考复习时常做的题目,233333,这个作者也萌萌哒的给出了证明步骤→_→)。

            验证是否满足这个性质作者叒提供了一个阈值threp(这里我的一个建议是,做论文不要整太多参数,算法敏感度很容易太高,而且调参做实验也麻烦,参数能自适应就自适应)。作者随机采了三对点,来验证结果,如果这些点满足这个集合约束,则接受检测,否则丢弃。

    六 实验

            实验数据集这个作者又给补充了一个数据集 Dataset HX,是工业上的数据,目前还没有拿到数据,有的话我会更新上的。关于验证准则,数据集这里不多说,直接看结果。

            作者进行了参数灵敏度分析,还有仿真数据集的测试,这个非常好,以后做论文时候也要多多补充这点。

            下表示作者在三个数据及上测试得到的结果,有显著的提升,表明其方法的有效性,其提出的几何性质可以做未来学习的参考。同时我也放上了新数据集的检测而结果,效果也是可以的。

    实验表格

    这里写图片描述

    七 个人总结

            我个人觉得这篇文章,是基于之前14年Fornaciari和16年的文章的进一步改进,整合了这两个文章的优点,所以一定会比之前的要好。这篇文章的另一个中点在于其从各个检测步骤上都进行了严密仔细的加速,这以后也是个趋势。同时作者提出的基于几何的多种性质与方法都可以作为未来研究的参考。论文中的中点弦这个问题,其实我16年也想到了,但是当时因为其他问题导致结果不好,这篇文章也算是了却我心中一个问题。

            总之,Prasad的椭圆检测系列的文章非常适合新手去阅读,是入门的好文章,我会时刻关注他们的动态,以后有新的东西我会不断更新的。



    1. 为了看算法的实际性能,我向原作者索要代码,作者回复说当他们处理完一些数据就会公开源码。所以等作者公开源码之后,我会补上这个链接的。.
    2. 这里的相关工作可以参考以前的椭圆检测文章,这里只是对之前工作的一个补充。
    3. 分类到4个象限问题是14年Fornaciari的思想,论文为A fast and effective ellipse detector for embedded vision applications
    4. 使用mean-shift是16年Bae-Keun Kwon的思想。这篇文章我已经在博客中进行了分析椭圆检测 2016 Fast ellipse detection based on three point algorithm with edge angle information
    5. 弧段分割很重要,在保持精度的前提下能够提升计算速度很重要,但是最影响速度的在弧段分组,不在弧段分割。后期研究中,不要摆错了重点。
    6. 图C所示的定理就是前面分析过的博客,16年的文章。
    展开全文
  • 提出一种新的基于RHT 的三点椭圆检测法, 利用随机采样到的 2 点(包括它们的边缘方向)和搜索获得的 1 个点 来确定椭圆参数. 这种方法不仅在确定参数时只需随机采样两点, 还通过搜索到的点来决定是否对当前点进行参数...
  •  Patraucean等人的椭圆检测算法(2012):算法名称叫ELSD,实际上是直线段和椭圆弧段检测算法,目的是检测出直线段和椭圆弧段,不能算是完整的椭圆检测算法,毕竟没有椭圆弧段合并过程。思想与Prasad的类似,只不过...

        今天阅读了一个2015年的一篇论文,关于椭圆检测的,向作者发送邮件索取代码和原始数据也没回我- -||。所以只阅读文章思想并从算法上分析其性能。下面开始对文章进行分析。

    〇 摘要部分

    现存的算法通常使用一个自下而上的策略(bottom-up strategy)将边缘点或者椭圆弧段组合为椭圆,因此限制了其鲁棒性。作者提出了一个快速准确的椭圆检测算法,算法的主要思想是利用一种新的自上而下的拟合策略(top-down fitting strategy)来将边缘点组合为椭圆,并使用积分链(integral chain)来加速拟合过程。

    阅读到这里,心里存了三个疑问,在后面的阅读中,带着这些疑问进行阅读:

    ① bottom-up strategy 是什么,是如何应用在椭圆检测中的;

    ② top-down fitting strategy 是什么,作者如何使用这个进行椭圆检测,它为什么比bottom-up strategy要好;

    ③ integral chain是什么,是如何进行加速拟合过程的,这个加速是有损加速还是无损加速。

    一 介绍

    (介绍部分我这里就不全部翻译了,只列出对写论文和了解其他算法有用的说明。)

        椭圆检测的应用:交通标志识别,汽车安全性的增强,广播体育视频的矫正(这里我理解为跟踪足球类运动),细胞检测与计数。

        下面是关于椭圆检测的发展:

        (1)基于霍夫变换(HT)的。标准HT算法最明显的问题就是因其5维参数,占用巨大的内存,为了克服这个问题,有两种可能的解决办法:

        一个可能的方法就是在投票过程中,使用边缘点的子集,不是使用全部边缘点。例如:随机霍夫变换(RHT),概率霍夫变换(PHT),模糊霍夫变换(FHT)均基于这个思想。

         另一个可能的方法就是将五维空间分解为具有较小维数的子空间来降低标准HT的时间和空间复杂度。例如:迭代随机霍夫变换(IRHT)使用五个1维加速器来替代原始5维的加速器。Chia等人在几何上计算4个参数,并使用一个1维加速器来计算最后一个参数。

        (2)基于启发式的。比如基于遗传算法(GA)和多群体遗传算法的(MPGA),这些算法可以得到比较好的结果,但是有找到次优解的可能。(个人认为,基于启发式的算法更像是将椭圆检测这个问题抽象出一个目标函数,使用这些工具进行自动求解。事实上,椭圆是一个具有多种几何性质的一个图形,如果想使用启发式的算法,可以结合深度学习考虑下。

        (3)基于边缘连接的。上述的两类算法耗时严重,无法达到实时性。现在比较热门的且达到实时性的算法是基于这样的框架:先根据边缘点的几何性质构造椭圆弧段或者区域,然后使用拟合算法得到椭圆参数。典型的有三个算法进行说明(论文对这三个算法的总结我认为有点一般,所以下面是加入了自己的理解):

         Prasad等人的椭圆检测算法(2012):Canny边缘检测 → 使用直线段去逼近边缘段 → 使用曲率和凸性分割出椭圆弧段 → 构造弧段的搜索区域来组合可能属于同一个椭圆的弧段 → 拟合椭圆获得最后的结果。

        Patraucean等人的椭圆检测算法(2012):算法名称叫ELSD,实际上是直线段和椭圆弧段检测算法,目的是检测出直线段和椭圆弧段,不能算是完整的椭圆检测算法,毕竟没有椭圆弧段合并过程。思想与Prasad的类似,只不过边缘检测实现的方式不一样,是基于Sobel+区域生长来获得的。然后根据几何性质分割出直线段和椭圆段,并使用NFA来剔除错误直线段和椭圆弧段(NFA我认为是个创新点)。

        Fornaciari等人的椭圆检测算法(2014):这个文章是将边缘分割为4类弧段,每类弧段在一个象限内,然后在不同象限内进行组合。细节部分可以看文章,我认为这个作者是发现了椭圆检测的核心问题,椭圆弧段的组合,所以他得到了很好的结果。椭圆检测的精度直接受到组合算法的影响,而拟合算法间接的影响检测时间。

        介绍完椭圆检测的基本发展,下面对这个论文的算法进行进一步分析。

    二 背景

        背景部分主要介绍椭圆的拟合方法和候选椭圆的选择。

        椭圆拟合是对下面这个公式进行拟合,在拟合之前对数据进行0均值处理,就是防止拟合时候4次方项对数据精度造成影响(一定要注意,很严重)。


        拟合之后采用下述的方法来判断是否是真实椭圆。pi是每个像素点的坐标,就是每个像素点带入拟合方程,如果拟合误差很大,这个像素被抛弃,最后统计有效像素点与全体像素点的比值,小于0.7则认为这个拟合出的椭圆是虚假椭圆,扔掉。


    三 提出的算法

         算法的流程图如下图所示,是属于基于边缘链接的方法。下面对每个过程进行分析。


    1 边缘段提取

        首先进行高斯模糊 → 计算自适应Canny阈值 → Canny边缘检测得到边缘图像。对于每个像素,如果其梯度大于计算出的高阈值,认为去是强边缘点(strong edge point),在高低阈值之间的叫做弱边缘点(weak edge point)。然后从边缘图中提取出一条条的边缘线,提取方法就是从强边缘点开始进行8邻域搜索,直到搜索不出可连接的点为止。然后重新选择一个强边缘点作为起点进行新的搜索。简而言之,边缘段提取就是提取出图像的边缘线。

    2 直线段提取

        简单来说,就是从边缘段的尾部开始,计算尾部到直线的这段边缘段是否能够构成直线,如果不能就从尾部的前一个点开始一样的判定。说白了,就是使用一系列直线段去逼近这个边缘段。

    3 使用top-down方案选择边缘段

        在这个小节,作者给出了bottom-up strategy的含义。

    Bottom-up strategy iteratively fits line segments or arcs into ellipses from shorter ones to longer ones. 

        以直线段逼近为例,bottom-up是从第2个像素开始,如果其是直线,那么再从第三个点开始,直到其不满足直线条件,作者top-down就是完全反过来的过程。同理在这个小节中,在获得一组直线段之后,作者想从这里获得椭圆,思想很简单,以下图为例,先拟合直线段1~9,看其是否能够构成一个椭圆,如果不能,那么就从其中的一个子集进行拟合,直到有满足条件的椭圆拟合出来。拟合成功之后,剔除参与拟合的直线段。再对剩下的进行相同的操作。


    -----------------------

    到这里,前面的两个问题已经能够理解了,在进行直线段选择时候,如果选择bottom-up的思想,很容易提前终止,即椭圆的一部分参与拟合,过早结束。但我觉得无论是bottom-up还是top-down,都具有其特色,记住其思想,针对具体问题具体分析。

    bottom-up 从小不断扩充到大,直到扩充的点不满足约束。

    top-down 从大不断得到到小,直到选择的子集满足约束。

    ------------------------

    4 使用积分链加速

        上述说的top-down方法非常耗时,这里使用积分图像技术中的1维情况(被称为integral chain)进行加速提出的椭圆检测算法。这个我觉得不是什么重点,算是个小创新。

        椭圆拟合时候涉及到大量重复计算,这个是针对其算法做的一个优化计算的方法。算是一种无损加速,这里不细分析了。

    5 椭圆聚类

        一个完整的椭圆收到噪声影响会被分割成多个弧段,一个椭圆可能会产生两个候选椭圆。组合方式也很简单,计算每个椭圆的参与拟合的直线段对应的张角,然后进行排序,选择一个椭圆,然后在从剩下的中找到可能组合的椭圆,然后两个在一起拟合一次,如果拟合结果更好,则合并这两个椭圆。重复以上过程,最终得到一系列椭圆。


    6 椭圆验证

        椭圆验证就是基于ELSD中的NFA剔除错误结果的思想的进一步改进。关于改进NFA思想是否有效的问题,我需要进一部分分析,从作者的改进说明上来看,其动机不是很明显。有机会我自己实现下分析其创新性。


        经过以上6步,算法最终会产生一组椭圆。这就是算法的全部。

    四 实验部分

        作者采用的是Fornaciari和ELSD的算法进行对比(这两个对比算法作者已经提供了源代码,这个作者就不提供,我好气啊)。验证准则很好理解,阅读论文自然就能明白,这里不细说。椭圆的数据集都是公开的,3个数据集一个是Prasad的,一个是随机图像数据集,一个是手机拍出的序列图像数据集。都有ground-truth标记。下图是作者的结果。


    下图是作者在这三个数据集整体的结果,有一定的进步。


        作者的创新点看似比较简单,我觉得其内部应该有很多细节没有注意到,有时间的话,我自己复现下作者的代码,验证下之前自己的想法。而且在阅读椭圆检测论文时候,同一个代码,同一个数据集,跑出的F-measure值都不一样,很奇怪,在后续研究中我得把这个问题想明白了。

        这篇文章没有源码,不明白的地方或者有独特见解的欢迎讨论。






    British Machine Vision Conference
    展开全文
  • 图像处理-椭圆检测

    千次阅读 2019-05-16 10:11:18
    边界聚类椭圆检测算法经典椭圆检测方法投票(聚类)方法随机hough变换椭圆检测算法最优化方法基于弧段的方法边界聚类算法流程预处理边界像素连接线段列提取线段列旋转方向统一凹点和角点检测圆弧聚类再配对直接最小...

    经典椭圆检测方法

    椭圆检测算法经过多年的研究发展,已经基本形成一个较完整的体系。它们大致可以分为三类即投票(聚类)、最优化、基于弧段的方法。

    投票(聚类)方法

    椭圆因为有中心位置坐标、长短轴长度、倾斜角五个参数,标准霍夫变换有较强的鲁棒性,但对内存要求高,运算效率低,不太现实。霍夫变换类算法以霍夫变换为算法基础,经过不同国家研究人员多年的不懈努力研究,如今已衍生出很多改进算法,它们各有优劣。随机霍夫变换算法相对标准霍夫变换计算速度有较大提升,但检测相互遮挡的椭圆时准确度低。

    随机hough变换椭圆检测算法

    随机椭圆检测结合使用了了最小二乘法和Hough变换算法。第一步预处理,获得较理想的边缘图。第二步随机选取三个点,取这三点为中心相同大小的邻域中所有点,用最小二乘法把它们拟合成一个椭圆。如图2-3所示。第三步从边缘点中再随机选取第四个点,判断此点是否在拟合出的圆上。若是,则认为该椭圆是真实椭圆的可能性较大,接着收集证据,验证该椭圆的真实性。

    图2-3 随机选点示意图
    算法具体过程如下(从第二步开始):
    1.把边缘检测得到的点收进集合V中,失败计数器f初始值设为0。设定5个阈值,分别是能容忍的失败次数最大值Tf,检测进行时对V中边缘点数量的要求阈值Tem,随机选取的三点之间两两距离最小值Ta,随机选取的第四点到可能椭圆边界距离的最大值Td,以及椭圆残缺比率阈值Tr。
    2.np表示集合V中剩余的点的数量,当np小于Tem时或当失败次数f大于Tf时停止检测,算法终止;否则从V中随机取四点,并从V中删除这四点。
    3.若用来求解椭圆参数的三个点两两之间距离都大于Ta,拟合出椭圆,计算第四个点到该椭圆边界的距离,若距离小于Td,执行第4步;若不满足两者之一,将这四个点返回到V中,失败次数加一,回到第2步执行。
    4.设E为第3步拟合出来的椭圆,初始化满足阈值Td的点的个数num。遍历V中点,计算并判断它们到椭圆E的边界的距离是否小于Td,若是则num=num+1,并将该点从V中除去,直到遍历完成。
    5.若num>=Tr*K,其中K为椭圆E的周长,那么跳转到第6步;否则认为椭圆E不是真实的椭圆,将第4步和第2步中删除的num+4个点返回V中,并跳转到第2步。
    6.认为椭圆E是一个真实存在的椭圆,f置0,并跳转到第2步。
    随机hough变换的优缺点如下:
    第一,由于该算法是基于最小二乘法,所以一方面检测结果往往比真实椭圆小而且对噪声敏感,但是另一方面当预处理效果较好时检测精度很高。
    第二,由于该算法基于随机采样,所以一方面可能会有所选点距离较近的情况造成拟合出的椭圆偏差较大,但是另一方面因为随机采样的灵活性检测速度提升了。
    第三,一方面当参数选取的较好时检测又快有准确;另一方面,由于该算法严格由参数Ta,Td,Tr控制而且这些参数不易取到合适值,所以会出现不合适的参数不仅增加计算量,而且增加误检机会的情况。

    最优化方法

    最优化类方法优点在其精度上,缺点是其一次只能处理一个图形,即此前要对图像信息进行分类分离。AndrewFitzgibb等人提出了直接最小二乘法椭圆拟合算法。该方法能保证拟合出来的一定是椭圆。但该方法受到孤立点和噪声点的影响。目前最优化算法多与其他算法一起结合使用。

    基于弧段的方法

    基于边界聚类的椭圆检测方法结合使用了基于弧段的方法和最小二乘法。从边界图提取圆弧,再经过过滤、聚类,最终用最小二乘法拟合出椭圆。该方法能有效应对多个椭圆、椭圆相互遮挡和椭圆部分缺损等复杂情况,因而引起了广泛的注意。

    边界聚类算法流程

    边界聚类算法属于从下往上结构的算法。算法步骤主要分为三步,分别是预处理,边界聚类和直接最小二乘法拟合椭圆三个过程。流程图如下所示:
    在这里插入图片描述

    预处理

    预处理第一步是进行灰度变换。灰度化常用的方法也就是依据亮度方程来实现的,即依据人眼对不同颜色的敏感度不同,对RGB分量以不同系数的加权平均。
    在这里插入图片描述
    第二是降噪。去噪手段对应于噪声的两种分类主要有两种。噪声功率谱符合高斯函数时用可以用高斯平滑模板平滑。由于脉冲干扰等产生的噪声(即椒盐噪声)可以采用中值滤波去除。
    第三步是边界检测。通常图像中边界点都是图像中亮度梯度比较大的点,这些点包含了我们检测要用到的图像特征信息。边界检测最常用的方法是Canny算法。该算法主要分四个部分。一、降噪。方法是让原始图像和所用的高斯模板作卷积,模板在使用前指定了标准差。 二、寻找亮度梯度。Canny算法使用4个模板检测边缘的方向,,它们分别是水平、垂直、主对角线和副对角线方向;遍历圆图上的每个像素点,让原始图像中以该点为中心以该模板为窗口内的所有点与该模板作卷积,我们就从原图获得了各个点亮度梯度图和亮度梯度的方向。三、非极大值抑制。该过程目的是获得单像素的候选边缘,主要操作是将非零像素点所在的区域进行细化。具体过程如下:对于图3-2中一点P(x,y),计算P点梯度方向与其8-连通邻域点所组成的正方形的交点 (x1,y1)和(x2,y2)。如图2-5,交点坐标通过插值法得到。如果中间点的值大于这两个交点值,那么P点值不变,如若不然置零。四、滞后阈值操作。它需要设置两个阈值t1与t2。t1等于边界像素数除以总像素数,这些点称之为强边缘像素。t2等于t1除以2, t2和 t1之间的点称之为弱边缘像素。最后通过将8-连通的弱像素集成到强像素,再把它们连接起来,得到边界图。
    在这里插入图片描述
    第四步是二值化。二值化的效果几乎完全取决于分割阈值的选取。所以自动寻找最佳分割阈值的方法就显得十分关键。找到图片二值化的一个合适的分割阈值的一种方法是按图像的灰度特性,将图像分成背景和目标两部分,背景和目标之间的类间方差最大的分割意味着错分概率最小。MATLAB 的Graythresh函数就是使用该方法来获得一个自适应阈值作为二值化的分割依据。
    第五步,二值化后,因为椭圆弧附近的非相关像素会严重影响检测结果,因此为了大幅度减少非相关像素,本文用形态学的腐蚀操作来得到细化的边界。

    边界像素连接

    采用Kovesi的边界连接算法,以8-邻域连通准则从上至下,从左至右扫描二值图像,将边界像素连接为有向边界列。然后采用边界列中像素数阈值条件去除像素数较小的集合。因为若边界列像素数少于阈值数,则很有可能是噪声或背景,应当删除。具体步骤如下:
    1.以8-邻域连通准则从上至下,从左至右扫描二值图像,按连通区域对图像中的像素点聚类。
    2.寻找每一个连通域中边界像素中所有的结束点和分叉点(分叉点是三条以上曲线的交点)并存储。
    3.以这些结束点和分叉点为结束标志,让每一个连通域中的像素点集合分割为遇到结束点和连接点就断开的小集合。
    4.删除这些集合中像素数小于某一阈值的部分。

    线段列提取

    因为图像光栅化难以获得准确的切线,而后续过程需要用到圆弧的切线,所以要进行线段拟合,即用多段折线代替原来的圆弧。具体步骤如下:
    1.取边界像素连接成的第i条有向边界列,判断是否超过边界列总数目total,若不是进行步骤2,若是终止算法。
    2.判断该边界列是否已经完成处理,若为否则进行第3步;若是则i=i+1,重新进行步骤2.
    3.从其中第三个点开始,计算第一个点到这个点(记为点j)的连线方程,并依次判断第一个点和该点之间的所有点到该连线的距离,若所有距离均小于某一阈值,则j=j+1,重新进行步骤3,否则该有向边界列从该处断开,前面部分只保留第一个点和第j个点,前面j个点构成的连线用第一点和第j点之间的直线连线代替;后面部分仍然记为边界列i,
    4.判断步骤3中断开的有向边界列后面部分像素数是否小于某阈值,若是则删除掉,否则不处理。最后跳转到步骤1。
    完成这一个过程后一个连通域的的像素点构成的曲线就变成了其中部分像素点构成的一条折线。经过这个过程虽然像素信息损失了一部分,但是求取圆弧切线的精度从某种意义上说提高了,因为没有了光栅化效应。而且数据少了处理变得简单。再采用线段数阈值条件去除较短的线段列。若线段数数少于阈值数,则很有可能是噪声或背景或者进行拟合时误差过大,因此须删除。

    线段列旋转方向统一

    本文将所有线段列旋转方向统一为逆时针方向。
    假设图3-4中的黑点为线段列中的点,箭头代表线段列的方向,P1(x1,y1),P2(x2,y2),P3(x3,y3)为线段列中连续的三个像素,像素都引入z坐标,且令其为0,则P1(x1,y1,0),P2(x2,y2,0),P3(x3,y3,0),空间向量
    P1P2=(x2-x1,y2-y1,0)         (3-2)P2P3=(x3-x2,y3-y2,0)         (3-3)
    向量积
    P1P2×P2P3=|■(i ⃗&j ⃗&k ⃗@x2-x1&y2-y1&0@x3-x2&y3-y2 &0)|=(0,0,(x2-x1)(y3-y2)-(x3-x2)(y2-y1))         (3-4)
    对一个线段列中除去首尾两个点的所有点像P2点一样计算并判别和存储,若小于0的次数最多,则认为线段列的旋转方向是顺时针,将线段列中的点逆序处理;若大于0的次数最多,则认为线段列的旋转方向是逆时针。
    在这里插入图片描述

    凹点和角点检测

    在确定线段列的旋转方向为逆时针方向后,检测凹点和角点方法同前面统一线段列旋转方向类似,对一个线段列中除去首尾两个点的所有点计算P1P2×P2P3并判断向量积第三个分量的大小,若小于0,则P2为凹点。因为边界波动可能引入冗余凹点也即因边界检测误差可能错判一些正常点为凹点而进修分割会导致检测率下降,所以增加一个角度判断过程,即前面向量积为0并且P1P2和P2P3的夹角大于某阈值,才为凹点,这样选择合适的阈值可保证凹点检测的准确性。若向量积大于0且P1P2和P2P3的夹角大于另一阈值,则认为该点角度变化过大,是角点,线段列有很大可能性不是椭圆弧,而有可能是三角形、矩形等图形的边角,因此从该点分割该线段列。分割完成后,过滤掉含点数较少的线段列,即可除掉部分非椭圆弧。留下的线段列认为是椭圆弧,参加后续的聚类。如图3-5所示,左上角的P2很可能是凹点,右下角的P2很可能是角点。
    在这里插入图片描述

    圆弧聚类

    圆弧聚类是将属于同一椭圆但是分开的两条或多条椭圆弧进行聚类。在进行聚类前,首先要判断弧段的完整度。一般用弧段的首尾端点P1,P3与中点P2构成的两向量P2P1,P2P3的夹角的大小来进行判断。夹角越小,一般该椭圆弧越完整,夹角越大,一般认为椭圆弧缺损越严重。设定一个阈值,当夹角小于该阈值时认为该弧段已经足够完整,仅仅靠该弧段上的点就可以较准确地拟合出真实存在的椭圆,因此该弧段不需要参与后面的聚类过程。如果希望该阈值自适应,在划分待聚类椭圆弧和不须聚类的弧(较完整弧)之前,先要确定该阈值。用直接最小二乘法拟合该弧所在的椭圆,若较圆,为了减小的误差,应使阈值夹角稍微大一些,如90度;若该弧所在的椭圆较扁,应使阈值夹角稍微小一些,如60度。接下来才根据该自适应阈值进行对圆弧判断。当大于阈值时认为该弧段上的点过少,不足以拟合出准确的椭圆,需要找到和该弧段属于同一椭圆的弧段然后用它们所有的点一起拟合出一个椭圆。经过此判断过程,椭圆弧就被分成两组。把需要参加聚类的椭圆弧按照含点数的数目由多到少进行排列,下面的过程都按照数目多的弧段优先的顺序进行。
    对于待聚类的椭圆弧,先要定义其搜索区域,由于椭圆是封闭图形,所以整个椭圆可以确定是在其任何一部分弧和弧两端点的切线所在的射线包围起来的区域里面,属于该椭圆的其他弧以确定是在该弧对应的弦和弧两端点的切线所在的射线包围起来的区域里面。这就是我们搜索的区域。在图中a1的搜索区域也就是射线l1,l2,弦l3和图像边缘范围内的区域,在这个区域里面找弧,可以缩小搜寻的范围,提高效率。判断一条弧是否在待聚类椭圆弧的搜索区域里面我们只需取这条弧的首末端点j3,j4是否在搜索区域。方法是分别求过这两点同时平行于待聚类椭圆弧对应弦l3的直线和切线的交点,若交点分别有两个,交点都在射线上且这两个端点在对应两个交点之间则该弧段在搜索区域内。图中明显a2,a3,a4在a1的搜索区域内而a5不在。
    在这里插入图片描述
    待聚类椭圆弧找到待配对的圆弧后用两种约束条件判断它们到底是否属于同一椭圆。约束一是利用一个椭圆任意两段弧弧中点之间的距离大于一个弧中点到另一个弧首末端点连线的中点之间的距离,在图中即为
    在这里插入图片描述
    用来去除图中a2类型的椭圆弧。右图(b)不满足,左图(a)同时满足这两个关系,进入下一步,再用约束二进行判断。
    在这里插入图片描述
    约束二是点到拟合椭圆边界距离条件。我们只需要让两条线段列中的点一起参与椭圆拟合,按照下面公式计算所有这些点到拟合出椭圆边界的距离。设置一距离阈值,当d_i小于该阈值认为该点落在该椭圆上,否则该点不在这个椭圆上。统计d_i中小于某一阈值的点的数量,若大于某一比例(比例阈值),则认为这两条弧属于同一椭圆,否则不属于同一椭圆。判定后将属于同一椭圆的弧段聚类到一起。
    在这里插入图片描述
    其中
    其中:x^'=(x_i-x_0)cos⁡〖θ+(y_i-y_0)sin⁡θ 〗,y^'=-(x_i-x_0)sin⁡〖θ+(y_i-y_0)cos⁡θ 〗。
    在这里插入图片描述
    如上图(a)中的参与拟合的点较多都落在拟合的椭圆上,所以有较大可能满足约束二条件;(b)中大多数拟合点点离拟合出的椭圆边界有一定距离,有较大可能不满足约束条件二。
    如果希望这两个阈值改为自适应的,方法是先拟合出椭圆,判断椭圆大小。若椭圆较小,应适当降低限制,即增大距离阈值,减小比例阈值;若椭圆较大,应适当提高限制,即减小距离阈值,增大比例阈值。本算法中选取的是,若椭圆的短轴小于50则距离阈值为0.05,比例阈值设为0.7;否则前者取0.03,后者取0.8。

    再配对

    聚类后的弧和较完整弧或者两个较完整弧可能属于同一椭圆但是在前面的步骤它们只是被分开了并没有配对,所以有必要增加再匹配过程,增加检测准确度。匹配方法还是约束条件二的方法。因为该方法和原算法的去伪过程相似,所以经过该方法后无需再去伪。

    直接最小二乘法椭圆拟合

    前面的很多步骤都删除了像素点较少的集合,或者用少数点代替了边界列中的很多点,或者是分割后再删除点数较少的集合的,这些操作到椭圆拟合这一步实际上基本上去除了所有的背景和噪声,甚至包括一部分有用信息。所以即使对噪声和孤立点敏感的直接最小二乘法也可以用来拟合椭圆,而且因为该方法对椭圆缺损不敏感,所以非常适合。

    实验效果

    边界聚类算法检测结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    边界聚类算法和随机霍夫变换算法比较

    用时比较在这里插入图片描述
    检测结果比较
    左图是选点情况;右图是拟合的椭圆和真实椭圆的差异
    在这里插入图片描述
    随机霍夫变换算法检测结果
    在这里插入图片描述
    边界聚类算法检测结果

    展开全文
  • 利用主元变换法将目标边缘数据变换到主元坐标系,给出新的椭圆轮廓度误差评定方法,将变换后数据点集的椭圆轮廓度误差作为椭圆识别的依据,采用基于异方差变量含误差模型的拟合算法获取椭圆的中心坐标。该方法将任意...
  • 基于椭圆拟合算法和改进型半波傅里叶谐波滤除算法的逆功率检测与控制的研究,杨庆江,李政,当分布式光伏发电系统所产生电量增加时,可能会发生逆功率现象。逆功率现象的产生会对电网的运行造成一定程度的影响。本文...
  • ———————————————— 版权声明:本文为CSDN博主「今天不飞了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请...最近在写一些关于椭圆检测的程序,看到了这个帖子,写的比较好,尤其文末的几篇论文。 ...
  • 这里分享一篇文献中椭圆检测的方法(代码使用方法)。圆的物体,在实际拍摄中由于种种原因可能会变成椭圆,用圆拟合就不够准确。
  • 暂时还没有整理, 抱歉了
  • 我一直在寻找椭圆检测算法,遇到了一篇有趣的论文,但是找不到C语言中的代码。因此,这是我尚未完善的IEEE论文“一种新的有效椭圆检测方法”的实现,谢永红&Qiang Ji2002。\ note已添加次要自定义功能,以改善低...
  • 其实如果应付的话, 我前面这篇文章 椭圆检测http://blog.csdn.net/traumland/article/details/51018133 对于场景已知, 精度不太要求, 效果还算不错(我之前在纸上画圆, 挖洞, 拿了带洞的的东西试过) 因为有 拟合椭圆...
  • 椭圆检测核心代码+测试代码。具体内容见博客《椭圆检测(Ellipse Detection)算法》,https://blog.csdn.net/xsz591541060/article/details/107813895。如果看完之后觉得有需要再下载。
  • hough变换检测椭圆

    热门讨论 2010-05-03 15:40:05
    很好的椭圆检测算法 采用hough变换 随机
  • 这是一篇基于边缘连接方法的椭圆检测算法AAMED《Arc Adjacency Matrix-Based Fast Ellipse Detection》,核心思想是使用弧段邻接矩阵获得所有弧段的组合方法,然后使用提出的基于采样点的思想的验证方法进行验证。...
  • 椭圆检测算法经过多年的研究发展,已经基本形成一个较完整的体系。它们大致可以分为三类即投票(聚类)、最优化、基于弧段的方法。 投票(聚类)方法 椭圆因为有中心位置坐标、长短轴长度、倾斜角五个参数,标准...
  • 椭圆检测算法经过多年的研究发展,已经基本形成一个较完整的体系。它们大致可以分为三类即投票(聚类)、最优化、基于弧段的方法。 投票(聚类)方法 椭圆因为有中心位置坐标、长短轴长度、倾斜角五个参数,标准霍夫...
  • 最近要复现论文,找了一篇发表在PR(1区)的一篇论文《A hybrid method for ellipse detection in industrial images》,这个可以理解为设计了一个应用于工业图像的椭圆检测算法。下面对其细节进行分析 文章目录2基于...
  • 椭圆检测算法经过多年的研究发展,已经基本形成一个较完整的体系。它们大致可以分为三类即投票(聚类)、最优化、基于弧段的方法。 投票(聚类)方法 椭圆因为有中心位置坐标、长短轴长度、倾斜角五个参数,标准霍夫...
  • 这篇文章出版社为《International Journal of Control Automation &amp;...〇 摘要部分 许多传统椭圆检测算法使用5个点实现椭圆检测,但是在候选边缘的随机选择需要大量的冗余计算。为了搜...
  • 首先轮廓(contour)的定义?  轮廓的定义有很多种, 也就是包围物体的边缘. 不管是哪种定义, 轮廓是与边缘紧密联系的. 那 那什么是边缘(edge)?  Simple answer: discontinuities in intensity. 边缘的分类?...
  • 而[Fitzgibbon95]讲了五种least square的算法并对比椭圆拟合实验效果 至于用了哪一种, 文档上没有具体说明, 可能需要看源码了 不如就看看这篇引用超过两千次的文章 Direct Least Squares Fitting ...
  • 关键字:边缘检测,边缘段检测,彩色边缘检测,线检测,线段检测,圆检测,椭圆检测。 边缘绘图(ED)算法是一种主动检测边缘检测问题的方法。 与采用减法方法的其他许多现有边缘检测算法(即在将梯度滤镜应用到...
  • 概述: -------- 通过检查所有可能的长轴(所有点对)并使用霍夫变换获取短轴来拟合椭圆算法复杂度取决于有效非零点的数量,因此如果有任何先验,则在“params”输入参数中提供尽可能多的限制是有益的有关问题的...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 348
精华内容 139
关键字:

椭圆检测算法