Hello to all,<br><br>I am using an itkExtractImageFilter, an itkRescaleIntensityImageFilter and an itkMinimumMaximumImageCalculator.With my code I want to read a 3D volume, get a 2D slice, rescale it and
 then diplay this slice. But If the maximum pixel value of the image is 
up to 255, then I want to rescale between [0,255]. But if the maximum 
pixel value(value_max) is less than 255 then I want to rescale my image 
between [0,value_max].I am using the 3D image (MRI-crop-original.gipl, itk-snap&#39;s free data) 
as input and I am extracting the first slice. This slice has 
value_max=122, so I should rescale it between [0,value_max]. But when I 
am running my program I get the result image (z.png) rescaled between 
[0,255].<br><div id=":1hf">
 I think that my problem is that when using the itkMinimumMaximumImageCalculator,
 I do not get tthe right values [value_min,value_max]=[0,122], but I am 
taking these values  [value_min,value_max]=[255,0] and I think that 
there must be some mistake.<br>
Also, I think that the itkExtractImageFilter, make the rescale of my 
image between [0,255].Is this right? I hope somebody could help<br>Thanks in advance<br><br>  typedef unsigned char InputPixelType;<br>typedef unsigned char OutputPixelType;<br>
typedef itk::Image&lt; InputPixelType, 3 &gt; InputImageType;<br>typedef itk::Image&lt; OutputPixelType, 2 &gt; OutputImageType;<br><br>typedef itk::ImageFileReader&lt; InputImageType &gt; ReaderType;<br>typedef itk::ImageFileWriter&lt; OutputImageType &gt; WriterType;<br>

<br>typedef itk::ExtractImageFilter&lt; InputImageType, OutputImageType &gt; FilterType;<br>  FilterType::Pointer filter = FilterType::New();<br><br>   typedef itk::RescaleIntensityImageFilter&lt; OutputImageType, <br>OutputImageType &gt;    FilterType_rescale;<br>

<br>   typedef itk::MinimumMaximumImageCalculator &lt;OutputImageType&gt;<br>          ImageCalculatorFilterType;<br><br><br> ReaderType::Pointer reader = ReaderType::New();<br>  WriterType::Pointer writer = WriterType::New();<br>

<br>    reader-&gt;SetFileName( fileName.toStdString()   );<br>  writer-&gt;SetFileName( &quot;z.png&quot; );<br><br>    reader-&gt;Update();<br>  InputImageType::RegionType inputRegion =<br>           reader-&gt;GetOutput()-&gt;GetLargestPossibleRegion();<br>

<br>    InputImageType::SizeType size = inputRegion.GetSize();<br>  size[2] = 0;<br><br>   InputImageType::IndexType start = inputRegion.GetIndex();<br>  ui-&gt;verticalScrollBar_z-&gt;setRange(1,size_z);<br>  unsigned int sliceNumber = ui-&gt;verticalScrollBar_z-&gt;value();<br>

  start[2] = 0;<br><br>    InputImageType::RegionType desiredRegion;<br>  desiredRegion.SetSize(  size  );<br>  desiredRegion.SetIndex( start );<br><br>    filter-&gt;SetExtractionRegion( desiredRegion );<br><br>    filter-&gt;SetInput( reader-&gt;GetOutput() );<br>

    filter-&gt;Update();<br><br> ImageCalculatorFilterType::Pointer imageCalculatorFilter<br>          = ImageCalculatorFilterType::New ();<br>  imageCalculatorFilter-&gt;SetImage(filter-&gt;GetOutput());<br><br><br>  int  value_max =  imageCalculatorFilter-&gt;GetMaximum();<br>

  int  value_min =  imageCalculatorFilter-&gt;GetMinimum();<br><br>     ui-&gt;label_20-&gt;setText(QString(&quot;max_value:%1&quot;).arg(value_max));<br>    ui-&gt;label_21-&gt;setText(QString(&quot;min_value:%1&quot;).arg(value_min));<br>

<br>    <br>    FilterType_rescale::Pointer filter_rescale = FilterType_rescale::New();<br>    filter_rescale-&gt;SetOutputMinimum(   0 );<br>    filter_rescale-&gt;SetOutputMaximum(  value_max);<br>    <br><br>      filter_rescale-&gt;SetInput( filter-&gt;GetOutput() );<br>

       writer-&gt;SetInput( filter_rescale-&gt;GetOutput() );</div>