ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
00001 /*========================================================================= 00002 * 00003 * Copyright Insight Software Consortium 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0.txt 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 * 00017 *=========================================================================*/ 00018 #ifndef __itkVoronoiSegmentationRGBImageFilter_h 00019 #define __itkVoronoiSegmentationRGBImageFilter_h 00020 00021 #include "itkVoronoiSegmentationImageFilterBase.h" 00022 00023 namespace itk 00024 { 00053 template< class TInputImage, class TOutputImage > 00054 class ITK_EXPORT VoronoiSegmentationRGBImageFilter: 00055 public VoronoiSegmentationImageFilterBase< TInputImage, TOutputImage > 00056 { 00057 public: 00059 typedef VoronoiSegmentationRGBImageFilter Self; 00060 typedef VoronoiSegmentationImageFilterBase< TInputImage, TOutputImage > Superclass; 00061 typedef SmartPointer< Self > Pointer; 00062 typedef SmartPointer< const Self > ConstPointer; 00063 00065 itkTypeMacro(VoronoiSegmentationRGBImageFilter, 00066 VoronoiSegmentationImageFilterBase); 00067 00069 itkNewMacro(Self); 00070 00072 typedef typename Superclass::BinaryObjectImage BinaryObjectImage; 00073 typedef typename Superclass::IndexList IndexList; 00074 typedef typename Superclass::IndexType IndexType; 00075 typedef typename Superclass::RegionType RegionType; 00076 typedef typename Superclass::PixelType PixelType; 00077 typedef typename Superclass::InputImagePointer InputImagePointer; 00078 typedef typename Superclass::InputImageType InputImageType; 00079 typedef Vector< float, 6 > RGBHCVPixel; 00080 typedef Image< RGBHCVPixel > RGBHCVImage; 00081 00083 void SetMeanPercentError(double x[6]); 00084 void SetSTDPercentError(double x[6]); 00085 void GetMeanPercentError(double x[6]){ for ( int i = 0; i < 6; i++ ) { x[i] = m_MeanPercentError[i]; } } 00086 void GetSTDPercentError(double x[6]){ for ( int i = 0; i < 6; i++ ) { x[i] = m_STDPercentError[i]; } } 00087 void GetMean(double x[6]){ for ( int i = 0; i < 6; i++ ) { x[i] = m_Mean[i]; } } 00088 void GetSTD(double x[6]){ for ( int i = 0; i < 6; i++ ) { x[i] = m_STD[i]; } } 00089 void SetMean(double x[6]){ for ( int i = 0; i < 6; i++ ) { m_Mean[i] = x[i]; } } 00090 void SetSTD(double x[6]){ for ( int i = 0; i < 6; i++ ) { m_STD[i] = x[i]; } } 00091 void GetMeanTolerance(double x[6]){ for ( int i = 0; i < 6; i++ ) { x[i] = m_MeanTolerance[i]; } } 00092 void GetSTDTolerance(double x[6]){ for ( int i = 0; i < 6; i++ ) { x[i] = m_STDTolerance[i]; } } 00094 00098 itkSetMacro(MaxValueOfRGB, double); 00099 itkGetConstMacro(MaxValueOfRGB, double); 00101 00104 void SetTestMean(unsigned int t1, unsigned int t2, unsigned int t3) 00105 { 00106 m_TestMean[0] = t1; 00107 m_TestMean[1] = t2; 00108 m_TestMean[2] = t3; 00109 } 00110 00111 void SetTestSTD(unsigned int t1, unsigned int t2, unsigned int t3) 00112 { 00113 m_TestSTD[0] = t1; 00114 m_TestSTD[1] = t2; 00115 m_TestSTD[2] = t3; 00116 } 00117 00118 void GetTestMean(unsigned int x[3]) 00119 { 00120 x[0] = m_TestMean[0]; x[1] = m_TestMean[1]; x[2] = m_TestMean[2]; 00121 } 00122 00123 void GetTestSTD(unsigned int x[3]) 00124 { 00125 x[0] = m_TestSTD[0]; x[1] = m_TestSTD[1]; x[2] = m_TestSTD[2]; 00126 } 00127 00128 void TakeAPrior(const BinaryObjectImage *aprior); 00129 00130 using Superclass::SetInput; 00131 virtual void SetInput(const InputImageType *input); 00132 00133 virtual void SetInput(unsigned int, const InputImageType *image); 00134 00136 itkStaticConstMacro(InputImageDimension, unsigned int, 00137 TInputImage::ImageDimension); 00138 itkStaticConstMacro(OutputImageDimension, unsigned int, 00139 TOutputImage::ImageDimension); 00141 00142 #ifdef ITK_USE_CONCEPT_CHECKING 00143 00144 itkConceptMacro( SameDimensionCheck, 00145 ( Concept::SameDimension< InputImageDimension, OutputImageDimension > ) ); 00146 itkConceptMacro( IntConvertibleToOutputCheck, 00147 ( Concept::Convertible< int, typename TOutputImage::PixelType > ) ); 00148 00150 #endif 00151 protected: 00152 VoronoiSegmentationRGBImageFilter(); 00153 ~VoronoiSegmentationRGBImageFilter(); 00154 void PrintSelf(std::ostream & os, Indent indent) const; 00156 00157 private: 00158 double m_Mean[6]; 00159 double m_STD[6]; 00160 double m_MeanTolerance[6]; 00161 double m_STDTolerance[6]; 00162 double m_MeanPercentError[6]; 00163 double m_STDPercentError[6]; 00164 double m_MaxValueOfRGB; 00165 unsigned int m_TestMean[3]; 00166 unsigned int m_TestSTD[3]; 00167 typename RGBHCVImage::Pointer m_WorkingImage; 00168 00169 virtual bool TestHomogeneity(IndexList & Plist); 00170 00171 private: 00172 VoronoiSegmentationRGBImageFilter(const Self &); //purposely not implemented 00173 void operator=(const Self &); //purposely not implemented 00174 }; 00175 } //end namespace 00176 00177 #ifndef ITK_MANUAL_INSTANTIATION 00178 #include "itkVoronoiSegmentationRGBImageFilter.hxx" 00179 #endif 00180 00181 #endif 00182