文章目录
- 前言
- 一、Elastix简介
- 二、参数文件(类型)
- 三、参数文件(定义):由多个组件组成,每个组件包含多个参数。
- 3.1、组件的相关参数
- 3.2、图解组件
- 3.2.1、图解 - 金字塔(pyramid)
- 3.2.2、图解 - 度量(metric)
- 3.2.3、图解 - 变换(transform):affine + bspline + rigid
- 四、参数详解
- 4.1、基础参数:FixedImage + MovingImage
- 4.2、金字塔:Pyramid
- 4.4、图像采样器 + 重采样器:ImageSampler + Resampler
- 4.5、插值器 + 重采样插值器:Interpolator + ResampleInterpolator
- 4.6、度量:Metric
- 4.7、优化器:Optimizer
- 4.8、变换:Transform
- 4.9、配准结果:ResultImage
- 五、图像配准的影响因素
- 5.1、配准异常
- 5.2、配准精度
- 5.3、时间复杂度
- 5.4、空间复杂度
前言
(1)Elastix图像配准:原理 + 源码(详解)
一、Elastix简介
Elastix是一个基于Insight Toolkit (ITK)
开发的命令行工具,用于(医学)图像的刚性和非刚性配准。
Elastix源码使用C++开发,由两个部分组成:
(1)实现图像配准功能的ITK样式类
(2)elastix包装器:负责读取和设置参数、实例化和连接组件、保存(中间)结果以及类似的“管理”任务。模块化设计可以添加新组件,而无需更改elastix核心。
图像配准:在空间上,找到
移动图像中的体素 p
映射到固定图像中的体素 q
。
二、参数文件(类型)
Elastix官网:参数文件(根据不同类型,给出多种案例):分为以下几类:仪器类型(CT / MRI)、图像数据类型(2D / 3D),变换模型(rigid + affine + B-spline),度量标准(互信息 / 均方差)等等。如:3D图像配准(推荐模板):Par0033 - elastix
多种变换的使⽤策略:
- 首先是
刚性变换(EulerTransform)
- 然后是
仿射变换(AffineTransform)
- 最后是
B样条插值变换(BSplineTransform)
三、参数文件(定义):由多个组件组成,每个组件包含多个参数。
3.1、组件的相关参数
【理解与领悟】参数文件的每一个参数,才能实现图像的精确配准。
- Elastix官网组件:列举了整个配准过程中的每个组件:组件基类 Component Base Classes
- Elastix官网参数:列举了每个组件的相关参数 / 可调参数 / 协同参数:Parameters
3.2、图解组件
Elastix官网手册(第二章节):图像配准的基本组件
固定图像(Fixed Image)
:用于将移动图像配准到其空间的图像。移动图像(Moving Image)
:用于待配准到固定图像空间的图像。金字塔(Image Pyramid)
:用于捕捉图像的全局和局部特征,有助于快速收敛和避免局部极小值。采样器(Image Sampler)
:用于在图像的指定区域内采集一定数量的像素,以进行相似性度量。插值器(Interpolator)
:用于在图像的非离散点上估计像素值。度量(Metric)
:用于度量固定图像和移动图像之间的相似性(损失函数)。优化器(Optimizer)
:通过梯度下降法来迭代更新变换参数,使得度量损失逐步降低。
- 在每一个分辨率级别下(由低到高),通过度量衡量两个图像采集的像素,在优化器下,对移动图像进行逐步变换与插值。
变换(Transform)
:用于变换移动图像以使其与固定图像对齐。
3.2.1、图解 - 金字塔(pyramid)
图像金字塔(Image Pyramid):对原始图像进行一系列降采样(缩小)或上采样(放大)的图像集合。不同尺度的图像堆叠在一起,形成金字塔的层级结构。
- 低复杂图像可以增加配准成功的概率。例如:平滑且下采样的图像
- 使⽤金字塔来指代尺度空间。例如:高斯金字塔、拉普拉斯金字塔、高斯尺度空间金字塔、样条和小波金字塔。高斯金字塔是最常见的一种。
3.2.2、图解 - 度量(metric)
- 两个重要因素:像素之间的物理间距、图像在空间中相对于某些世界坐标系的位置
- 没有空间信息的医学图像不应用于医学诊断、图像分析、特征提取、辅助放射治疗或图像引导手术。换句话说,缺乏空间信息的医学图像不仅无用而且有害。
分辨率(Size)
:表示图像的尺度(长宽高)像素间距(Spacing)
:表示显微镜拍摄的尺寸,在像素中心之间测量。
- 对实际物体的尺度缩放,且每个维度可以不同(各向异性)。
- 像素间距转换物理尺寸:(20.0,30.0)x (7,6)=(140.0,180.0)。其中:
(7,6)分别表示显微镜拍摄实际物体时,XY所对应的缩放比例(XY由显微镜决定)
。(单位:um)微米(Physical extent)
:表示实际物体的物理尺寸,在像素中心之间测量。
- 圆圈中心:表示像素的中心。
- 图像原点(Origin):与图像中第一个像素的坐标相关联。
- 像素:被认为是围绕保存数据值的像素中心的矩形区域Voronoi Region。
像素的线性插值(Linear Interpolation):在以像素中心为角点(Pixel Coordinates)的Delaunay Region执行。
3.2.3、图解 - 变换(transform):affine + bspline + rigid
(1)非刚体形变
BSplineTransform(B样条变换)
:是一种基于B样条的非线性变换方法。
- 通过控制点(用于控制变换的形状)和插值函数(用于确定非控制点的值)来定义变换。
- 变换是局部的,每个像素的变换只受附近的控制点影响,这有助于减小整体计算的复杂性。
(2)刚体形变
AffineTransform(仿射变换)
:在三维空间中,平移、旋转、缩放和错切。
- 12 个自由度: 3 个平移参数,3 个旋转参数,3 个缩放参数,3 个错切参数。
- 引入形变,但仍保持线性关系。
EulerTransform(欧拉变换)
:在三维空间中,多种旋转顺序和旋转角度。
- 3 个自由度:多种旋转顺序(如:XYZ、ZYX),每个旋转顺序对应3个旋转角度。
- 不引入形变,但可能引入非线性关系。
RigidTransform(刚体变换)
:在三维空间中,平移和旋转。
- 6 个自由度:3 个平移参数,3 个旋转参数(通常是绕 X、Y 和 Z 轴的旋转角度)。
总结:仿射变换包含刚体变换,欧拉变换是刚体变换的特殊情况。但欧拉变换可以根据旋转顺序,灵活的控制旋转角度。
备注:在 Elastix 中,RigidTransform 通常是通过 EulerTransform 实现的。
四、参数详解
4.1、基础参数:FixedImage + MovingImage
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (FixedInternalImagePixelType "float") | 固定图像:像素值类型 | float(默认)、short、unsigned short | 不同的数据类型,占用内存不同,精度也不同 |
2 | (MovingInternalImagePixelType "float") | 移动图像:像素值类型 | float(默认)、short、unsigned short | |
3 | (FixedImageDimension 3) | 固定图像:维度 | 2D or 3D | |
4 | (MovingImageDimension 3) | 移动图像:维度 | 2D or 3D | |
5 | (UseDirectionCosines "true") | 图像的方向余弦:用于描述像素在物理空间中的相对位置和定向。 | 通常,图像被认为是一个离散的网格,每个像素占据一个网格单元。 |
- Elastix的3D图像配准具有连续效应:在进行逐帧配准的过程中,
前一帧的变换结果会被传递给下一帧
,所以每一帧都会受到前一帧配准结果的影响。因此整个图像序列在配准过程中形成一个连续的变换链,以保持图像的整体一致性
。- 传播效应:
若在序列中的某一帧发生配准错误或者有较大变动,可能会对后续帧产生一定的影响。
- 解决方案:单独处理异常帧,以平衡每一帧之间的相互影响。
- Elastix4.2版本及之前,尚不完全支持图像的方向余弦。
- Elastix4.3版本开始,完全支持;但出于向后兼容性,可以手动禁用。
4.2、金字塔:Pyramid
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (FixedImagePyramid "FixedRecursiveImagePyramid") | 固定图像:金字塔类型 | 递归金字塔 | 对前一层平滑+降采样下采样:将在第一个分辨率中节省大量时间 |
(FixedImagePyramid “FixedSmoothingImagePyramid”) | 平滑金字塔 | 对前一层平滑 | ||
(FixedImagePyramid “FixedShrinkingImagePyramid”) | 收缩金字塔 | 对前一层下采样 | ||
2 | (MovingImagePyramid "MovingRecursiveImagePyramid") | 移动图像:金字塔类型 | 递归金字塔 | |
(MovingImagePyramid “MovingSmoothingImagePyramid”) | 高斯尺度空间金字塔 | |||
(MovingImagePyramid " MovingShrinkingImagePyramid") | 收缩金字塔 | |||
3 | (NumberOfResolutions 4) | 图像金字塔:分辨率层数 | 0/1较差,3一般,4/5不错,10过度 | (1)若图像之间距离较远 / 分辨率高,则增加层数;(2)层数越多,变形越明显,时间复杂度也越高。 |
4 | (ImagePyramidSchedule 8 8 8 4 4 4 2 2 2 1 1 1) | 3D图像金字塔尺度 | (XYZ)每3个数字为一个分辨率层级,1表示保持原始分辨率。 | WARNING: ImagePyramidSchedule is not fully specified! A default pyramid schedule is used.默认:各向同性,每个分辨率减半 |
迭代轮数 = 金字塔层数 * 参数文件个数。
(1)参数文件 = 1,金字塔层数 = 5
,迭代轮数 = 5(配准)
(2)参数文件 = 2,金字塔层数 = 5
,迭代轮数 = 5 * 2(配准+变换)
(3)参数文件 = 3,金字塔层数 = 5
,迭代轮数 = 5 * 2(配准+变换)
(4)参数文件 = 3
,金字塔层数 = 1,迭代轮数 = 3
(4)参数文件 = 3
,金字塔层数 = 1,迭代轮数 = 3
4.4、图像采样器 + 重采样器:ImageSampler + Resampler
下采样金字塔对于随机采样器或随机坐标采样器而言不是必需的。因为随机采样器无论如何都会选择⽤户定义的样本数量,而与图像大小无关。
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (ImageSampler “Full” “Full” “Full”) | 图像采样器 (用于在迭代计算时,使用重采样获取像素值)(XYZ) | 完整采样器:选择固定图像的所有体素坐标 | 时间复杂度较高,但结果更准确。 |
(ImageSampler “Grid” “Grid” “Grid”) | 网格采样器:在固定图像上定义规则网格,并选择网格上的坐标。 | 时间复杂度较低,但可能会在一些区域失去精度。 | ||
(ImageSampler "Random" "Random" "Random")官方推荐 | 随机采样器:在固定图像中随机选择用户指定数量的体素 | 时间复杂度更低,但结果可能不稳定。 | ||
(ImageSampler “RandomCooperative” “RandomCooperative” “RandomCooperative”) | 随机合作采样器:不限于体素位置,还可以选择体素之间的位置。 | 使得成本函数变得更平滑,优化问题更容易解决。 | ||
2 | (Resampler "DefaultResampler")官方推荐 | 重采样器 (用于在应用最终配准结果变换时,使用图像重采样获取最终结果的像素值) | 默认的重采样器 | 在大多数情况下,都能提供良好的性能。 |
(Resampler “OpenCLResampler”) | OpenCL(Open Computing Language):用于并行计算的图像重采样(CPU / GPU) | 加速计算 | ||
3 | (NewSamplesEveryIteration "true" "true" "true")官方推荐 | 每次迭代时是否生成新的样本点(XYZ) | 增加算法的多样性,帮助更好地搜索参数空间。 | |
4 | (UseRandomSampleRegion "true")官方推荐 | 设置随机采样的区域 | false:采样器从整个图像域中抽取样本;true:采样器随机选择一个体素,然后选择该体素周围方形邻域中的剩余样本。 | 与SampleRegionSize结合使⽤ |
5 | (SampleRegionSize 50.0 50.0 50.0)官方推荐 | 采样区域尺度(XYZ) | 30、50、60(合理值:图像的三分之一) | |
6 | (NumberOfSpatialSamples 3000 3000 3000)官方推荐 | 空间采样点数量(XYZ) | 3000,不要低于2000 | 在每次迭代中,随机选择一个503mm区域。在该区域中,按照均匀分布选取3000个样本。 |
4.5、插值器 + 重采样插值器:Interpolator + ResampleInterpolator
- 高阶插值:可以捕捉细节,但容易受噪声干扰,可能过拟合。
- 低阶插值:无法捕捉细节,将产生平滑曲线,可能欠拟合。
插值器的阶数范围:
ERROR: BSplineInterpolationOrder and FinalBSplineInterpolationOrder must be between 0 and 5
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (Interpolator “NearestNeighborInterpolator”) | 插值器 (用于在迭代计算时,使用插值来计算像素值) | 最近邻插值器 :返回距离最近的体素的强度 | 时间复杂度较低,但不够平滑。 |
(Interpolator “LinearInterpolator”) | 1阶B样条插值 = 线性插值 | 线性插值器 :使用距离为权重,返回周围体素的加权平均值 | 时间复杂度中等,相对平滑。 | |
(Interpolator “BSplineInterpolator”) | N阶B样条插值器 (默认double类型) | 时间复杂度较高,更高的精度和平滑度。 | ||
(Interpolator "BSplineInterpolatorFloat") | N阶B样条插值器 (指定float类型) | 占用内存减半、时间复杂度减半 | ||
(Interpolator “ReducedDimensionBSplineInterpolator”) | N阶B样条插值器的变体 | 在最后一个维度中,使⽤0阶样条(节省时间) | ||
2 | (BSplineInterpolationOrder 3)官方推荐 | BSpline的插值阶数:必须在0到5之间(在迭代计算时) | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 | 0几乎没有配准效果,3增加配准形变程度。 |
3 | (ResampleInterpolator “FinalNearestNeighborInterpolator”) | 重采样插值器 (用于在应用最终配准结果变换时,使用插值来计算最终结果的像素值) | ||
(ResampleInterpolator “FinalLinearInterpolator”) | ||||
(ResampleInterpolator “FinalBSplineInterpolator”) | ||||
(ResampleInterpolator "FinalBSplineInterpolatorFloat")官方推荐 | ||||
(ResampleInterpolator “ReducedDimensionBSplineInterpolator”) | ||||
4 | (FinalBSplineInterpolationOrder 0)官方推荐 | BSpline的插值阶数:必须在0到5之间(在应用最终配准结果变换时) | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 | 迭代计算:使用高阶来拟合细节;结果变换:使用低阶来减小过拟合。(若反向操作,效果差) |
4.6、度量:Metric
单度量多分辨率配准
:在每个分辨率级别上,使用相同的度量
。—— 简单图像的配准任务多度量多分辨率配准
:在每个分辨率级别上,使用不同的度量
。—— 复杂图像的配准任务同一个参数文件,只能存放一个多分辨率配准:
ERROR: The parameter "Registration" is specified more than once.
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (Registration "MultiResolutionRegistration")官方推荐 | 单度量 多分辨率配准 | 简单任务、时间复杂度低 | 若不需要多分辨率,则设置NumberOfResolutions=1,而无需设置其他任何内容。 |
(Registration "MultiMetricMultiResolutionRegistration") | 多度量 多分辨率配准 | 复杂任务、时间复杂度非常高 | ||
2 | (Metric0Weight 0.125) + (Metric1Weight 0.225) + (Metric2Weight 0.125) | 指定多个度量的权重 | 与(多度量)搭配使用 | 度量权重的数量必须和度量方法的方法一致 |
3 | (Metric "AdvancedMeanSquares" "AdvancedMattesMutualInformation" "NormalizedMutualInformation") | 指定多个度量的方法 | 与(多度量)搭配使用 | |
(Metric “AdvancedMeanSquares”) | 度量标准 (度量:用于评估图像之间相似性的指标) | 均方差MSD | 适用于具有相等强度分布的两个图像(即相同模态图像) | |
(Metric “AdvancedNormalizedCorrelation”) | 归一化相关系数NCC | 该度量对于强度分布之间的线性差异是不变的(适用CT图像) | ||
(Metric "AdvancedMattesMutualInformation")官方推荐 | 互信息MI | 两个图像的强度的概率分布关系(适用单模态+多模态) | ||
(Metric “NormalizedMutualInformation”) | 归一化互信息NMI | 在特定情况下,比MI的性能更好(适用单模态+多模态) | ||
(Metric “AdvancedKappaStatistic”) | Kappa统计KS | 测量分段结构的重叠(适用二值图像(分段)) | ||
4 | (ShowMetricValue "false") | 在迭代过程中,是否显示度量的汇总信息 | 汇总信息:最终的度量值、度量值的平均值、最小值、最大值等(不区分每个度量的详细值)。 | 通常设置false,以避免在控制台中显示过多信息。 |
5 | (ShowExactMetricValue "false" "false" "false") | 在迭代过程中,是否显示每个度量的详细信息 | 详细信息:每个度量的单独结果、每个分辨率的结果等。 | 与MetricNWeight数量一致 |
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (NumberOfHistogramBins 32 32 32)官方推荐 | 直方图 bin 数量(XYZ) | bin数量越多,度量精度越高,但时间复杂度也越高。 | 直方图:用于衡量图像之间的相似性 |
2 | (ErodeMask "false" "false" "false")官方推荐 | 是否对掩模进行腐蚀操作(XYZ) | (1)若为true,则仅对掩模=1的图像执行配准;(2)当图像包含没有实际意义的人造边缘时,配准可能会倾向于对齐这些人造边缘,从而忽略有意义的边缘。 |
4.7、优化器:Optimizer
梯度下降(GD)
:StandardGradientDescent或RegularStepGradientDescentRobbins‑Monro(RM)
:StandardGradientDescent 或 FiniteDifferenceGradientDescent(1)GD 和 RM 实际上非常相似。使⽤完整采样器而不是随机采样器运行 RM 相当于执行 GD。
(2)建议使⽤ RM 而不是 GD,速度更快,但可能会恶化 GD 方案的收敛特性,因为每次迭代都会产生近似误差。
(3)AdaptiveStochasticGradientDescent
:参数更少,且更稳健。
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (Optimizer “StandardGradientDescent”) | 优化器:获得最优变换参数 | (SGD)随机梯度下降法 | 对学习率敏感 |
(Optimizer “RegularStepGradientDescent”) | (RSGD)固定步长的梯度下降法 | 学习率步长:需要经验或试验来确定 | ||
(Optimizer "AdaptiveStochasticGradientDescent")官方推荐 | (ASGD)自适应随机梯度下降法 | 在配准过程中,学习率会自动调整 | ||
(Optimizer “LimitedMemoryBroyden-Fletcher-Goldfarb-Shanno”) | (LBFGS)拟牛顿法 | 维护了一个有限的历史梯度信息,以估计牛顿方向。 | ||
(Optimizer “ConjugateGradient”) | (CG)共轭梯度法 | 在某些情况下,它可能比梯度下降法更高效。 | ||
(Optimizer “SimultaneousTruthandPerformanceLevelEstimation”) | (STAPLE)估计每个像素的“真实标签”以及每个配准算法的性能水平法 | 用于多模态 | ||
- | (MaximumStepLength 0.015) | 最大步长(学习率):控制了每次参数更新的幅度 | 与SGD一起使用(0.01 ~ 0.001) | (1)较大:学习快,模型不收敛;(2)较小:学习慢,局部收敛,找不到最优解; |
2 | (MaximumNumberOfIterations 500)官方推荐 | 图像金字塔:每个分辨率的最大迭代次数。 | 赶时间250、默认500、一般800、最好2000 | (1)iter次数决定是否收敛;(2)若配准成功,则iter次数越多,精度越高,但可能过拟合;(3)若配准失败,则iter次数越多,结果越异常;(4)若全脑配准,则iter次数越多,可能配准的slice越多; |
(MaximumNumberOfIterations 300 300 600 600) | 若指定的参数少于金字塔层数,则循环赋值。 | |||
3 | (MaximumNumberOfSamplingAttempts 10 15 10) | (XYZ)采样尝试的最大次数(默认0) | 有时无法抽取足够的相应样本,从而引发异常。使用此参数可以尝试绘制另一组样本。 |
以下参数默认效果即可满足要求,无需指定。且23456仅在1使用时有效。
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (AutomaticParameterEstimation "true") | 自动估计参数(默认true):SP_a、SP_alpha、SigmoidMax、SigmoidMin 和 SigmoidScale | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 | |
2 | (NumberOfGradientMeasurements 10) | 梯度数N(默认0,表示自动估算该值):用于估计精确梯度和近似误差的平均平方幅值。 | 原则上越多越好,但越慢。 | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 |
3 | (NumberOfJacobianMeasurements 5000 10000 20000) | 测量雅可比行列式的体素 M 的数量(默认M = max( 1000, nrofparams ),其中 nrofparams 为变换参数的数量):用于估计协方差矩阵。 | 原则上越多越好,但越慢。 | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 |
4 | (NumberOfSamplesForNoiseCompensationFactor 100000) | 用于计算“精确”梯度的图像样本数(默认100000) | 原则上越多越好,但越慢。 | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 |
5 | (NumberOfSamplesForPrecondition 500000) | 用于计算预处理器梯度的图像样本数(默认500000) | 原则上越多越好,但越慢。 | (1)可以分别指定每个分辨率的值(2)若只有一个值,则适用于所有分辨率 |
6 | (RegularizationKappa 0.9) | 预处理器正则化 |
4.8、变换:Transform
多种变换的使⽤策略(由简单到复杂):
- 首先是
刚性变换(EulerTransform)
—— (默认)旋转中心取固定图像的几何中心- 然后是
仿射变换(AffineTransform)
—— (默认)旋转中心取固定图像的几何中心- 最后是
B样条插值变换(BSplineTransform)
2222222222222
- 同一个参数文件,只能存放一个变换模型:
ERROR: The parameter "Transform" is specified more than once.
- 同一个参数文件,不能同时存放物理单位与体素单位:
ERROR: You can not specify both "FinalGridSpacingInVoxels" and "FinalGridSpacingInPhysicalUnits" in the parameter file.
- 网格间距尺度需和分辨率层数一致:
ERROR: Invalid GridSpacingSchedule! The number of entries behind the GridSpacingSchedule option should equal the numberOfResolutions, or the numberOfResolutions * ImageDimension.
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (Transform “TranslationTransform”) | 变换模型 | 平移变换 | 平移 |
(Transform “SimilarityTransform”) | 相似性变换(当移动与固定的缩放比较大时) | 平移、旋转、缩放 | ||
(Transform "AffineTransform") | 仿射变换 | 平移、旋转、缩放、错切 | ||
(Transform "EulerTransform") | 欧拉变换 | 多种旋转顺序和旋转角度 | ||
(Transform "BSplineTransform") | B样条插值变换 | 非刚性变换 | ||
(Transform “SplineKernelTransform”) | 基于内核的B样条变换 | 非刚性变换。比B样条效率低,但形变更精确 | ||
2 | (HowToCombineTransforms "Compose")官方推荐 | 组合变换:在一个参数文件中,同时指定多个变换,并按指定的顺序将多个变换合并为一个复杂变换 | 用于处理复杂的配准任务 | |
3(仅限bspline) | (FinalGridSpacingInPhysicalUnits 10.0 10.0 10.0)官方推荐 | (XYZ)最终网格间距的物理单位:毫米(mm) | 间隔越小,变换复杂度越高,可能过拟合。 | (1毫米mm = 1000微米um) |
(FinalGridSpacingInVoxels 8.0 8.0 8.0)官方推荐 | (XYZ)最终网格间距的体素单位 | 匹配较小结构:4、8、16;匹配较大结构:32 | ||
4(仅限bspline) | (GridSpacingSchedule 6.0 6.0 6.0 4.0 4.0 4.0 2.5 2.5 2.5 1.0 1.0 1.0)官方推荐 | (XYZ)每个分辨率级别的网格间距尺度 | 分辨率级别0中的网格间距:6×8=48体素,经过32和20体素,最终分辨率级别为8体素。 |
序号 | 参数 | 简介 | 适用范围 | 备注 |
---|---|---|---|---|
1 | (AutomaticTransformInitialization "true") | 自动估计初始变换参数 | 解决问题:当两个图像之间的初始对齐非常偏离时,无法启动非刚性配准。 | |
2(Origins仅限Affine) | (AutomaticTransformInitializationMethod "Origins") | 自动估计初始变换参数的方法 | 使用固定图像和移动图像的(原点 )来初始化变换场 | 平滑处理,模糊所有细节,将配准集中在主要结构上。 |
(AutomaticTransformInitializationMethod “GeometricalCenter”) | 使用固定图像和移动图像的(几何中心 )来初始化变换场 | |||
(AutomaticTransformInitializationMethod “CenterOfMass”) | 使用固定图像和移动图像的(质心 )来初始化变换场 | |||
3 | (AutomaticScalesEstimation "true")官方推荐 | 自动估计变换的尺度 | 为变换模型的每个像素定义了一个缩放值(在迭代计算时) | |
4 | (WriteTransformParametersEachIteration "false") | 在每次迭代后,是否保存变换参数。 | ||
5 | (WriteTransformParametersEachResolution "false") | 在每个分辨率后,是否保存变换参数。 | ||
6 | (WriteResultImageAfterEachResolution "false") | 在每个分辨率后,是否保存最终的配准结果图像。 |
4.9、配准结果:ResultImage
序号 | 参数 | 简介 | 适用范围 |
---|---|---|---|
1 | (UseFastAndLowMemoryVersion "true") | 启用快速和低内存版本 | 精度低、运算速度块、内存占用低 |
2 | (DefaultPixelValue 0) | 当某个像素值未定义时,将其默认设置为 0。 | |
3 | (WriteResultImage "true") | 是否保存配准结果图像 | |
4 | (ResultImagePixelType "unsigned short") | 配准结果图像的像素类型 | float(默认)、short、unsigned short |
5 | (ResultImageFormat "tif") | 配准结果图像的图像格式 | mhd、tif |
五、图像配准的影响因素
5.1、配准异常
影响因素 | 简介 | 解决方法 |
---|---|---|
XYZ | Elastix默认各向同性 | 最终网格间距的物理单位=(FinalGridSpacingInPhysicalUnits 10.0 10.0 10.0) |
数据类型 | Elastix同时支持8-bit与16bit的图像(固定与移动) | |
图像尺度 | 固定图像与移动图像的尺度需一致 | |
图像质量(太差) | (1)背景与前景不具有区分度;(2)四个角全黑/四周全黑 | 图像分割,使背景为0 |
5.2、配准精度
影响因素 | 简介 | 解决方法 |
---|---|---|
iter次数(不足) | ||
图像质量(较差) | 前景与背景有一定区分度,但效果不明显 | (1)图像调色:亮度 + 对比度 + gamma(2)参数文件:调参 |
(多个)参数文件 | 只影响配准精度,若使用不当则系统会直接报错,而不会导致配准异常。 | (1)文件类型rigid、affine、bspline;(2)组件的协同参数 |
(多个)移动图像 | 对同一张图像通过不同处理方法得到多张图像(特征),用于迭代优化。 |
以下列举的是常规因素:
备注:若需要根据组件与参数之间的协同关系进行详细调参,可以参考Parameters。
- 图像金字塔:
(NumberOfResolutions 4)
- 插值器:
(BSplineInterpolationOrder 3)
- 重采样插值器:
(FinalBSplineInterpolationOrder 0)
- 度量:
(Registration "MultiResolutionRegistration") + (Registration "MultiMetricMultiResolutionRegistration")
- 掩膜:
(ErodeMask "false" "false" "false")
- 优化器:
(MaximumNumberOfIterations 500)
- 变换:
(FinalGridSpacingInPhysicalUnits 10.0 10.0 10.0)
5.3、时间复杂度
- 若显示详细的过程记录信息,则极大增加时耗。
- 金字塔pyramid
(1)金字塔类型(递增):递归金字塔 -> 缩小金字塔 -> 平滑金字塔
(2)金字塔分辨率级别:(NumberOfResolutions 4) 层数越多,变形效果越明显,但时间复杂度也越高。
- 多分辨率(递增):
单一度量 -> 多个度量
—— 影响因素最高- 变换模型(递增):
线性变换(刚性变换和仿射变换) -> 非线性变换(B样条变换)
- 插值器与重采样插值器(递增):
最近邻 -> 线性 -> 一阶B样条 -> 二阶B样条等
—— 影响因素第二- 图像采样器(递增):
Full -> Grid -> Random
- 度量metric:
(NumberOfHistogramBins 32 32 32) bin数量越多,度量精度越高,但时间复杂度也越高。
- (UseFastAndLowMemoryVersion “true”):精度低、运算速度块、内存占用低
5.4、空间复杂度
官网介绍:Memory consumption in transformix
- (FixedInternalImagePixelType “float”):
float、short、unsigned short
- (MovingInternalImagePixelType “float”):
float、short、unsigned short
- (ResultImagePixelType “unsigned short”):
float、short、unsigned short
- 插值器:
BSplineInterpolator(默认double类型)、BSplineInterpolatorFloat
- 重采样插值器:
FinalBSplineInterpolator(默认double类型)、FinalBSplineInterpolatorFloat