霍夫变换和氡变换有什么区别?

信息处理 图像处理 计算机视觉
2022-01-13 21:44:05

我通过学习 CT 扫描熟悉 Radon 变换,但不熟悉 Hough 变换。维基百科说

(r,θ) 平面有时被称为二维直线集合的霍夫空间。这种表示使得霍夫变换在概念上非常接近二维 Radon 变换。(它们可以被视为看待同一变换的不同方式。[5])

他们的输出在我看来是一样的:

Hough 和 Radon 变换的并排 rho 与 theta 图

所以我不明白有什么区别。它们只是以不同的方式看到的同一件事吗?每种不同的视图有什么好处?为什么不将它们组合成“霍夫-拉登变换”?

2个回答

Hough 变换和 Radon 变换确实非常相似,它们的关系可以松散地定义为前者是后者的离散形式。

氡变换是一种数学积分变换,为连续函数定义Rn在超平面上Rn. 另一方面,霍夫变换本质上是一种离散算法,它通过轮询和分箱(或投票)来检测图像中的线条(可扩展到其他形状)。

我认为对两者之间的区别进行合理的类比就像是

  1. 计算随机变量的特征函数作为其概率密度函数 (PDF) 的傅里叶变换和
  2. 生成一个随机序列,通过直方图分箱计算其经验 PDF,然后对其进行适当的转换。

但是,霍夫变换是一种快速算法,可能容易出现某些伪影。氡在数学上更合理,更准确但更慢。实际上,您可以将霍夫变换示例中的伪影视为垂直条纹。这是 Mathematica 中的另一个简单示例:

img = Import["http://i.stack.imgur.com/mODZj.gif"];
radon = Radon[img, Method -> "Radon"];
hough = Radon[img, Method -> "Hough"];
GraphicsRow[{#1, #2, ColorNegate@ImageDifference[#1, #2]} & @@ {radon,hough}]

最后一张图片真的很微弱,尽管我否定它以显示深色条纹,但它就在那里。倾斜显示器会有所帮助。您可以单击所有数字以获得更大的图像。

两者之间的相似性不太为人所知的部分原因是,不同的科学和工程领域历来只使用这两者中的一种来满足他们的需要。例如,在断层扫描(医学、地震等)、显微镜等中,可能专门使用氡变换。我认为这样做的原因是,将伪影保持在最低限度至关重要(伪影可能是误诊的肿瘤)。另一方面,在图像处理、计算机视觉等方面,由于速度是主要的,所以使用霍夫变换。


您可能会发现这篇文章非常有趣和热门:

M. van Ginkel、CL Luengo Hendriks 和 LJ van Vliet,Radon 和 Hough 变换及其相互关系的简短介绍,代尔夫特理工大学成像科学与技术部定量成像组

作者认为,尽管如果将霍夫变换写为连续变换,两者非常密切相关(在其原始定义中)并且等效,但氡具有更直观和具有坚实数学基础的优势。


还有类似于广义霍夫变换的广义 Radon 变换,它使用参数化曲线而不是直线。这是处理它的参考:

Toft, PA,“使用广义 Radon 变换检测噪声图像中的曲线”,IEEE ICASSP-96,卷。4, 2219-2222 (1996)

除了Lorem Ipsum 的回答将霍夫变换解释为氡变换的离散形式之外,我喜欢这种描述性的解释——也根据Ginkel 和其他人的说法:

Radon 和 Hough 都是从图像空间到参数空间的映射ρθ, 但他们的观点不同。Radon 变换从图像空间(读取范式)派生参数空间中的一个点,而 Hough 变换将数据点从图像空间显式映射到参数空间(写入范式)。

通过比较它们的(离散)算法,这一点变得清晰。对于每个θ在参数空间中,Radon 将图像点投影在由(其角度)描述的线上θ使用大小桶Δρ. 另一方面,霍夫拍摄每个图像点(x,y)并将适当的强度添加到所有相应的参数空间箱中。

结果 Hough 会出现伪影,而 Radon 则允许参数空间中的高分辨率(通过调整ΔθΔρ并将像素划分为子像素)。

尽管需要执行整个转换(无论如何这是大多数情况下的意图),但霍夫通常更快。氡只允许计算一个很短的时间间隔(在θ) 的参数空间由于阅读范式如果您有一些先验知识(例如θ间隔你的峰值可能是)。

我猜 Hough 因其简单的算法而在许多领域占据主导地位,而 Radon 则用于准确性至关重要或可用先验知识的地方。

另请参阅 Matlab 参考资料(展开算法选项卡):

www.mathworks.com/help/images/ref/radon.html

www.mathworks.com/help/images/ref/hough.html