<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><br><br>--- Ella Maria Kadas <i>&lt;ella_kadas@yahoo.com&gt;</i> schrieb am <b>Fr, 11.2.2011:<br></b><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><b><br>Von: Ella Maria Kadas &lt;ella_kadas@yahoo.com&gt;<br>Betreff: Re: [Insight-users] Help with GeodesicActiveContourImageFilter --&gt; Modification to example code does not seem to work<br>An: "Vimal Singh" &lt;vimal@mail.utexas.edu&gt;<br>Datum: Freitag, 11. Februar, 2011 02:05 Uhr<br><br></b><div id="yiv578554426"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font: inherit;" valign="top">Hi,<br><br>I am trying to use this filter for a plugin n Osirix for lesion detection in MRT images.<br>ItkImageImporter is a itk wrap for the dicom images read with Osirix. <br>And the seed point in taken from a mouse klick in the viewer from
 Osirix.<br>I already used the ConnectedThresholdFilter but i am not really satisfied with the results.<br>I also don;t really know how to retrieve from the writer the information to create Roi<br>For the Connected Threshold Filter i used<br><br><br>&nbsp;&nbsp;&nbsp; typedef float InternalPixelType;<br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; InternalPixelType, 3 &gt; InternalImageType; <br>&nbsp;&nbsp;&nbsp; // Char Output image<br>&nbsp;&nbsp;&nbsp; typedef unsigned char OutputPixelType;<br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; OutputPixelType, 3 &gt; OutputImageType;<br>&nbsp;&nbsp;&nbsp; // Type
 Caster<br>&nbsp;&nbsp;&nbsp; typedef itk::CastImageFilter&lt; InternalImageType, OutputImageType &gt; CastingFilterType;<br>&nbsp;&nbsp;&nbsp; CastingFilterType::Pointer caster = CastingFilterType::New();<br>//.....<br>&nbsp;&nbsp;&nbsp; caster-&gt;SetInput(thresholdFilter-&gt;GetOutput());&nbsp;&nbsp;&nbsp; // &lt;- FLOAT TO CHAR<br>NSLog(@"RegionGrowing starts...");<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; caster-&gt;Update();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; excep )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"RegionGrowing failed...");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; NSLog(@"Done...");<br>//...<br>unsigned char *buff = caster-&gt;GetOutput()-&gt;GetBufferPointer();<br>ROI *theNewROI = [[ROI alloc]&nbsp;&nbsp;&nbsp; initWithTexture:buff<br>&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; textWidth:buffWidth<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; textHeight:buffHeight<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; textName:newname<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; positionX:0<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; positionY:0<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; spacingX:[[[srcViewer imageView] curDCM] pixelSpacingX]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; spacingY:[[[srcViewer imageView] curDCM] pixelSpacingY]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; imageOrigin:NSMakePoint([[[srcViewer imageView] curDCM] originX], [[[srcViewer imageView] curDCM] originY])];<br><br><br><br>The code is for GeodesicActiveContours is :<br><br><br><br>@implementation ActiveContours<br><br>- (id) initWith :(ViewerController*) v&nbsp; :(int) slice {<br>&nbsp;&nbsp;&nbsp; if (self = [super init])<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; itkImage = [[Importer alloc]Create:[v pixList] slice:slice volume:[v volumePtr]];<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;
 return self;<br>}<br><br>-(void) dealloc<br>{<br>&nbsp;&nbsp;&nbsp; [itkImage release];<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; [super dealloc];<br>}<br><br>- (void) ActiveContour3D:(ViewerController *)sourceV :(int)slice :(NSPoint)startingPoint :(NSString*)newname<br>{<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br><br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef float InternalPixelType;<br>&nbsp;&nbsp;&nbsp; const unsigned int Dimension = 3; <br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; InternalPixelType, Dimension &gt; InternalImageType;<br>&nbsp;&nbsp;&nbsp; typedef itk::OrientedImage&lt; PixelType, Dimension &gt; ImageType;<br>&nbsp;&nbsp;&nbsp; typedef itk::ImageSeriesReader&lt; ImageType &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReaderType;<br>&nbsp;&nbsp;&nbsp; ReaderType::Pointer reader = ReaderType::New();<br>&nbsp;&nbsp;&nbsp; typedef itk::GDCMImageIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageIOType;<br>&nbsp;&nbsp;&nbsp;
 ImageIOType::Pointer dicomIO = ImageIOType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; reader-&gt;SetImageIO( dicomIO );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef unsigned char OutputPixelType;<br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; OutputPixelType, Dimension &gt; OutputImageType;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef itk::BinaryThresholdImageFilter&lt;<br>&nbsp;&nbsp;&nbsp; InternalImageType,<br>&nbsp;&nbsp;&nbsp; OutputImageType &gt; ThresholdingFilterType;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; ThresholdingFilterType::Pointer thresholder = ThresholdingFilterType::New();<br>&nbsp;&nbsp;&nbsp; //I supose here is the problem in settin the lower and Upper threshold for thresholder. the timestep=upperThreshold<br>&nbsp;&nbsp;&nbsp; //in the userGuide should come from the fastmarching Filter??????<br>&nbsp;&nbsp;&nbsp; thresholder-&gt;SetLowerThreshold( -1000.0
 );<br>&nbsp;&nbsp;&nbsp; thresholder-&gt;SetUpperThreshold( 0.0 );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; thresholder-&gt;SetOutsideValue( 0 );<br>&nbsp;&nbsp;&nbsp; thresholder-&gt;SetInsideValue( 255 );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; //typedef itk::ImageFileReader&lt; InternalImageType &gt; ReaderType;<br>&nbsp;&nbsp;&nbsp; typedef itk::GDCMImageIO ImageIOType;<br>&nbsp;&nbsp;&nbsp; ImageIOType::Pointer gdcmImageIO = ImageIOType::New();<br>&nbsp;&nbsp;&nbsp; typedef itk::VTKImageIO VTKIOType;<br>&nbsp;&nbsp;&nbsp; VTKIOType::Pointer vtkIO = VTKIOType::New();<br>&nbsp;&nbsp;&nbsp; typedef itk::GiplImageIO GiplIOType;<br>&nbsp;&nbsp;&nbsp; GiplIOType::Pointer giplIO = GiplIOType::New(); <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef itk::ImageFileWriter&lt; OutputImageType &gt; WriterType; <br>&nbsp;&nbsp;&nbsp; WriterType::Pointer writer = WriterType::New();<br>&nbsp;&nbsp;&nbsp; char *name =
 "volume_dataset";<br>&nbsp;&nbsp;&nbsp; writer-&gt;SetFileName(name);<br>&nbsp;&nbsp;&nbsp; writer-&gt;SetImageIO(gdcmImageIO);<br>&nbsp;&nbsp;&nbsp; typedef itk::RescaleIntensityImageFilter&lt;InternalImageType,OutputImageType &gt; CastFilterType;<br>&nbsp;&nbsp;&nbsp; typedef itk::CurvatureAnisotropicDiffusionImageFilter&lt;InternalImageType,InternalImageType &gt; SmoothingFilterType;<br>&nbsp;&nbsp;&nbsp; SmoothingFilterType::Pointer smoothing = SmoothingFilterType::New(); <br>&nbsp;&nbsp;&nbsp; typedef itk::GradientMagnitudeRecursiveGaussianImageFilter&lt;InternalImageType,InternalImageType &gt; GradientFilterType;<br>&nbsp;&nbsp;&nbsp; typedef itk::SigmoidImageFilter&lt;InternalImageType,InternalImageType &gt; SigmoidFilterType;<br>&nbsp;&nbsp;&nbsp; GradientFilterType::Pointer gradientMagnitude = GradientFilterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; SigmoidFilterType::Pointer sigmoid =
 SigmoidFilterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; sigmoid-&gt;SetOutputMinimum( 0.0 );<br>&nbsp;&nbsp;&nbsp; sigmoid-&gt;SetOutputMaximum( 1.0 );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef itk::FastMarchingImageFilter&lt;InternalImageType,InternalImageType &gt; FastMarchingFilterType;<br>&nbsp;&nbsp;&nbsp; FastMarchingFilterType::Pointer fastMarching = FastMarchingFilterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef itk::GeodesicActiveContourLevelSetImageFilter&lt; InternalImageType,InternalImageType &gt; GeodesicActiveContourFilterType;<br>&nbsp;&nbsp;&nbsp; GeodesicActiveContourFilterType::Pointer geodesicActiveContour = GeodesicActiveContourFilterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; const double propagationScaling = 3.0;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; geodesicActiveContour-&gt;SetPropagationScaling(propagationScaling);<br>&nbsp;&nbsp;&nbsp;
 geodesicActiveContour-&gt;SetCurvatureScaling(2.0);<br>&nbsp;&nbsp;&nbsp; geodesicActiveContour-&gt;SetAdvectionScaling( 3.0 );<br>&nbsp;&nbsp;&nbsp; geodesicActiveContour-&gt;SetMaximumRMSError( 0.02 );<br>&nbsp;&nbsp;&nbsp; geodesicActiveContour-&gt;SetNumberOfIterations( 3 );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; smoothing-&gt;SetInput([itkImage itkImporter]-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; gradientMagnitude-&gt;SetInput( smoothing-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; sigmoid-&gt;SetInput( gradientMagnitude-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; geodesicActiveContour-&gt;SetInput( fastMarching-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; geodesicActiveContour-&gt;SetFeatureImage( sigmoid-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; thresholder-&gt;SetInput( geodesicActiveContour-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; writer-&gt;SetInput( thresholder-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp;
 <br>&nbsp;&nbsp;&nbsp; smoothing-&gt;SetTimeStep( 0.0625 );<br>&nbsp;&nbsp;&nbsp; smoothing-&gt;SetNumberOfIterations( 10 );<br>&nbsp;&nbsp;&nbsp; smoothing-&gt;SetConductanceParameter( 1.0 );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; const double sigma =&nbsp; 1.0;<br>&nbsp;&nbsp;&nbsp; gradientMagnitude-&gt;SetSigma( sigma );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; const double alpha = -4.0;<br>&nbsp;&nbsp;&nbsp; const double beta = 0.0;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; sigmoid-&gt;SetAlpha( alpha );<br>&nbsp;&nbsp;&nbsp; sigmoid-&gt;SetBeta( beta );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typedef FastMarchingFilterType::NodeContainer NodeContainer;<br>&nbsp;&nbsp;&nbsp; typedef FastMarchingFilterType::NodeType NodeType; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; InternalImageType::IndexType index;<br>&nbsp;&nbsp;&nbsp; index[0] = (long) startingPoint.x;<br>&nbsp;&nbsp;&nbsp; index[1] = (long)
 startingPoint.y;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if(slice == -1) index[2] = [[sourceV imageView] curImage];<br>&nbsp;&nbsp;&nbsp; else index[2] = 0;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; NSLog(@"StartingPoint is %d %d %d", index[0],index[1],index[2]);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; NodeContainer::Pointer seeds = NodeContainer::New();<br>&nbsp;&nbsp;&nbsp; double initialDistance = 5.0;<br>&nbsp;&nbsp;&nbsp; double seedValue = -initialDistance;<br>&nbsp;&nbsp;&nbsp; NodeType node;<br>&nbsp;&nbsp;&nbsp; node.SetValue(seedValue);<br>&nbsp;&nbsp;&nbsp; node.SetIndex(index);<br>&nbsp;&nbsp;&nbsp; seeds-&gt;Initialize();<br>&nbsp;&nbsp;&nbsp; seeds-&gt;InsertElement(0,node);<br>&nbsp;&nbsp;&nbsp; fastMarching-&gt;SetTrialPoints(seeds);<br>&nbsp;&nbsp;&nbsp; fastMarching-&gt;SetSpeedConstant(1.0);<br>&nbsp;&nbsp;&nbsp; const double stoppingTime = 10.0;<br>&nbsp;&nbsp;&nbsp;
 fastMarching-&gt;SetStoppingValue(&nbsp; stoppingTime&nbsp; );<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; CastFilterType::Pointer caster1 = CastFilterType::New();<br>&nbsp;&nbsp;&nbsp; CastFilterType::Pointer caster2 = CastFilterType::New();<br>&nbsp;&nbsp;&nbsp; CastFilterType::Pointer caster3 = CastFilterType::New();<br>&nbsp;&nbsp;&nbsp; CastFilterType::Pointer caster4 = CastFilterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; WriterType::Pointer writer1 = WriterType::New();<br>&nbsp;&nbsp;&nbsp; WriterType::Pointer writer2 = WriterType::New();<br>&nbsp;&nbsp;&nbsp; WriterType::Pointer writer3 = WriterType::New();<br>&nbsp;&nbsp;&nbsp; WriterType::Pointer writer4 = WriterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; caster1-&gt;SetInput( smoothing-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; writer1-&gt;SetInput( caster1-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; char *name1 =
 "smoothed_dataset";<br>&nbsp;&nbsp;&nbsp; writer1-&gt;SetFileName(name1);<br>&nbsp;&nbsp;&nbsp; caster1-&gt;SetOutputMinimum( 0 );<br>&nbsp;&nbsp;&nbsp; caster1-&gt;SetOutputMaximum( 255 );<br>&nbsp;&nbsp;&nbsp; writer1-&gt;SetImageIO(giplIO);<br>&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; writer1-&gt;Update();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; excep ){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@ "Exception caught at writer1!");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; caster2-&gt;SetInput( gradientMagnitude-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; writer2-&gt;SetInput( caster2-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; char *name2 = "3DKanten";<br>&nbsp;&nbsp;&nbsp; writer2-&gt;SetFileName(name2);<br>&nbsp;&nbsp;&nbsp; caster2-&gt;SetOutputMinimum( 0 );<br>&nbsp;&nbsp;&nbsp; caster2-&gt;SetOutputMaximum( 255
 );<br>&nbsp;&nbsp;&nbsp; writer2-&gt;SetImageIO(giplIO);<br>&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; writer2-&gt;Update();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; excep ){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"Exceptionin writer2");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; caster3-&gt;SetInput( sigmoid-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; writer3-&gt;SetInput( caster3-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; char *name3 = "inverse3DKanten";<br>&nbsp;&nbsp;&nbsp; writer3-&gt;SetFileName(name3);<br>&nbsp;&nbsp;&nbsp; caster3-&gt;SetOutputMinimum( 0 );<br>&nbsp;&nbsp;&nbsp; caster3-&gt;SetOutputMaximum( 255 );<br>&nbsp;&nbsp;&nbsp; writer3-&gt;SetImageIO(giplIO);<br>&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; writer3-&gt;Update();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; excep
 ){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"Exception caught at writer3 !");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; caster4-&gt;SetInput( fastMarching-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; writer4-&gt;SetInput( caster4-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; char *name4 = "FFM";<br>&nbsp;&nbsp;&nbsp; writer4-&gt;SetFileName(name4);<br>&nbsp;&nbsp;&nbsp; caster4-&gt;SetOutputMinimum( 0 );<br>&nbsp;&nbsp;&nbsp; caster4-&gt;SetOutputMaximum( 255 );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; writer4-&gt;SetImageIO(giplIO);<br>&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; writer4-&gt;Update();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"FMIF: GetOutputSize: ");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; excep ){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"Exception caught at
 writer4!");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; NSLog(@"I am here already will go&nbsp; further");<br><br>&nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; writer-&gt;Update();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch( itk::ExceptionObject &amp; excep )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"Exception caught at main writer!");<br>&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; NSLog(@"DOOOOOONNNNNNEEEEEE");<br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>/*&nbsp;&nbsp;&nbsp; if( slice == -1)<br>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *buff =
 writer-&gt;GetOutput()-&gt;GetBufferPointer();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if( buff)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for( int i = 0; i &lt; [[sourceV pixList] count]; i++)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int buffHeight = [[[sourceV pixList] objectAtIndex: i] pheight];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int buffWidth = [[[sourceV pixList] objectAtIndex: i] pwidth];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if( memchr( buff, 255, buffWidth * buffHeight))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ROI *theNewROI = [[ROI alloc]&nbsp;&nbsp;&nbsp; initWithTexture:buff<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; textWidth:buffWidth<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; textHeight:buffHeight<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;textName:newname<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; positionX:0<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; positionY:0<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;spacingX:[[[sourceV imageView] curDCM]
 pixelSpacingX]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;spacingY:[[[sourceV imageView] curDCM] pixelSpacingY]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; imageOrigin:NSMakePoint([[[sourceV imageView] curDCM] originX], [[[sourceV imageView] curDCM] originY])];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"I am working wiht a ROI");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[[sourceV roiList]
 objectAtIndex:i] addObject:theNewROI];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[NSNotificationCenter defaultCenter] postNotificationName: OsirixROIChangeNotification object:theNewROI userInfo: nil];&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /*if( [newname isEqualToString: @"Segmentation Preview"])<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RGBColor color;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color.red = 0.67*65535.;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color.green = 0.90*65535.;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color.blue = 0.58*65535.;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"I am preview in a slice -1");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setColor: color];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 else {*/<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /*&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RGBColor roiColor;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roiColor.red = 0.20 * 65535;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roiColor.blue =&nbsp; 0.50 * 65535;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roiColor.green = 0.50 * 65535;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setColor: roiColor];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 //}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setROIMode: ROI_selected];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[NSNotificationCenter defaultCenter] postNotificationName: OsirixROISelectedNotification object:theNewROI userInfo: nil];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setSliceThickness:[[[sourceV imageView] curDCM] sliceThickness]];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI release];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; buff+= buffHeight*buffWidth;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // result of the segmentation will only contain one slice.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"Result conteins only one slide");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned char *buff = caster-&gt;GetOutput()-&gt;GetBufferPointer();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //NSLog(@"buff ISSSSS %c",buff);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(buff) NSLog(@"The buffer is not nill");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int buffHeight =
 [[[sourceV pixList] objectAtIndex: 0] pheight];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int buffWidth = [[[sourceV pixList] objectAtIndex: 0] pwidth];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ROI *theNewROI = [[ROI alloc]&nbsp;&nbsp;&nbsp; initWithTexture:buff<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; textWidth:buffWidth<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; textHeight:buffHeight<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;textName:newname<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; positionX:0<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; positionY:0<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;spacingX:[[[sourceV imageView] curDCM] pixelSpacingX]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;spacingY:[[[sourceV imageView] curDCM] pixelSpacingY]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; imageOrigin:NSMakePoint([[[sourceV imageView] curDCM] originX], [[[sourceV imageView] curDCM] originY])];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI reduceTextureIfPossible];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setSliceThickness:[[[sourceV imageView] curDCM] sliceThickness]];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[[sourceV roiList] objectAtIndex:slice] addObject:theNewROI];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[sourceV imageView] roiSet];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[NSNotificationCenter defaultCenter] postNotificationName: OsirixROIChangeNotification object:theNewROI userInfo: nil];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /*if( [newname isEqualToString: @"Segmentation Preview"])<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; NSLog(@"I am actually in a preview");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RGBColor color;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color.red = 0.67*65535.;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color.green = 0.90*65535.;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; color.blue = 0.58*65535.;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setColor: color];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }*/<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //else{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /*RGBColor roiColor;<br>&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; roiColor.red = 0.20 * 65535;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roiColor.blue =&nbsp; 0.50 * 65535;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; roiColor.green = 0.50 * 65535;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setColor: roiColor];<br>&nbsp;&nbsp;&nbsp; //}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI setROIMode: ROI_selected];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [[NSNotificationCenter defaultCenter] postNotificationName: OsirixROISelectedNotification object:theNewROI userInfo: nil];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [theNewROI release];<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; [sourceV needsDisplayUpdate];*/&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>}<br><br>@end<br><br>Thanks,<br>Ella<br><br></td></tr></tbody></table><b><br></b></div></blockquote></td></tr></table><br>