此页面是从 /doc/source/ipynb/astra.ipynb. 互动在线版: Binder badge

使用ASTRA工具箱进行TomoPy

下面是一个有关如何使用 ASTRA toolbox 通过将其与 TomoPy 发布于 [A2]

若要使用ASTRA工具箱而不是TomoPy重建图像,请更改 algorithm 关键字至 tomopy.astra 。指定要使用的投影内核 (proj_type )以及使用哪种ASTRA算法进行重建 (method ))中 options 关键字。

这两个单元格是用于 Reconstruction with TomoPy

[1]:
import dxchange
import matplotlib.pyplot as plt
import tomopy
[2]:
proj, flat, dark, theta = dxchange.read_aps_32id(
    fname='../../../source/tomopy/data/tooth.h5',
    sino=(0, 2),
)
proj = tomopy.normalize(proj, flat, dark)
rot_center = 296
proj = tomopy.minus_log(proj)

例如,要使用基于行的CPU内核和FBP方法,请使用:

[3]:
options = {'proj_type': 'linear', 'method': 'FBP'}
recon = tomopy.recon(proj,
                     theta,
                     center=rot_center,
                     algorithm=tomopy.astra,
                     options=options,
                     ncore=1)
recon = tomopy.circ_mask(recon, axis=0, ratio=0.95)
plt.imshow(recon[0, :, :])
plt.show()
Reconstructing 1 slice groups with 1 master threads...
../_images/ipynb_astra_5_1.png

如果您有一个支持CUDA的NVIDIA图形处理器,使用ASTRA工具箱中基于GPU的算法可以大大减少重建时间,特别是对于迭代重建方法。

要使用GPU,请更改 proj_type 选项以 'cuda' ,并使用特定于CUDA的算法(例如 'FBP_CUDA' 对于FBP):

[4]:
options = {'proj_type': 'cuda', 'method': 'FBP_CUDA'}
recon = tomopy.recon(proj,
                     theta,
                     center=rot_center,
                     algorithm=tomopy.astra,
                     options=options,
                     ncore=1)
recon = tomopy.circ_mask(recon, axis=0, ratio=0.95)
plt.imshow(recon[0, :, :])
plt.show()
Reconstructing 1 slice groups with 1 master threads...
../_images/ipynb_astra_7_1.png

ASTRA工具箱的许多算法支持其他选项,这些选项可以在 documentation 。这些选项可以使用 extra_options 关键字。

例如,要使用具有非负性约束的基于GPU的迭代SIRT方法,请使用:

[5]:
extra_options = {'MinConstraint': 0}
options = {
    'proj_type': 'cuda',
    'method': 'SIRT_CUDA',
    'num_iter': 200,
    'extra_options': extra_options
}
recon = tomopy.recon(proj,
                     theta,
                     center=rot_center,
                     algorithm=tomopy.astra,
                     options=options,
                     ncore=1)
recon = tomopy.circ_mask(recon, axis=0, ratio=0.95)
plt.imshow(recon[0, :, :])
plt.show()
Reconstructing 1 slice groups with 1 master threads...
../_images/ipynb_astra_9_1.png

有关ASTRA工具箱支持的投影内核和算法的更多信息,请参阅文档: projection kernelsalgorithms 。请注意,通过TomoPy重建时,仅支持2D(即基于切片)算法。