itk中做mask的方法如下:
using MaskFilterType = itk::MaskImageFilter< InputImageType, MaskImageType, OutputImageType >;
MaskFilterType::Pointer maskFilter = MaskFilterType::New();
maskFilter->SetInput(reader->GetOutput());
maskFilter->SetMaskImage(mask);
maskFilter->update();
对于3D图像切片再还原,有两种思路:
- 用
SliceBySliceImageFilter - 先用
ExtractImageFilter切片,然后做Mask,再用JoinImageFilter合并
第一种方法可以参考:itk :: SliceBySliceImageFilter
我在用这个filter的时候,出来的结果一直不对。估计是没有处理好多输入的问题。
第二种方法成功:
for (int i = 0; i < size; i++)
{
...
using MaskFilterType = itk::MaskImageFilter< ImageTypeSlice, ImageTypeSlice, ImageTypeSlice >;
MaskFilterType::Pointer maskFilter = MaskFilterType::New();
maskFilter->SetInput(imageSlice);
maskFilter->SetMaskImage(maskSlice);
maskFilter->Update();
joinFilter->SetInput(i, maskFilter->GetOutput());
joinFilter->Update();
}
// 最后set一下spacing 和 origin
joinFilter->SetSpacing(0.625);
joinFilter->Update();
本文介绍使用ITK库进行3D图像Mask处理的两种方法:一是利用SliceBySliceImageFilter,但可能存在多输入处理问题;二是通过ExtractImageFilter切片,应用MaskImageFilter,再用JoinImageFilter合并,此方法已验证可行。
576

被折叠的 条评论
为什么被折叠?



