【MITK】MITK中的数值型数据类型及其用法(Numeric MITK data types and their usage)

MITK中一些非常基本的数据类型,如mitk::Vector、mitk::Point和mitk::Matrix,以及它们之间的交互方法。

1 结构

之前版本的MITK中把所有基本类型都放在了mitkVector.h文件中,现在这个文件被拆分成了多个文件:
- mitkNumericConstants.h:包括基础常量如mitk::ScalarType和mitk::eps;
- mitkArray.h:将itk::FixedArrays(如itk::Point和itk::Vector)复制到实现了[]运算符(数组类型)的类型,如 普通旧数据类型(POD)或opencv向量
- mitkPoint.h:mitk::Point类,这是一个itk::Point,添加了ToArray()和Fill()成员,可以方便地从数组类型复制或复制到数组类型。在MITK中,一个点被认为是一个固定地集合位置,因此不能相加或相乘;
- mitkVector.h:mitk::Vector类,这是一个itk::Vector,但可以隐式转换为vnl_vector和vnl_vector_fixed。在MITK中,矢量表示方向,可以与标量相加或相乘;
- mitkMatrix.h:mitk::Matrix类,这是一个itk::Matrix,添加了ToArray()和Fill()成员,可以方便地从数组类型复制或复制到数组类型;
- mitkQuaternion.h:一个到vnl_quaternion的typedef;
- mitkAffineTransform3D.h:一个到itk::AffineGeometryFrame<ScalarType, 3>的typedef;
- mitkNumericTypes.h:这个文件是包含了上述所有数据类型头文件的头文件。
在这里插入图片描述
用于比较Points、Vectors、Matrices等的方法已经被移动到了相应的文件中,如比较两个vector只需使用mitkVector.h提供的Equal()方法。

2 数据类型之间的转换

mitk::Vector与vnl_vector之间的转换:

mitkVector3D  = vnlVector3D;
vnlVector3D_2 = mitkVector3D;

这种方法并不是对所有类型通用,但可以使用FillVector/FillPoint/FillMatrix成员函数来向数组类型转换:

cv::Vec3d cvVec3D;
mitkVector3D.ToArray(cvVec3D);
mitkVector3D_2.FillVector(cvVec3D);

没有从mitk::Point到mitk::Vector的隐式转换方法,因为这会与ITK中点和向量的概念冲突,如果想实现点与向量之间的转换,使用:

mitkVector3D  = mitkPoint3D.GetVectorFromOrigin();
mitkPoint3D_2 = mitkVector3D;  

更多的转换例子见下列文件:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值