利用ITK实现LevelSet获取外表面的方法

原帖:http://moonbelle.blogbus.com/logs/77142474.html

 利用ITK实现LevelSet获取外表面的方法_第1张图片

 

经过组合的分割后,最后使用narrowbandLevelset,tatal band取15。

也可根据分割好的2值图像,将其边缘设为0,内部设为-1,外部设为1-》在用ITK
GAC 的levelset需要2个输入image:input Levelset和featureImage(即SpeedFunction)
InputLevelSet
1.之前分割好的narrowbandLevelset结果
2.
featureImage
1.用之前分割好的narrowbandLevelset结果求内表面附近的归一化梯度方向(下文详述)
2.根据这个方向在原图中对应位置计算方向导数。(卷积模板如何设置需仔细考虑),得到方向导数image
3.->Sigmoid 1 (-4.0 0) (作用是将导数<0的部分放大,具体参数还需根据方向导数的数值大小、范围来调整)
4.->Sigmoid 2 (0.04 0.2) (文献中此处用0.02 0.48)
5.->Invert后即可作为featureImage
GAC filter的设置
geodesicActiveContour->SetAdvectionScaling( atof(argv[8])); //0.3
geodesicActiveContour->SetPropagationScaling( atof(argv[9]) ); //0.2
geodesicActiveContour->SetCurvatureScaling( atof(argv[10])); //0.3
geodesicActiveContour->SetReverseExpansionDirection(true); //一开始没有加这项,用文章的参数反而表面越跑越小了
geodesicActiveContour->SetMaximumRMSError( 0.02 ); //默认
geodesicActiveContour->SetNumberOfIterations( 200 );
Work
1、仔细研读paper原文,咀嚼关键单词含义(例如关于2个sigmoid函数连接问题,方向梯度求取的方法,levelset方法应用细节)
2、参考ITK Guide和document,不仅仅掌握ITK现有方法的应用,更进一步创造自定义的iterator和filter
3、搜索ITK FAQ,找到相关咨询的解答。
4、参考ITK example中具体的代码实现。
Reference :
1、Automatic Correction of Level Set Based Subvoxel Precise Centerlines for Virtual Colonoscopy Using the Colon Outer Wall
2、Detection of Colon Wall Outer Boundary and Segmentation of the Colon Wall Based on Level Set Methods
===(关于featureImage的第1、2步)===================================================================================
1.计算图像中的内表面附近各点N归一化梯度方向:使用3个方向的微分算子得到G= (Gx,Gy,Gz).将其归一化g(gx,gy,gz)=(Gx,Gy,Gz)/||(Gx,Gy,Gz)||
2.计算N+g点和N-g点的灰度(K+)和(K-)。
3.方向梯度D = [(K+)-(K-)]/2
===()===================================================================================
===(以前的理解记录)===================================================================================
根据Automatic Correction of Level Set 和Detection of Colon Wall Outer Boundary文章介绍,尝试了itk的levelset搜索outerwall的方法。
目前参数还没调好。
对文献中方法的理解:
1、通过普通分割方法获得内表面分割集。
2、将此分割集计算3D方向函数
3、在内表面分割的Levelset结果中求内表面附近(narrowband15)各点梯度方向,根据这个方向计算方向差分。后应用2个 sigmoid滤波器。强化出图中DGM最低的区域,并且反相,就变成-DGM最大的区域。使levelset停在这个区域,获得outerwall
需解决的问题:
1、如何实现3D的levelset->Dimension设为3,就可以了
2、3D方向函数
3、speed function中alpha和beta的具体参数。连用2个sigmoid滤波器,实现。

你可能感兴趣的:(利用ITK实现LevelSet获取外表面的方法)