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

john smith mkitkinsightuser at gmail.com
Tue Jun 7 10:23:40 EDT 2011


OK, this is the exception that I get

*Unhandled exception at 0x00286a67 in mainwindow.exe: 0xC0000005: Access
violation reading location 0x04960548.*

2011/6/7 john smith <mkitkinsightuser at gmail.com>

> 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/ccd618e8/attachment.htm>


More information about the Insight-users mailing list