[Insight-users] get the maximum pixel value using GetPixel() for 3D image
Vincent Garcia
vincent.garcia at inria.fr
Tue Jun 7 09:21:16 EDT 2011
I think you should :
- Get the largest region of the image using GetLargestPossibleRegion ()
- Then you define an itk::ImageRegionIterator on your region
- With only one loop, you access to all image pixel
The code should be soemthing like that (if you are in a template function) :
// Type definition
typedef itk::ImageRegionIterator<ImageType> ImageIteratorType;
typedef ImageType::RegionType RegionType;
typedef ImageType::PixelType PixelType;
// Get image region
RegionType region = image->GetLargestPossibleRegion();
// Create iterator
ImageIteratorType it( image, region );
it.GoToBegin();
// Initialization of max_value
int max_value=0;
// Loop
while(!it.IsAtEnd())
{
// Pixel value
PixelType pixel = it.Get();
// Is it bigger than the max?
if (pixel>max_value)
max_value = pixel;
// Increment iterator
++it;
}
I haven't compile the code neither tested it.
It's just a simple example.
This code assumes that PixelType is a scalar value (e.g. double, int, short, float, etc.), not a vector.
Vincent Garcia
----- Original Message -----
From: "john smith" <mkitkinsightuser at gmail.com>
To: insight-users at itk.org
Sent: Tuesday, 7 June, 2011 2:36:04 PM
Subject: [Insight-users] get the maximum pixel value using GetPixel() for 3D image
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
More information about the Insight-users
mailing list