simpleitk入门指南

温嘉赐
2023-12-01

SimpleITK是一个用于图像处理的开源库,它基于ITK(Insight Segmentation and Registration Toolkit)开发,但提供了更简洁和易用的接口。SimpleITK支持多种编程语言,如Python,C++,Java等,并且可以处理多种医学图像格式,如DICOM,NIfTI,PNG等。本文将介绍SimpleITK的基本使用方法,包括安装,读写图像,图像变换和滤波等。

## 安装
SimpleITK可以通过pip或conda命令安装,也可以从源码编译安装。下面以Python为例介绍安装方法:

- 通过pip命令安装:

pip install SimpleITK
```

- 通过conda命令安装:

```bash
conda install -c simpleitk simpleitk
```

- 从源码编译安装:

首先需要下载SimpleITK的源码,并创建一个构建目录:

```bash
git clone https://github.com/SimpleITK/SimpleITK.git
mkdir build
cd build
```

然后使用CMake配置构建选项,并指定要支持的编程语言和目标平台:

```bash
cmake ../SimpleITK/SuperBuild -DWRAP_PYTHON=ON -DCMAKE_INSTALL_PREFIX=/path/to/install/dir
```

最后使用make命令编译并安装SimpleITK:

```bash
make -j4 # 使用4个核心进行并行编译
make install # 安装到指定目录
```

## 读写图像

SimpleITK提供了一系列的函数和类来读写不同格式的图像文件。例如,可以使用`ReadImage`函数来读取一个DICOM文件,并使用`WriteImage`函数来保存为PNG格式:

```python
import SimpleITK as sitk

# 读取DICOM文件
image = sitk.ReadImage("CT.dcm")

# 查看图像信息:维度、大小、间距、方向等
print(image.GetDimension()) # 输出:3
print(image.GetSize()) # 输出:(512, 512, 100)
print(image.GetSpacing()) # 输出:(0.5, 0.5, 1.0)
print(image.GetDirection()) # 输出:(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)

# 将图像保存为PNG格式(只保存第50层)
sitk.WriteImage(image[:,:,50], "CT.png")
```

## 图像变换

SimpleITK支持多种类型的图像变换,如平移、旋转、缩放、仿射等。这些变换都是由不同的类来实现的,如`TranslationTransform`,`RotationTransform2D`等。要使用这些变换类,首先需要创建一个变换对象,并设置其参数。然后可以使用`Transformix`函数来对一个图像进行变换,或者使用`Resample`函数来对一个图像进行重采样。

下面是一个例子,演示了如何对一个二维图像进行旋转和缩放:

```python
import SimpleITK as sitk

# 读取二维图像(PNG格式)
image = sitk.ReadImage("CT.png")

# 创建旋转变换对象,并设置旋转角度为30度(弧度制)
transform = sitk.RotationTransform2D()
transform.SetAngle(30 * math.pi /180)

# 创建缩放变换对象,并设置缩放因子为2倍(沿x轴和y轴)
scale = sitk.Scale

 类似资料: