<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hi Luis,</DIV>
<DIV>Thank youfor your reply, yes some seeds are poorly located. I have tried other seeds and it's works fine. </DIV>
<DIV>Thank you </DIV>
<DIV>Sara <BR><BR>--- En date de&nbsp;: <B>Dim 14.9.08, Luis Ibanez <I>&lt;luis.ibanez@kitware.com&gt;</I></B> a écrit&nbsp;:<BR></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid">De: Luis Ibanez &lt;luis.ibanez@kitware.com&gt;<BR>Objet: Re: confidence connected filter applied to brain web data: the example gives incorrect segmentation!<BR>À: sara_meghellati@yahoo.fr<BR>Cc: "insight itk" &lt;insight-users@itk.org&gt;<BR>Date: Dimanche 14 Septembre 2008, 17h48<BR><BR><PRE>
Hi Sara,


                 Thanks for pointing this out.


You have indeed found a bug in this section of the ITK Software Guide.

After playing with the code, and reviewing the locations of the seed
point, we found that three of them are poorly located.


We have fine tunned their locations to the following indices:


  InternalImageType::IndexType index1;
  index1[0] = 118;
  index1[1] = 133;
  index1[2] = 92;
  confidenceConnected-&gt;AddSeed( index1 );

  InternalImageType::IndexType index2;
  index2[0] = 63;
  index2[1] = 135;
  index2[2] = 94;
  confidenceConnected-&gt;AddSeed( index2 );

  InternalImageType::IndexType index3;
  index3[0] = 63;
  index3[1] = 157;
  index3[2] = 90;
  confidenceConnected-&gt;AddSeed( index3 );

  InternalImageType::IndexType index4;
  index4[0] = 111;
  index4[1] = 150;
  index4[2] = 90;
  confidenceConnected-&gt;AddSeed( index4 );

  InternalImageType::IndexType index5;
  index5[0] = 111;
  index5[1] = 50;
  index5[2] = 88;
  confidenceConnected-&gt;AddSeed( index5 );


Please find attached a corrected version of the source code.


You can run this program with the following command line:

  ./ConfidenceConnected brainweb165a10f17.mha segment.mhd

It should run in about 20 seconds.



Please give it a try and let us know if you find
any problems,


     Thanks


        Luis


----------------------------

BTW:
Please note that you don't need to use atoi() in the expression

       index1[0] = atoi("118");

You can simply do

       index1[0] = 118;


------------------------------------------------------------------
sara meghellati wrote:
&gt; Hi Luis ,
&gt; Unless I'm mistaken, I have applied the confidence connected filter as

