Multi-Resolution 多分辨策略示例

来源:互联网 发布:霓虹灯设计软件 编辑:程序博客网 时间:2024/04/25 00:17

/*
*多分辨策略,或称为多分辨尺度, 是图像配准中广泛应用的一种方法
*用于加快计算速度, 改进配准精度, 以及配准的健壮性
*基本思想为: 首先使用一种粗糙的尺度对少量的图像像素进行处理,然后在下一层使用一种精确的
*尺度, 并用上一层的结果对其参数进行初始化. 迭代该过程, 直到达到最精确的尺度.
*这种由粗到细, 在大尺度上看整体, 在小尺度上看细节的方法能够极大程度地提高配准成功率
*本例演示了使用:itk::MultiResolutionImageRegistrationMethod 解决一个简单的图像配准问题
*采用多分辨策略进行图像配准, 需要两个图像金字塔组件, 用来创建向下采样的图像序列.
*/

ITK 提供了一个兼容的多分辨策略配准框架,该框架有另外两个组件:固定图像及浮动图像金字塔,用于对固定图像及浮动图像向下采样。图像金字塔根据用户定义的收缩因子对图像进行平滑及二次采样处理。如下图所示:

pyramid

多分辨策略通过由粗到精的方式解决配准问题,如下图所示。首先对固定及浮动图像金字塔的第一层进行处理,使用一种粗尺度方法,然后用其结果初始化下一层较精细的变换参数,循环,直至达到最精确的结果。

multi

 

 

CMakelists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.4)

PROJECT(MultiResImageRegistration1)

FIND_PACKAGE(ITK)

IF(ITK_FOUND)
    INCLUDE(${ITK_USE_FILE})

ELSE(ITK_FOUND)
    MESSAGE(FATAL_ERROR
            "ITK not found. Please set ITK_DIR.")
ENDIF(ITK_FOUND)

ADD_EXECUTABLE(MultiResImageRegistration1 MultiResImageRegistration1.cxx )

TARGET_LINK_LIBRARIES(MultiResImageRegistration1 ITKIO ITKNumerics)

测试图像如下:固定图像,浮动图像

 BrainT1SliceBorder20 BrainProtonDensitySliceShifted13x17y

结果如下:配准后图像、配准前浮动图像与固定图像差异,配准后的浮动图像与固定图像的差异

out2 befor after

 
程序中我们设置了最大层数为 3,配准过程处理了 3 层后成功并停止,最终参数为:

>MultiResImageRegistration1.exe fixed.png moving.png out.png 100 befor.png after.png

-------------------------------------
MultiResolution Level : 0

0   -0.90675   [15.6488, 3.33401]
。。。。
。。。。
73   -2.2638   [13.1505, 17.1896]
74   -2.2659   [13.1597, 17.1936]
-------------------------------------
MultiResolution Level : 1

0   -2.18173   [10.1725, 14.5334]
1   -1.29464   [13.4157, 16.0959]
2   -1.91879   [11.6505, 18.8127]
。。。。。

102   -2.25089   [13.0004, 16.9996]
103   -2.25085   [12.9996, 17.0003]
-------------------------------------

-------------------------------------
MultiResolution Level : 2

0   -2.80063   [13.9996, 17.0093]
1   -1.45265   [13.0998, 16.992]
2   -2.56817   [12.2098, 17.1264]
3   -1.61491   [13.0139, 17.0287]
4   -2.7529   [12.6293, 16.4095]
5   -1.71975   [12.943, 16.9857]
6   -2.66095   [13.5739, 17.1659]
7   -1.80306   [13.0141, 16.978]
8   -2.7611   [12.6566, 17.448]
9   -1.84529   [12.9994, 17.0419]
。。。。。

。。。。。
109   -2.80063   [12.9998, 17.0004]
110   -2.80062   [12.9998, 17.0003]
111   -2.80062   [12.9998, 17.0003]
Result =
Translation X = 12.9998
Translation Y = 17.0003
Iterations    = 113
Metric value  = -2.80062

可以看到,浮动图像平移了大约(13, 17)。

 

原创粉丝点击