[Insight-users] (no subject)

john smith mkitkinsightuser at gmail.com
Wed Feb 16 13:21:01 EST 2011


I have a .png image file in the source directory and I want to get the data
of one pixel of the image and see the results on the Command Window (if it
is possible) or on another file (such as a .txt file) . Firstly, I am
wondering if it is necessary to read the hole Image by using a
ImageFileReader, or I can get the data I want just with the using of
itkIndex.

2011/2/16 David Doria <daviddoria at gmail.com>

> On Wed, Feb 16, 2011 at 12:50 PM, john smith <mkitkinsightuser at gmail.com>wrote:
>
>> Hello,
>>
>> I am beginner in using itk and I am trying to get the pixel value of a 2D
>> image. As a first step, I am trying to create my own image object, to
>> initialize and allocate the image region, and finally using the itkIndex to
>> get and set a pixel value (knowing that is not the fastest method). I have
>> written the following code, which is correctly built using VisualStudio2010
>> and Cmake. But when I run the .exe file with the Command Prompt window, I
>> don't get any result on my screen. Could somebody tell me what to do to get
>> some results?
>> In the second step, I would like to set the filename of the image myself,
>> using the Command Prompt window. Could somebody tell me what to change in my
>> code, not only in the .cxx file but also in thr CMakeLists.txt?
>>
>> Thanks in advance
>>
>> ---------------------------------code-----------------------
>> ------------------------------------------------------------
>>
>> #if defined(_MSC_VER)
>> #pragma warning ( disable : 4786 )
>> #endif
>>
>>
>> #include "itkImage.h"
>> #include "itkIndex.h"
>>
>> int main(int, char *[])
>> {
>>   // First the image type should be declared
>>   typedef itk::Image< unsigned short, 2 > ImageType;
>>
>>   // Then the image object can be created
>>   ImageType::Pointer image = ImageType::New();
>>
>>   // The image region should be initialized
>>   ImageType::IndexType start;
>>   ImageType::SizeType  size;
>>
>>   size[0]  = 200;  // size along X
>>   size[1]  = 200;  // size along Y
>>
>>
>>   start[0] =   0;  // first index on X
>>   start[1] =   0;  // first index on Y
>>
>>
>>   ImageType::RegionType region;
>>   region.SetSize( size );
>>   region.SetIndex( start );
>>
>>   // Pixel data is allocated
>>   image->SetRegions( region );
>>   image->Allocate();
>>
>>   // The image buffer is initialized to a particular value
>>   ImageType::PixelType  initialValue = 0;
>>   image->FillBuffer( initialValue );
>>
>>
>>   ImageType::IndexType pixelIndex;
>>
>>   pixelIndex[0] = 27;   // x position
>>   pixelIndex[1] = 29;   // y position
>>
>>
>>
>>   ImageType::PixelType   pixelValue = image->GetPixel( pixelIndex );
>>
>>
>>
>>   image->SetPixel(   pixelIndex,   pixelValue+1  );
>>
>>
>>
>>   return 0;
>>
>> }
>>
>>
> That all looks fine. Are you looking to display the image on the screen?
> This capability is not built into ITK. There are ways to interface with ITK,
> but maybe you should start by using ImageFileWriter to write the result to a
> file and inspect it elsewhere.
>
> You could view the value of the pixel you have set by doing:
>
> std::cout << image->GetPixel(pixelIndex);
>
> David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20110216/b90784a7/attachment.htm>


More information about the Insight-users mailing list