Ajout d'opérateurs au matcher

This commit is contained in:
Unknown 2018-07-30 17:52:44 +02:00
parent 70dbba6c70
commit 9bed523372
8 changed files with 77 additions and 36 deletions

View file

@ -5,6 +5,14 @@ ASIFT_matcher::ASIFT_matcher(): _nb_refs(0), _total_num_matchings(0), _resize_im
default_sift_parameters(_siftParam);
}
ASIFT_matcher::ASIFT_matcher(const char* ref_path): ASIFT_matcher()
{
if(!loadReferences(ref_path))
{
std::cerr<<"Error : Failed to load references"<<std::endl;
}
}
// ASIFT_matcher::~ASIFT_matcher()
// {
@ -607,8 +615,8 @@ bool ASIFT_matcher::loadReferences(const char* ref_path)
std::getline(iss,tmp,' ');
if(VecLength!=atoi(tmp.c_str()))
{
std::cout<<"Error VecLength doesn't correspond..."<<std::endl;
// return false;
std::cerr<<"Error VecLength doesn't correspond..."<<std::endl;
return false;
}
// std::getline(iss,tmp,' ');
@ -679,6 +687,30 @@ bool ASIFT_matcher::loadReferences(const char* ref_path)
return true;
}
ASIFT_matcher& ASIFT_matcher::operator=(const ASIFT_matcher& m)
{
_nb_refs=m.getNbRef();
_im_refs=m.getRefImgs();
_size_refs=m.getSizeRef();
_zoom_refs=m.getZoomRef();
_num_keys=m.getNumKeys();
_num_tilts=m.getNumTilts();
_keys=m.getKeys();
_total_num_matchings=m.getNbMatch();
_num_matchings=getNbMatchs();
_matchings=m.getMatch();
_siftParam=m.getSiftPar();
_resize_imgs=m.isResizingImg();
_showDebug=m.isShowingDebug();
return *this;
}
//Debugging function
void ASIFT_matcher::print() const
{

View file

@ -32,12 +32,13 @@ class ASIFT_matcher
{
public:
ASIFT_matcher();
ASIFT_matcher(const char* ref_path);
ASIFT_matcher(const ASIFT_matcher& matcher) { *this = matcher;}
// virtual ~ASIFT_matcher();
bool addReference(const char* image_path, unsigned int num_tilts=1);
unsigned int match(const char* image_path, unsigned int num_tilts =1);
unsigned int match(vector<float>& image, unsigned int w, unsigned int h, unsigned int num_tilts =1);
void print() const; //Debugging function
bool computeROI(int& x, int& y, unsigned int& h, unsigned int& w) const; //Compute the bounding rectangle of the keypoints
bool computeCenter(int& cx, int& cy) const;
bool distFilter(int threshold); //Filter keypoint which are far (Euclidian distance) from the center.
@ -45,19 +46,28 @@ public:
bool saveReferences(const char* ref_path) const;
bool loadReferences(const char* ref_path);
ASIFT_matcher& operator=(const ASIFT_matcher& m);
unsigned int getNbRef() const{ return _nb_refs;}
const vector< vector< float > >& getRefImgs() const{ return _im_refs;}
const vector< pair<int,int> >& getSizeRef() const{ return _size_refs;}
const vector<float>& getZoomRef() const{ return _zoom_refs;}
const std::vector<int>& getNumKeys() const{ return _num_keys;}
const std::vector<int>& getNumTilts() const{ return _num_tilts;}
const std::vector< asift_keypoints >& getKeys() const{ return _keys;}
const vector < unsigned int >& getNbMatchs() const{ return _num_matchings;}
unsigned int getNbMatch() const{ return _total_num_matchings;}
const vector< matchingslist >& getMatch() const{ return _matchings;}
vector< matchingslist >& getMatch(){ return _matchings;}
const siftPar& getSiftPar(){ return _siftParam;}
const siftPar& getSiftPar() const{ return _siftParam;}
void setSiftPar(const siftPar &newSiftPar){ _siftParam = newSiftPar;}
bool isResizingImg() const{ return _resize_imgs;}
void setResizeImg(bool resize_imgs){ _resize_imgs=resize_imgs;}
bool isShowingDebug() const{ return _showDebug;}
void showDebug(bool showDebug){ _showDebug=showDebug;}
void print() const; //Debugging function
protected:
//Reference Images

View file

@ -1,35 +1,34 @@
39 2
40 2
0
362.208 184.382 279.082 122.315
335.039 109.815 103.199 302.382
368.527 140.516 2.28707e-06 2.7439e-06
329.485 112.667 5.27024e-39 1.418e-38
322.959 119.184 0 0
324.178 230.519 0 0
355.697 190.284 1.07784e-35 4.42979e-36
315.991 235.875 0 0
230.152 191.051 2.67878e-35 1.98276e-35
223.012 231.746 0 0
377.929 162.983 1.15745e-34 7.48296e-35
341.004 112.32 0 0
322.192 279.122 3.15062e-35 3.2204e-36
361.771 216.725 0 0
218.599 221.752 2.92356e-34 1.64035e-34
261.936 171.287 0 0
300.647 157.174 0 0
310.273 236.617 0 0
363.462 146.017 0 0
277.903 162.656 6438.94 5981.52
361.959 175.732 42997.8 23137
374.229 132.773 0 0
221.354 204.377 0 0
218.849 212.966 0 0
367.28 179.248 0 0
291.509 169.803 0 0
291.509 169.803 321.857 265.435
322.192 279.122 521.25 53.2794
361.771 216.725 -2.75171e-10 -5.88405e-11
310.273 236.617 2.06711e-38 5.80946e-39
377.929 162.983 0 0
343.099 119.621 0 0
231.499 206.978 9506.8 5965.8
371.585 152.449 13102.5 11096.8
329.485 112.667 4.12015e-36 1.10856e-35
322.959 119.184 0 0
363.462 146.017 1.2775e-32 1.33655e-32
230.152 191.051 0 0
361.959 175.732 -1.98837e-10 -1.06993e-10
223.012 231.746 2.45231e-38 1.21982e-38
368.527 140.516 1.11629e-32 1.33926e-32
367.28 179.248 0 0
355.697 190.284 5.44443e-35 2.23759e-35
362.208 184.382 0 0
300.647 157.174 0 0
324.178 230.519 0 0
354.104 176.741 0 0
335.039 109.815 2063.98 6047.64
317.773 232.706 72922.9 20489.1
371.585 152.449 0 0
231.499 206.978 0 0
315.991 235.875 0 0
221.354 204.377 0 0
261.936 171.287 0 0
277.903 162.656 0 0
374.229 132.773 2481.6 3687.22
341.004 112.32 7112.49 20058.7
307.57 255.971 1473.99 304.215
317.773 232.706 0 0
294.302 268.305 0 0
322.959 119.184 0 0
1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 179 KiB

Before After
Before After

View file

@ -233,7 +233,7 @@ int main(int argc, char **argv)
{
cout<<" "<<NbMatch[i]<<endl;
}
int x,y,cx,cy;
unsigned int h,w;