[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