00001 #ifndef MMVL_ANALYSE_RESULT_BLOB_HH 00002 #define MMVL_ANALYSE_RESULT_BLOB_HH 00003 00004 #define MAX(a,b) (a)>(b)?(a):(b) 00005 #define ABS(x) (x)>=0?(x):-(x) 00006 00007 #include <cassert> 00008 #include <cmath> 00009 #include <iostream> 00010 #include <vector> 00011 #include <image.h> 00012 00013 namespace mimas{ 00014 namespace hf{ 00015 00029 template<typename Hypothesis_T, typename Pixel_T> 00030 class analyse_result_blob{ 00031 00032 public: 00042 class set 00043 { 00044 public: 00045 float DISTANCE; 00046 float THRESHOLD_TO_BE_CENTER; 00047 float MERGE_DISTANCE; 00048 00049 set(double threshold_to_be_center, float peak_distance, float merge_distance) 00050 :DISTANCE(peak_distance), THRESHOLD_TO_BE_CENTER(threshold_to_be_center), 00051 MERGE_DISTANCE(merge_distance) 00052 {} 00053 }; 00054 00055 analyse_result_blob(std::vector<Hypothesis_T> &hypotheses, image<Pixel_T> &image, set analyse_param) 00056 : peak_distance(analyse_param.DISTANCE), weight_threshold(analyse_param.THRESHOLD_TO_BE_CENTER), 00057 merge_distance(analyse_param.MERGE_DISTANCE), 00058 hypotheses_AR(hypotheses), image_AR(image) 00059 {} 00060 00061 std::vector<Hypothesis_T> analyse(void); 00062 00063 private: 00064 00065 float peak_distance; 00066 float weight_threshold; 00067 float merge_distance; 00068 00069 std::vector< std::vector<Hypothesis_T> > peaks; 00070 std::vector<Hypothesis_T> blobs; 00071 00072 std::vector<Hypothesis_T> &hypotheses_AR; 00073 image<Pixel_T> &image_AR; 00074 }; 00075 00076 #include "analyse_result_blob.tcc" 00077 } 00078 } 00079 #endif