dilate.h

Go to the documentation of this file.
00001 
00015 #ifndef _DLRCOMPUTERVISION_DILATE_H_
00016 #define _DLRCOMPUTERVISION_DILATE_H_
00017 
00018 #include <dlrComputerVision/image.h>
00019 
00020 namespace dlr {
00021 
00022   namespace computerVision {
00023     
00024     template<ImageFormat FORMAT>
00025     Image<FORMAT>
00026     dilate(const Image<FORMAT>& inputImage);
00027 
00028   } // namespace computerVision
00029     
00030 } // namespace dlr
00031 
00032 
00033 /* ============ Definitions of inline & template functions ============ */
00034 
00035 
00036 #include <cmath>
00037 
00038 namespace dlr {
00039 
00040   namespace computerVision {
00041   
00042     template<ImageFormat FORMAT>
00043     Image<FORMAT>
00044     dilate(const Image<FORMAT>& inputImage)
00045     {
00046       typedef typename Image<FORMAT>::value_type ValueType;
00047     
00048       Image<FORMAT> outputImage(inputImage.rows(), inputImage.columns());
00049 
00050       size_t index0 = 0;
00051       if(inputImage[0]
00052          || inputImage[1]
00053          || inputImage[inputImage.columns()]
00054          || inputImage[inputImage.columns() + 1]) {
00055         outputImage[index0] = ValueType(1);
00056       } else {
00057         outputImage[index0] = ValueType(0);
00058       }
00059       ++index0;
00060 
00061       for(size_t column = 1; column < inputImage.columns() - 1; ++column) {
00062         if(inputImage[index0]
00063            || inputImage[index0 - 1]
00064            || inputImage[index0 + 1]
00065            || inputImage[index0 + inputImage.columns() - 1]
00066            || inputImage[index0 + inputImage.columns()]
00067            || inputImage[index0 + inputImage.columns() + 1]) {
00068           outputImage[index0] = ValueType(1);
00069         } else {
00070           outputImage[index0] = ValueType(0);
00071         }
00072         ++index0;
00073       }
00074         
00075       if(inputImage[index0]
00076          || inputImage[index0 - 1]
00077          || inputImage[index0 + inputImage.columns() - 1]
00078          || inputImage[index0 + inputImage.columns()]) {
00079         outputImage[index0] = ValueType(1);
00080       } else {
00081         outputImage[index0] = ValueType(0);
00082       }
00083       ++index0;
00084 
00085       for(size_t row = 1; row < inputImage.rows() - 1; ++row) {
00086         if(inputImage[index0]
00087            || inputImage[index0 + 1]
00088            || inputImage[index0 - inputImage.columns()]
00089            || inputImage[index0 - inputImage.columns() + 1]
00090            || inputImage[index0 + inputImage.columns()]
00091            || inputImage[index0 + inputImage.columns() + 1]) {
00092           outputImage[index0] = ValueType(1);
00093         } else {
00094           outputImage[index0] = ValueType(0);
00095         }
00096         ++index0;
00097 
00098         for(size_t column = 1; column < inputImage.columns() - 1; ++column) {
00099           if(inputImage[index0]
00100              || inputImage[index0 - 1]
00101              || inputImage[index0 + 1]
00102              || inputImage[index0 - inputImage.columns() - 1]
00103              || inputImage[index0 - inputImage.columns()]
00104              || inputImage[index0 - inputImage.columns() + 1]
00105              || inputImage[index0 + inputImage.columns() - 1]
00106              || inputImage[index0 + inputImage.columns()]
00107              || inputImage[index0 + inputImage.columns() + 1]) {
00108             outputImage[index0] = ValueType(1);
00109           } else {
00110             outputImage[index0] = ValueType(0);
00111           }
00112           ++index0;
00113         }
00114 
00115         if(inputImage[index0]
00116            || inputImage[index0 - 1]
00117            || inputImage[index0 - inputImage.columns()]
00118            || inputImage[index0 - inputImage.columns() - 1]
00119            || inputImage[index0 + inputImage.columns()]
00120            || inputImage[index0 + inputImage.columns() - 1]) {
00121           outputImage[index0] = ValueType(1);
00122         } else {
00123           outputImage[index0] = ValueType(0);
00124         }
00125         ++index0;
00126       }
00127 
00128       if(inputImage[index0]
00129          || inputImage[index0 + 1]
00130          || inputImage[index0 - inputImage.columns()]
00131          || inputImage[index0 - inputImage.columns() + 1]) {
00132         outputImage[index0] = ValueType(1);
00133       } else {
00134         outputImage[index0] = ValueType(0);
00135       }
00136       ++index0;
00137 
00138       for(size_t column = 1; column < inputImage.columns() - 1; ++column) {
00139         if(inputImage[index0]
00140            || inputImage[index0 - 1]
00141            || inputImage[index0 + 1]
00142            || inputImage[index0 - inputImage.columns() - 1]
00143            || inputImage[index0 - inputImage.columns()]
00144            || inputImage[index0 - inputImage.columns() + 1]) {
00145           outputImage[index0] = ValueType(1);
00146         } else {
00147           outputImage[index0] = ValueType(0);
00148         }
00149         ++index0;
00150       }
00151         
00152       if(inputImage[index0]
00153          || inputImage[index0 - 1]
00154          || inputImage[index0 - inputImage.columns() - 1]
00155          || inputImage[index0 - inputImage.columns()]) {
00156         outputImage[index0] = ValueType(1);
00157       } else {
00158         outputImage[index0] = ValueType(0);
00159       }
00160       ++index0;
00161 
00162       return outputImage;
00163     }
00164 
00165   } // namespace computerVision
00166     
00167 } // namespace dlr
00168 
00169 #endif /* #ifndef _DLRCOMPUTERVISION_DILATE_H_ */

Generated on Mon Jul 9 20:34:02 2007 for dlrLibs Utility Libraries by  doxygen 1.5.2