[Insight-users] get the maximum pixel value using GetPixel() for 3D image
Brecht Heyde
Brecht.Heyde at med.kuleuven.be
Tue Jun 7 09:35:55 EDT 2011
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/7aa881d8/attachment.htm>
More information about the Insight-users
mailing list