[Insight-developers] reinterpret_cast question

Jisung Kim bahrahm at yahoo . com
Fri, 27 Jun 2003 10:09:53 -0700 (PDT)


Hi.

You are right. That looks weired to cast return value
to a reference. If the image is not an ImageAdaptor, I
can use the PixelContainer buffer directly, but I
can't assume that. I will experiment with other
options a little bit more.

Thanks,

--- "Miller, James V (Research)" <millerjv at crd . ge . com>
wrote:
> I can't comment on the reinterpret_cast part but 
> I would worry about the use of GetPixel().  Since
> GetPixel() returns by value, you are taking the 
> address of a temporary variable, running
> reinterpret_cast
> on that address and then assigning it to as a
> reference
> to a FixedArray.  
> 
> I would guess that manipulating the address and 
> bit pattern of a temporary variable is not a robust
> thing
> to do.
> 
> 
> 
> > -----Original Message-----
> > From: Jisung Kim [mailto:bahrahm at yahoo . com]
> > Sent: Friday, June 27, 2003 10:51 AM
> > To: insight-dev-list
> > Subject: [Insight-developers] reinterpret_cast
> question
> > 
> > 
> > Hi.
> > 
> > I am doing an experiment with reinterpret_cast.
> The
> > purpose of the experiment is to see if
> > "reinterpret_cast"ing scalar pixel (int, chat,
> double)
> > to itk::FixedArray< PixelType, 1> works.
> > 
> > I checked in the itkDummyImageToListAdaptorTest in
> > Testing/Code/Numerics/Statistics. The current
> > implementation of ImageToListAdaptor class accepts
> > only images with the pixel types of
> itk::FixedArray or
> > its derived classes( itk::Vector, itk::Point,
> > itk::RBGPixel...). Therefore, images with scalar
> > pixels have to be converted before using them with
> > ImageToListAdaptor class.
> > 
> > In the new test program, I forced casting from
> scalar
> > pixel to itk::FixedArray< PixelType, 1>. And it
> worked
> > on all compilers. The casting works something like
> > this:
> > 
> > typedef int ScalarPixelType ;
> > typedef itk::Image< ScalarPixelType, 3 >
> > ScalarImageType ;
> > typedef itk::FixedArrray< ScalarPixelType, 1 >
> > ArrayPixelType ;
> > 
> > ...... allocates and fills the scalar image ......
> > 
> > ArrayPixelType& arrayPixel = 
> > *(reinterpret_cast< ArrayPixelType* >
> >              ( &(scalarImage->GetPixel(index) ) )
> ;
> > 
> > std::cout << arrayPixel[0] << std::endl ;
> > 
> > I'm not familiar with the reinterpret_cast and
> > wondering if this is legitimate use of it.
> > 
> > Any suggestions?
> > 
> > Thanks,
> > 
> > 
> > =====
> > Jisung Kim
> > bahrahm at yahoo . com
> > 106 Mason Farm Rd.
> > 129 Radiology Research Lab., CB# 7515
> > Univ. of North Carolina at Chapel Hill
> > Chapel Hill, NC 27599-7515
> > 
> > __________________________________
> > Do you Yahoo!?
> > SBC Yahoo! DSL - Now only $29.95 per month!
> > http://sbc . yahoo . com
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers at itk . org
> >
>
http://www . itk . org/mailman/listinfo/insight-developers
> > 
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk . org
>
http://www . itk . org/mailman/listinfo/insight-developers


=====
Jisung Kim
bahrahm at yahoo . com
106 Mason Farm Rd.
129 Radiology Research Lab., CB# 7515
Univ. of North Carolina at Chapel Hill
Chapel Hill, NC 27599-7515

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc . yahoo . com