A pseudo-Filter for creating OpenCV images from MITK images with the option of copying data or referencing it. More...
#include <mitkImageToOpenCVImageFilter.h>
Public Types | |
typedef itk::RGBPixel < unsigned char > | UCRGBPixelType |
typedef itk::RGBPixel < unsigned short > | USRGBPixelType |
typedef itk::RGBPixel< float > | FloatRGBPixelType |
typedef itk::RGBPixel< double > | DoubleRGBPixelType |
typedef ImageToOpenCVImageFilter | Self |
typedef itk::Object | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
virtual const char * | GetClassName () const |
void | SetImage (mitk::Image *_Image) |
virtual mitk::Image * | GetImage () |
bool | CheckImage (mitk::Image *image) |
IplImage * | GetOpenCVImage () |
Static Public Member Functions | |
template<typename TPixel , unsigned int VImageDimension> | |
static mitk::Image::Pointer | ConvertIplToMitkImage (const IplImage *input, bool copyBuffer=true) |
static Pointer | New () |
Protected Member Functions | |
ImageToOpenCVImageFilter () | |
virtual | ~ImageToOpenCVImageFilter () |
template<typename TPixel , unsigned int VImageDimension> | |
void | ItkImageProcessing (itk::Image< TPixel, VImageDimension > *image, int depth) |
template<typename TPixel , unsigned int VImageDimension> | |
void | ItkImageProcessing (itk::Image< itk::RGBPixel< TPixel >, VImageDimension > *image, int depth) |
Protected Attributes | |
mitk::WeakPointer< mitk::Image > | m_Image |
IplImage * | m_OpenCVImage |
A pseudo-Filter for creating OpenCV images from MITK images with the option of copying data or referencing it.
Last contributor:
Definition at line 40 of file mitkImageToOpenCVImageFilter.h.
typedef itk::SmartPointer<const Self> mitk::ImageToOpenCVImageFilter::ConstPointer |
Definition at line 51 of file mitkImageToOpenCVImageFilter.h.
typedef itk::RGBPixel< double > mitk::ImageToOpenCVImageFilter::DoubleRGBPixelType |
Definition at line 46 of file mitkImageToOpenCVImageFilter.h.
typedef itk::RGBPixel< float > mitk::ImageToOpenCVImageFilter::FloatRGBPixelType |
Definition at line 45 of file mitkImageToOpenCVImageFilter.h.
typedef itk::SmartPointer<Self> mitk::ImageToOpenCVImageFilter::Pointer |
Definition at line 51 of file mitkImageToOpenCVImageFilter.h.
Definition at line 51 of file mitkImageToOpenCVImageFilter.h.
typedef itk::Object mitk::ImageToOpenCVImageFilter::Superclass |
Definition at line 51 of file mitkImageToOpenCVImageFilter.h.
typedef itk::RGBPixel< unsigned char > mitk::ImageToOpenCVImageFilter::UCRGBPixelType |
Definition at line 43 of file mitkImageToOpenCVImageFilter.h.
typedef itk::RGBPixel< unsigned short > mitk::ImageToOpenCVImageFilter::USRGBPixelType |
Definition at line 44 of file mitkImageToOpenCVImageFilter.h.
mitk::ImageToOpenCVImageFilter::ImageToOpenCVImageFilter | ( | ) | [protected] |
Definition at line 24 of file mitkImageToOpenCVImageFilter.cpp.
: m_OpenCVImage(0) { }
mitk::ImageToOpenCVImageFilter::~ImageToOpenCVImageFilter | ( | ) | [protected, virtual] |
Definition at line 29 of file mitkImageToOpenCVImageFilter.cpp.
{ m_OpenCVImage = 0; }
bool mitk::ImageToOpenCVImageFilter::CheckImage | ( | mitk::Image * | image ) |
Definition at line 34 of file mitkImageToOpenCVImageFilter.cpp.
References mitk::Image::GetDimension(), and MITK_WARN.
{ if(image == 0) { MITK_WARN << "MITK Image is 0"; return false; } if(image->GetDimension() != 2) { MITK_WARN << "Only 2D Images allowed"; return false; } return true; }
static mitk::Image::Pointer mitk::ImageToOpenCVImageFilter::ConvertIplToMitkImage | ( | const IplImage * | input, |
bool | copyBuffer = true |
||
) | [static] |
virtual const char* mitk::ImageToOpenCVImageFilter::GetClassName | ( | ) | const [virtual] |
virtual mitk::Image* mitk::ImageToOpenCVImageFilter::GetImage | ( | ) | [virtual] |
IplImage * mitk::ImageToOpenCVImageFilter::GetOpenCVImage | ( | ) |
Get the produced OpenCVImage. ATTENTION: Do not forget to release this image again with cvReleaseImage().
Definition at line 49 of file mitkImageToOpenCVImageFilter.cpp.
References AccessFixedTypeByItk_1, int(), and ItkImageProcessing().
{ if(!m_OpenCVImage && this->CheckImage( m_Image ) == true ) { // gray image if(m_Image->GetPixelType() == typeid(unsigned char)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, unsigned char, 2, IPL_DEPTH_8U ); } else if(m_Image->GetPixelType() == typeid(char)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, char, 2, IPL_DEPTH_8S ); } else if(m_Image->GetPixelType() == typeid(unsigned short)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, unsigned short, 2, IPL_DEPTH_16U ); } else if(m_Image->GetPixelType() == typeid(short)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, short, 2, IPL_DEPTH_16S ); } else if(m_Image->GetPixelType() == typeid(int)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, int, 2, IPL_DEPTH_32S ); } else if(m_Image->GetPixelType() == typeid(float)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, float, 2, IPL_DEPTH_32F ); } else if(m_Image->GetPixelType() == typeid(double)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, double, 2, IPL_DEPTH_64F ); } // rgb image else if(m_Image->GetPixelType() == typeid(UCRGBPixelType)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, UCRGBPixelType, 2, IPL_DEPTH_8U ); } else if(m_Image->GetPixelType() == typeid(USRGBPixelType)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, USRGBPixelType, 2, IPL_DEPTH_16U ); } else if(m_Image->GetPixelType() == typeid(FloatRGBPixelType)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, FloatRGBPixelType, 2, IPL_DEPTH_64F ); } else if(m_Image->GetPixelType() == typeid(DoubleRGBPixelType)) { AccessFixedTypeByItk_1 ( m_Image.GetPointer(), ItkImageProcessing, DoubleRGBPixelType, 2, IPL_DEPTH_64F ); } } return m_OpenCVImage; }
void mitk::ImageToOpenCVImageFilter::ItkImageProcessing | ( | itk::Image< itk::RGBPixel< TPixel >, VImageDimension > * | image, |
int | depth | ||
) | [protected] |
Definition at line 102 of file mitkImageToOpenCVImageFilter.h.
{ typedef itk::RGBPixel<TPixel> RGBPixelType; typedef itk::Image<RGBPixelType, VImageDimension> RGBImageType; typedef itk::ImageRegionIterator<RGBImageType> RGBIteratorType; RGBIteratorType it(image, image->GetLargestPossibleRegion()); typename RGBImageType::SizeType size = image->GetLargestPossibleRegion().GetSize(); // create new opencv image m_OpenCVImage = cvCreateImage( cvSize( size[0], size[1] ), depth, 3 ); unsigned int x = 0,y = 0; CvScalar s; for ( it.GoToBegin(); !it.IsAtEnd(); ++it ) { s.val[0] = it.Value().GetBlue(); s.val[1] = it.Value().GetGreen(); s.val[2] = it.Value().GetRed(); //MITK_DEBUG << "[" << x << "," << y << "] " << s.val[0] << "(B)," << s.val[1] << "(G)," << s.val[2] << "(R)"; cvSet2D(m_OpenCVImage,y,x,s); ++x; // next line found if( x == size[0] ) { x = 0; ++y; } } }
void mitk::ImageToOpenCVImageFilter::ItkImageProcessing | ( | itk::Image< TPixel, VImageDimension > * | image, |
int | depth | ||
) | [protected] |
Definition at line 84 of file mitkImageToOpenCVImageFilter.h.
{ typedef itk::Image<TPixel, VImageDimension> ImageType; const unsigned int numberOfPixels = m_OpenCVImage->width * m_OpenCVImage->height; const unsigned int numberOfBytes = numberOfPixels * sizeof( typename ImageType::PixelType ); const typename ImageType::PixelType * itkBuffer = image->GetBufferPointer(); typename ImageType::SizeType size = image->GetLargestPossibleRegion().GetSize(); // create new opencv image m_OpenCVImage = cvCreateImage( cvSize( size[0], size[1] ) , depth, 1 ); memcpy( m_OpenCVImage->imageData, itkBuffer, numberOfBytes ); }
static Pointer mitk::ImageToOpenCVImageFilter::New | ( | ) | [static] |
Referenced by mitkImageToOpenCVImageFilterTest().
void mitk::ImageToOpenCVImageFilter::SetImage | ( | mitk::Image * | _Image ) |
Definition at line 105 of file mitkImageToOpenCVImageFilter.cpp.
{ if(m_Image == _Image) return; m_Image = _Image; m_OpenCVImage = 0; }
Saves if the filter should copy the data or just reference it
Definition at line 79 of file mitkImageToOpenCVImageFilter.h.
IplImage* mitk::ImageToOpenCVImageFilter::m_OpenCVImage [protected] |
Definition at line 80 of file mitkImageToOpenCVImageFilter.h.