00001 //------------------------------------------------------------------------------ 00002 // This file is part of the OpenStructure project <www.openstructure.org> 00003 // 00004 // Copyright (C) 2008-2011 by the OpenStructure authors 00005 // Copyright (C) 2003-2010 by the IPLT authors 00006 // 00007 // This library is free software; you can redistribute it and/or modify it under 00008 // the terms of the GNU Lesser General Public License as published by the Free 00009 // Software Foundation; either version 3.0 of the License, or (at your option) 00010 // any later version. 00011 // This library is distributed in the hope that it will be useful, but WITHOUT 00012 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00013 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00014 // details. 00015 // 00016 // You should have received a copy of the GNU Lesser General Public License 00017 // along with this library; if not, write to the Free Software Foundation, Inc., 00018 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 //------------------------------------------------------------------------------ 00020 #ifndef IMG_ALG_COMMON_LOCAL_SIGMA_THRES 00021 #define IMG_ALG_COMMON_LOCAL_SIGMA_THRES 00022 00023 #include <ost/img/image_state.hh> 00024 #include <ost/img/image_state/image_state_algorithm.hh> 00025 #include <ost/img/alg/module_config.hh> 00026 00027 namespace ost { namespace img { namespace alg { 00028 00029 /* 00030 Binary threshold based on local standard deviation; for each point, 00031 the standard deviation in a window of size*2+1 is checked against the 00032 given level, and if it surpasses that, the value in the resulting image 00033 is set to one, otherwise zero 00034 00035 The output image is slightly smaller due to the edge being removed 00036 */ 00037 00038 class DLLEXPORT_IMG_ALG LocalSigmaThresholdBase { 00039 public: 00040 LocalSigmaThresholdBase(); 00041 LocalSigmaThresholdBase(int size,Real level); 00042 00043 template <typename T, class D> 00044 ImageStateBasePtr VisitState(const ImageStateImpl<T,D>& s) const; 00045 00046 static String GetAlgorithmName() {return "LocalSigmaThreshold";} 00047 private: 00048 int size_; 00049 Real level_; 00050 }; 00051 00052 typedef ImageStateConstModOPAlgorithm<LocalSigmaThresholdBase> LocalSigmaThreshold; 00053 00054 00055 } 00056 00057 OST_IMG_ALG_EXPLICIT_INST_DECL(class,ImageStateConstModOPAlgorithm<alg::LocalSigmaThresholdBase>) 00058 00059 }} // ns 00060 00061 00062 #endif