#include <mitkImageToItk.h>
Public Types | |
| typedef ImageToItk | Self |
| typedef itk::ImageSource < TOutputImage > | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| typedef itk::SmartPointer < const Self > | ConstPointer |
| typedef Superclass::OutputImageRegionType | OutputImageRegionType |
| typedef mitk::Image | InputImageType |
| typedef InputImageType::Pointer | InputImagePointer |
| typedef InputImageType::ConstPointer | InputImageConstPointer |
| typedef SlicedData::RegionType | InputImageRegionType |
| typedef TOutputImage::SizeType | SizeType |
| typedef TOutputImage::IndexType | IndexType |
| typedef TOutputImage::RegionType | RegionType |
| typedef TOutputImage::PixelType | PixelType |
Public Member Functions | |
| const mitk::Image * | GetInput (void) |
| const mitk::Image * | GetInput (unsigned int idx) |
| virtual void | SetInput (const mitk::Image *input) |
| virtual void | SetInput (unsigned int index, const mitk::Image *image) |
| virtual void | UpdateOutputInformation () |
| virtual int | GetChannel () |
| virtual void | SetChannel (int _arg) |
| virtual void | SetCopyMemFlag (bool _arg) |
| virtual bool | GetCopyMemFlag () |
| virtual void | CopyMemFlagOn () |
| virtual void | CopyMemFlagOff () |
Static Public Member Functions | |
| static Pointer | New () |
Protected Member Functions | |
| ImageToItk () | |
| virtual | ~ImageToItk () |
| void | PrintSelf (std::ostream &os, itk::Indent indent) const |
| virtual void | GenerateData () |
| virtual void | GenerateOutputInformation () |
Protected Attributes | |
| mitk::Image::Pointer | m_MitkImage |
| mitk::ImageDataItem::Pointer | m_ImageDataItem |
Create itk::ImageSource for mitk::Image
Definition at line 41 of file mitkImageToItk.h.
| typedef itk::SmartPointer<const Self> mitk::ImageToItk< TOutputImage >::ConstPointer |
Definition at line 51 of file mitkImageToItk.h.
| typedef TOutputImage::IndexType mitk::ImageToItk< TOutputImage >::IndexType |
Definition at line 65 of file mitkImageToItk.h.
| typedef InputImageType::ConstPointer mitk::ImageToItk< TOutputImage >::InputImageConstPointer |
Definition at line 62 of file mitkImageToItk.h.
| typedef InputImageType::Pointer mitk::ImageToItk< TOutputImage >::InputImagePointer |
Definition at line 61 of file mitkImageToItk.h.
| typedef SlicedData::RegionType mitk::ImageToItk< TOutputImage >::InputImageRegionType |
Definition at line 63 of file mitkImageToItk.h.
| typedef mitk::Image mitk::ImageToItk< TOutputImage >::InputImageType |
Some convenient typedefs.
Definition at line 60 of file mitkImageToItk.h.
| typedef Superclass::OutputImageRegionType mitk::ImageToItk< TOutputImage >::OutputImageRegionType |
Superclass typedefs.
Definition at line 54 of file mitkImageToItk.h.
| typedef TOutputImage::PixelType mitk::ImageToItk< TOutputImage >::PixelType |
Definition at line 67 of file mitkImageToItk.h.
| typedef itk::SmartPointer<Self> mitk::ImageToItk< TOutputImage >::Pointer |
Definition at line 50 of file mitkImageToItk.h.
| typedef TOutputImage::RegionType mitk::ImageToItk< TOutputImage >::RegionType |
Definition at line 66 of file mitkImageToItk.h.
| typedef ImageToItk mitk::ImageToItk< TOutputImage >::Self |
Definition at line 48 of file mitkImageToItk.h.
| typedef TOutputImage::SizeType mitk::ImageToItk< TOutputImage >::SizeType |
Definition at line 64 of file mitkImageToItk.h.
| typedef itk::ImageSource<TOutputImage> mitk::ImageToItk< TOutputImage >::Superclass |
Definition at line 49 of file mitkImageToItk.h.
| mitk::ImageToItk< TOutputImage >::ImageToItk | ( | ) | [inline, protected] |
Definition at line 85 of file mitkImageToItk.h.
: m_CopyMemFlag(false), m_Channel(0)
{
}
| virtual mitk::ImageToItk< TOutputImage >::~ImageToItk | ( | ) | [inline, protected, virtual] |
Definition at line 89 of file mitkImageToItk.h.
{
}
| virtual void mitk::ImageToItk< TOutputImage >::CopyMemFlagOff | ( | ) | [virtual] |
| virtual void mitk::ImageToItk< TOutputImage >::CopyMemFlagOn | ( | ) | [virtual] |
| void mitk::ImageToItk< TOutputImage >::GenerateData | ( | ) | [protected, virtual] |
Definition at line 88 of file mitkImageToItk.txx.
{
// Allocate output
mitk::Image::ConstPointer input = this->GetInput();
typename Superclass::OutputImageType::Pointer output = this->GetOutput();
unsigned long noBytes = input->GetDimension(0);
for (unsigned int i=1; i<TOutputImage::GetImageDimension(); ++i)
{
noBytes = noBytes * input->GetDimension(i);
}
// hier wird momentan wohl nur der erste Channel verwendet??!!
m_ImageDataItem = const_cast<mitk::Image*>(input.GetPointer())->GetChannelData( m_Channel );
if(m_ImageDataItem.GetPointer() == NULL)
{
itkWarningMacro(<< "no image data to import in ITK image");
RegionType bufferedRegion;
output->SetBufferedRegion(bufferedRegion);
return;
}
if (m_CopyMemFlag)
{
itkDebugMacro("copyMem ...");
output->Allocate();
memcpy( (PixelType *) output->GetBufferPointer(), m_ImageDataItem->GetData(), sizeof(PixelType)*noBytes);
}
else
{
itkDebugMacro("do not copyMem ...");
typedef itk::ImportMitkImageContainer< unsigned long, PixelType > ImportContainerType;
typename ImportContainerType::Pointer import;
import = ImportContainerType::New();
import->Initialize();
itkDebugMacro( << "size of container = " << import->Size() );
import->SetImageDataItem(m_ImageDataItem);
output->SetPixelContainer(import);
itkDebugMacro( << "size of container = " << import->Size() );
}
}
| void mitk::ImageToItk< TOutputImage >::GenerateOutputInformation | ( | ) | [protected, virtual] |
Definition at line 162 of file mitkImageToItk.txx.
References matrix().
{
mitk::Image::ConstPointer input = this->GetInput();
typename Superclass::OutputImageType::Pointer output = this->GetOutput();
// allocate size, origin, spacing, direction in types of output image
SizeType size;
const unsigned int itkDimMin3 = (TOutputImage::ImageDimension > 3 ? TOutputImage::ImageDimension : 3);
const unsigned int itkDimMax3 = (TOutputImage::ImageDimension < 3 ? TOutputImage::ImageDimension : 3);
typename Superclass::OutputImageType::PointType::ValueType origin[ itkDimMin3 ];
typename Superclass::OutputImageType::SpacingType::ComponentType spacing[ itkDimMin3 ];
typename Superclass::OutputImageType::DirectionType direction;
// copy as much information as possible into size and spacing
unsigned int i;
for ( i=0; i < itkDimMax3; ++i)
{
size[i] = input->GetDimension(i);
spacing[i] = input->GetGeometry()->GetSpacing()[i];
}
for ( ; i < TOutputImage::ImageDimension; ++i)
{
origin[i] = 0.0;
size[i] = input->GetDimension(i);
spacing[i] = 1.0;
}
// build region from size
IndexType start;
start.Fill( 0 );
RegionType region;
region.SetIndex( start );
region.SetSize( size );
// copy as much information as possible into origin
const mitk::Point3D& mitkorigin = input->GetGeometry()->GetOrigin();
itk2vtk(mitkorigin, origin);
// copy as much information as possible into direction
direction.SetIdentity();
unsigned int j;
const AffineTransform3D::MatrixType& matrix = input->GetGeometry()->GetIndexToWorldTransform()->GetMatrix();
// the following loop devides by spacing now to normalize columns.
// counterpart of InitializeByItk in mitkImage.h line 372 of revision 15092.
if ( itkDimMax3 >= 3)
{
for ( i=0; i < itkDimMax3; ++i)
for( j=0; j < itkDimMax3; ++j )
direction[i][j] = matrix[i][j]/spacing[j];
}
// set information into output image
output->SetRegions( region );
output->SetOrigin( origin );
output->SetSpacing( spacing );
output->SetDirection( direction );
}
| virtual int mitk::ImageToItk< TOutputImage >::GetChannel | ( | ) | [virtual] |
| virtual bool mitk::ImageToItk< TOutputImage >::GetCopyMemFlag | ( | ) | [virtual] |
| const mitk::Image * mitk::ImageToItk< TOutputImage >::GetInput | ( | void | ) |
Definition at line 68 of file mitkImageToItk.txx.
{
if (this->GetNumberOfInputs() < 1)
{
return 0;
}
return static_cast< const mitk::Image * >
(itk::ProcessObject::GetInput(0) );
}
| const mitk::Image * mitk::ImageToItk< TOutputImage >::GetInput | ( | unsigned int | idx ) |
Definition at line 80 of file mitkImageToItk.txx.
{
return static_cast< mitk::Image * >
(itk::ProcessObject::GetInput(idx));
}
| static Pointer mitk::ImageToItk< TOutputImage >::New | ( | ) | [static] |
Method for creation through the object factory.
Referenced by testImageToItkAndBack().
| void mitk::ImageToItk< TOutputImage >::PrintSelf | ( | std::ostream & | os, |
| itk::Indent | indent | ||
| ) | const [protected] |
Definition at line 227 of file mitkImageToItk.txx.
{
Superclass::PrintSelf(os,indent);
}
| virtual void mitk::ImageToItk< TOutputImage >::SetChannel | ( | int | _arg ) | [virtual] |
| virtual void mitk::ImageToItk< TOutputImage >::SetCopyMemFlag | ( | bool | _arg ) | [virtual] |
| void mitk::ImageToItk< TOutputImage >::SetInput | ( | const mitk::Image * | input ) | [virtual] |
Definition at line 29 of file mitkImageToItk.txx.
References mitk::Image::GetDimension(), and mitk::Image::GetPixelType().
Referenced by mitk::CutImageWithOutputTypeSelect(), mitk::RGBToRGBACastImageFilter::InternalCast(), mitk::MaskImageFilter::InternalComputeMask(), and testImageToItkAndBack().
{
if(input == NULL)
itkExceptionMacro( << "image is null" );
if(input->GetDimension()!=TOutputImage::GetImageDimension())
itkExceptionMacro( << "image has dimension " << input->GetDimension() << " instead of " << TOutputImage::GetImageDimension() );
if(!(input->GetPixelType() == typeid(PixelType)))
itkExceptionMacro( << "image has wrong pixel type " );
// Process object is not const-correct so the const_cast is required here
itk::ProcessObject::SetNthInput(0,
const_cast< mitk::Image * >( input ) );
}
| void mitk::ImageToItk< TOutputImage >::SetInput | ( | unsigned int | index, |
| const mitk::Image * | image | ||
| ) | [virtual] |
Definition at line 46 of file mitkImageToItk.txx.
References mitk::Image::GetDimension(), and mitk::Image::GetPixelType().
{
if( index+1 > this->GetNumberOfInputs() )
{
this->SetNumberOfRequiredInputs( index + 1 );
}
if(input == NULL)
itkExceptionMacro( << "image is null" );
if(input->GetDimension()!=TOutputImage::GetImageDimension())
itkExceptionMacro( << "image has dimension " << input->GetDimension() << " instead of " << TOutputImage::GetImageDimension() );
if(!(input->GetPixelType() == typeid(PixelType)))
itkExceptionMacro( << "image has wrong pixel type " );
// Process object is not const-correct so the const_cast is required here
itk::ProcessObject::SetNthInput(index,
const_cast< mitk::Image *>( input ) );
}
| void mitk::ImageToItk< TOutputImage >::UpdateOutputInformation | ( | ) | [virtual] |
Definition at line 140 of file mitkImageToItk.txx.
{
mitk::Image::ConstPointer input = this->GetInput();
if(input.IsNotNull() && (input->GetSource()!=NULL) && input->GetSource()->Updating())
{
typename Superclass::OutputImageType::Pointer output = this->GetOutput();
unsigned long t1 = input->GetUpdateMTime()+1;
if (t1 > this->m_OutputInformationMTime.GetMTime())
{
output->SetPipelineMTime(t1);
this->GenerateOutputInformation();
this->m_OutputInformationMTime.Modified();
}
return;
}
Superclass::UpdateOutputInformation();
}
mitk::ImageDataItem::Pointer mitk::ImageToItk< TOutputImage >::m_ImageDataItem [protected] |
Definition at line 45 of file mitkImageToItk.h.
mitk::Image::Pointer mitk::ImageToItk< TOutputImage >::m_MitkImage [protected] |
Definition at line 44 of file mitkImageToItk.h.
1.7.2