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.
1.7.2