前言
分块程序依然是基于ITK的,但是借助的辅助工具比较多,有一些还需要自己编译过后才能用,但是都可以在网上下载得到,先介绍一下工具MEPP
、SPHARM-PDM-master
和ParaView
这3个工具的获得,在介绍程序执行的具体步骤。
MEPP和SPHARM-PDM-master
- 这两个工具的编译过程在关于环境配置的一些事中有介绍。
- MEPP/build中的
mepp
和SPHARM-PDM-master/build/SPHARM-PDM-build中的GenParaMeshCLP
、ParaToSPHARMMeshCLP
、SegPostProcessCLP
的文件是我们最后需要的,用的时候拷贝到需要的地方就可以了。ParaView
- 这是个3维图像软件,从官网下载即可,如果是Linux版本的话,打开bin文件夹下的
paraView
即可,主要用来做3维文件的格式装换。分块程序执行步骤
先将nrrd格式的二值图像文件转化为nii格式的,转化的代码在此处获得:nrrd2nii。
将
GenParaMeshCLP
、ParaToSPHARMMeshCLP
、SegPostProcessCLP
和nii文件放到同一文件夹下,在此文件夹下运行GeneralMesh
脚本,脚本内容如下:#!/bin/bash
mkdir brain-segout
for ((a=0; a <= 19; a++))
do
./SegPostProcessCLP brain-$a.nii brain-segout/brain-$a-segout.vtk --space 1.5,1.5,1.5
done
mkdir brain-meshout
for ((a=0; a <= 19; a++))
do
./GenParaMeshCLP brain-segout/brain-$a-segout.vtk brain-meshout/brain-$a-para.vtk brain-meshout/brain-$a-surf.vtk --label 1
done
mkdir brain-align
for ((a=0; a <= 19; a++))
do
./ParaToSPHARMMeshCLP brain-meshout/brain-$a-para.vtk brain-meshout/brain-$a-surf.vtk brain-align/brain-$a
done
数据名字与数据个数随自己的数据情况修改。
执行这个脚本需要很长时间,待执行完之后,在
brain-align
文件加下会出现brain-$aSPHARM_ellalign.vtk
形式的文件,先用ParaView软件将该类型的文件挨个转化为.ply格式,然后用mepp软件将.ply文件转化为.off文件,在保存的时候会跳出两个提示框:Do you want to save colors?
、Do you want to save normals?
,都选择NO
就行,得到的.off 文件需要去掉第二行(mepp的注释)。进入meshSegmetation,该文件夹里有meshSeg.cpp等程序及CmakeList.txt,新建build文件夹,在build下面新建data和training两个文件夹,data里面放测试数据,training里面放训练数据,都是.off文件。
用
average.cpp
求data里面数据的平均值,根据数据的情况修改average.cpp
文件,会得到meanShape_liver.off
,将meanShape_liver.off
保存到meshSegmetation/build
中。在
meshSegmetation/build
中ccmake、make、./main后得到shapeVariation_Face.csv
和shapeVariation_Vertex.csv
,将这两个文件放到MEPP/build
中,打开mepp软件,用该软件打开meshSegmetation/build
中的meanShape_liver.off
文件,点击components——segmentation——VSA——Variation Segmentation,修改Region Number为要分的块数,数字不要太大,否则会崩掉,再点击components——segmentation——VSA——Face Label to Map,会得到’seg.csv’。将得到的seg.csv放入到meshSegmetation/build文件夹中,并在该文件夹中建
labels
、segs
和segsF
三个文件夹,注释掉meshSeg.cpp中的前3行有用代码,重新编译,运行main
./main
最终结果会出现在segsF文件中,用mepp软件打开便可以看到分块的情况。