[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