[Insight-users] I want to segment blood vessels from a series of picture with ITK , please help me

Matt McCormick matt.mccormick at kitware.com
Sat Aug 3 17:05:33 EDT 2013


Hi zhq,

It may be that you are running out of memory.  If that is the case,
streaming can be applied to process the image in small chunks.  This can be
achived with the StreamingImageFilter [1] or SetNumberOfStreamDivisions [2]
on ImageFileWriter.

Thanks,
Matt

[1] http://www.itk.org/Doxygen/html/classitk_1_1StreamingImageFilter.html
[2]
http://www.itk.org/Doxygen/html/classitk_1_1ImageFileWriter.html#a3dc8330ca50ef60844a15c1a81cc6ade

On Fri, Aug 2, 2013 at 8:46 PM, zhq <15891495523 at 126.com> wrote:

> Hello :
>      I must make an apology for my yesterday email .
>      With referencing to the [1] , I can successfully segment blood
> vessels . Thank you very much . Although the result isn't very well , it
> help me a lot .
>      But , there still a problem . I have 100 dicom files , and I thought
> read 100 files , and then segment those files . But , if I read more then
> 43 files , an error happened .
>      My code and the error are shown as follow .
>
> my code :
> //use the itkHessian3DToVesselnessMeasureImageFilter method to segment
> //bright blood vessel
> #include "itkImage.h"
> #include "itkImageSeriesReader.h"
> #include "itkImageFileWriter.h"
> #include "itkNumericSeriesFileNames.h"
> #include "itkGDCMImageIO.h"
> #include <Windows.h>
> #include "itkShiftScaleImageFilter.h"
> #include "itkHessianRecursiveGaussianImageFilter.h"
> #include "itkHessian3DToVesselnessMeasureImageFilter.h"
> void main()
> {
> typedef unsigned short PixelType ;
> const unsigned int Dimension = 3;
> typedef itk::Image<PixelType , Dimension> ImageType ;
> typedef itk::ImageSeriesReader<ImageType> ReaderType ;
> //there still some parameters can be set
> typedef itk::NumericSeriesFileNames NameGeneratorType ;
> NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
>
> nameGenerator->SetSeriesFormat("C:\\Users\\zhq\\Desktop\\data\\SNAP_CR\\E403434298\\E403434298S1901I%3d.dcm");
> nameGenerator->SetStartIndex(301);
> nameGenerator->SetEndIndex(350);
> nameGenerator->SetIncrementIndex(1);
>  ReaderType::Pointer reader = ReaderType::New();
> reader->SetImageIO(itk::GDCMImageIO::New());
> reader->SetFileNames(nameGenerator->GetFileNames());
> reader->Update();
> std::cout<<"reader updata"<<std::endl;
>
> typedef itk::Image<double,3> doubleImageType ;
> typedef itk::ShiftScaleImageFilter<ImageType,doubleImageType> ShiftFilter
> ;
> ShiftFilter::Pointer filter = ShiftFilter::New();
> filter->SetInput(reader->GetOutput());
> filter->Update();
> std::cout<<"filter updata"<<std::endl ;
>
> typedef itk::HessianRecursiveGaussianImageFilter<doubleImageType>
> HessianFilterType;
> HessianFilterType::Pointer hessianFilter = HessianFilterType::New();
> hessianFilter->SetInput(filter->GetOutput());
> hessianFilter->Update();
> std::cout<<"hessian Filter"<<std::endl ;
> //if read 44 files , there is a error
> typedef itk::Hessian3DToVesselnessMeasureImageFilter<float>
> VesselMeasureFilterType ;
> VesselMeasureFilterType::Pointer vesselFilter =
> VesselMeasureFilterType::New();
> vesselFilter->SetInput(hessianFilter->GetOutput());
> vesselFilter->Update();
> std::cout<<"vesselFilter update"<<std::endl;
>
> typedef itk::ImageFileWriter< itk::Image<float,3> > WriterType ;
> WriterType::Pointer writer = WriterType::New();
> writer->SetInput(vesselFilter->GetOutput());
> writer->SetFileName("C:\\Users\\zhq\\Desktop\\mydata.vtk");
> writer->Update();
> std::cout<<"writer updata"<<std::endl ;
>
> system("pause");
> }
>
>
>
>
>
>
> At 2013-08-02 11:24:29,"Matt McCormick" <matt.mccormick at kitware.com
> > wrote:
> >Hi,
> >
> >Here[1] is a very simple brain vessel segmentation example.
> >
> >For more advanced vessel segmentation methods, you may want to try
> >TubeTK[2], which supports analysis and visualization with the ITK and
> >VTK based 3DSlicer[3].
> >
> >Thanks,
> >Matt
> >
> >[1] http://itk.org/ITKExamples/src/Filtering/ImageFeature/SegmentBloodVessels/Documentation.html
>
> >[2] http://tubetk.org/
> >[3] http://slicer.org/
> >
> >On Fri, Jul 26, 2013 at 9:19 PM, 章强 <15891495523 at 126.com> wrote:
> >> Hello :
> >>       there is a series of dcm format files which is the results of scanning
> >> the brain . I want to segment blood vessels from these files with ITK , and
> >> show it with VTK . Please give me a simple case . I have a  problem with
> >> this project .
> >>       how can I segment a specified region ? I know that ITK provide some
> >> segmentation algorithm  , but they need the Index of seeds . Can I show the
> >> picture with VTK fristly ,and then point out a seed in the picture ? And if
> >> there are some algorithms which can segment volume data ?
> >>
> >>
> >> 来自网易手机号码邮箱了解更多
> >>
> >> _____________________________________
> >> Powered by www.kitware.com
> >>
> >> Visit other Kitware open-source projects at
> >> http://www.kitware.com/opensource/opensource.html
> >>
> >> Kitware offers ITK Training Courses, for more information visit:
> >> http://www.kitware.com/products/protraining.php
> >>
> >> Please keep messages on-topic and check the ITK FAQ at:
> >> http://www.itk.org/Wiki/ITK_FAQ
> >>
> >> Follow this link to subscribe/unsubscribe:
> >> http://www.itk.org/mailman/listinfo/insight-users
> >>
>
>
>
> 来自网易手机号码邮箱了解更多 <http://shouji.163.com>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130803/e4c28fc8/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 51023 bytes
Desc: not available
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130803/e4c28fc8/attachment.jpeg>


More information about the Insight-users mailing list