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

john smith mkitkinsightuser at gmail.com
Tue Jun 7 10:15:27 EDT 2011


Well,

When I debug the code, then I am taking an exception:
*Unhandled exception at 0x00856a67 in mainwindow.exe: 0xC0000005: Access
violation reading location 0x050f0548.*

Do yoy know why?Should I change something in my code?Is there wrong in the
logic of the code?
Thanks for the replies

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;

 size = inputRegion.GetSize();
  // 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 john smith <mkitkinsightuser at gmail.com>

> I have added this
>
>
>   size = inputRegion.GetSize();
>   // get the size of the hole 3D image
>   size_x = size[0];
>   size_y = size[1];
>   size_z = size[2];
>
> I am getting into the loop, but now I am getting an exception.Do you know
> what I am doing wrong? I have declared the size_x,size_y,size_z in an other
> function as it seems bellow, and declare them as global variable.Is it this
> declaration responcible for the exception?
>
> Thanks
>
>
>
> 2011/6/7 Brecht Heyde <Brecht.Heyde at med.kuleuven.be>
>
>>  Sorry, it should have been:
>>
>> size = inputRegion.GetSize();
>>
>>
>>
>> Regards,
>>
>> Brecht Heyde
>>
>>
>>
>> *From:* insight-users-bounces at itk.org [mailto:
>> insight-users-bounces at itk.org] *On Behalf Of *Brecht Heyde
>> *Sent:* dinsdag 7 juni 2011 15:34
>> *To:* 'john smith'; 'robert tamburo'; insight-users at itk.org
>>
>> *Subject:* Re: [Insight-users] get the maximum pixel value using
>> GetPixel() for 3D image
>>
>>
>>
>> Hi,
>>
>>
>>
>> Your size_x, size_y and size_z are not representing the actual  size of
>> the image.
>>
>>
>>
>> Add:
>>
>> size = inputRegion->GetSize();
>>
>> Before
>>
>> size_x = …
>>
>> size_y = …
>>
>> size_z = …
>>
>>
>>
>> I would however also suggest to use an imageIterator.
>>
>>
>>
>> Regards,
>>
>> Brecht Heyde
>>
>>
>>
>> *From:* insight-users-bounces at itk.org [mailto:
>> insight-users-bounces at itk.org] *On Behalf Of *john smith
>> *Sent:* dinsdag 7 juni 2011 15:27
>> *To:* robert tamburo; insight-users at itk.org
>> *Subject:* Re: [Insight-users] get the maximum pixel value using
>> GetPixel() for 3D image
>>
>>
>>
>> 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
>>
>>
>>
>>
>>
>> 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/4749d88d/attachment.htm>


More information about the Insight-users mailing list