十ITK例程-医疗图像配准的HelloWorld程序

Posted fantianliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十ITK例程-医疗图像配准的HelloWorld程序相关的知识,希望对你有一定的参考价值。

一、说明

  医疗图像配准是ITK的一个重要内容,而我们今天想要说的一个程序则相当于是其中的HelloWorld程序。

  程序源码位置:

InsightToolkit-5.0.1ExamplesRegistrationITKv4ImageRegistration1.cxx

 二、ITK的配准框架

  技术图片

三、程序的主要思路

  程序的主要思路可以用如下的框图来表示:

  技术图片

  其中我们需要输入输出的文件如下:

  技术图片

 

   但是在这里,为了便于程序阅读,这个时候我把所有的参数全部都写在了程序里面。

四、工程构建

 1-构建工程

  按照之前的方法,利用已经有的源文件构建一个工程,并且添加属性表和动态链接库文件。

 2-程序修改

  源码程序这个时候不是能用的,需要稍作修改

  2.1将每一个argv参数的位置直接修改为文件名

  参数含义如下:

参数 内容
argv[1] 参考图片
argv[2] 待配准图片
argv[3] 输出待配准图片(以参考图片格式输出)
argv[4] 两个输入图片配准之后的差值图片
argv[5] 两个输入图片未配准的时候的差值图片

   实际程序里面修改:

//参考图片位置
fixedImageReader->SetFileName("D:FilesSetupITKInsightToolkit-5.0.1ExamplesDataBrainProtonDensitySliceBorder20.png"); //待配准图片位置
movingImageReader
->SetFileName("D:FilesSetupITKInsightToolkit-5.0.1ExamplesDataBrainProtonDensitySliceShifted13x17y.png");
//文件写入位置,这三张图片全部都写入到本工程目录下
writer->SetFileName("D:FilesITKFilesITK_6_RegistrationDataOutputDataMoving13x17yInputType.png");
writer2->SetFileName("D:FilesITKFilesITK_6_RegistrationDataOutputDataMoving13x17yInputType.png");
writer2->SetFileName("D:FilesITKFilesITK_6_RegistrationDataOutputDataDifferenceBeforeRegistration.png");

  2.2添加头文件

  因为要阅读png文件,所以需要添加png文件的IOFactory

#include "itkPNGImageIOFactory.h"

  初始化IOFactory:

itk::PNGImageIOFactory::RegisterOneFactory();

  2.3添加命令行参数

  因为程序里面有对输入参数的判断,当我们修改以后,还是要满足输入参数的个数(虽然我们已经不用这个参数了,但是这个判断条件是程序运行的触发条件)

  打开调试-属性:

  技术图片

 

   在调试-命令参数里面输入六个随意数字,以空格间隔:

 技术图片

 五、运行结果

  得到的几张图片与参考书吻合:

  技术图片

 

      控制台输出如下:

  技术图片

 

     可以看到,一共经过了36次迭代,最后计算出来的测度函数值为0.0007,然后得到的偏移量是(13,17),和图片的真实偏移量是符合的

六、参考

  InsightSoftwareGuide-Book2-5.0.1 Page189(书籍页码)

七、问题

  今天出了一个糗事,我在构建工程的时候,由于偷懒,直接复制的另外一个工程,然后程序都已经修改好了,不论怎么运行,都没有输出。

  还以为是函数复制出了问题,但是这个时候我才发现,我根本没有把这个main.cpp文件添加到工程里面。

  害的我特地对比了一下是不是函数复制的时候出了问题。

  ......

  不注重细节害死人啊。

以上是关于十ITK例程-医疗图像配准的HelloWorld程序的主要内容,如果未能解决你的问题,请参考以下文章

图像配准的恶魔算法(用于假人)

如何通过CT三维图像得到DRR

基于超像素分割和图像配准的深度图像修复方法

图像配准之医学图像配准

基于全景图像与激光点云配准的彩色点云生成算法(2014年文章)

ITK-Snap 处理医疗影像