news 2026/4/17 6:00:58

elastix结果获取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
elastix结果获取

刚才一直获取的配准结果不对,现在终于搞明白了,在elastix的输出结果中,他会把每个阶段的结果进行保存,比如,你给了一个初始矩阵,然后,你有进行了两个阶段的优化,那么他会保存三个结果,、

const auto * const transformParameterObject = filter->GetTransformParameterObject(); assert(transformParameterObject != nullptr); const auto & transformParameterMaps = transformParameterObject->GetParameterMaps(); assert(!transformParameterMaps.empty());

其中,这个transformParameterMaps 会保存所有的阶段结果。打印结果如下:

for (size_t i = 0; i < transformParameterMaps.size(); ++i) { std::cout << "\n========== Transform " << i << " ==========\n"; const auto& paramMap = transformParameterMaps[i]; for (const auto& kv : paramMap) { std::cout << kv.first << " : "; for (const auto& v : kv.second) { std::cout << v << " "; } std::cout << std::endl; } } ========== Transform 0 ========== CenterOfRotationPoint : -29.565856 43.373462 -43.645097 NumberOfParameters : 6 Transform : EulerTransform TransformParameters : 0.100167 -0.119756 -0.064229 21.029042 162.581471 -566.328174 ========== Transform 1 ========== CenterOfRotationPoint : -8.975933215363828 205.57272983636832 -610.0644672464044 CompressResultImage : false ComputeZYX : false DefaultPixelValue : 0 Direction : -1 0 0 0 -1 0 0 0 1 FinalBSplineInterpolationOrder : 3 FixedImageDimension : 3 FixedInternalImagePixelType : float HowToCombineTransforms : Compose Index : 0 0 0 InitialTransformParameterFileName : InitialTransformParameters.0.txt MovingImageDimension : 3 MovingInternalImagePixelType : float NumberOfParameters : 6 Origin : 39.60080925959355 107.540127428 -146.14509751623166 ResampleInterpolator : FinalBSplineInterpolator Resampler : DefaultResampler ResultImageFormat : mhd ResultImagePixelType : float Size : 168 156 83 Spacing : 0.8333333129999999 0.8333333129999999 2.5000000078431373 Transform : EulerTransform TransformParameters : -0.17161774953499787 0.04006955735100518 0.27931639772060396 -5.642834746343563 -0.152733217628487 43 1.1293263422699034 UseDirectionCosines : true

而我一开始用的试试transformParameterMaps.front,永远用的是第一个矩阵,也就是我的输入的初始化矩阵

最终结果怎么获取呢?

//////////////////////////////////////////////////// Eigen::Matrix4d T_final = Eigen::Matrix4d::Identity(); const auto & maps = transformParameterObject->GetParameterMaps(); for (size_t k = 0; k < maps.size(); ++k) { const auto & m = maps[k]; auto params = toDouble(m.at("TransformParameters")); auto center = toDouble(m.at("CenterOfRotationPoint")); std::vector<float> mat = buildTransformMatrix(params, center); Eigen::Matrix4d T; for (int i = 0; i < 16; ++i) T(i/4, i%4) = mat[i]; // ⚠️ 关键:按顺序累乘 T_final = T * T_final; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 6:00:38

MySQL音效数据库设计:优化AudioLDM-S生成结果的存储与检索

MySQL音效数据库设计&#xff1a;优化AudioLDM-S生成结果的存储与检索 1. 引言 音效生成技术正在改变内容创作的方式。AudioLDM-S这样的工具让用户只需输入一句话&#xff0c;就能在短时间内生成高质量的音效。但当你生成大量音效后&#xff0c;如何有效管理和检索这些音频文…

作者头像 李华
网站建设 2026/4/17 6:00:36

python responses

# 关于Python的responses库&#xff0c;你可能需要知道这些 在Python的Web开发世界里&#xff0c;requests库几乎无人不知&#xff0c;但它的“另一半”——responses库&#xff0c;却常常被忽视。今天就来聊聊这个看似配角实则重要的工具。 它到底是什么 responses不是一个独立…

作者头像 李华
网站建设 2026/4/17 6:00:23

互联网大厂Java求职面试实战:从Spring Boot到微服务与AI技术全解析

互联网大厂Java求职面试实战&#xff1a;从Spring Boot到微服务与AI技术全解析 场景介绍 本次模拟面试发生在一家知名互联网大厂&#xff0c;面试官严肃且专业&#xff0c;面试者是搞笑但有潜力的水货程序员谢飞机。面试围绕电商场景展开&#xff0c;从基础Java技术到复杂的微服…

作者头像 李华
网站建设 2026/4/17 6:00:15

从GUI Guider到RK3568:LVGL项目跨平台编译与部署实战

1. 为什么需要从GUI Guider到RK3568的移植&#xff1f; 第一次接触嵌入式GUI开发时&#xff0c;很多人会疑惑&#xff1a;为什么不能直接在开发板上设计界面&#xff1f;这个问题我也纠结了很久。直到真正上手做项目才发现&#xff0c;像RK3568这样的嵌入式平台资源有限&#x…

作者头像 李华
网站建设 2026/4/17 5:59:49

从模型到代码:基于2自由度PID的主动悬架系统全链路实现

1. 从零理解2自由度悬架系统 第一次接触车辆悬架系统时&#xff0c;我完全被那些专业术语搞晕了。直到有一天&#xff0c;我把汽车想象成骑自行车的人才恍然大悟。想象你正骑着自行车经过一段颠簸路面——你的身体相当于簧载质量&#xff0c;自行车架是非簧载质量&#xff0c;而…

作者头像 李华