Go to the documentation of this file.00001
00007 #ifndef __AppearenceImageSimu_H__
00008 #define __AppearenceImageSimu_H__
00009
00010
00011
00012
00013
00014 #include "jmath/jblas.hpp"
00015 #include "image/Image.hpp"
00016 #include "rtslam/appearanceAbstract.hpp"
00017 #include "rtslam/gaussian.hpp"
00018 #include "boost/shared_ptr.hpp"
00019
00020
00021 #ifdef HAVE_MODULE_DSEG
00022 #include "dseg/SegmentsSet.hpp"
00023 #include "dseg/SegmentHypothesis.hpp"
00024 #endif
00025
00026 namespace jafar {
00027 namespace rtslam {
00028
00029 class AppearanceImagePoint;
00030 typedef boost::shared_ptr<AppearanceImagePoint> app_img_pnt_ptr_t;
00031
00037 class AppearanceImagePoint: public AppearanceAbstract {
00038 public:
00039 image::Image patch;
00040 unsigned int patchSum;
00041 unsigned int patchSquareSum;
00042 Gaussian offset;
00043 public:
00044 AppearanceImagePoint(const image::Image& patch, Gaussian const &offset);
00045 AppearanceImagePoint(int width, int height, int depth):
00046 patch(width, height, depth, JfrImage_CS_GRAY), offset(2) {
00047
00048 }
00049 virtual ~AppearanceImagePoint();
00050 virtual AppearanceAbstract* clone();
00051
00052 private:
00053 void computePatchIntegrals();
00054 };
00055
00056 #ifdef HAVE_MODULE_DSEG
00057
00058 class AppearanceImageSegment;
00059 typedef boost::shared_ptr<AppearanceImageSegment> app_img_seg_ptr_t;
00060
00066 class AppearanceImageSegment: public AppearanceAbstract {
00067 public:
00068 image::Image patch;
00069 unsigned int patchMeanLeft;
00070 unsigned int patchMeanRight;
00071 Gaussian offsetTop;
00072 Gaussian offsetBottom;
00073 dseg::SegmentsSet m_hypothesis;
00074 public:
00075 AppearanceImageSegment(const image::Image& patch, Gaussian const &offsetTop, Gaussian const &offsetBottom, dseg::SegmentHypothesis* _hypothesis = NULL);
00076 AppearanceImageSegment(int width, int height, int depth, dseg::SegmentHypothesis* _hypothesis = NULL):
00077 patch(width, height, depth, JfrImage_CS_GRAY),
00078 patchMeanLeft(0),patchMeanRight(0),
00079 offsetTop(2), offsetBottom(2) {
00080 if(_hypothesis != NULL)m_hypothesis.addSegment(_hypothesis);
00081
00082 }
00083 virtual ~AppearanceImageSegment();
00084 virtual AppearanceAbstract* clone();
00085
00086 dseg::SegmentHypothesis* hypothesis() {return m_hypothesis.segmentAt(0);}
00087 void setHypothesis(dseg::SegmentHypothesis* _hypothesis)
00088 {
00089 m_hypothesis = dseg::SegmentsSet();
00090 m_hypothesis.addSegment(_hypothesis);
00091 }
00092
00093 jblas::vec4 realObs()
00094 {
00095 jblas::vec4 ret;
00096 ret.clear();
00097 if(m_hypothesis.count() > 0)
00098 {
00099 ret[0] = m_hypothesis.segmentAt(0)->x1();
00100 ret[1] = m_hypothesis.segmentAt(0)->y1();
00101 ret[2] = m_hypothesis.segmentAt(0)->x2();
00102 ret[3] = m_hypothesis.segmentAt(0)->y2();
00103 }
00104 return ret;
00105 }
00106 };
00107
00108 #endif //HAVE_MODULE_DSEG
00109
00110 }
00111
00112 }
00113
00114
00115 #endif // #ifndef __AppearenceImageSimu_H__
00116
00117
00118
00119
00120
00121
00122
00123