[Insight-users] Segmentation of 3D image (itk)

Abder-Rahman Ali abder.rahman.ali at gmail.com
Sat Mar 24 18:13:09 EDT 2012


Thanks so much Luis. That really helps.

I'm a bit new to this, and now trying to run a filter, say for example, the
"Examples/Segmentation/ConnectedThresholdImageFilter.cxx". I tried to use
CMake after copying this file along with the CMakeLists.txt to a new
directory. I made the new directory (i.e; NewDir) as "source" and the
"build" as (i.e; NewDirBin).

When I try to "generate", I get the following message: Error in generation
process, project files may be invalid

So, the bottom line is, how can I test this filter?

Thanks a lot.

Abder-Rahman

On Sat, Mar 24, 2012 at 9:58 PM, Luis Ibanez <luis.ibanez at kitware.com>wrote:

> On Sat, Mar 24, 2012 at 2:19 PM, Abder-Rahman Ali
> <abder.rahman.ali at gmail.com> wrote:
> >
> > So, in your modifications, I should REMOVE what has "-" and ADD what has
> > "+".
> >
>
> Yes.
>
> This is the typical format that you will
> see when you do a diff between two files.
>
>
> > * For, the following:
> >
> > smoothing->SetTimeStep( 0.025 );
> >
> > Why did you add ( 0.025 ) and not ( 0.125 )
> >
>
> Because when you go from 2D to 3D the computation
> of the time step in the smoothing filter needs to be
> adjusted. Otherwise you will get a warning about the
> time step at 0.125 being unstable in 3D.
>
>
> > * For the following:
> >
> >
> > -  const InternalPixelType lowerThreshold = atof( argv[5] );
> > -  const InternalPixelType upperThreshold = atof( argv[6] );
> > +  const InternalPixelType lowerThreshold = atof( argv[6] );
> > +  const InternalPixelType upperThreshold = atof( argv[7] );
> >
> > Why had you to remove the first two lines and add [6] & [7]?
> >
>
> Because the insertion of the seedZ argument
> in the command line displaces the two last
> arguments by one.
>
>
> > Thanks a lot, and appreciate your kind efforts.
> >
> > Abder-Rahman
> >
> >
> >
> >
> >
> >
> > On Sat, Mar 24, 2012 at 4:56 PM, Luis Ibanez <luis.ibanez at kitware.com>
> > wrote:
> >>
> >> Hi Abder-Rahman,
> >>
> >> Please find below the diffs that you have to apply to
> >> this example in order to make it work for 3D images.
> >>
> >>
> >>   Thanks
> >>
> >>
> >>       Luis
> >>
> >>
> >> diff --git a/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
> >> b/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
> >> index 5fdfb24..38ef54c 100644
> >> --- a/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
> >> +++ b/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
> >> @@ -95,11 +95,11 @@
> >>
> >>  int main( int argc, char *argv[])
> >>  {
> >> -  if( argc < 7 )
> >> +  if( argc < 8 )
> >>     {
> >>     std::cerr << "Missing Parameters " << std::endl;
> >>     std::cerr << "Usage: " << argv[0];
> >> -    std::cerr << " inputImage  outputImage seedX seedY lowerThreshold
> >> upperThreshold" << std::endl;
> >> +    std::cerr << " inputImage  outputImage seedX seedY seedZ
> >> lowerThreshold upperThreshold" << std::endl;
> >>     return 1;
> >>     }
> >>
> >> @@ -114,7 +114,7 @@ int main( int argc, char *argv[])
> >>
> >>   // Software Guide : BeginCodeSnippet
> >>   typedef   float           InternalPixelType;
> >> -  const     unsigned int    Dimension = 2;
> >> +  const     unsigned int    Dimension = 3;
> >>   typedef itk::Image< InternalPixelType, Dimension >  InternalImageType;
> >>   // Software Guide : EndCodeSnippet
> >>
> >> @@ -217,7 +217,7 @@ int main( int argc, char *argv[])
> >>
> >>   // Software Guide : BeginCodeSnippet
> >>   smoothing->SetNumberOfIterations( 5 );
> >> -  smoothing->SetTimeStep( 0.125 );
> >> +  smoothing->SetTimeStep( 0.025 );
> >>   // Software Guide : EndCodeSnippet
> >>
> >>
> >> @@ -235,8 +235,8 @@ int main( int argc, char *argv[])
> >>   //
> >>   //  Software Guide : EndLatex
> >>
> >> -  const InternalPixelType lowerThreshold = atof( argv[5] );
> >> -  const InternalPixelType upperThreshold = atof( argv[6] );
> >> +  const InternalPixelType lowerThreshold = atof( argv[6] );
> >> +  const InternalPixelType upperThreshold = atof( argv[7] );
> >>
> >>   // Software Guide : BeginCodeSnippet
> >>   connectedThreshold->SetLower(  lowerThreshold  );
> >> @@ -275,6 +275,7 @@ int main( int argc, char *argv[])
> >>
> >>   index[0] = atoi( argv[3] );
> >>   index[1] = atoi( argv[4] );
> >> +  index[2] = atoi( argv[5] );
> >>
> >>
> >>   // Software Guide : BeginCodeSnippet
> >>
> >>
> >>
> >> ---------------------------------
> >> On Sat, Mar 24, 2012 at 11:14 AM, Abder-Rahman Ali
> >> <abder.rahman.ali at gmail.com> wrote:
> >> > Hello,
> >> >
> >> > I just have a question and thought you may have an idea on it.
> >> >
> >> > Inside the `InsightToolkit` directory there is the
> >> > `Examples/Segmentation/ConnectedThresholdImageFilter.xx` file.
> >> >
> >> > Now, I want to make it operate on a three dimensional image. In this
> >> > case,
> >> > will the changes that I have to do bee applied to those lines of code
> >> > (lines
> >> > 102-110):
> >> >
> >> >     int main( int argc, char *argv[])
> >> >     {
> >> >       if( argc < 7 )
> >> >         {
> >> >         std::cerr << "Missing Parameters " << std::endl;
> >> >         std::cerr << "Usage: " << argv[0];
> >> >         std::cerr << " inputImage  outputImage seedX seedY
> >> > lowerThreshold
> >> > upperThreshold" << std::endl;
> >> >         return 1;
> >> >         }
> >> >
> >> > And, in order to do that, should I add the following `seedZ` to:
> >> >
> >> >     std::cerr << " inputImage  outputImage seedX seedY lowerThreshold
> >> > upperThreshold" << std::endl;
> >> >
> >> > And, what change should I perform to the arguments in this case?
> >> >
> >> > Thanks a lot and apologize for my disturbance.
> >> >
> >> > Abder-Rahman
> >> >
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120324/3dc0c057/attachment.htm>


More information about the Insight-users mailing list