[Insight-users] Level Set Chan and Vese with 0 iterations

Inspiracionv inspiracionv at gmail.com
Tue Feb 25 10:19:49 EST 2014


Hi all,

I was using a level set chan and vese and it worked well.

I started  a new software where i need this and i use the same code but in
this case the level set don't do iterations. 

Here is  the code :

/ int rectX = centreX-150;
 int rectY = centreY-150;

    int width, height;
    width = height = 300;

    //Cut the image 
    ImageType::Pointer feature = MyITKFilter::crop(image,rectX,rectY,width,
height);
    //Create FastMarching
    ImageType::Pointer phi = MyITKFilter::phiCV(image,150,150,50);


    typedef itk::ScalarChanAndVeseLevelSetFunctionData< ImageType,ImageType
> DataHelperType;
    typedef itk::ConstrainedRegionBasedLevelSetFunctionSharedData<ImageType,
ImageType, DataHelperType > SharedDataHelperType;
    typedef itk::ScalarChanAndVeseLevelSetFunction< ImageType, ImageType,
SharedDataHelperType > LevelSetFunctionType;
    typedef itk::AtanRegularizedHeavisideStepFunction< PixelType,PixelType > 
DomainFunctionType;
    typedef
itk::ScalarChanAndVeseDenseLevelSetImageFilter<ImageType,ImageType,
ImageType, LevelSetFunctionType, SharedDataHelperType > MultiLevelSetType;

    MultiLevelSetType::Pointer levelSetFilter;
    levelSetFilter = MultiLevelSetType::New();

    DomainFunctionType::Pointer domainFunction = DomainFunctionType::New();
    domainFunction->SetEpsilon( 0.1 );

    ImageType::SizeType regionSize;
    regionSize[0] = width;
    regionSize[1] = height;

    ImageType::IndexType regionIndex;
    regionIndex[0] = 0;
    regionIndex[1] = 0;

    ImageType::RegionType region;
    region.SetSize(regionSize);
    region.SetIndex(regionIndex);


    feature->SetBufferedRegion(region);
    phi->SetRegions(region);



    levelSetFilter->SetFunctionCount( 1 );
    levelSetFilter->SetFeatureImage( image );
    levelSetFilter->SetLevelSet( 0, phi );
    levelSetFilter->SetNumberOfIterations( 100. );
    levelSetFilter->SetMaximumRMSError( 0. );
    levelSetFilter->SetUseImageSpacing( 1 );
    levelSetFilter->SetInPlace( false );
    levelSetFilter->GetDifferenceFunction(0)->SetDomainFunction(
domainFunction );
    levelSetFilter->GetDifferenceFunction(0)->SetCurvatureWeight( 0. );
    levelSetFilter->GetDifferenceFunction(0)->SetAreaWeight( 0. );
   
levelSetFilter->GetDifferenceFunction(0)->SetReinitializationSmoothingWeight(
0. );
    levelSetFilter->GetDifferenceFunction(0)->SetVolumeMatchingWeight( 0. );
    levelSetFilter->GetDifferenceFunction(0)->SetVolume( 0. );
    levelSetFilter->GetDifferenceFunction(0)->SetLambda1( 2.0 );
    levelSetFilter->GetDifferenceFunction(0)->SetLambda2( 1.0 );

    QObserver *myCommand = new QObserver();
    myCommand->setMax(500);
    levelSetFilter->AddObserver(itk::ProgressEvent(), myCommand);



    try
    {
        levelSetFilter->Update();
    }
    catch( itk::ExceptionObject & excep )
    {
        std::cerr << "Exception caught !" << std::endl;
        std::cerr << excep << std::endl;
    }   /



--
View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Level-Set-Chan-and-Vese-with-0-iterations-tp7585074.html
Sent from the ITK Insight Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list