Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "mitkImageSliceSelector.h"
00020 #include <itkSmartPointerForwardReference.txx>
00021
00022
00023 void mitk::ImageSliceSelector::GenerateOutputInformation()
00024 {
00025 mitk::Image::ConstPointer input = this->GetInput();
00026 mitk::Image::Pointer output = this->GetOutput();
00027
00028 itkDebugMacro(<<"GenerateOutputInformation()");
00029
00030 output->Initialize(input->GetPixelType(), 2, input->GetDimensions());
00031
00032 if( (unsigned int)m_SliceNr >= input->GetDimension(2) )
00033 {
00034 m_SliceNr = input->GetDimension(2)-1;
00035 }
00036
00037 if( (unsigned int)m_TimeNr >= input->GetDimension(3) )
00038 {
00039 m_TimeNr = input->GetDimension(3)-1;
00040 }
00041
00042
00043 output->SetGeometry(dynamic_cast<Geometry3D*>(input->GetSlicedGeometry(m_TimeNr)->GetGeometry2D(m_SliceNr)->Clone().GetPointer()));
00044 output->SetPropertyList(input->GetPropertyList()->Clone());
00045 }
00046
00047 void mitk::ImageSliceSelector::GenerateData()
00048 {
00049 SetSliceItem(GetSliceData(m_SliceNr, m_TimeNr, m_ChannelNr), 0);
00050 }
00051
00052 mitk::ImageSliceSelector::ImageSliceSelector() : m_SliceNr(0), m_TimeNr(0), m_ChannelNr(0)
00053 {
00054 }
00055
00056
00057 mitk::ImageSliceSelector::~ImageSliceSelector()
00058 {
00059 }
00060
00061 void mitk::ImageSliceSelector::GenerateInputRequestedRegion()
00062 {
00063 Superclass::GenerateInputRequestedRegion();
00064
00065 mitk::ImageToImageFilter::InputImagePointer input =
00066 const_cast< mitk::ImageToImageFilter::InputImageType * > ( this->GetInput() );
00067 mitk::Image::Pointer output = this->GetOutput();
00068
00069 Image::RegionType requestedRegion;
00070 requestedRegion = output->GetRequestedRegion();
00071 requestedRegion.SetIndex(2, m_SliceNr);
00072 requestedRegion.SetIndex(3, m_TimeNr);
00073 requestedRegion.SetIndex(4, m_ChannelNr);
00074 requestedRegion.SetSize(2, 1);
00075 requestedRegion.SetSize(3, 1);
00076 requestedRegion.SetSize(4, 1);
00077
00078 input->SetRequestedRegion( & requestedRegion );
00079 }