Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _OUTLET_DETECTION_FEATURES_H
00011 #define _OUTLET_DETECTION_FEATURES_H
00012
00013 #include <vector>
00014 #include <cv.h>
00015
00016 #include "one_way_descriptor_base.h"
00017
00018 inline CvPoint operator -(CvPoint p1, CvPoint p2)
00019 {
00020 return cvPoint(p1.x - p2.x, p1.y - p2.y);
00021 };
00022
00023 inline float length(CvPoint p)
00024 {
00025 return sqrt(float(p.x*p.x) + p.y*p.y);
00026 };
00027
00028 inline cv::Point2f operator -(cv::Point2f p1, cv::Point2f p2)
00029 {
00030 return cv::Point2f(p1.x - p2.x, p1.y - p2.y);
00031 };
00032
00033 inline cv::Point2f operator -(cv::Point2f p1, CvPoint p2)
00034 {
00035 return cv::Point2f(p1.x - p2.x, p1.y - p2.y);
00036 };
00037
00038 inline cv::Point2f operator -(CvPoint p1, cv::Point2f p2)
00039 {
00040 return cv::Point2f(p1.x - p2.x, p1.y - p2.y);
00041 };
00042
00043 inline float length(cv::Point2f p)
00044 {
00045 return sqrt(float(p.x*p.x) + p.y*p.y);
00046 };
00047
00048
00049 #if 0
00050 struct feature_t
00051 {
00052 CvPoint center;
00053 float scale;
00054 int part_id;
00055
00056 ~feature_t() {};
00057 feature_t(CvPoint _center = cvPoint(-1, -1), float _scale = 1, int _part_id = -1)
00058 {
00059 center = _center;
00060 scale = _scale;
00061 part_id = _part_id;
00062 };
00063 };
00064 #else
00065
00066
00067
00068
00069
00070 #endif
00071
00072 void GetSURFFeatures(IplImage* src, std::vector<feature_t>& features);
00073 void GetStarFeatures(IplImage* src, std::vector<feature_t>& features);
00074 void GetHarrisFeatures(IplImage* src, std::vector<feature_t>& features);
00075 void GetHoleFeatures(IplImage* src, std::vector<feature_t>& features, float hole_contrast = 1.1f);
00076
00077
00078 void DrawFeatures(IplImage* img, const std::vector<feature_t>& features);
00079 void FilterFeatures(std::vector<feature_t>& features, float min_scale, float max_scale);
00080
00081 void SelectNeighborFeatures(std::vector<feature_t>& features, const std::vector<feature_t>& voc);
00082
00083
00084
00085
00086
00087
00088
00089 int LoadFeatures(const char* filename, std::vector<std::vector<feature_t> >& features, std::vector<IplImage*>& images);
00090 void LoadTrainingFeatures(CvOneWayDescriptorObject& descriptors, const char* train_image_filename_object,
00091 const char* train_image_filename_background);
00092
00093 IplImage* loadImageRed(const char* filename);
00094
00095
00096 void ScaleFeatures(const std::vector<feature_t>& src, std::vector<feature_t>& dst, float scale);
00097
00098 void ApplyGamma(IplImage* img, float gamma = 4.0f);
00099
00100 void FilterFeaturesOnEdges(const IplImage* img, const std::vector<feature_t>& src_features, std::vector<feature_t>& dst_features, int max_edge_dist = 5, int min_contour_size = 15);
00101
00102
00103 #endif // _FEATURES_H