Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

NgbLWshed.h

Go to the documentation of this file.
00001 #ifndef Impala_Core_Array_Trait_NgbLWshed_h
00002 #define Impala_Core_Array_Trait_NgbLWshed_h
00003 
00004 #include "Core/Array/Pattern/Categories.h"
00005 #include "Core/Array/Pattern/Cnum.h"
00006 
00007 namespace Impala
00008 {
00009 namespace Core
00010 {
00011 namespace Array
00012 {
00013 namespace Trait
00014 {
00015 
00016 
00021 template<class DstArrayT, class SrcArrayT>
00022 class NgbLWshed
00023 {
00024 public:
00025 
00027     typedef Pattern::TagLoop IteratorCategory;
00028 
00030     typedef Pattern::Tag1Phase PhaseCategory;
00031 
00032     typedef typename DstArrayT::StorType DstStorType;
00033     typedef typename DstArrayT::ArithType DstArithType;
00034     typedef typename SrcArrayT::StorType SrcStorType;
00035     typedef typename SrcArrayT::ArithType SrcArithType;
00036 
00038     NgbLWshed(int conn, int wshedval)
00039     {
00040         mConn = conn;
00041         mWshedval = wshedval;
00042         mValues = new SrcArithType[9];
00043         mPctIdx     = 4;
00044     }
00045 
00047     ~NgbLWshed()
00048     {
00049         if (mValues)
00050             delete [] mValues;
00051     }
00052 
00054     int
00055     Width()
00056     {
00057         return 3;
00058     }
00059 
00061     int
00062     Height()
00063     {
00064         return 3;
00065     }
00066 
00068     void
00069     Init(int x, int y, const SrcArithType& value)
00070     {
00071         mI = 0;
00072     }
00073 
00075     void
00076     NextEl(int x, int y, const SrcArithType& value)
00077     {
00078         mValues[mI++] = value;
00079     }
00080 
00082     DstArithType
00083     Result() const
00084     {
00085         SrcArithType minval=mValues[mPctIdx];
00086         if (mConn==4)
00087         {
00088             if (mValues[1] < minval && mValues[1]>mWshedval)
00089                 minval = mValues[1];
00090             if (mValues[3] < minval && mValues[3]>mWshedval)
00091                 minval = mValues[3];
00092             if (mValues[5] < minval && mValues[5]>mWshedval)
00093                 minval = mValues[5];
00094             if (mValues[7] < minval && mValues[7]>mWshedval)
00095                 minval = mValues[7];
00096 
00097             if (minval<mValues[mPctIdx])
00098                 return mWshedval;
00099             else
00100                 return mValues[mPctIdx];
00101         }
00102         if (mConn==8)
00103         {
00104             if (mValues[0] < minval && mValues[0]>mWshedval)
00105                 minval = mValues[0];
00106             if (mValues[1] < minval && mValues[1]>mWshedval)
00107                 minval = mValues[1];
00108             if (mValues[2] < minval && mValues[2]>mWshedval)
00109                 minval = mValues[2];
00110             if (mValues[3] < minval && mValues[3]>mWshedval)
00111                 minval = mValues[3];
00112             if (mValues[5] < minval && mValues[5]>mWshedval)
00113                 minval = mValues[5];
00114             if (mValues[6] < minval && mValues[6]>mWshedval)
00115                 minval = mValues[6];
00116             if (mValues[7] < minval && mValues[7]>mWshedval)
00117                 minval = mValues[7];
00118             if (mValues[8] < minval && mValues[8]>mWshedval)
00119                 minval = mValues[8];
00120 
00121             if (minval>mWshedval && minval<mValues[mPctIdx])
00122                 return mWshedval;
00123             else
00124                 return mValues[mPctIdx];
00125         }
00126 
00127         return mValues[mPctIdx];
00128     }
00129 
00130 private:
00131     int     mPctIdx;
00132     int     mConn;  //connectivity 4 or 8
00133     int     mWshedval;
00134 
00135     SrcArithType* mValues;
00136     int     mI;
00137 };
00138 
00139 
00140 } // namespace Trait
00141 } // namespace Array
00142 } // namespace Core
00143 } // namespace Impala
00144 
00145 #endif

Generated on Fri Mar 19 09:30:59 2010 for ImpalaSrc by  doxygen 1.5.1