[Insight-users] get the maximum pixel value using GetPixel() for 3D image

john smith mkitkinsightuser at gmail.com
Tue Jun 7 09:27:25 EDT 2011


Thanks for your reply.I have used the MinimumMaximumImageCalculator, but
know I want to take the result playing with the raw data.But I am trying to
do that without using iterators, just with using for loop. I have added the
largest possible area from reader, but when I am debuging my code, it seems
that I cannot get inside the loop. Do you know why? Here is my code:

 ReaderType::Pointer reader = ReaderType::New();

     reader->SetFileName( fileName.toStdString()  );
     reader->Update();

      InputImageType::RegionType inputRegion =
           reader->GetOutput()->GetLargestPossibleRegion();


    //typedef itk::Image< short, 3 > InputImageType;

     InputImageType::Pointer image = reader->GetOutput();



  InputImageType::IndexType start;
  InputImageType::SizeType  size;

  // get the size of the hole 3D image
  size_x = size[0];
  size_y = size[1];
  size_z = size[2];

  start[0] =   0;  // first index on X
  start[1] =   0;  // first index on Y
  start[2] =   0;  // first index on Z

  InputImageType::RegionType region;
  region.SetSize( size );
  region.SetIndex( start );

  // Pixel data is allocated
  image->SetRegions( region );
  image->Allocate();

   int i,j,k;
 int max_value=0;

  for ( i=0;i<size_x;i++) {
      for ( j=0;i<size_y;j++){
          for ( k=0;i<size_z;k++){

              InputImageType::IndexType pixelIndex;
                pixelIndex[0] = i; // x position
                pixelIndex[1] = j; // y position
                pixelIndex[2] = k; // z position

                InputImageType::PixelType pixelValue = image->GetPixel(
pixelIndex );

                if(pixelValue>max_value){max_value=pixelValue;}

          }
      }
  }

   ui->label_22->setText(QString("maximum_value_raw%1").arg(max_value));

2011/6/7 robert tamburo <robert.tamburo at gmail.com>

> GetPixel() belongs to itkImage, not the reader. Try
> reader->GetOutput()->GetPixel(index).
>
> Two other things: 1) You may want to consider using an ImageRegionIterator
> instead of for loops, and 2) You can use the MinimumMaximumImageCalculator
> to get the maximum intensity in an image.
>
> There are examples on how to use each class at
> http://www.itk.org/Wiki/ITK/Examples
>
> <http://www.itk.org/Wiki/ITK/Examples>
>
> On Tue, Jun 7, 2011 at 8:36 AM, john smith <mkitkinsightuser at gmail.com>wrote:
>
>> Hello,
>>
>> I am trying to find the maximum pixel value of a 3D  image, and I am using
>> the GetPixel method with 3 loops.I want to load my image from a file so I
>> created a reader pointer.Does this pointer include the raw data of my image?
>> I have created the following code but I get an error: GetPixel() method is
>> not a member of reader. Could somebody tell me what I am doing wrong? How I
>> could find the maximum pixel value of a loaded image with the method of
>> GetPixel()?
>>
>> Thanks
>>
>>   typedef short               InputPixelType;
>>   const   unsigned int        Dimension = 3;
>>
>>   typedef itk::Image< InputPixelType,  Dimension >    InputImageType;
>>   typedef itk::ImageFileReader< InputImageType  >  ReaderType;
>>
>>
>>   ReaderType::Pointer reader = ReaderType::New();
>>
>>      reader->SetFileName( fileName.toStdString()  );
>>      reader->Update();
>>
>>        InputImageType::RegionType inputRegion =
>>            reader->GetOutput()->GetLargestPossibleRegion();
>>
>>   InputImageType::SizeType size = inputRegion.GetSize();
>>
>>   // get the size of the hole 3D image
>>   size_x = size[0];
>>   size_y = size[1];
>>   size_z = size[2];
>>
>>    InputImageType::IndexType start = inputRegion.GetIndex();
>>   start[0] =   0;  // first index on X
>>   start[1] =   0;  // first index on Y
>>   start[2] =   0;  // first index on Z
>>
>>  int i,j,k;
>>  int max_value=0;
>>   for ( i=0;i<size_x;i++) {
>>       for ( j=0;i<size_y;j++){
>>           for ( k=0;i<size_z;k++){
>>
>>               InputImageType::IndexType pixelIndex;
>>                 pixelIndex[0] = i; // x position
>>                 pixelIndex[1] = j; // y position
>>                 pixelIndex[2] = k; // z position
>>
>>                 InputImageType::PixelType pixelValue = reader->GetPixel(
>> pixelIndex );
>>
>>                 if(pixelValue>max_value){max_value=pixelValue;}
>>
>>           }
>>       }
>>   }
>>
>> _____________________________________
>>
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.html
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20110607/4f808377/attachment.htm>


More information about the Insight-users mailing list