今天将分享人体血管两点间最小路径提取案例。
1、最小路径提取算法 最小路径提取算法在很多领域都有广泛应用,医学图像分析,机器人导航等。20 08年来自昆士兰科技大学的Dan Mueller开源了基于Fast Marching方式的最小路径提取算法,原理:利用 Fast Marching到达函数T的梯度是与波前正交的事实来求解仅有一个的局部最小值,这也是全局最小值。 通过从给定种子(路径终点)反向传播到起点来提取最小路径。起点和终点是隐式嵌入在T中的,反向传播可以通过梯度下降和正阶梯度下降来实现。
2、使用ITK函数来实现最小路径提取算法 Dan Mueller写了基于ITK的最小路径提取算法,C++源码下载请见原文链接。 该函数使用时需要有三个输入,(1)、有意义的速度函数来生成到达函数,一般速度函数是归一化(0-1)的原始图像; (2)、起点(一个),终点(一个)和航点(路径必须经过其附近,多个)组成的路径信息; (3)、 优化器,其沿着到达函数垂直于Fast Marching面方向进行优化。 该函数既可以在C++中使用,也可以在Python中使用,下面将给出C++使用例子,并给出如何在Python上安装。 C++代码:
![68ffa7ae1e9ac1cc9148f40fbd879d25.png](https://i-blog.csdnimg.cn/blog_migrate/15ce60fbee78fd51159f484144e76d4f.jpeg)
// General includes#include #include // ITK includes#include "itkNumericTraits.h"#include "itkImage.h"#include "itkImageFileReader.h"#include "itkImageFileWriter.h"#include "itkPolyLineParametricPath.h"#include "itkNearestNeighborInterpolateImageFunction.h"#include "itkLinearInterpolateImageFunction.h"#include "itkArrivalFunctionToPathFilter.h"#include "itkSpeedF