VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImageHistogram.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00033 #ifndef __vtkImageHistogram_h 00034 #define __vtkImageHistogram_h 00035 00036 #include "vtkImagingStatisticsModule.h" // For export macro 00037 #include "vtkThreadedImageAlgorithm.h" 00038 00039 class vtkImageStencilData; 00040 class vtkIdTypeArray; 00041 00042 class VTKIMAGINGSTATISTICS_EXPORT vtkImageHistogram : public vtkThreadedImageAlgorithm 00043 { 00044 public: 00045 static vtkImageHistogram *New(); 00046 vtkTypeMacro(vtkImageHistogram,vtkThreadedImageAlgorithm); 00047 00048 void PrintSelf(ostream& os, vtkIndent indent); 00049 00051 00052 enum { 00053 Linear = 0, 00054 Log = 1, 00055 Sqrt = 2 00056 }; 00058 00060 00063 vtkSetMacro(ActiveComponent, int); 00064 vtkGetMacro(ActiveComponent, int); 00066 00068 00077 vtkSetMacro(AutomaticBinning, int); 00078 vtkBooleanMacro(AutomaticBinning, int); 00079 vtkGetMacro(AutomaticBinning, int); 00081 00083 00088 vtkSetMacro(MaximumNumberOfBins, int); 00089 vtkGetMacro(MaximumNumberOfBins, int); 00091 00093 00095 vtkSetMacro(NumberOfBins, int); 00096 vtkGetMacro(NumberOfBins, int); 00098 00100 00102 vtkSetMacro(BinOrigin, double); 00103 vtkGetMacro(BinOrigin, double); 00105 00107 00109 vtkSetMacro(BinSpacing, double); 00110 vtkGetMacro(BinSpacing, double); 00112 00114 00115 void SetStencilData(vtkImageStencilData *stencil); 00116 vtkImageStencilData *GetStencil(); 00118 00120 void SetStencilConnection(vtkAlgorithmOutput* algOutput); 00121 00123 00126 vtkSetMacro(GenerateHistogramImage, int); 00127 vtkBooleanMacro(GenerateHistogramImage, int); 00128 vtkGetMacro(GenerateHistogramImage, int); 00130 00132 00134 vtkSetVector2Macro(HistogramImageSize, int); 00135 vtkGetVector2Macro(HistogramImageSize, int); 00137 00139 00141 vtkSetClampMacro(HistogramImageScale, int, 00142 vtkImageHistogram::Linear, vtkImageHistogram::Sqrt); 00143 void SetHistogramImageScaleToLinear() { 00144 this->SetHistogramImageScale(vtkImageHistogram::Linear); } 00145 void SetHistogramImageScaleToLog() { 00146 this->SetHistogramImageScale(vtkImageHistogram::Log); } 00147 void SetHistogramImageScaleToSqrt() { 00148 this->SetHistogramImageScale(vtkImageHistogram::Sqrt); } 00149 vtkGetMacro(HistogramImageScale, int); 00150 const char *GetHistogramImageScaleAsString(); 00152 00155 vtkIdTypeArray *GetHistogram(); 00156 00159 vtkIdType GetTotal() { return this->Total; } 00160 00162 00164 virtual void ThreadedRequestData(vtkInformation *request, 00165 vtkInformationVector **inputVector, 00166 vtkInformationVector *outputVector, 00167 vtkImageData ***inData, 00168 vtkImageData **outData, int ext[6], int id); 00169 protected: 00170 vtkImageHistogram(); 00171 ~vtkImageHistogram(); 00173 00174 virtual int RequestUpdateExtent(vtkInformation *vtkNotUsed(request), 00175 vtkInformationVector **inInfo, 00176 vtkInformationVector *vtkNotUsed(outInfo)); 00177 virtual int RequestInformation(vtkInformation *vtkNotUsed(request), 00178 vtkInformationVector **inInfo, 00179 vtkInformationVector *vtkNotUsed(outInfo)); 00180 virtual int RequestData(vtkInformation *, 00181 vtkInformationVector **, 00182 vtkInformationVector *); 00183 00184 virtual int FillInputPortInformation(int port, vtkInformation *info); 00185 virtual int FillOutputPortInformation(int port, vtkInformation *info); 00186 00190 void ComputeImageScalarRange(vtkImageData *data, double range[2]); 00191 00192 int ActiveComponent; 00193 int AutomaticBinning; 00194 int MaximumNumberOfBins; 00195 00196 int HistogramImageSize[2]; 00197 int HistogramImageScale; 00198 int GenerateHistogramImage; 00199 00200 int NumberOfBins; 00201 double BinOrigin; 00202 double BinSpacing; 00203 00204 vtkIdTypeArray *Histogram; 00205 vtkIdType Total; 00206 00207 vtkIdType *ThreadOutput[VTK_MAX_THREADS]; 00208 int ThreadBinRange[VTK_MAX_THREADS][2]; 00209 00210 private: 00211 vtkImageHistogram(const vtkImageHistogram&); // Not implemented. 00212 void operator=(const vtkImageHistogram&); // Not implemented. 00213 }; 00214 00215 #endif