如何解决Elastix 3D 注册停止 python 没有任何错误
我想注册 2 个 3D 数据集,这些数据集被读入 numpy 数组,然后提供给 registrate() 函数。当我执行代码时,它会打印以下日志:
安装所有组件。
安装组件成功。
ELAStix 版本:5.0.1
来自 ElastixBase 的命令行选项:
-fMask 未指定,因此未使用固定掩码
-mMask 未指定,因此不使用移动掩码
-out D:\...\test/
-priority 未指定,因此 norMAL 进程优先级
-未指定线程,因此使用所有可用线程
TransformBase 中的命令行选项:
-t0 未指定,所以没有使用初始变换
正在阅读图片...
读取图像需要 1 毫秒。
之后就是停止并返回到正常的命令行。它没有到达“step2”。
有没有办法回溯出错的地方和原因?
def registrate(vol1,vol2,log_out_path):
"""
Parameters
----------
vol1: np.array,fixed image
vol2: np.array,moving image
log_out_path: str,path to the directory for the logfile
Returns
-------
None
"""
fixed_img = itk.GetimageFromArray(vol1)
moving_img = itk.GetimageFromArray(vol2)
print(type(moving_img))
parameter_object_ = itk.ParameterObject.New()
default_euler_ = parameter_object_.GetDefaultParameterMap("rigid",3)
parameter_object_.AddParameterMap(default_euler_)
set_elastix_parameters(parameter_object_,"euler")
print("step1")
result_image_,result_transform_parameters_ = itk.elastix_registration_method(fixed_img,# fixed
moving_img,# moving
parameter_object=parameter_object_,log_to_console=True,output_directory=log_out_path,log_file_name=r"log.txt",log_to_file=True,)
print("step2")
deformed_image_ = apply_transformix([result_transform_parameters_],moving_img)
print("Step3")
save_volume(itk.GetArrayFromImage(deformed_image_),r"D:\...\deformed","de",True)
save_volume(itk.GetArrayFromImage(result_image_),r"D:\...\result_transformed","re",True)
if __name__ == "__main__":
moving_img = read_in_volume(r"D:\...\sample1")
print("moving image read in correctly")
fixed_img = read_in_volume(r"D:\...\sample2")
print("fixed image read in correctly")
registrate(fixed_img,moving_img,r"D:\...\test")
使用的参数如下:
def set_elastix_parameters(parameters,i,transform):
# Image types
parameters.SetParameter(i,"UseDirectionCosines","true")
# Main components
parameters.SetParameter(i,"Registration","MultiResolutionRegistration")
# parameters.SetParameter(i,"Interpolator","BSplineInterpolatorFloat") not avalaible for python
parameters.SetParameter(i,"LinearInterpolator")
parameters.SetParameter(i,"ResampleInterpolator","FinalBSplineInterpolator")
parameters.SetParameter(i,"Resampler","DefaultResampler")
parameters.SetParameter(i,"FixedImageBSplineInterpolationorder","1")
parameters.SetParameter(i,"BSplineInterpolationorder","FixedImagePyramid","FixedSmoothingImagePyramid")
parameters.SetParameter(i,"MovingImagePyramid","MovingSmoothingImagePyramid")
parameters.SetParameter(i,"Optimizer","AdaptivestochasticGradientDescent")
parameters.SetParameter(i,"Metric","AdvancedMattesMutualinformation")
parameters.SetParameter(i,"FixedInternalImagePixelType","float")
parameters.SetParameter(i,"MovingInternalImagePixelType","float")
# Transformation
if transform == "euler":
parameters.SetParameter(i,"Transform","EulerTransform")
parameters.SetParameter(i,"AutomaticTransformInitialization","true")
else:
parameters.SetParameter(i,"BSplineTransform")
parameters.SetParameter(i,"BSplineTransformSplineOrder","3")
parameters.SetParameter(i,"FinalGridSpacingInPhysicalUnits","12")
parameters.SetParameter(i,"GridSpacingSchedule",["16","8","4","2","1"])
parameters.SetParameter(i,"HowToCombineTransforms","Compose")
parameters.SetParameter(i,"UseCyclicTransform","false")
# Similarity measure
parameters.SetParameter(i,"NumberOfHistogramBins","64")
parameters.SetParameter(i,"NumberOfFixedHistogramBins","NumberOfMovingHistogramBins","ShowExactMetricValue","false")
parameters.SetParameter(i,"CheckNumberOfSamples","true")
# Multiresolution
parameters.SetParameter(i,"NumberOfResolutions","5")
parameters.SetParameter(i,"ImagePyramidSchedule","16","1","1"])
# Optimizer
parameters.SetParameter(i,"MaximumNumberOfIterations","2000")
parameters.SetParameter(i,"FixedLimitRangeRatio","0.01")
parameters.SetParameter(i,"MovingLimitRangeRatio","FixedKernelBSplineOrder","0")
parameters.SetParameter(i,"MovingKernelBSplineOrder","UseFastAndLowMemoryVersion","true")
parameters.SetParameter(i,"UseJacobianPreconditioning","FiniteDifferenceDerivative","SP_A","20")
parameters.SetParameter(i,"MaximumNumberOfSamplingAttempts","SigmoidInitialTime","MaxBandCovSize","192")
parameters.SetParameter(i,"NumberOfBandStructureSamples","10")
parameters.SetParameter(i,"UseAdaptiveStepSizes","AutomaticParameterEstimation","MaximumStepLength","0.976562")
parameters.SetParameter(i,"NumberOfGradientMeasurements","NumberOfJacobianMeasurements","1000")
parameters.SetParameter(i,"NumberOfSamplesForExactGradient","100000")
parameters.SetParameter(i,"SigmoidScaleFactor","0.1")
parameters.SetParameter(i,"ASGDParameterEstimationMethod","Original")
# Image sampling
parameters.SetParameter(i,"UseRandomSampleRegion","NumberOfSpatialSamples","4096")
parameters.SetParameter(i,"NewSamplesEveryIteration","ImageSampler","RandomCoordinate")
# Interpolation and resampling
parameters.SetParameter(i,"FinalBSplineInterpolationorder","DefaultPixelValue","-1000")
parameters.SetParameter(i,"WriteResultimage","WriteDVFFromCoeff","ResultimageFormat","mhd")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。