首页> 中国专利> 斜率逼近式直线检测方法

斜率逼近式直线检测方法

摘要

本发明提供了一种斜率逼近式直线检测方法,具体包括:检测出待处理图像中所有的边缘线条;将所有边缘线条转换为若干由点链首点坐标和链码序列表示的点链;将每个点链分为若干个二码点链,使得每个二码点链中的链码取值至多有两个,这两个取值代表的方向相邻;在每个二码点链中寻找直线点链,每个所述直线点链的首点与其余每个点的斜率范围都具有同一个非空子集,且点数达到预定的点数阈值。本发明可以快速而精确地检测出图像中的直线,有助于提高需要进行采样类直线检测应用的效果质量。

著录项

  • 公开/公告号CN103679724A

    专利类型发明专利

  • 公开/公告日2014-03-26

    原文格式PDF

  • 申请/专利权人 中南大学;

    申请/专利号CN201310683637.0

  • 发明设计人 范冲;李冠达;马俊;

    申请日2013-12-13

  • 分类号G06T7/00(20060101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人李相雨

  • 地址 410083 湖南省长沙市岳麓区麓山南路932号中南大学采矿楼205

  • 入库时间 2023-12-17 01:10:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-15

    授权

    授权

  • 2014-04-23

    实质审查的生效 IPC(主分类):G06T7/00 申请日:20131213

    实质审查的生效

  • 2014-03-26

    公开

    公开

说明书

技术领域

本发明涉及图像处理技术,具体涉及一种斜率逼近式直线检测方 法。

背景技术

根据直线检测的应用分类,可以分为全局应用和采样应用。全局 应用的直线检测主要应用于对含有直线特征的对象进行提取,例如道 路、桥梁、建筑等地物的提取,目标跟踪、识别等,这样应用一般需 要检测出图上的所有直线甚至是类似直线,因此该检测一般需要较强 的鲁棒性以保证检测的抗噪性和完整性。采样应用的直线检测的结果 常用于对具有直线特征的对象进行分析以及样本的进一步操作,诸如 立体匹配、刀刃法PSF(点扩散函数)提取等等,这样的应用只需要 图上的一少部分较为精准的直线而不是所有的直线,因此该检测一般 具有较为严格的精度要求。

比如,刀刃法PSF提取主要是以恢复图像退化为目的的采样应用。 在受到散焦、景物与相机之间的相对运动、大气扰动等因素的影响下, 在遥感图像中存在着相当程度的图像退化。然而遥感图像是从距离地 面数千千米高空的遥感平台获取的,即使存在微小的图像退化也可能 导致严重的影像识别误差。所以如何从遥感图像中获取用于描述和恢 复其图像退化的PSF就成为了一个重要的问题。刀刃法通过分析图像 上具有明显灰度差的线性边缘区域(即刀刃区域)中边缘两边灰度分 布情况求得PSF,已经被普遍应用与在相关的研究中。而这种方法提 取PSF的精度,很大程度上取决于其所选取的刀刃区域的准确性。鉴 于刀刃区域的刀刃为线性边缘,所以刀刃区域的检测可以通过直线检 测来实现,而且其检测精度决定了PSF计算所用到的刀刃区域的优劣, 也就决定了恢复后图像的图像质量。

现有技术中,对于直线检测的通常做法是使用Hough变换。Hough 变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的 一种方法。在预先知道区域形状的条件下,利用Hough变换可以方便的 得到边界曲线而将不连续的像素边缘点连接起来。Hough变换的主要 优点是受噪声和曲线间断的影响小。利用Hough变换可以直接检测出 直线,适用于直线检测的全局应用。

但是对于这样的直线检测方法,首先由于该方法将不连续的像素 点连接起来,那么图像中出现的间断就没有办法被检测出来,而且所 检测出的直线在局部上就很难保证直线精度,所有这种方法在如实际 的刀刃法PSF提取的采样应用中的效果质量都不高。例如在刀刃区域 PSF提取中,根据这样的直线来选择刀刃区域,会使对于图像退化的 恢复引入不必要的误差。

发明内容

(一)解决的技术问题

针对现有技术的不足,本发明提供一种斜率逼近式直线检测方法, 可以快速而精确地检测出图像中的直线,有助于提高需要进行采样类 直线检测应用的效果质量。

(二)技术方案

为实现以上目的,本发明通过以下技术方案予以实现:

一种斜率逼近式直线检测方法,其特征在于,该方法包括:

检测出待处理图像中所有的边缘线条;

将所有边缘线条转换为若干由点链首点坐标和链码序列表示的点 链;

将每个点链分为若干个二码点链,使得每个二码点链中的链码取 值至多有两个,这两个取值代表的方向相邻;

在每个二码点链中寻找直线点链,每个所述直线点链的首点与其 余每个点的斜率范围都具有同一个非空子集,且点数达到预定的点数 阈值。

优选地,所述检测出待处理图像中所有的边缘线条包括:

载入待检测图像的灰度图像;

对所述灰度图像进行边缘检测,得到由二值图像表示的边缘线条。

优选地,所述进行边缘检测可以采用Canny算子。

优选地,所述进行边缘检测可以采用Shen-Castan边缘检测器。

优选地,所述将所有边缘线条转换为若干由点链首点坐标和链码 序列表示的点链包括在转换前通过线条细化使所有边缘线条细化为单 点连线。

优选地,所述线条细化采用Zang-Suen/Stentiford/Holt组合算法。

优选地,所述在每个二码点链中寻找直线点链包括:

步骤S1:设定点链斜率范围;

步骤S2:从所述二码点链的第二个点开始依次查询每个点的链码, 将第一个与前面的点的链码都不相同的点设置为当前点;

步骤S3:计算该二码点链首点与当前点的斜率范围;

步骤S4:更新所述点链斜率范围为当前点的斜率范围与更新前点 链斜率范围的交集;

步骤S5:当所述点链斜率范围不为空集,且当前点不为二码点链 的尾点时设置下一个点为当前点并返回步骤S3,否则进入步骤S6;

步骤S6:判断从该二码点链首点至当前点为止的子点链点数是否 不小于所述点数阈值,若是则判断该子点链为直线点链。

优选地,所述首点与其余每个点的斜率范围通过如下方式取得:

对于其余每个点,先找到一个坐标方向,所述坐标方向上该点与 首点的坐标之差大于其它方向上的坐标之差;

找到在该坐标方向上距该点1/2像素的两个点;

分别计算这两个点中的每个点与首点所在直线的斜率;

所述斜率范围即为包含这两个斜率值的最小范围。

优选地,所述步骤S6之后进一步包括:

若点链斜率范围为空集,则继续判断该二码点链中剩余未判断的 点的数量是否不小于所述点数阈值;

若是则由剩余未判断的点构成新的二码点链,对于该二码点链返 回步骤S1。

(三)有益效果

本发明至少具有如下的有益效果:

本方法根据Freeman的第一条准则,在图像中提取出了符合准则 的若干条二码点链,在此基础上对该点链进行进一步的直线检测,利 用的主要方法就是根据像素点的大小来确定点链中每个点相对于点链 首点的直线组的斜率范围。如果点链中的每一个点的所述斜率范围都 有同样一个非空子集,那么可以确定至少有斜率属于该子集的一条直 线可以贯穿点链中的每一个像素点,结合对于得到直线点链在点数阈 值上的设定,也就很大程度上保证了这个点链所构成的线条是直线, 或者说该线条的线性程度非常好,得到的直线具有很高的精度。

相对于背景技术的Hough全局变换,本方法只是将每条筛选得到 的二码点链进行了逐条逐点的检测,算法复杂度低,执行速度快。所 以本发明可以快速而精确地检测出图像中的直线,有助于提高需要进 行采样类直线检测应用的效果质量。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上 所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面 将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显 而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普 通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附 图获得其他的附图。

图1是本发明实施例中斜率逼近直线检测法的简单流程图;

图2是本发明一个实施例中遥感图像的灰度图像;

图3是本发明一个实施例中采用Canny算子的边缘检测结果示意 图;

图4是本发明一个实施例中线条细化的结果示意图;

图5是本发明一个实施例中链码跟踪的结果示意图;

图6是本发明一个实施例中二码检测的结果示意图;

图7是本发明一个实施例中斜率逼近判断的流程图;

图8是本发明一个实施例中斜率逼近法原理示意图;

图9是本发明一个实施例中斜率逼近判断的处理结果图,也是最 终的直线检测效果图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结 合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、 完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有 作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护 的范围。

本发明实施例提供一种斜率逼近式直线检测方法,参见图1,具体 步骤包括:

步骤101:检测出待处理图像中所有的边缘线条。

首先,要载入待检测图像的灰度图像。为方便找出图像中对比强 烈的边缘区域,需要由图像的灰度值作为对比参数,所以如果图像为 彩色图像,则须将其转化为灰度图像。本实施例具体以一张遥感图像 的直线检测过程作为相应步骤的示意图,原图像的灰度图像参见图2。

然后,对所述灰度图像进行边缘检测,得到由二值图像表示的边 缘线条。利用现有算法对已载入的灰度图像进行边缘检测,对应每个 像素点用一个数值来表示该点是否处在边缘线上。对应边缘线条处像 素点的数值为255,其余部分为0(这两个值可以是任意两个不同的数 字,按照习惯这里取0和255),最终可以得到一幅表示图像中边缘线 条的二值图像。所述边缘检测可以采用Canny算子或Shen-Castan边缘 检测器。采用Canny算子的边缘检测结果示意图参见图3。

步骤102:将所有边缘线条转换为若干由点链首点坐标和链码序列 表示的点链。

首先需要在转换前通过线条细化使所有边缘线条细化为单点连线。 利用现有算法对得到边缘二值图像进行线条细化,保证图像上的线都 是单点连线,并得出一幅单点线条的二值图像。线条细化采用 Zang-Suen/Stentiford/Holt组合算法。线条细化的结果示意图参见图4。

然后,对经过线条细化的二值图像进行链码跟踪,将图像中所有 线条以点链首点坐标和链码序列的点链形式表示。对单点边缘二值图 像进行链码跟踪,将图像上的单点线条都转化为点集合表示的线,我 们称之为点链。这种点链由一个点坐标和链码序列组成,点坐标表示 该条线的点链首点坐标,链码序列中的每一个链码表示自第二点起, 各点相对于前一点的位置关系。链码跟踪方法如下:

(1)逐行逐点扫描图像中的点,将找到的第一个线条点设为点链首 点;

(2)对找到的点链首点,不断检测出其八个相邻的点中新的线条点, 并将该点添加入该点链首点的点链中,并对该点继续进行同样检测直 到无新的相邻线条点为止;

(3)如果检测某点的相邻线条点时有不小于三个相邻的线条点,则 判定此点为交点并在此处停止;

(4)停止后若点链中有点则存储该点链,并在二值图像上去除该点 链中非交点的点(将该点链中的每个点的值由255变为0);

(5)在去除后的二值图像中继续从点链首点处继续逐行逐点扫描, 找到下一个点链首点后返回步骤(2),重复这之间的步骤直到最后一行 的最后一个点也完成上述检测。

对于(3)的判断是为了在检测到交点时对点链进行打断,以保证每 一条点链的链码序列不出现分叉的情况,也就是说点链与点链间没有 相互交叉的情况发生。链码跟踪结果示意图参见图5,其中以不同样式 的线条区分开了不同的点链。

步骤103:将每个点链分为若干个二码点链,使得每个二码点链中 的链码取值至多有两个,这两个取值代表的方向相邻。

所述二码指的是所有链码的取值不超过两个;所述取值两个代表 方向相邻指的是所有链码代表的方向都要是两个相邻方向中的一个, 而不允许出现代表其他方向的链码。对每一个点链,自第一个链码开 始进行逐点检测,当一个点处出现第三种取值的链码,或者该链码的 链码值不在首链码的邻域内,则在该点处对原点链进行打断处理。即 将该点前(不包括该点)的子点链创建为新的二码点链,并对该点后 的子点链继续进行同样检测。二码检测的结果示意图参见图6,同样以 不同样式的线条代表不同的二码点链。

由此可以得到若干条二码点链,此得到的二码点链是互不交叉的 单点连线,而且从每个点到下一个点的矢量的方向至多有两个。但是 仍有可能存在有些点链是折线而非直线的情况,所以要进行进一步的 直线判定。

需要说明的是,上述步骤均只是对细化后的单点连线进行了打断 处理,使其成为若干条二码点链。其中只有部分点被排除,其余部分 均没有做筛选。

步骤104:在每个二码点链中寻找直线点链,每个所述直线点链的 首点与其余每个点的斜率范围都具有同一个非空子集,且点数达到预 定的点数阈值,参见图7,具体包括以下步骤:

步骤S1:设定点链斜率范围;

步骤S2:从所述二码点链的第二个点开始依次查询每个点的链码, 将第一个与前面的点的链码都不相同的点设置为当前点;

步骤S3:计算该二码点链首点与当前点的斜率范围;

步骤S4:更新所述点链斜率范围为当前点的斜率范围与更新前点 链斜率范围的交集;

步骤S5:当所述点链斜率范围不为空集,且当前点不为二码点链 的尾点时设置下一个点为当前点并返回步骤S3,否则进入步骤S6;

步骤S6:判断从该二码点链首点至当前点为止的子点链点数是否 不小于所述点数阈值,若是则判断该子点链为直线点链。

其中,所述首点与其余每个点的斜率范围通过如下方式取得:对 于其余每个点,先找到一个坐标方向,所述坐标方向上该点与首点的 坐标之差大于其它方向上的坐标之差;找到在该坐标方向上距该点1/2 像素的两个点;分别计算这两个点中的每个点与首点所在直线的斜率; 所述斜率范围即为包含这两个斜率值的最小范围。

在此基础上还包括对于二码点链剩余点的斜率逼近判断:若点链 斜率范围为空集,则继续判断该二码点链中剩余未判断的点的数量是 否不小于所述点数阈值;若是则由剩余未判断的点构成新的二码点链, 对于该二码点链重新进行所述斜率逼近判断。

而实际操作中,该步骤具体包括:

(1)设定点数阈值为L,设定点链斜率范围为K=[0,1],该点链 首点坐标(x0,y0),自首链码点开始,对二码点链逐点检测;

(2)当点链中出现第二种链码时,开始计算经过该点的斜率范围 K‘;

(3)该点坐标(x,y),K‘=[kmin,kmax]

当x>y,kmin=|y-y0|-0.5|x-x0|kmax=|y-y0|+0.5|x-x0|

当x<y,kmin=|x-x0|-0.5|y-y0|kmax=|x-x0|+0.5|y-y0|

(4)用K‘校正K,逼近斜率范围,也就是更新点链斜率范围的值: K=K∩K‘;

(5)当则进入下一点,返回(3)继续进行该过程,当则暂停检测,并判断已检测成功的点链子集中点的个数是否超过点数 阈值L,如果超过则将该点链子集记为直线点链;

(6)如果剩余点个数超过点数阈值L,则斜率逼近检测自暂停点 处开始重新进行,初始化K=[0,1],计该点坐标为点链首点坐标并返 回(2);

(7)如果检测到尾点或者暂停时剩余点个数小于L,则检测结束。

经过上述步骤之后,检测出的直线的点数都不小于L,且所有点的 斜率范围都在同一区间内。关于斜率逼近法的理论依据如下所述:

图像上,一直线段亚像素坐标位置与两个上下或左右相邻的像素 点中点的连线段相交,则中点距离交点较近的像素点在该直线上。参 见图8,假设一条直线段在图像上的(a)区域内,直线的一个端点为图像 上的原点,且直线经过首端点的中点,若直线经过P点,则直线的可 能斜率为Kp=[kmin,kmax),

kmin=yp-0.5xpkmax=yp+0.5xp

若直线的左上端点为任一点,直线段斜率Kl∈[0,1),且直线经过首端 点的中点和P点,则直线的可能斜率为Kp=[kmin,kmax),

kmin=Δy-0.5Δx=yp-y0-0.5xp-x0kmax=Δy-0.5Δx=yp-y0+0.5xp-x0

若已知一直线段点链首点,和直线上一点P(x,y),Kp=[kmin,kmax], 根据对称性可推出

当x>y,kmin=|y-y0|-0.5|x-x0|kmax=|y-y0|+0.5|x-x0|

当x<y,kmin=|x-x0|-0.5|y-y0|kmax=|x-x0|+0.5|y-y0|

假设一直射线斜率为kl,直线上第n点斜率范围为Kn,则有,

limn+K1K2K3···Kn={kl}

两点P1,P2与同一首端点的斜率范围K1,K2,若

则P1,P2不在同一直线上。

假设一直线上n个点的斜率范围交集为K,一点P的斜率范围为Kp, 若

则P不在该直线上。

所以,经过这一系列的判断,在点数大于规定点数阈值的情况下, 得到的直线点链很大程度上可以保证其直线的特性。整个步骤104的 操作结果示意图参见图9,该图像中设置的L=15,可见这种情况下图 像中仅保留了一部分线性非常好的直线,可见这样的筛选条件还是相 当严格的,可以针对具体的应用需求,来设定点数阈值L的值。

根据精度较高的直线来选取刀刃区域,可以提高PSF的提取精度, 进而有助于提高其恢复图像退化的效果质量。

可见在实际的应用中,本方法能够有效地检测出图像中的直线, 所需运算复杂度较低,耗时较少,效率较高,并具有误差小的优点。 很高的精度和较少的耗时保证了本方法的直线检测具有准确性与高效 性的特点,非常适用于直线检测的采样应用。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅 仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定 要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。 而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包 含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这 种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况 下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的 过程、方法、物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员 应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不 使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号