CT projection (distance-driven) operator implementation?

帅比萌擦擦* 提交于 2019-12-03 00:51:37

As far as I'm aware, there are no freely available implementations of the distance-driven projector/backprojector (it is patented). You can, however, code it yourself without too much difficulty.

Start by reading the papers and understanding what the projector is doing. There are only a few key parts that you need:

  • Projecting pixel boundaries onto an axis.
  • Projecting detector boundaries onto an axis.
  • The overlap kernel.

The first two are simple geometry. The overlap kernel is described in good detail (and mostly usable pseudocode) in the papers.

Note that you won't wind up with an actual matrix that does the projection. The system would be too large for all but the tiniest examples. Instead, you should write a function that implements the linear operator corresponding to distance-driven projection.

You have different examples:

  • Here there is a Matlab example related to 3d Cone Beam. It can be a good starting point.
  • Here you also have another operator
  • Here you have a brief explanation of the Distance-Driven Method. So using the first example and the explanation in this book, you can obtain some ideas.

If not, you can always go to the Distance-Driven operator paper and implement it using the first example.

Although there are already a lot of satisfactory answers, I would like to mention that I have implemented the Distance Driven method for 2D Computed Tomography (CT) and 3D Digital Breast Tomosynthesis (DBT) on MATLAB.

Until now, for 2D CT, these codes are available:

and for 3D DBT:

Note that:

1 - The code for DBT is strictly for limited angle tomography; however it is straightforward to extend to a full rotation angle.

2 - All the codes are implemented for CPU.

Please, report any issue on the codes so we can keep improving it.

Distance-driven projection is not implemented in stock MATLAB. For forward projection, there is the fanbeam() and radon() command, depending on what geometry you're looking for. I don't consider fanbeam to be very good. It exhibits nonlinear behavior, as of R2013a, see here for details

As for a matching transpose, there is no function for that either for fanbeam or parallel geometry. Note, iradon and ifanbeam are not operator implementations of the matching transpose. However, you might consider using FUNC2MAT. It will let you convert any linear operator from function form to matrix form and then you can transpose freely.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!