00001 #ifndef _QCamFindShift_hotSpot_hpp_
00002 #define _QCamFindShift_hotSpot_hpp_
00003
00004 #include "QCamFindShift.hpp"
00005 #include "Vector2D.hpp"
00006
00007 class QVGroupBox;
00008 class QCamSlider;
00009 class QFrameDisplay;
00010
00013 class QCamFindShift_hotSpot : public QCamFindShift {
00014 Q_OBJECT;
00015 public:
00016 QCamFindShift_hotSpot();
00017 QWidget * buildGUI(QWidget *);
00018 virtual QCamFrame image() const;
00019 public slots:
00021 void setSeuil(int value);
00023 void setAutoSeuil(bool value);
00024
00029 void setSearchBoxSize(int value);
00030
00034 void setBinning(int value);
00035 signals:
00036 void seuilChanged(int);
00037 void autoSeuilChanged(bool);
00038 void searchBoxSizeChanged(int);
00039 protected:
00040 bool registerFirstFrame();
00041 bool findShift(ShiftInfo & shift);
00042 Vector2D firstHotSpot_;
00043 private:
00044 void computeCenterImg(int size,const Vector2D & center);
00045 bool findHotSpot(Vector2D & shift);
00046 double findHotSpot(const Vector2D & from,
00047 Vector2D & center);
00048 int computeSeuil() const;
00049 int computePixelWeight(int pixelVal) const {
00050 pixelVal-=seuil_;
00051 if (pixelVal>0) {
00052 pixelVal=pixelVal*255/(255-seuil_);
00053 pixelVal*=pixelVal;
00054 }
00055 return pixelVal;
00056 }
00057 double computeBarycenter(const Vector2D & from,
00058 int seuil,int step,
00059 int size,
00060 Vector2D & bary,
00061 double maxCoverage) const;
00062 double lastBrightness_;
00063 Vector2D lastCenter_;
00064
00065 int searchBoxSize_;
00066 int seuil_;
00067
00068 int binning_;
00069
00070 QCamFrame centerImg_;
00071
00072
00073 QVGroupBox * mainBox_;
00074 QCamSlider * seuilSlider_;
00075 QCamSlider * bigBoxSlider_;
00076 QFrameDisplay * dispImgCenter_;
00077 bool autoSeuil_;
00078 };
00079
00080 #endif