<div dir="ltr"><br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername">qt.itk.vtk.help</b> <span dir="ltr">&lt;<a href="mailto:qt.itk.vtk.help@gmail.com">qt.itk.vtk.help@gmail.com</a>&gt;</span><br>
Date: Fri, May 31, 2013 at 11:56 AM<br>Subject: Need help in 3D volume segmentation<br>To: Luis Ibanez &lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;, <a href="mailto:Insight-user@itk.org">Insight-user@itk.org</a><br>
<br><br><div dir="ltr">Hi,<div><br></div><div>I am working on connected threshold Segmentation for 3D volume  .</div><div>#  2D segmentation works fine for me as I have  understood the example given by ITK for 2D Image. </div>

<div><br></div><div>#  Then i tried to convert image reader to Sequence reader that also work fine as I have tested it by saving CurvatureFlowImageFilter result in analyse file.</div><div><br></div><div>
# But when i pass output of CurvatureFlowImageFilter to ConnectedThresholdImageFilter with same <b>seed point and threshold value</b> it give me black output means nothing is segmented.</div><div><br></div><div>
# <b>This is my Code </b></div><div><div><br></div><div>#include &quot;itkConnectedThresholdImageFilter.h&quot;</div><div>#include &quot;itkImage.h&quot;</div><div>#include &quot;itkCastImageFilter.h&quot;</div><div>
#include &quot;itkNumericSeriesFileNames.h&quot;</div><div>#include &quot;itkJPEGImageIO.h&quot;</div><div>#include &quot;itkCurvatureFlowImageFilter.h&quot;</div><div>#include &quot;itkImageSeriesReader.h&quot;</div><div>

#include &quot;itkImageFileReader.h&quot;</div><div>#include &quot;itkImageFileWriter.h&quot;</div><div><br></div><div><br></div><div>int main( int argc, char *argv[])</div><div>{</div><div>  </div><div>  typedef   float           InternalPixelType;</div>

<div>  const     unsigned int    Dimension = 3;</div><div>  typedef itk::Image&lt; InternalPixelType, Dimension &gt;  InternalImageType;</div><div> </div><div><br></div><div><br></div><div>  typedef unsigned char                            OutputPixelType;</div>

<div>  typedef itk::Image&lt; OutputPixelType, Dimension &gt; OutputImageType;</div><div>  </div><div>  typedef itk::CastImageFilter&lt; InternalImageType, OutputImageType &gt;CastingFilterType;</div><div>  CastingFilterType::Pointer caster = CastingFilterType::New();</div>

<div><br></div><div>  </div><div>  typedef  itk::ImageSeriesReader&lt; InternalImageType &gt; ReaderType;</div><div>  typedef  itk::ImageFileWriter&lt;  OutputImageType  &gt; WriterType;</div><div><br></div><div>  ReaderType::Pointer reader = ReaderType::New();</div>

<div>  WriterType::Pointer writer = WriterType::New();</div><div><br></div><div>  typedef itk::NumericSeriesFileNames NameGeneratorType;</div><div>  NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();</div>

<div><br></div><div>  nameGenerator-&gt;SetSeriesFormat( &quot;D:/testing_Dataset/WIP/jpg/New_folder/pelvis%04d.jpg&quot; );</div><div>  nameGenerator-&gt;SetStartIndex( 0000 );</div><div>  nameGenerator-&gt;SetEndIndex( 0023 );</div>

<div>  nameGenerator-&gt;SetIncrementIndex( 1 );</div><div><br></div><div>  reader-&gt;SetImageIO( itk::JPEGImageIO::New() );</div><div>  reader-&gt;SetFileNames( nameGenerator-&gt;GetFileNames() );</div><div>  itk::Indent indent;</div>

<div>  nameGenerator-&gt;Print(std::cout,indent);</div><div> </div><div> writer-&gt;SetFileName( &quot;D:\\out.img&quot; );</div><div><br></div><div>  typedef itk::CurvatureFlowImageFilter&lt; InternalImageType, InternalImageType &gt;CurvatureFlowImageFilterType;</div>

<div>  CurvatureFlowImageFilterType::Pointer smoothing = CurvatureFlowImageFilterType::New();</div><div><br></div><div>  typedef itk::ConnectedThresholdImageFilter&lt; InternalImageType, InternalImageType &gt; ConnectedFilterType;</div>

<div>  ConnectedFilterType::Pointer connectedThreshold = ConnectedFilterType::New();</div><div>   </div><div> </div><div>  smoothing-&gt;SetInput( reader-&gt;GetOutput() );</div><div>  connectedThreshold-&gt;SetInput( smoothing-&gt;GetOutput() );</div>

<div>  caster-&gt;SetInput( connectedThreshold-&gt;GetOutput() );</div><div>  writer-&gt;SetInput( caster-&gt;GetOutput() );</div><div> </div><div>  smoothing-&gt;SetNumberOfIterations( 5 );</div><div>  smoothing-&gt;SetTimeStep( 0.125 );</div>

<div> </div><div><br></div><div>  const InternalPixelType lowerThreshold = 200;</div><div>  const InternalPixelType upperThreshold = 270;</div><div><br></div><div> </div><div>  connectedThreshold-&gt;SetLower(  lowerThreshold  );</div>

<div>  connectedThreshold-&gt;SetUpper(  upperThreshold  );</div><div> </div><div>  connectedThreshold-&gt;SetReplaceValue( 255 );</div><div> </div><div>  InternalImageType::IndexType  index;</div><div><br></div><div>  index[0] = 258  ;</div>

<div>  index[1] = 226;</div><div><br></div><div><br></div><div> </div><div>  connectedThreshold-&gt;SetSeed( index );</div><div> </div><div>  try</div><div>    {</div><div>    writer-&gt;Update();</div><div>    }</div><div>

  catch( itk::ExceptionObject &amp; excep )</div><div>    {</div><div>    std::cerr &lt;&lt; &quot;Exception caught !&quot; &lt;&lt; std::endl;</div><div>    std::cerr &lt;&lt; excep &lt;&lt; std::endl;</div><div>    }</div>

<div>  </div><div><br></div><div><br></div><div>  return 0;</div><div>}</div><div><br></div><div>Do i need to give more seed points.</div><div>Any help is appreciated.</div><div><br></div><div><br>
</div><div>Thank you,</div><div>Shilpa Dogra </div></div><div><br></div></div>
</div><br></div>