[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