notice something:<br><pre>(1)<br>if the ExternalImageType used as float, the image of result will be white<br>entirely in every step (smooth,gradient and sigmoid).<br><br>(2)<br>And if both ExternalImageType and InternalImageType are signed short,
<br>the image of smooth and gradient are fine but sigmoid image is whole white.</pre>(3) Unfortunately , the format for level set must be float.<br>How do I solve this problem???<br><br><br><div><span class="gmail_quote">
2007/3/27, Goo &lt;<a href="mailto:gtshowtime@gmail.com">gtshowtime@gmail.com</a>&gt;:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi All:<br><br>This question is so confused to me.<br>The output of sigmoid image is shown white entirely  but gradient image fine.<br><br><div dir="ltr">The following are my programs:<br>if the ExternalImageType used as float, the image of result will be white entirely in smooth,gradient and sigmoid.
<br></div><br>Please give me some guidance.<br>Regards.<br><br>//----------------------------------CODE-------------------------------------------<br><br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; signed short, 3 &gt;&nbsp; InternalImageType;
<br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; signed short, 3 &gt;&nbsp; ExternalImageType;<br><br>&nbsp;&nbsp;&nbsp; typedef itk::RescaleIntensityImageFilter&lt;ExternalImageType, InternalImageType&gt; InputCastType;<br>&nbsp;&nbsp;&nbsp; typedef itk::RescaleIntensityImageFilter&lt;InternalImageType, ExternalImageType&gt; OutputCastType;
<br><br>&nbsp;&nbsp;&nbsp; OutputCastType::Pointer&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_SmoothObserver;<br>&nbsp;&nbsp;&nbsp; OutputCastType::Pointer&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_GradientObserver;<br>&nbsp;&nbsp;&nbsp; OutputCastType::Pointer&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_SigmoidObserver;<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::ResampleImageFilter&lt;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InternalImageType , InternalImageType &gt;&nbsp; FilterType;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; FilterType::Pointer SubSample = FilterType::New();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::AffineTransform&lt; double, 3 &gt;&nbsp; TransformType;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TransformType::Pointer transform = TransformType::New();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::NearestNeighborInterpolateImageFunction&lt; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; InternalImageType, double &gt;&nbsp; InterpolatorType;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InterpolatorType::Pointer interpolator = InterpolatorType::New();&nbsp; <br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetInterpolator( interpolator );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetDefaultPixelValue( 50 );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; double spacing[ 3 ];
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; spacing[0] = InputCaster-&gt;GetOutput()-&gt;GetSpacing()[0];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; spacing[1] = InputCaster-&gt;GetOutput()-&gt;GetSpacing()[1];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; spacing[2] = InputCaster-&gt;GetOutput()-&gt;GetSpacing()[2];<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetOutputSpacing( spacing );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; double origin [3];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; origin[0] = 80*spacing[0];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; origin[1] = 80*spacing[1];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; origin[2] = 15*spacing[2];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetOutputOrigin(origin);
<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InternalImageType::SizeType&nbsp;&nbsp; size;<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; size[0] = 100; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; size[1] = 100;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; size[2] = 5;<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetSize( size );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetInput( InputCaster-&gt;GetOutput() );
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;SetTransform( transform );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; transform-&gt;SetIdentity();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SubSample-&gt;Update();<br><br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::CurvatureAnisotropicDiffusionImageFilter<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt; InternalImageType,InternalImageType &gt;&nbsp; SmoothingFilterType;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::GradientMagnitudeRecursiveGaussianImageFilter<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt; InternalImageType,InternalImageType &gt;&nbsp; GradientFilterType;<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef itk::SigmoidImageFilter<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt; InternalImageType,InternalImageType &gt;&nbsp; SigmoidFilterType;<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SmoothingFilterType::Pointer&nbsp;&nbsp;&nbsp; m_smoothing = SmoothingFilterType::New();&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; GradientFilterType::Pointer&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_gradientMagnitude = GradientFilterType::New();
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SigmoidFilterType::Pointer&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_sigmoid = SigmoidFilterType::New();&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_smoothing-&gt;SetNumberOfIterations(&nbsp; m_SmoothIter );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_smoothing-&gt;SetConductanceParameter( m_SmoothConductance );
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_smoothing-&gt;SetTimeStep( m_TimeStep );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_gradientMagnitude-&gt;SetSigma(&nbsp; m_sigma&nbsp; );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_sigmoid-&gt;SetOutputMinimum(&nbsp; m_SigmoidOutMin&nbsp; );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_sigmoid-&gt;SetOutputMaximum(&nbsp; m_SigmoidOutMax&nbsp; );
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_sigmoid-&gt;SetAlpha( m_alpha );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_sigmoid-&gt;SetBeta(&nbsp; m_beta&nbsp; );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_smoothing-&gt;SetInput( &nbsp;&nbsp;&nbsp; SubSample-&gt;GetOutput() );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_gradientMagnitude-&gt;SetInput( m_smoothing-&gt;GetOutput() );
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_sigmoid-&gt;SetInput( m_gradientMagnitude-&gt;GetOutput() );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_SmoothObserver-&gt;SetInput(m_smoothing-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_GradientObserver-&gt;SetInput(m_gradientMagnitude-&gt;GetOutput());
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_SigmoidObserver-&gt;SetInput(m_sigmoid-&gt;GetOutput());<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_SmoothObserver-&gt;Update();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_GradientObserver-&gt;Update();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; m_SigmoidObserver-&gt;Update();<br>
</blockquote></div><br>