[Insight-users] RGB to grayscale
Luis Ibanez
luis.ibanez@kitware.com
Mon May 10 01:21:30 EDT 2004
This is a multi-part message in MIME format.
--------------070108060505000406010906
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hi Michael,
The most efficient way is to use the new filter:
itk::RGBToLuminanceImageFilter
Simply instantiate an input image using the class
RGBPixel<> as pixel type.
If you want to trade memory for computation time
you could also use the RGBToLuminanceImageAdaptor.
You will find a test for this new filter and image
adaptor under:
Insight/Testing/Code/BasicFilters
itkRGBToLuminanceImageFilterAndAdaptorTest.cxx
Note that you will have to update your CVS checkout
in order to get these new filter and adaptor.
The RGB to Luminance filter is attached to this email.
Please let us know if you have further questions,
Thanks
Luis
------------------------
Michael Hawrylycz wrote:
> Hi,
>
> What is the most efficient way to convert an rgb image to grayscale ?
>
> Thanks,
>
> Mike
>
>
> Mike Hawrylycz, Ph.D.
> Director, Informatics
> Allen Institute of Brain Science
> mikeh@alleninstitute.org
> (206) 548-7011
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
----------------------------------------------------------
--------------070108060505000406010906
Content-Type: text/plain;
name="itkRGBToLuminanceImageFilter.h"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="itkRGBToLuminanceImageFilter.h"
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: $RCSfile: itkRGBToLuminanceImageFilter.h,v $
Language: C++
Date: $Date: 2004/05/10 00:16:11 $
Version: $Revision: 1.1 $
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __itkRGBToLuminanceImageFilter_h
#define __itkRGBToLuminanceImageFilter_h
#include "itkUnaryFunctorImageFilter.h"
namespace itk
{
/** \class RGBToLuminanceImageFilter
* \brief Converts an RGB image into a grayscale image.
*
* This filters converts an RGB image into a Luminance on by computing
* pixel-wise a linear combination on the Red, Green and Blue channels. The
* pixel type of the input image must have a GetLuminance() method. This is the
* case of the itk::RGBPixel class.
*
* \ingroup IntensityImageFilters Multithreaded
*/
namespace Function {
template< class TInput, class TOutput>
class RGBToLuminance
{
public:
typedef typename TInput::ComponentType ComponentType;
typedef typename itk::NumericTraits< ComponentType >::RealType RealType;
RGBToLuminance() {}
~RGBToLuminance() {}
inline TOutput operator()( const TInput & A )
{ return static_cast<TOutput>( A.GetLuminance() ); }
};
}
template <class TInputImage, class TOutputImage>
class ITK_EXPORT RGBToLuminanceImageFilter :
public
UnaryFunctorImageFilter<TInputImage,TOutputImage,
Function::RGBToLuminance<
typename TInputImage::PixelType,
typename TOutputImage::PixelType> >
{
public:
/** Standard class typedefs. */
typedef RGBToLuminanceImageFilter Self;
typedef UnaryFunctorImageFilter<TInputImage,TOutputImage,
Function::RGBToLuminance< typename TInputImage::PixelType,
typename TOutputImage::PixelType> > Superclass;
typedef SmartPointer<Self> Pointer;
typedef SmartPointer<const Self> ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
protected:
RGBToLuminanceImageFilter() {}
virtual ~RGBToLuminanceImageFilter() {}
private:
RGBToLuminanceImageFilter(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
};
} // end namespace itk
#endif
--------------070108060505000406010906--
More information about the Insight-users
mailing list