Supplies a 3D surface from pre-processed segmentation. More...
#include <mitkManualSegmentationToSurfaceFilter.h>
Supplies a 3D surface from pre-processed segmentation.
The resulting surface depends on a filter pipeline based on vtkMedian (1) and a Gaussian filter with vtkImageGaussianSmooth (2). All voxel can be changed to an isotropic representation of the image (ATTANTION: the number of voxels in the will change). The resulting isotropic image has 1mm isotropic voxel by default. But can be varied freely.
Definition at line 44 of file mitkManualSegmentationToSurfaceFilter.h.
typedef itk::SmartPointer<const Self> mitk::ManualSegmentationToSurfaceFilter::ConstPointer |
Reimplemented from mitk::ImageToSurfaceFilter.
Definition at line 47 of file mitkManualSegmentationToSurfaceFilter.h.
typedef itk::SmartPointer<Self> mitk::ManualSegmentationToSurfaceFilter::Pointer |
Reimplemented from mitk::ImageToSurfaceFilter.
Definition at line 47 of file mitkManualSegmentationToSurfaceFilter.h.
Reimplemented from mitk::ImageToSurfaceFilter.
Definition at line 47 of file mitkManualSegmentationToSurfaceFilter.h.
Reimplemented from mitk::ImageToSurfaceFilter.
Definition at line 47 of file mitkManualSegmentationToSurfaceFilter.h.
typedef double mitk::ManualSegmentationToSurfaceFilter::vtkDouble |
Definition at line 47 of file mitkManualSegmentationToSurfaceFilter.h.
mitk::ManualSegmentationToSurfaceFilter::ManualSegmentationToSurfaceFilter | ( | ) | [protected] |
Definition at line 24 of file mitkManualSegmentationToSurfaceFilter.cpp.
References m_GaussianStandardDeviation, m_Interpolation, m_InterpolationX, m_InterpolationY, m_InterpolationZ, m_MedianFilter3D, m_MedianKernelSizeX, m_MedianKernelSizeY, m_MedianKernelSizeZ, and m_UseGaussianImageSmooth.
{ m_MedianFilter3D = false; m_MedianKernelSizeX = 3; m_MedianKernelSizeY = 3; m_MedianKernelSizeZ = 3; m_UseGaussianImageSmooth = false; m_GaussianStandardDeviation = 1.5; m_Interpolation = false; m_InterpolationX = 1.0f; m_InterpolationY = 1.0f; m_InterpolationZ = 1.0f; };
mitk::ManualSegmentationToSurfaceFilter::~ManualSegmentationToSurfaceFilter | ( | ) | [protected, virtual] |
Definition at line 39 of file mitkManualSegmentationToSurfaceFilter.cpp.
{};
void mitk::ManualSegmentationToSurfaceFilter::GenerateData | ( | ) | [virtual] |
Will pre-process a segmentation voxelwise. The segmentation can use a hole fill relating a median filter and smooth by a Gaussian filter. The image can be interpolated to an isotropic image. By default every filter is disabled. This method calls CreateSurface from mitkImageToSurfaceFilter and does not need a manual call since we use Update().
Reimplemented from mitk::ImageToSurfaceFilter.
Definition at line 41 of file mitkManualSegmentationToSurfaceFilter.cpp.
References mitk::ProgressBar::AddStepsToDo(), mitk::ProgressBar::GetInstance(), mitk::SlicedData::GetRequestedRegion(), mitk::Image::GetVtkImageData(), QuadProgPP::median(), MITK_INFO, mitk::ProgressBar::Progress(), and QuadProgPP::t().
{ mitk::Surface *surface = this->GetOutput(); mitk::Image * image = (mitk::Image*)GetInput(); mitk::Image::RegionType outputRegion = image->GetRequestedRegion(); int tstart=outputRegion.GetIndex(3); int tmax=tstart+outputRegion.GetSize(3); //GetSize()==1 - will aber 0 haben, wenn nicht zeitaufgeloest ScalarType thresholdExpanded = this->m_Threshold; if ((tmax-tstart) > 0) { ProgressBar::GetInstance()->AddStepsToDo( 7 * (tmax - tstart) ); } for( int t=tstart; t<tmax; t++ ) { vtkSmartPointer<vtkImageData> vtkimage = image->GetVtkImageData(t); // Median -->smooth 3D MITK_INFO << (m_MedianFilter3D ? "Applying median..." : "No median filtering"); if(m_MedianFilter3D) { vtkImageMedian3D *median = vtkImageMedian3D::New(); median->SetInput(vtkimage); //RC++ (VTK < 5.0) median->SetKernelSize(m_MedianKernelSizeX,m_MedianKernelSizeY,m_MedianKernelSizeZ);//Std: 3x3x3 median->ReleaseDataFlagOn(); median->UpdateInformation(); median->Update(); vtkimage = median->GetOutput(); //->Out median->Delete(); } ProgressBar::GetInstance()->Progress(); //Interpolate image spacing MITK_INFO << (m_Interpolation ? "Resampling..." : "No resampling"); if(m_Interpolation) { vtkImageResample * imageresample = vtkImageResample::New(); imageresample->SetInput(vtkimage); //Set Spacing Manual to 1mm in each direction (Original spacing is lost during image processing) imageresample->SetAxisOutputSpacing(0, m_InterpolationX); imageresample->SetAxisOutputSpacing(1, m_InterpolationY); imageresample->SetAxisOutputSpacing(2, m_InterpolationZ); imageresample->UpdateInformation(); imageresample->Update(); vtkimage=imageresample->GetOutput();//->Output imageresample->Delete(); } ProgressBar::GetInstance()->Progress(); MITK_INFO << (m_UseGaussianImageSmooth ? "Applying gaussian smoothing..." : "No gaussian smoothing"); if(m_UseGaussianImageSmooth)//gauss { vtkImageThreshold* vtkimagethreshold = vtkImageThreshold::New(); vtkimagethreshold->SetInput(vtkimage); vtkimagethreshold->SetInValue( 100 ); vtkimagethreshold->SetOutValue( 0 ); vtkimagethreshold->ThresholdByUpper( this->m_Threshold ); thresholdExpanded = 49; vtkimagethreshold->SetOutputScalarTypeToUnsignedChar(); vtkimagethreshold->ReleaseDataFlagOn(); vtkImageGaussianSmooth *gaussian = vtkImageGaussianSmooth::New(); gaussian->SetInput(vtkimagethreshold->GetOutput()); gaussian->SetDimensionality(3); gaussian->SetRadiusFactor(0.49); gaussian->SetStandardDeviation( m_GaussianStandardDeviation ); gaussian->ReleaseDataFlagOn(); gaussian->UpdateInformation(); gaussian->Update(); vtkimage = gaussian->GetOutput(); //->Out gaussian->Delete(); vtkimagethreshold->Delete(); } ProgressBar::GetInstance()->Progress(); // Create sureface for t-Slice CreateSurface(t, vtkimage, surface, thresholdExpanded); ProgressBar::GetInstance()->Progress(); } };
virtual const char* mitk::ManualSegmentationToSurfaceFilter::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::ImageToSurfaceFilter.
virtual double mitk::ManualSegmentationToSurfaceFilter::GetGaussianStandardDeviation | ( | ) | const [virtual] |
Returns the standard deviation of the Gaussian filter which will be used when filter is enabled.
virtual bool mitk::ManualSegmentationToSurfaceFilter::GetInterpolation | ( | ) | const [virtual] |
Returns activation state of interpolation filter.
virtual bool mitk::ManualSegmentationToSurfaceFilter::GetMedianFilter3D | ( | ) | const [virtual] |
Return state if median filter is enabled.
virtual int mitk::ManualSegmentationToSurfaceFilter::GetMedianKernelSizeX | ( | ) | const [virtual] |
Returns the kernel size in the first direction.
virtual int mitk::ManualSegmentationToSurfaceFilter::GetMedianKernelSizeY | ( | ) | const [virtual] |
Returns the kernel size in the second direction.
virtual int mitk::ManualSegmentationToSurfaceFilter::GetMedianKernelSizeZ | ( | ) | const [virtual] |
Returns the kernel size in the third direction.
virtual bool mitk::ManualSegmentationToSurfaceFilter::GetUseGaussianImageSmooth | ( | ) | const [virtual] |
Returns activation state of standard deviation filter.
virtual void mitk::ManualSegmentationToSurfaceFilter::InterpolationOff | ( | ) | [virtual] |
virtual void mitk::ManualSegmentationToSurfaceFilter::InterpolationOn | ( | ) | [virtual] |
Enable the interpolation filter (second filter in pipeline) for isotropic voxel.
virtual void mitk::ManualSegmentationToSurfaceFilter::MedianFilter3DOff | ( | ) | [virtual] |
virtual void mitk::ManualSegmentationToSurfaceFilter::MedianFilter3DOn | ( | ) | [virtual] |
Enable the median filter (first filter in pipeline).
static Pointer mitk::ManualSegmentationToSurfaceFilter::New | ( | ) | [static] |
Reimplemented from mitk::ImageToSurfaceFilter.
Referenced by QmitkIsoSurface::CreateSurface(), and mitkManualSegmentationToSurfaceFilterTest().
virtual void mitk::ManualSegmentationToSurfaceFilter::SetGaussianStandardDeviation | ( | double | _arg ) | [virtual] |
Set standard deviation for Gaussian Filter.
_arg | by default 1.5 |
virtual void mitk::ManualSegmentationToSurfaceFilter::SetInterpolation | ( | bool | _arg ) | [virtual] |
Supplies a method to enable Interpolation.
void mitk::ManualSegmentationToSurfaceFilter::SetInterpolation | ( | vtkDouble | x, |
vtkDouble | y, | ||
vtkDouble | z | ||
) |
Set the values for Spacing in X, Y and Z-Dimension
Definition at line 136 of file mitkManualSegmentationToSurfaceFilter.cpp.
{ m_InterpolationX = x; m_InterpolationY = y; m_InterpolationZ = z; }
virtual void mitk::ManualSegmentationToSurfaceFilter::SetMedianFilter3D | ( | bool | _arg ) | [virtual] |
Supplies a method for setting median filter by a bool value.
void mitk::ManualSegmentationToSurfaceFilter::SetMedianKernelSize | ( | int | x, |
int | y, | ||
int | z | ||
) |
Set the Kernel for Median3DFilter. By default kernel is set to 3x3x3. If you choose '1' nothing will be processed in this direction.
Definition at line 129 of file mitkManualSegmentationToSurfaceFilter.cpp.
{ m_MedianKernelSizeX = x; m_MedianKernelSizeY = y; m_MedianKernelSizeZ = z; }
virtual void mitk::ManualSegmentationToSurfaceFilter::SetUseGaussianImageSmooth | ( | bool | _arg ) | [virtual] |
Supplies a method for Gaussian filter (third filter in pipeline).
virtual void mitk::ManualSegmentationToSurfaceFilter::UseGaussianImageSmoothOff | ( | ) | [virtual] |
virtual void mitk::ManualSegmentationToSurfaceFilter::UseGaussianImageSmoothOn | ( | ) | [virtual] |
Enables Gaussian image smooth. As well the threshold for the CreateSurface() method will raise the threshold to 49 and changes the image range set from 0 to 100. It is made for reasons in binary images to prevent conflicts with the used filter. There are better results for dividing fore- and background.
double mitk::ManualSegmentationToSurfaceFilter::m_GaussianStandardDeviation [protected] |
Definition at line 160 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
bool mitk::ManualSegmentationToSurfaceFilter::m_Interpolation [protected] |
Definition at line 161 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
Definition at line 163 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
Definition at line 164 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
Definition at line 165 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
bool mitk::ManualSegmentationToSurfaceFilter::m_MedianFilter3D [protected] |
Definition at line 157 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
int mitk::ManualSegmentationToSurfaceFilter::m_MedianKernelSizeX [protected] |
Definition at line 158 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
int mitk::ManualSegmentationToSurfaceFilter::m_MedianKernelSizeY [protected] |
Definition at line 158 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
int mitk::ManualSegmentationToSurfaceFilter::m_MedianKernelSizeZ [protected] |
Definition at line 158 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().
bool mitk::ManualSegmentationToSurfaceFilter::m_UseGaussianImageSmooth [protected] |
Definition at line 159 of file mitkManualSegmentationToSurfaceFilter.h.
Referenced by ManualSegmentationToSurfaceFilter().