光线追踪:Bresenham与Siddon的算法

时间:2014-11-03 11:23:06

标签: raytracing raycasting voxel rasterizing bresenham

我开发了一种基于笔形束方法的放射治疗逆向计划工具。这些方法中的一个重要步骤(特别是剂量计算)是来自许多来源的射线追踪,其中一种最常用的算法是Siddon的算法(这里有一个很好的简短描述http://on-demand.gputechconf.com/gtc/2014/poster/pdf/P4218_CT_reconstruction_iterative_algebraic.pdf)。现在,我将尝试简化我的问题:

输入数据是CT图像(具有值的3D矩阵)和图像周围的一些源位置。您可以想象一个立方体和周围的许多点,所有点都在相同的距离但不同的方向角,辐射射线的来源。每条光线将通过该体积,并根据与光源的距离为每个体素分配一个值。 Siddon算法的优点是在光线追踪的迭代过程中按时间计算长度。但是,我知道Bresenham的算法是评估矩阵中从一个点到另一个点的路径的有效方法。因此,即使在Bresenham的迭代过程中,从源到特定体素的长度也可以很容易地计算为欧几里德距离两点。

那么,知道这两种方法已经很老了并且效率很高,使用Siddon而不是Bresenham有明确的优势吗?也许我在这里错过了一个重要的细节,但我很奇怪,在这些剂量计算程序中,Bresenham不是一个真正的选择,并且Siddon总是作为黄金标准出现。

感谢您的任何评论或回复!

美好的一天。

1 个答案:

答案 0 :(得分:1)

在我看来,在大多数涉及医疗射线追踪的应用中,您不仅需要从源特定体素的距离,还需要该路径与每个体素的交叉长度。它的方式。现在,Bresenham为你提供了那条道路上的体素,但不是交叉长度,而Siddon确实如此。