&gt; descripted in the itk book page 507,  but I couldn't get te same
result 
&gt; as in the book ! the segmentation is very bad.
&gt; I have applied this filter to the 
&gt; volume /BrainPart2/Brain/brainweb165a10f17.mha  using 
&gt; itk::GradientAnisotropicDiffusionImageFilter
&gt; with the folling param
&gt; //filter-&gt;SetNumberOfIterations( 2 );
&gt; //filter-&gt;SetTimeStep( 0.05 );
&gt; //filter-&gt;SetConductanceParameter( 3 );
&gt; and
&gt; confidenceConnected-&gt;SetMultiplier(2.5 );
&gt; // confidenceConnected-&gt;SetNumberOfIterations(5);
&gt; // confidenceConnected-&gt;SetReplaceValue(255);
&gt; // confidenceConnected-&gt;SetInitialNeighborhoodRadius(2);
&gt;  
&gt; and the seeds points
&gt;  
&gt; InputImageType::IndexType index1;
&gt; // index1[0] = atoi("118"); // Convert a string to integer.
&gt; // index1[1] = atoi("85");
&gt; // index1[2] = atoi("92");
&gt; //
&gt; // InputImageType::IndexType index2;
&gt; // index2[0] = atoi( "63" );
&gt; // index2[1] = atoi( "87" );
&gt; // index2[2] = atoi( "94" );
&gt; //
&gt; // InputImageType::IndexType index3;
&gt; // index3[0] = atoi( "63" );
&gt; // index3[1] = atoi( "157" );
&gt; // index3[2] = atoi( "90" );
&gt; //
&gt; // InputImageType::IndexType index4;
&gt; // index4[0] = atoi( "111" );
&gt; // index4[1] = atoi( "188" );
&gt; // index4[2] = atoi( "90" );
&gt; //
&gt; // InputImageType::IndexType index5;
&gt; // index5[0] = atoi( "111" );
&gt; // index5[1] = atoi( "50" );
&gt; // index5[2] = atoi( "88" );
&gt;  
&gt; As you can see all the parms that I have used as the same as described 
&gt; in the book.
&gt; please could you chek and tell me if I'm wrong.
&gt;  
&gt; Thanks
&gt; Sara
&gt;  
&gt; 
&gt; 
</PRE>/*========================================================================= Program: Insight Segmentation &amp; Registration Toolkit Module: $RCSfile: ConfidenceConnected.cxx,v $ Language: C++ Date: $Date: 2005/11/19 16:31:50 $ Version: $Revision: 1.36 $ Copyright (c) Insight Software Consortium. All rights reserved. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #if defined(_MSC_VER) #pragma warning ( disable : 4786 ) #endif #ifdef __BORLANDC__ #define ITK_LEAN_AND_MEAN #endif #include "itkConfidenceConnectedImageFilter.h" #include "itkImage.h" #include "itkCastImageFilter.h" #include "itkCurvatureFlowImageFilter.h" #include "itkImageFileReader.h"
 #include "itkImageFileWriter.h" int main( int argc, char *argv[] ) { if( argc &lt; 3 ) { std::cerr &lt;&lt; "Missing Parameters " &lt;&lt; std::endl; std::cerr &lt;&lt; "Usage: " &lt;&lt; argv[0]; std::cerr &lt;&lt; " inputImage outputImage " &lt;&lt; std::endl; return 1; } typedef float InternalPixelType; const unsigned int Dimension = 3; typedef itk::Image&lt; InternalPixelType, Dimension &gt; InternalImageType; typedef unsigned char OutputPixelType; typedef itk::Image&lt; OutputPixelType, Dimension &gt; OutputImageType; typedef itk::CastImageFilter&lt; InternalImageType, OutputImageType &gt; CastingFilterType; CastingFilterType::Pointer caster = CastingFilterType::New(); typedef itk::ImageFileReader&lt; InternalImageType &gt; ReaderType; typedef itk::ImageFileWriter&lt; OutputImageType &gt; WriterType; ReaderType::Pointer reader = ReaderType::New(); WriterType::Pointer writer = WriterType::New(); reader-&gt;SetFileName( argv[1] );
 writer-&gt;SetFileName( argv[2] ); typedef itk::CurvatureFlowImageFilter&lt; InternalImageType, InternalImageType &gt; CurvatureFlowImageFilterType; CurvatureFlowImageFilterType::Pointer smoothing = CurvatureFlowImageFilterType::New(); typedef itk::ConfidenceConnectedImageFilter<INTERNALIMAGETYPE, InternalImageType> ConnectedFilterType; ConnectedFilterType::Pointer confidenceConnected = ConnectedFilterType::New(); smoothing-&gt;SetInput( reader-&gt;GetOutput() ); confidenceConnected-&gt;SetInput( smoothing-&gt;GetOutput() ); caster-&gt;SetInput( confidenceConnected-&gt;GetOutput() ); writer-&gt;SetInput( caster-&gt;GetOutput() ); smoothing-&gt;SetNumberOfIterations( 2 ); smoothing-&gt;SetTimeStep( 0.05 ); confidenceConnected-&gt;SetMultiplier( 2.5 ); confidenceConnected-&gt;SetNumberOfIterations( 5 ); confidenceConnected-&gt;SetInitialNeighborhoodRadius( 2 ); confidenceConnected-&gt;SetReplaceValue( 255 ); InternalImageType::IndexType index1; index1[0]
 = 118; index1[1] = 133; index1[2] = 92; confidenceConnected-&gt;AddSeed( index1 ); InternalImageType::IndexType index2; index2[0] = 63; index2[1] = 135; index2[2] = 94; confidenceConnected-&gt;AddSeed( index2 ); InternalImageType::IndexType index3; index3[0] = 63; index3[1] = 157; index3[2] = 90; confidenceConnected-&gt;AddSeed( index3 ); InternalImageType::IndexType index4; index4[0] = 111; index4[1] = 150; index4[2] = 90; confidenceConnected-&gt;AddSeed( index4 ); InternalImageType::IndexType index5; index5[0] = 111; index5[1] = 50; index5[2] = 88; confidenceConnected-&gt;AddSeed( index5 ); try { writer-&gt;Update(); } catch( itk::ExceptionObject &amp; excep ) { std::cerr &lt;&lt; "Exception caught !" &lt;&lt; std::endl; std::cerr &lt;&lt; excep &lt;&lt; std::endl; } return EXIT_SUCCESS; }</BLOCKQUOTE></td></tr></table><br>