00001
00030 #ifndef INC_SPATMOD_IMAGEFILTERFOCAL_H
00031 #define INC_SPATMOD_IMAGEFILTERFOCAL_H
00032
00033 #ifndef INC_SPATMOD_IMAGEFILTER_H
00034 #include <spatmod/imagefilter.h>
00035 #endif
00036
00037 #ifndef INC_SPATMOD_IMAGEBUFFER_H
00038 #include <spatmod/imagebuffer.h>
00039 #endif
00040
00041 #ifndef INC_MI32_MIMATRIX_H
00042 #include <mi32/mimatrix.h>
00043 #endif
00044
00045 namespace SPATMOD {
00046 namespace IMAGE {
00047
00048
00049
00051 class FILTER_FOCAL : public FILTER {
00052 public:
00053
00055 virtual ~FILTER_FOCAL ();
00056
00058 double GetAmountFilter () const
00059 { return (m_AmountFilter); }
00060
00062 double GetAmountSource () const
00063 { return (m_AmountSource); }
00064
00066 UINT32 GetNumFocalCells () const
00067 { return (m_NumFocalCells); }
00068
00070 UINT32 GetNumFocalColumns () const
00071 { return (m_NumFocalColumns); }
00072
00074 UINT32 GetNumFocalRows () const
00075 { return (m_NumFocalRows); }
00076
00078 bool IsUsingMask () const
00079 { return (m_UseMask); }
00080
00084 void SetOutputDataType (DATATYPE DataType)
00085 { m_DataType = DataType; }
00086
00087 protected:
00088
00089 #ifndef GENERATING_DOXYGEN_OUTPUT
00090
00091 class WORKITERATOR;
00092 #endif
00093
00095 FILTER_FOCAL (
00096 STAGE *pSourceImage,
00097 bool TakeOwnershipSource,
00098 UINT32 NumFocalRows,
00099 UINT32 NumFocalColumns,
00100 double AmountFilterPct = 100
00101 );
00102
00104 FILTER_FOCAL (
00105 STAGE *pSourceImage,
00106 bool TakeOwnershipSource,
00107 STAGE *pMaskImage,
00108 bool TakeOwnershipMask,
00109 UINT32 NumFocalRows,
00110 UINT32 NumFocalColumns,
00111 double AmountFilterPct = 100
00112 );
00113
00114 ERRVALUE PullSubBuffers (const SECTION& SubSection, BUFFER& BufSrc, BUFFER& BufMask);
00115
00116
00117 virtual ERRVALUE v_Initialize ();
00118 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00119
00120 private:
00121 #ifndef GENERATING_DOXYGEN_OUTPUT
00122
00123 double m_AmountFilter;
00124 double m_AmountSource;
00125 UINT32 m_NumFocalRows;
00126 UINT32 m_NumFocalColumns;
00127 UINT32 m_NumFocalCells;
00128 DATATYPE m_DataType;
00129 bool m_UseMask;
00130
00131
00132 FILTER_FOCAL (const FILTER_FOCAL&);
00133 FILTER_FOCAL& operator= (const FILTER_FOCAL&);
00134 #endif // GENERATING_DOXYGEN_OUTPUT
00135 };
00136
00137
00138
00140 class FILTER_FOCAL_MULTIPLICATIVE : public FILTER_FOCAL {
00141 public:
00142
00144 FILTER_FOCAL_MULTIPLICATIVE (
00145 STAGE *pSourceImage,
00146 bool TakeOwnershipSource,
00147 const MIMATRIX& matrix,
00148 double AmountFilterPct = 100.0,
00149 bool UseCenterForNull = false
00150 );
00151
00153 FILTER_FOCAL_MULTIPLICATIVE (
00154 STAGE *pSourceImage,
00155 bool TakeOwnershipSource,
00156 STAGE *pMaskImage,
00157 bool TakeOwnershipMask,
00158 const MIMATRIX& matrix,
00159 double AmountFilterPct = 100.0,
00160 bool UseCenterForNull = false
00161 );
00162
00164 virtual ~FILTER_FOCAL_MULTIPLICATIVE ();
00165
00167 const MIMATRIX& GetMatrix (
00168 ) const { return m_Matrix; }
00169
00171 void SetMatrix (
00172 const MIMATRIX& matrix
00173 ) { m_Matrix = matrix; }
00174
00175 void SetTestWeightGreaterThanOne (
00176 ) { m_TestWeightGreaterThanOne = true; }
00177
00178 private:
00179 #ifndef GENERATING_DOXYGEN_OUTPUT
00180 bool m_DoReplaceCenter;
00181 bool m_TestWeightGreaterThanOne;
00182 MIMATRIX m_Matrix;
00183
00184
00185 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00186
00187
00188 FILTER_FOCAL_MULTIPLICATIVE (const FILTER_FOCAL_MULTIPLICATIVE&);
00189 FILTER_FOCAL_MULTIPLICATIVE& operator= (const FILTER_FOCAL_MULTIPLICATIVE&);
00190
00191 #endif // GENERATING_DOXYGEN_OUTPUT
00192 };
00193
00194
00195
00197 class FILTER_FOCAL_GRADIENT : public FILTER_FOCAL {
00198 public:
00199
00201 FILTER_FOCAL_GRADIENT (
00202 STAGE *pSourceImage,
00203 bool TakeOwnershipSource,
00204 const MIMATRIX& matrixA,
00205 const MIMATRIX& matrixB,
00206 double AmountFilterPct = 100.0
00207 );
00208
00210 FILTER_FOCAL_GRADIENT (
00211 STAGE *pSourceImage,
00212 bool TakeOwnershipSource,
00213 STAGE *pMaskImage,
00214 bool TakeOwnershipMask,
00215 const MIMATRIX& matrixA,
00216 const MIMATRIX& matrixB,
00217 double AmountFilterPct = 100.0
00218 );
00219
00221 virtual ~FILTER_FOCAL_GRADIENT ();
00222
00224 const MIMATRIX& GetMatrixA (
00225 ) const { return m_MatrixA; }
00226
00228 void SetMatrixA (
00229 const MIMATRIX& matrix
00230 ) { m_MatrixA = matrix; }
00231
00233 const MIMATRIX& GetMatrixB (
00234 ) const { return m_MatrixB; }
00235
00237 void SetMatrixB (
00238 const MIMATRIX& matrix
00239 ) { m_MatrixB = matrix; }
00240
00241 private:
00242 #ifndef GENERATING_DOXYGEN_OUTPUT
00243 MIMATRIX m_MatrixA;
00244 MIMATRIX m_MatrixB;
00245
00246
00247 virtual ERRVALUE v_Initialize ();
00248 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00249
00250
00251 FILTER_FOCAL_GRADIENT (const FILTER_FOCAL_GRADIENT&);
00252 FILTER_FOCAL_GRADIENT& operator= (const FILTER_FOCAL_GRADIENT&);
00253
00254 #endif // GENERATING_DOXYGEN_OUTPUT
00255 };
00256
00257
00258
00260 class FILTER_FOCAL_STATISTICS : public FILTER_FOCAL {
00261 public:
00262
00264 enum STAT_TYPE {
00265 STAT_TYPE_Mean,
00266 STAT_TYPE_Median,
00267 STAT_TYPE_Majority,
00268 STAT_TYPE_Minority,
00269 STAT_TYPE_Maximum,
00270 STAT_TYPE_Minimum,
00271 STAT_TYPE_StdDev,
00272 STAT_TYPE_Sum,
00273 STAT_TYPE_Variance,
00274 STAT_TYPE_Variety
00275 };
00276
00278 FILTER_FOCAL_STATISTICS (
00279 STAGE *pSourceImage,
00280 bool TakeOwnershipSource,
00281 STAT_TYPE Type,
00282 UINT32 NumFocalRows,
00283 UINT32 NumFocalColumns,
00284 double AmountFilterPct = 100.0
00285 );
00286
00288 FILTER_FOCAL_STATISTICS (
00289 STAGE *pSourceImage,
00290 bool TakeOwnershipSource,
00291 STAGE *pMaskImage,
00292 bool TakeOwnershipMask,
00293 STAT_TYPE Type,
00294 UINT32 NumFocalRows,
00295 UINT32 NumFocalColumns,
00296 double AmountFilterPct = 100.0
00297 );
00298
00300 virtual ~FILTER_FOCAL_STATISTICS ();
00301
00302 private:
00303 #ifndef GENERATING_DOXYGEN_OUTPUT
00304 STAT_TYPE m_Type;
00305 DOUBLE_ARRAY<double> m_ValueArray;
00306
00307
00308 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00309
00310
00311 FILTER_FOCAL_STATISTICS (const FILTER_FOCAL_STATISTICS&);
00312 FILTER_FOCAL_STATISTICS& operator= (const FILTER_FOCAL_STATISTICS&);
00313
00314 #endif // GENERATING_DOXYGEN_OUTPUT
00315 };
00316
00317
00318
00326 class FILTER_FOCAL_LUM : public FILTER_FOCAL {
00327 public:
00328
00330 FILTER_FOCAL_LUM (
00331 STAGE *pSourceImage,
00332 bool TakeOwnershipSource,
00333 int EdgeParam,
00334 int NoiseParam,
00335 UINT32 NumFocalRows,
00336 UINT32 NumFocalColumns,
00337 double AmountFilterPct = 100.0
00338 );
00339
00341 FILTER_FOCAL_LUM (
00342 STAGE *pSourceImage,
00343 bool TakeOwnershipSource,
00344 STAGE *pMaskImage,
00345 bool TakeOwnershipMask,
00346 int EdgeParam,
00347 int NoiseParam,
00348 UINT32 NumFocalRows,
00349 UINT32 NumFocalColumns,
00350 double AmountFilterPct = 100.0
00351 );
00352
00354 virtual ~FILTER_FOCAL_LUM ();
00355
00356 private:
00357 #ifndef GENERATING_DOXYGEN_OUTPUT
00358 int m_EdgeParam;
00359 int m_NoiseParam;
00360 DOUBLE_ARRAY<double> m_ValueArray;
00361
00362
00363 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00364
00365
00366 FILTER_FOCAL_LUM (const FILTER_FOCAL_LUM&);
00367 FILTER_FOCAL_LUM& operator= (const FILTER_FOCAL_LUM&);
00368
00369 #endif // GENERATING_DOXYGEN_OUTPUT
00370 };
00371
00372
00373
00380 class FILTER_FOCAL_CS : public FILTER_FOCAL {
00381 public:
00382
00384 FILTER_FOCAL_CS (
00385 STAGE *pSourceImage,
00386 bool TakeOwnershipSource,
00387 int RankParam,
00388 UINT32 NumFocalRows,
00389 UINT32 NumFocalColumns,
00390 double AmountFilterPct = 100.0
00391 );
00392
00394 FILTER_FOCAL_CS (
00395 STAGE *pSourceImage,
00396 bool TakeOwnershipSource,
00397 STAGE *pMaskImage,
00398 bool TakeOwnershipMask,
00399 int RankParam,
00400 UINT32 NumFocalRows,
00401 UINT32 NumFocalColumns,
00402 double AmountFilterPct = 100.0
00403 );
00404
00406 virtual ~FILTER_FOCAL_CS ();
00407
00408 private:
00409 #ifndef GENERATING_DOXYGEN_OUTPUT
00410 int m_RankParam;
00411 DOUBLE_ARRAY<double> m_ValueArray;
00412
00413
00414 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00415
00416
00417 FILTER_FOCAL_CS (const FILTER_FOCAL_CS&);
00418 FILTER_FOCAL_CS& operator= (const FILTER_FOCAL_CS&);
00419
00420 #endif // GENERATING_DOXYGEN_OUTPUT
00421 };
00422
00423
00424
00430 class FILTER_FOCAL_WMMR : public FILTER_FOCAL {
00431 public:
00432
00434 FILTER_FOCAL_WMMR (
00435 STAGE *pSourceImage,
00436 bool TakeOwnershipSource,
00437 double WeightParam,
00438 UINT32 NumFocalRows,
00439 UINT32 NumFocalColumns
00440 );
00441
00443 FILTER_FOCAL_WMMR (
00444 STAGE *pSourceImage,
00445 bool TakeOwnershipSource,
00446 STAGE *pMaskImage,
00447 bool TakeOwnershipMask,
00448 double WeightParam,
00449 UINT32 NumFocalRows,
00450 UINT32 NumFocalColumns
00451 );
00452
00454 virtual ~FILTER_FOCAL_WMMR ();
00455
00456 private:
00457 #ifndef GENERATING_DOXYGEN_OUTPUT
00458 double m_WeightParam;
00459 DOUBLE_ARRAY<double> m_ValueArray;
00460
00461
00462 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00463
00464
00465 FILTER_FOCAL_WMMR (const FILTER_FOCAL_WMMR&);
00466 FILTER_FOCAL_WMMR& operator= (const FILTER_FOCAL_WMMR&);
00467
00468 #endif // GENERATING_DOXYGEN_OUTPUT
00469 };
00470
00471
00472
00478 class FILTER_FOCAL_PMEDIAN : public FILTER_FOCAL {
00479 public:
00480
00482 FILTER_FOCAL_PMEDIAN (
00483 STAGE *pSourceImage,
00484 bool TakeOwnershipSource,
00485 double WeightParam,
00486 UINT32 NumFocalRows,
00487 UINT32 NumFocalColumns
00488 );
00489
00491 FILTER_FOCAL_PMEDIAN (
00492 STAGE *pSourceImage,
00493 bool TakeOwnershipSource,
00494 STAGE *pMaskImage,
00495 bool TakeOwnershipMask,
00496 double WeightParam,
00497 UINT32 NumFocalRows,
00498 UINT32 NumFocalColumns
00499 );
00500
00502 virtual ~FILTER_FOCAL_PMEDIAN ();
00503
00504 private:
00505 #ifndef GENERATING_DOXYGEN_OUTPUT
00506 double m_WeightParam;
00507 DOUBLE_ARRAY<double> m_ValueArrayA;
00508 DOUBLE_ARRAY<double> m_ValueArrayB;
00509
00510
00511 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00512
00513
00514 FILTER_FOCAL_PMEDIAN (const FILTER_FOCAL_PMEDIAN&);
00515 FILTER_FOCAL_PMEDIAN& operator= (const FILTER_FOCAL_PMEDIAN&);
00516
00517 #endif // GENERATING_DOXYGEN_OUTPUT
00518 };
00519
00520
00521
00526 class FILTER_FOCAL_LEE : public FILTER_FOCAL {
00527 public:
00528
00530 FILTER_FOCAL_LEE (
00531 STAGE *pSourceImage,
00532 bool TakeOwnershipSource,
00533 UINT32 NumFocalRows,
00534 UINT32 NumFocalColumns,
00535 double AmountFilterPct = 100.0
00536 );
00537
00539 FILTER_FOCAL_LEE (
00540 STAGE *pSourceImage,
00541 bool TakeOwnershipSource,
00542 STAGE *pMaskImage,
00543 bool TakeOwnershipMask,
00544 UINT32 NumFocalRows,
00545 UINT32 NumFocalColumns,
00546 double AmountFilterPct = 100.0
00547 );
00548
00550 virtual ~FILTER_FOCAL_LEE ();
00551
00552 private:
00553 #ifndef GENERATING_DOXYGEN_OUTPUT
00554
00555
00556 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00557
00558
00559 FILTER_FOCAL_LEE (const FILTER_FOCAL_LEE&);
00560 FILTER_FOCAL_LEE& operator= (const FILTER_FOCAL_LEE&);
00561
00562 #endif // GENERATING_DOXYGEN_OUTPUT
00563 };
00564
00565
00566
00572 class FILTER_FOCAL_MLM : public FILTER_FOCAL {
00573 public:
00574
00576 FILTER_FOCAL_MLM (
00577 STAGE *pSourceImage,
00578 bool TakeOwnershipSource,
00579 UINT32 NumFocalRows,
00580 UINT32 NumFocalColumns,
00581 double AmountFilterPct = 100.0
00582 );
00583
00585 FILTER_FOCAL_MLM (
00586 STAGE *pSourceImage,
00587 bool TakeOwnershipSource,
00588 STAGE *pMaskImage,
00589 bool TakeOwnershipMask,
00590 UINT32 NumFocalRows,
00591 UINT32 NumFocalColumns,
00592 double AmountFilterPct = 100.0
00593 );
00594
00596 virtual ~FILTER_FOCAL_MLM ();
00597
00598 private:
00599 #ifndef GENERATING_DOXYGEN_OUTPUT
00600
00601 DOUBLE_ARRAY<double> m_ValueArrayA;
00602 DOUBLE_ARRAY<double> m_ValueArrayB;
00603 DOUBLE_ARRAY<double> m_ValueArrayC;
00604 DOUBLE_ARRAY<double> m_ValueArrayD;
00605
00606
00607 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00608
00609
00610 FILTER_FOCAL_MLM (const FILTER_FOCAL_MLM&);
00611 FILTER_FOCAL_MLM& operator= (const FILTER_FOCAL_MLM&);
00612
00613 #endif // GENERATING_DOXYGEN_OUTPUT
00614 };
00615
00616
00617
00620 class FILTER_FOCAL_RANGE : public FILTER_FOCAL {
00621 public:
00622
00624 FILTER_FOCAL_RANGE (
00625 STAGE *pSourceImage,
00626 bool TakeOwnershipSource,
00627 double ContrastParam,
00628 UINT32 NumFocalRows,
00629 UINT32 NumFocalColumns,
00630 double AmountFilterPct = 100.0
00631 );
00632
00634 FILTER_FOCAL_RANGE (
00635 STAGE *pSourceImage,
00636 bool TakeOwnershipSource,
00637 STAGE *pMaskImage,
00638 bool TakeOwnershipMask,
00639 double ContrastParam,
00640 UINT32 NumFocalRows,
00641 UINT32 NumFocalColumns,
00642 double AmountFilterPct = 100.0
00643 );
00644
00646 virtual ~FILTER_FOCAL_RANGE ();
00647
00648 private:
00649 #ifndef GENERATING_DOXYGEN_OUTPUT
00650 double m_ContrastParam;
00651
00652
00653 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00654
00655
00656 FILTER_FOCAL_RANGE (const FILTER_FOCAL_RANGE&);
00657 FILTER_FOCAL_RANGE& operator= (const FILTER_FOCAL_RANGE&);
00658 #endif // GENERATING_DOXYGEN_OUTPUT
00659 };
00660
00661
00662
00665 class FILTER_FOCAL_OLYMPIC : public FILTER_FOCAL {
00666 public:
00667
00669 FILTER_FOCAL_OLYMPIC (
00670 STAGE *pSourceImage,
00671 bool TakeOwnershipSource,
00672 int NumDiscard,
00673 UINT32 NumFocalRows,
00674 UINT32 NumFocalColumns,
00675 double AmountFilterPct = 100.0
00676 );
00677
00679 FILTER_FOCAL_OLYMPIC (
00680 STAGE *pSourceImage,
00681 bool TakeOwnershipSource,
00682 STAGE *pMaskImage,
00683 bool TakeOwnershipMask,
00684 int NumDiscard,
00685 UINT32 NumFocalRows,
00686 UINT32 NumFocalColumns,
00687 double AmountFilterPct = 100.0
00688 );
00689
00691 virtual ~FILTER_FOCAL_OLYMPIC ();
00692
00693 private:
00694 #ifndef GENERATING_DOXYGEN_OUTPUT
00695 int m_NumDiscard;
00696 DOUBLE_ARRAY<double> m_ValueArray;
00697
00698
00699 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00700
00701
00702 FILTER_FOCAL_OLYMPIC (const FILTER_FOCAL_OLYMPIC&);
00703 FILTER_FOCAL_OLYMPIC& operator= (const FILTER_FOCAL_OLYMPIC&);
00704 #endif // GENERATING_DOXYGEN_OUTPUT
00705 };
00706
00707
00708
00711 class FILTER_FOCAL_TEAGER : public FILTER_FOCAL {
00712 public:
00713
00715 FILTER_FOCAL_TEAGER (
00716 STAGE *pSourceImage,
00717 bool TakeOwnershipSource,
00718 UINT32 NumFocalRows,
00719 UINT32 NumFocalColumns,
00720 double AmountFilterPct = 100.0
00721 );
00722
00724 FILTER_FOCAL_TEAGER (
00725 STAGE *pSourceImage,
00726 bool TakeOwnershipSource,
00727 STAGE *pMaskImage,
00728 bool TakeOwnershipMask,
00729 UINT32 NumFocalRows,
00730 UINT32 NumFocalColumns,
00731 double AmountFilterPct = 100.0
00732 );
00733
00735 virtual ~FILTER_FOCAL_TEAGER ();
00736
00737 private:
00738 #ifndef GENERATING_DOXYGEN_OUTPUT
00739 MIMATRIX m_Matrix;
00740
00741
00742 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00743
00744
00745 FILTER_FOCAL_TEAGER (const FILTER_FOCAL_TEAGER&);
00746 FILTER_FOCAL_TEAGER& operator= (const FILTER_FOCAL_TEAGER&);
00747
00748 #endif // GENERATING_DOXYGEN_OUTPUT
00749 };
00750
00751
00752
00756 class FILTER_FOCAL_VOLTERRA : public FILTER_FOCAL {
00757 public:
00758
00760 FILTER_FOCAL_VOLTERRA (
00761 STAGE *pSourceImage,
00762 bool TakeOwnershipSource,
00763 double ContrastParam,
00764 UINT32 NumFocalRows,
00765 UINT32 NumFocalColumns,
00766 double AmountFilterPct = 100.0
00767 );
00768
00770 FILTER_FOCAL_VOLTERRA (
00771 STAGE *pSourceImage,
00772 bool TakeOwnershipSource,
00773 STAGE *pMaskImage,
00774 bool TakeOwnershipMask,
00775 double ContrastParam,
00776 UINT32 NumFocalRows,
00777 UINT32 NumFocalColumns,
00778 double AmountFilterPct = 100.0
00779 );
00780
00782 virtual ~FILTER_FOCAL_VOLTERRA ();
00783
00784 private:
00785 #ifndef GENERATING_DOXYGEN_OUTPUT
00786 double m_ContrastParam;
00787
00788 MIMATRIX m_Matrix;
00789
00790
00791 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00792
00793
00794 FILTER_FOCAL_VOLTERRA (const FILTER_FOCAL_VOLTERRA&);
00795 FILTER_FOCAL_VOLTERRA& operator= (const FILTER_FOCAL_VOLTERRA&);
00796
00797 #endif // GENERATING_DOXYGEN_OUTPUT
00798 };
00799
00800
00801
00807 class FILTER_FOCAL_FROST : public FILTER_FOCAL {
00808 public:
00809
00811 FILTER_FOCAL_FROST (
00812 STAGE *pSourceImage,
00813 bool TakeOwnershipSource,
00814 UINT32 NumFocalRows,
00815 UINT32 NumFocalColumns,
00816 double AmountFilterPct = 100.0
00817 );
00818
00820 FILTER_FOCAL_FROST (
00821 STAGE *pSourceImage,
00822 bool TakeOwnershipSource,
00823 STAGE *pMaskImage,
00824 bool TakeOwnershipMask,
00825 UINT32 NumFocalRows,
00826 UINT32 NumFocalColumns,
00827 double AmountFilterPct = 100.0
00828 );
00829
00831 virtual ~FILTER_FOCAL_FROST ();
00832
00833 private:
00834 #ifndef GENERATING_DOXYGEN_OUTPUT
00835 MIMATRIX m_MatDistance;
00836
00837
00838 virtual ERRVALUE v_Initialize ();
00839 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00840
00841
00842 FILTER_FOCAL_FROST (const FILTER_FOCAL_FROST&);
00843 FILTER_FOCAL_FROST& operator= (const FILTER_FOCAL_FROST&);
00844
00845 #endif // GENERATING_DOXYGEN_OUTPUT
00846 };
00847
00848
00849
00854 class FILTER_FOCAL_AMPM : public FILTER_FOCAL {
00855 public:
00856
00858 FILTER_FOCAL_AMPM (
00859 STAGE *pSourceImage,
00860 bool TakeOwnershipSource,
00861 STATSVALIDITY StatsValidity,
00862 double WeightParam,
00863 double SigmaParam,
00864 UINT32 NumFocalRows,
00865 UINT32 NumFocalColumns
00866 );
00867
00869 FILTER_FOCAL_AMPM (
00870 STAGE *pSourceImage,
00871 bool TakeOwnershipSource,
00872 STAGE *pMaskImage,
00873 bool TakeOwnershipMask,
00874 STATSVALIDITY StatsValidity,
00875 double WeightParam,
00876 double SigmaParam,
00877 UINT32 NumFocalRows,
00878 UINT32 NumFocalColumns
00879 );
00880
00882 virtual ~FILTER_FOCAL_AMPM ();
00883
00884 private:
00885 #ifndef GENERATING_DOXYGEN_OUTPUT
00886 double m_WeightParam;
00887 double m_SigmaParam;
00888 DOUBLE_ARRAY<double> m_Sigmas;
00889 STATSVALIDITY m_StatsValidity;
00890 DOUBLE_ARRAY<double> m_ValueArrayA;
00891 DOUBLE_ARRAY<double> m_ValueArrayB;
00892
00893
00894 virtual ERRVALUE v_Initialize ();
00895 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00896
00897
00898 FILTER_FOCAL_AMPM (const FILTER_FOCAL_AMPM&);
00899 FILTER_FOCAL_AMPM& operator= (const FILTER_FOCAL_AMPM&);
00900
00901 #endif // GENERATING_DOXYGEN_OUTPUT
00902 };
00903
00904
00905
00909 class FILTER_FOCAL_KUANADAPTIVE : public FILTER_FOCAL {
00910 public:
00911
00913 FILTER_FOCAL_KUANADAPTIVE (
00914 STAGE *pSourceImage,
00915 bool TakeOwnershipSource,
00916 STATSVALIDITY StatsValidity,
00917 double SigmaParam,
00918 UINT32 NumFocalRows,
00919 UINT32 NumFocalColumns,
00920 double AmountFilterPct = 100.0
00921 );
00922
00924 FILTER_FOCAL_KUANADAPTIVE (
00925 STAGE *pSourceImage,
00926 bool TakeOwnershipSource,
00927 STAGE *pMaskImage,
00928 bool TakeOwnershipMask,
00929 STATSVALIDITY StatsValidity,
00930 double SigmaParam,
00931 UINT32 NumFocalRows,
00932 UINT32 NumFocalColumns,
00933 double AmountFilterPct = 100.0
00934 );
00935
00937 virtual ~FILTER_FOCAL_KUANADAPTIVE ();
00938
00939 private:
00940 #ifndef GENERATING_DOXYGEN_OUTPUT
00941 double m_SigmaParam;
00942 DOUBLE_ARRAY<double> m_Sigmas;
00943 STATSVALIDITY m_StatsValidity;
00944
00945
00946 virtual ERRVALUE v_Initialize ();
00947 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00948
00949
00950 FILTER_FOCAL_KUANADAPTIVE (const FILTER_FOCAL_KUANADAPTIVE&);
00951 FILTER_FOCAL_KUANADAPTIVE& operator= (const FILTER_FOCAL_KUANADAPTIVE&);
00952
00953 #endif // GENERATING_DOXYGEN_OUTPUT
00954 };
00955
00956
00957
00962 class FILTER_FOCAL_SIGMA : public FILTER_FOCAL {
00963 public:
00964
00966 FILTER_FOCAL_SIGMA (
00967 STAGE *pSourceImage,
00968 bool TakeOwnershipSource,
00969 STATSVALIDITY StatsValidity,
00970 double SigmaParam,
00971 int KThreshold,
00972 UINT32 NumFocalRows,
00973 UINT32 NumFocalColumns,
00974 double AmountFilterPct = 100.0
00975 );
00976
00978 FILTER_FOCAL_SIGMA (
00979 STAGE *pSourceImage,
00980 bool TakeOwnershipSource,
00981 STAGE *pMaskImage,
00982 bool TakeOwnershipMask,
00983 STATSVALIDITY StatsValidity,
00984 double SigmaParam,
00985 int KThreshold,
00986 UINT32 NumFocalRows,
00987 UINT32 NumFocalColumns,
00988 double AmountFilterPct = 100.0
00989 );
00990
00992 virtual ~FILTER_FOCAL_SIGMA ();
00993
00994 private:
00995 #ifndef GENERATING_DOXYGEN_OUTPUT
00996 double m_SigmaParam;
00997 DOUBLE_ARRAY<double> m_Sigmas;
00998 STATSVALIDITY m_StatsValidity;
00999 int m_KThreshold;
01000 DOUBLE_ARRAY<double> m_ValueArrayA;
01001 DOUBLE_ARRAY<double> m_ValueArrayB;
01002
01003
01004 virtual ERRVALUE v_Initialize ();
01005 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
01006
01007
01008 FILTER_FOCAL_SIGMA (const FILTER_FOCAL_SIGMA&);
01009 FILTER_FOCAL_SIGMA& operator= (const FILTER_FOCAL_SIGMA&);
01010
01011 #endif // GENERATING_DOXYGEN_OUTPUT
01012 };
01013
01014
01015
01019 class FILTER_FOCAL_CONTRAST : public FILTER_FOCAL {
01020 public:
01021
01023 FILTER_FOCAL_CONTRAST (
01024 STAGE *pSourceImage,
01025 bool TakeOwnershipSource,
01026 STATSVALIDITY StatsValidity,
01027 double SigmaParam,
01028 double ContrastParam,
01029 UINT32 NumFocalRows,
01030 UINT32 NumFocalColumns,
01031 double AmountFilterPct = 100.0
01032 );
01033
01035 FILTER_FOCAL_CONTRAST (
01036 STAGE *pSourceImage,
01037 bool TakeOwnershipSource,
01038 STAGE *pMaskImage,
01039 bool TakeOwnershipMask,
01040 STATSVALIDITY StatsValidity,
01041 double SigmaParam,
01042 double ContrastParam,
01043 UINT32 NumFocalRows,
01044 UINT32 NumFocalColumns,
01045 double AmountFilterPct = 100.0
01046 );
01047
01049 virtual ~FILTER_FOCAL_CONTRAST ();
01050
01051 private:
01052 #ifndef GENERATING_DOXYGEN_OUTPUT
01053 double m_ContrastParam;
01054 double m_SigmaParam;
01055
01056 DOUBLE_ARRAY<double> m_Means;
01057 DOUBLE_ARRAY<double> m_Sigmas;
01058 STATSVALIDITY m_StatsValidity;
01059 DOUBLE_ARRAY<double> m_ValueArrayA;
01060 DOUBLE_ARRAY<double> m_ValueArrayB;
01061
01062
01063 virtual ERRVALUE v_Initialize ();
01064 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
01065
01066
01067 FILTER_FOCAL_CONTRAST (const FILTER_FOCAL_CONTRAST&);
01068 FILTER_FOCAL_CONTRAST& operator= (const FILTER_FOCAL_CONTRAST&);
01069
01070 #endif // GENERATING_DOXYGEN_OUTPUT
01071 };
01072
01073
01074
01075 }
01076 }
01077
01078 #endif // INC_SPATMOD_IMAGEFILTERFOCAL_H