[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