(2)Elastix图像配准:参数文件(配准精度的关键)

news2024/9/24 7:24:57

文章目录

  • 前言
  • 一、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或RegularStepGradientDescent
  • Robbins‑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、配准异常

影响因素简介解决方法
XYZElastix默认各向同性最终网格间距的物理单位=(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1409086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mediasoup Demo-v3笔记(二)——server.js和room.js分析

server.js 主要运行逻辑 async function run() {// Open the interactive server.await interactiveServer();// Open the interactive client.if (process.env.INTERACTIVE true || process.env.INTERACTIVE 1)await interactiveClient();// Run a mediasoup Worker.await…

基于node.js和Vue3的医院挂号就诊住院信息管理系统

摘要: 随着信息技术的快速发展,医院挂号就诊住院信息管理系统的构建变得尤为重要。该系统旨在提供一个高效、便捷的医疗服务平台,以改善患者就医体验和提高医院工作效率。本系统基于Node.js后端技术和Vue3前端框架进行开发,利用其…

spring中循环依赖问题、Servlet 的过滤器与 Spring 拦截器区别

spring中的循环依赖问题 当A类中关联B,B类中关联A class A {B b; } class B {A a; } 正常java代码中new A时,b为null;new B时,a为null; 但是在spring中,由于对象是由spring容器管理的,当创建…

Netty Reactor 模式解析

目录 Reactor 模式 具体流程 配置 初始化 NioEventLoop ServerBootstrapAcceptor 分发 Reactor 模式 在刚学 Netty 的时候,我们肯定都很熟悉下面这张图,它就是单Reactor多线程模型。 在写Netty 服务端代码的时候,下面…

vue 解决:Module not found: Error: Can‘t resolve ‘vue-router‘ 的问题

1、问题描述: 其一、报错为: Module not found: Error: Cant resolve vue-router 中文为: 找不到模块:错误:无法解析“vue-router” 其二、问题描述为: 根据报错的中文信息可知:应该是无法…

PWN入门Protostar靶场Stack系列

Protostar靶场地址 https://exploit.education/protostar/溢出 源码分析 #include <stdlib.h> #include <unistd.h> #include <stdio.h>int main(int argc, char **argv) {volatile int modified; //定义一个变量char buffer[64]; //给…

Git服务器、GitLab介绍及搭建、HIS代码托管、CI/CD概述、Jenkins部署、Jenkins插件、Jenkins工程构建

案例1&#xff1a;GitLab服务器搭建 使用rpm包本地部署GitLab服务器 #确认GitLab主机硬件配置[rootGitLab ~]# free -mtotal used free shared buff/cache availableMem: 3896 113 3691 8 90 3615…

day31WEB攻防-通用漏洞文件上传js验证mimeuser.ini语言特性

目录 1.JS验证 2.JS验证MIME 3.JS验证.user.ini 4.JS验证.user.ini短标签 &#xff08;ctfshow154&#xff0c;155关&#xff09; 5.JS验证.user.ini短标签过滤 [ ] 6.JS验证.user.ini短标签加过滤文件头 有关文件上传的知识 1.为什么文件上传存在漏洞 上传文件…

视频汇聚/云存储平台EasyCVR级联上级播放后一直发流是什么原因?

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台&#xff0c;采用了开放式的网络结构&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;同时…

大创项目推荐 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

spire.doc合并word文档

文章目录 spire.doc合并word文档1. 引入maven依赖2. 需要合并的word3. 合并文档代码4. 合并结果 spire.doc合并word文档 1. 引入maven依赖 <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://r…

JVM篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、Java 中堆和栈有什么区别?二、描述一下 JVM 加载 class 文件的原理机制三、GC 是什么?为什么要有 GC?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…

LIMS源码,实验室信息系统源码,后端框架:asp.net

LIMS(laboratory information management system)即实验室信息管理系统是实验室管理科学发展的成果&#xff0c;是实验室管理科学与现代信息技术结合的产物&#xff0c;是利用计算机网络技术、数据存储技术、快速数据处理技术等&#xff0c;对实验室进行全方位管理的计算机软件…

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤

目录 1 TPU-MLIR简介 2 开发环境搭建 2.1 下载镜像 2.2 下载SDK 2.3 创建容器 2.4 加载tpu-mlir 3 准备工作目录 4 onnx转mlir文件 5 mlir转INT8 模型 5.1 生成校准表 5.2 便以为INT8对称量化模型 参考文献&#xff1a; 之前是用nntc转算能科技的模型的&#xff0c…

ExperimentalWarning: The http2 module is an experimental API.

错误提示 Node.js:ExperimentalWarning: The fs.promises API is experimental原因是node的版本不是最新的&#xff0c;而在项目引入的模块是最新的&#xff0c;node.js的版本低于模块的版本&#xff1a; 解决方法: 1、升级版本 npm install -g npm 更新npm到最新版 npm ins…

【C++干货铺】 RAII实现智能指针

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 为什么需要智能指针&#xff1f; 内存泄漏 什么是内存泄漏&#xff0c;内存泄露的危害 内存泄漏的分类 堆内存泄漏&#xff08;Heap leak&#xff09; 系统资…

内衣洗衣机有必要买吗?五款好用的迷你洗衣机推荐

冬天正在临近&#xff0c;普通的衣服有日常的洗衣机洗&#xff0c;但内衣裤就成了很多小伙伴的困扰&#xff0c;在我们的观念中&#xff0c;内衣裤是绝对不可以和普通的衣服一起清洗&#xff0c;在冰冷的冬季还要手洗这些贴身衣物&#xff0c;真的很难受&#xff0c;所以拥有一…

fpga外置flash程序烧录流程

Fpga外置FLASH程序烧录流程&#xff1a; step1&#xff1a; 打开vivado2019.2软件&#xff0c;找到hardware manager选项&#xff0c;进入该功能界面&#xff1b; Step2&#xff1a; 确定连接状态&#xff0c;当JTAG正确连接到板卡的调试插针后&#xff0c;会在状态窗口显示…

RNN与NLP

目录 数据处理基础&#xff1a; 处理文本信息&#xff08;text -> sequence&#xff09;&#xff1a; simple RNN模型&#xff1a; 这个教程的笔记&#xff1a; RNN模型与NLP应用(1/9)&#xff1a;数据处理基础_哔哩哔哩_bilibili 数据处理基础&#xff1a; 不能用标量…

eBay在人工智能道路上的成败得失:衡量标准是关键

我是2006年加入eBay的。2009年&#xff0c;这家公司的运营状况非常糟糕&#xff0c;其股价创历史新低&#xff08;远低于近24美元的历史高位&#xff09;&#xff0c;还出现削减各项成本、负增长、市场占有率降低、技术团队缺乏创新能力等情况。 简而言之&#xff0c;eBay公司…