python框架下的CT成像重建后处理(CIL库)

1 python重建库

1.1 scikit-image库(平行束)

一开始在用scikit-image来处理CT重建,但是这个里面的iradon是处理平行束重建的,在扇束或者锥束形成的弦图重建上极具误导性,像我这种半路进来的人根本没细看CT的扇束成像和平行束成像有这么大的差别,就在这个坑里狠狠摸爬滚打一番,浪费了大量宝贵的时间。在scikit-image里面可能也有扇束处理,但是我还没有仔细去寻找和研究,此处后续再更。
scikit-image的github地址

1.2 ODL库(数据格式奇怪,失败。)

conda install -c odlgroup odl

在此后我努力寻找其他的处理方式,但是目前网上基本上都没有提供python可用的方式,直到有一天师兄遇见了一个库并告知我,于是我又钻进去研究了一番,但是这个库的使用更加奇怪了,导致我研究了两三天,从源码阅读到整个数据格式都很熟稔之后,发现我的数据格式很难转换成这个样子,他的输入竟然是六维的,具体我不过多解释了,毕竟我也是半吊子,自行去查阅就行,没有耐心的,可以直接进入下面的CIL。
ODL的github地址
在这里插入图片描述

2 MATLAB重建库

在上述两个Python库的尝试都失败了之后就被迫转入MATLAB了,其实,哎,一眼难尽。一直在用MATLAB处理,matlab自带的重建函数就很容易查找和使用了,虽然有些参数我不理解,实际上和他解释的也是大相径庭,但是摸索一下还是很容易找到规律的,主要是我的整个框架都是在python中做的,所以就不想再迁移去MATLAB了,同时我本人也不喜欢用MATLAB。

2.1 iradon重建平行束

help iradon自己阅读文档。

2.2 ifanbeam重建扇束

平行束到扇束是需要一个数据重排的,具体重排函数我忘了,直接matlab里面help ifanbeam就都有了。

使用matlab的可以自主搜索。iradon可以处理平行束重建,ifanbeam可以处理扇束重建。

2.3 其他重建(我还没看)

至于其他重建相关可以看看MIRT

3 python的CIL库

参考论文:《Core Imaging Library - Part I: aversatile Python framework for tomographic imaging》
本文介绍了核心成像库(CIL),这是一个通用的开源Python库,用于处理和重建具有挑战性的层析成像数据。CIL是由层摄影成像(CCPi)网络协同计算项目开发的,可以从CIL库的下载地址获得,并附带文档、安装说明和大量演示。

CIL模块结构和内容概述如下图:
CIL模块结构和内容概述。

目前已有许多用于层析图像处理的软件库,如TomoPy[5]、ASTRA[6]、TIGRE[7]、Savu[8]、AIR Tools II[9]和CASToR[10]。类似地,有许多MATLAB和Python工具箱用于指定和解决与成像相关的优化问题,包括FOM[11]、GlobalBioIm[12]、ODL[13]、ProxImaL[14]和TFOCS[15]。CIL的目标是在一个易于使用、高度模块化和可配置的Python库中结合层析成像和优化软件这两个领域的最佳技术。特别强调的是在即插即用结构中实现各种正则化重建方法,在这种结构中可以很容易地选择和组合不同的数据保真度、正则化器、约束和算法。其目的是,用户将能够使用现有的重建方法,或自己的原型,处理噪声,不完整,非标准和多通道层析数据集,传统的FBP类型方法和专有软件不能产生满意的结果。除了重建,CIL还提供装载、预处理、可视化和导出数据的工具,用于后续分析和可视化探索。CIL轻松地与其他库连接,进一步组合和扩展功能;我们描述了ASTRA[6]、TIGRE[7]和ccpi规范化(CCPi-RGL)工具包[16]的CIL插件,以及使用CIL实现PET和MRI重建的协同图像重建框架(SIRF)[17]的互操作性。

其他细节看论文或者官网。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cil是一个用于计算机成像Python,可以用来实现锥束CT探测器倾斜校正。下面是一个示例代码,演示如何使用cil进行倾斜校正: ```python import cil.framework as cil import cil.plugins.astra as astra import numpy as np # Load the data data = cil.io.import_data('path/to/data.hdf5') # Define the geometry angles = np.linspace(0, 2*np.pi, data.shape[0], endpoint=False) geometry = cil.geometry.ConeGeometry( source_position=[0, 0, 1], detector_position=[0, 0, -1], rotation_axis_position=[0, 0, 0], rotation_axis_direction=[0, 1, 0], detector_shape=data.shape[-2:], angles=angles ) # Perform tilt correction tilt = 0.5 # degrees tilt_radians = np.deg2rad(tilt) correction_matrix = np.array([ [1, 0, 0], [0, np.cos(tilt_radians), np.sin(tilt_radians)], [0, -np.sin(tilt_radians), np.cos(tilt_radians)] ]) geometry.apply_affine(correction_matrix) # Perform reconstruction reconstruction = astra.astra_ct(data, geometry) ``` 在这个示例中,我们首先加载了待处理的数据,然后定义了投影几何参数。其中,我们使用了`ConeGeometry`类来定义一个圆锥形CT几何,包括源位置、探测器位置、旋转轴位置、旋转轴方向、探测器形状和投影角度。接着,我们定义了一个倾斜校正矩阵,将其应用到几何参数中。最后,我们使用`astra`插件来执行CT重建,得到校正后的图像。 需要注意的是,在这个示例中,我们假设了探测器在z轴上,因此倾斜校正只需要在y-z平面上进行旋转。如果探测器在其他方向上,需要根据具体情况调整旋转轴和倾斜校正矩阵。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值