此页面是从 /doc/source/ipynb/astra.ipynb. 互动在线版:
使用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...
如果您有一个支持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...
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...
有关ASTRA工具箱支持的投影内核和算法的更多信息,请参阅文档: projection kernels 和 algorithms 。请注意,通过TomoPy重建时,仅支持2D(即基于切片)算法。