脑手术医学图像软件二次开发中几何变换的实现

2020-09-10 17:11李珣王晓东
客联 2020年10期
关键词:二次开发

李珣 王晓东

【摘 要】本文主要介绍在脑手术医学图像软件的二次开发中,关于医学图像配准相关几何变换算法的实现,开发工具为Visual C++6.0。

【关键词】二次开发;医学图像配准;几何变换;

一、引言

近两个世纪以来随着医学成像技术不断成熟,临床医学逐渐具备两大类图像信息,一类是解剖结構图像,包括计算机断层成像(CT)、磁共振成像(MRI)和B超等;另一类是功能图像,包括单光子发射断层成像(SPECT)和正电子发射断层成像(PET)等。这两类图像各有优势,但是由于成像原理不同,造成图像信息的局限性。如果单独使用某一类图像,其效果往往并不理想。而多种图像的利用,又必须借助医生的空间构想和推测,去综合判断他们所要的信息,其准确性受主观影响,而且可能会忽略某些重要信息。解决这个问题的最有效方法就是以医学图像配准技术为基础,利用信息融合技术,将这两种图像结合起来,利用各自的信息优势,在一幅图像上同时表达来自人体的多方面信息。

目前在传统的脑手术医学图像软件中,其前端探测点的坐标是由医生借助工具得到的。在进行医学图像软件的二次开发时,可以采用机械手自动获取探测点的坐标。但是由于医学图像配准的图像坐标系发生了改变,需要设计新的几何变换算法。

二、类的设计

空间映射T描述了一幅图像中的位置与另一幅图像中的相应位置之间的关系。这种映射有可能是二维(2D)和三维(3D)之间的相互转换。由于医学图像中的数据通常为各自异性,即切片间距与切片上像素间距不同,因此配准过程中的几何变换需要在物理空间进行。相关公式可以描述为:物理坐标=像素坐标×像素间距+图像原点坐标

几何变换的主要作用是,将参考图像空间中像素点映射到浮动图像空间中。其类型一般有缩放变换(mitkSacaleTransform)、平移变换(mitkTranslationTransform)、刚体变换(mitkRigidTransform)、相似性变换(mitkSimilarityTransform)和仿射变换(mitkAffineTransform)等。各种变换都是由一组变换参数t来表示,例如刚性变换可以用3个坐标轴方向上的平移参数,和3个绕坐标轴旋转角度共6个参数来表示。具体的变换算法由派生类Transform实现,其抽象类的框架图如图1所示。

三、算法实现

对于各种变换算法,其用户接口都是一致的。设置变换参数的成员函数为GetJacobian,其函数原型是:

virtual const MatrixType & GetJacobian(const VectorIndexType& inPoint);

设置变换图像数据大小的成员函数为SetRegion,其函数原型是:

void SetRegion(const VectorIndexType& r);

获取像素(x,y,z)变换后的Jacobian矩阵的成员函数为GetJacobian,其函数原型是:

virtual const MatrixType & GetJacobian(const VectorParameterType& inPoint);

获取4×4的变换矩阵的成员函数为GetTransformMatrix,其函数原型是:

mitkMatrixType * GetTransformMatrix();

计算(x,y,z)经几何变换后的坐标的成员函数为TransformPoint,其函数原型是:

virtual void TransformPoint(const VectorIndexType & inPoint,VectorIndexType & outPoint);

具体的变换算法实现将在派生类中,由virtual bool Excute的重载函数实现。在变换参数和图像数据大小设置完成之后,即可通过Run函数调用Excute函数,从而完成相关的变换工作。变换结果可以通过成员函数GetOutput得到。变换核心函数的实现代码如下:

if(!m_FlagComputeTransform)

this->ComputeTransformMatrix();

mitkMatrixScalarType *m=*m_TransformMatrix;

if(m_SpaceDimension==2)

…………

在基于特征的图像配准过程中,当得到了点集间的对应关系并确定了几何变换模型之后,下一步是要知道两个点集所在的子空间的映射关系函数,这可以利用解线性方程组或者线性回归等数学方法得到。在大多数情况下,更应该关心两个图像子空间的旋转关系,例如刚性配准可以利用奇异值分解(SVD)或者单位四元数的方法来计算旋转变换矩阵。对于这类问题,Umeyama利用拉格朗日乘子法给出了一个严格的闭形解法。具体步骤为以下三步:(1)计算正交矩阵。(2)对所得矩阵进行SVD分解。(3)计算点集间的旋转矩阵,以及平移参数和缩放参数。在MITK中实现了两种点集变换估计器,它们分别是mitkPointSetSVDEstimator和mitkPointSetQuaternionEstimator。

四、结语

在数字医学影像时代,无论是哪一种医学影像,想要在临床诊断和治疗中发挥作用,都离不开成像算法和相关处理软件的支持。医学图像处理与分析主要包括医学图像的分割、配准、融合和可视化等技术,其意义在于发掘图像中的有用信息并进行展现。在医学图像处理方面目前已经有了非常多的成熟的算法,而且还在不断涌现新的算法。自改革开放以来,我国从国外进口大量高精密的医疗设备,并在临床医疗上广泛使用。然而由于缺乏配套的开发设备,也没有形成系统的跨学科开发研究的机制。这就使得我国对高精密度医疗设备的利用率不足,以及研发升级的速度缓慢。软件的编制依赖于对科学问题的数学描述和计算方法,目前对计算模型和计算方法的研究和设计,已成为制约医学影像处理技术进步的首要因素。

【参考文献】

[1] 田捷. 医学成像与医学图像处理教程[M].北京:清华大学出版社, 2018.

[2] S Umeyama. Least-squares estimation of transformation parameters between two point atterns. IEEE Transactions on Pattern Analysis and Machine Intelligece,1991,13(4): 376-380.

猜你喜欢
二次开发
初中生物教材插图的分类及二次开发
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
例谈课本习题的“二次开发”
二次开发教材 拓展学生思维
浅谈AM系统铁舾建模的实用二次开发
高中物理教材导入的“二次开发”
单机游戏的二次开发