Radon 变换原理和应用

Radon 变换原理和应用

前言: 承接 Hough 变换,从简单的直线检测说起,推广到 Radon 变换。介绍了 Radon 变换的基本原理和应用。主要是Hough直线检测的拓展,深度较浅。

上启自:详解 Hough 变换

1. 从直线检测说起

1.1 基本问题

详解 Hough 变换 中,对直线检测折腾这么久,已经是个成熟的”直线检测者”了,所以基本问题就不从点分析,直接从图出发。即

如何检测下图(a)中的直线?

在这里插入图片描述

当然可以使用 Hough 变换,如直接套用那篇博文中自编的代码就可以得到结果,展示如下:
在这里插入图片描述

再简单概述下原理:即,将原空间中的点变换到参数空间,每个原空间的点对应参数空间一条直线。原空间中有N个点就对应参数空间中N个直线。参数空间中直线相交就是表明对应原空间的点共线。参数空间中交点重复次数(亮度)越多,就表明原空间中共线的点越多。这些点连起来就是要求的直线。

注:如果使用 Hough变换 博文中的代码,将 θ \theta θ 范围修改下,其实不必 [ 0 , 2 π ] [0,2\pi] [0,2π],修改为 [ 0 , π ] [0,\pi] [0,π] 即可。

1.2 另辟蹊径

检测之前一般都是进行边缘提取,我们的目标是检测 图(b) 边缘二值图中是否存在直线,以及,如果存在,表示出这条直线。

先抛弃 Hough 变换的思路,考虑另外想法。

(1) 第一种想法:考虑从不同方向把 (b) 图拍扁(术语叫投影)。比如从两个角度(下图 A 1 , A 2 A1,A2 A1,A2 )拍扁(投影)它,示意如下:

在这里插入图片描述

这里使用两个方向 ( α = 0 \alpha=0 α=0​​​ 和 α = 45 ° \alpha=45° α=45°​​​​ )的光线 A 1 , A 2 A1,A2 A1,A2​​​ 对边缘进行投影。假设投影到投影面的位置点的数量越多,投影结果越亮。那么图中,灰色箭头标志的地方会非常亮。因为整条直线的像素点都会投影到该处。

不仅如此,事实上,考察所有投影方向,即 α ∈ [ 0 , π ] \alpha\in [0,\pi] α[0,π]​ (注意:因为不分正负,所以 [ 0 , π ] [0,\pi] [0,π]​ 和 [ π , 2 π ] \pi,2\pi] π,2π]​ 结果是一样的),最亮的点依旧会是图示中灰色标志的部分。这是直线的特点。

所以,是否我们可以考察所有方向下,对边缘图像进行投影,找到最亮的点(或者达到规定亮度阈值的点,比如存在多条直线)和此时对应的光线方向。 那这条直线不就检测出来了,直线方程不就确定了吗?

先不着急编程实践,再思考另一种想法。

(2)第二种想法:Hough 变换中,有提到可以用 θ \theta θ d d d​ 表示一条直线,如下图示意(不懂为何,可以参考 Hough 变换博文):

在这里插入图片描述

其中, d d d 为圆心到直线距离, θ \theta θ 是垂线与 x x x 轴夹角。那么这一想法就是使用 穷举法 的思想,即

因为 θ \theta θ 是有范围的,同时因为在图像中检测直线,所以 d d d 也是有范围,最大为图像的斜对角距离。于是,我们就考察“所有”的 θ \theta θ d d d ,这里的”所有“取决于你的精度,即 θ \theta θ 以及 d d d​​ 各自的离散值取值间隔。来表示图像空间内”所有“的直线。

表示出”所有“直线后,下面我们要做的就是,将直线一条一条的与原图相匹配。记录该直线的点与边缘图中点重叠的个数,把该个数记为该线与图的匹配度。比如取所有线的其中四条,作个示意:

在这里插入图片描述

其中, L 1 , L 2 L1,L2 L1,L2 L 3 , L 4 L3,L4 L3,L4 故意取了 θ \theta θ 相同,但 d d d​ 不同所表示的直线(图中L1,L2没有标角度和距离,怕线看起来太乱了)。上面所说的匹配度即该条直线与边缘图中像素重叠数,如 L 1 L1 L1 与 边缘线没有像素重叠,匹配度就为0, L 4 L4 L4同理。其中这举例的四条直线中,匹配度最高的是 L 2 L2 L2​。因为它与边缘图中包含直线的所有像素都重合。

不仅如此,事实上,考察所有 θ \theta θ,距离 d d d 所表示的直线,匹配度数值最高的依旧会是 L 2 L2 L2

说到这,你可能会发现,其实这就是所提到的第一种想法的另种思路。只是这里的 L 1 , L 2 , ⋯ L1,L2,\cdots L1,L2,​​ 就是第一种想法中的 一条 光线,如 第二种想法里的 L 2 L2 L2​ 直线其实就是 第一种想法里 A 2 A2 A2​​​ 方向下,最亮点对应的那一条光线。匹配度也就对应于第一种想法里的亮度,也就是重合度。

唯一的区别和需要注意的是,两个想法中的所用角度表示方法不同(但属于无伤大雅的东西):前者是光线的倾角,后者是光线垂线的倾角

1.3 编程实现

基于以上想法,编程,进行直线检测:

注:这里使用想法二中的倾角 θ

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值