Hi Dorian,
For implementing BRISK features, I have created a class (copied from ORB.cpp) and set FBRISK::L=64; I have also modified the distance measure using the Stanford's CountBitsSetParallel code with a int_64t template:
const long long *pa = a.ptr<int64_t>();
const long long *pb = b.ptr<int64_t>();
double dist=0;
for(int i=0; i<8; i++, pa++, pb++)
{
unsigned long long v = *pa ^ *pb;
v = v - ((v >> 1) & 0x5555555555555555UL);
v = (v & 0x3333333333333333UL) + ((v >> 2) & 0x3333333333333333UL);
dist += (((v + (v >> 4)) & 0xF0F0F0F0F0F0F0FUL) * 0x101010101010101UL) >> 56;
}
return dist;
}
I can generate a vocabulary and match image-to-image as in the demo, with similar scores (1 for the same images, <0.1 for different images). however since this has involved some coding outside my comfort zone I am unsure if it was done correctly. Could suggest ways of validating the words stored in the vocabulary?
EDIT: The above runs fine on Windows. however when deployed on Ubuntu as part of ORB_SLAM2 I get:
/home/andres/Andres/myORB_SLAM2/Thirdparty/DBoW2/DBoW2/FBRISK.cpp:88:41: error: invalid conversion from ‘const long int’ to ‘const long long int’ [-fpermissive]
const long long *pa = a.ptr();
I guess I need to read a bit more on how each OS handles the integers...
Hi Dorian, For implementing BRISK features, I have created a class (copied from ORB.cpp) and set
FBRISK::L=64;
I have also modified the distance measure using the Stanford's CountBitsSetParallel code with a int_64t template:I can generate a vocabulary and match image-to-image as in the demo, with similar scores (1 for the same images, <0.1 for different images). however since this has involved some coding outside my comfort zone I am unsure if it was done correctly. Could suggest ways of validating the words stored in the vocabulary?
EDIT: The above runs fine on Windows. however when deployed on Ubuntu as part of ORB_SLAM2 I get: /home/andres/Andres/myORB_SLAM2/Thirdparty/DBoW2/DBoW2/FBRISK.cpp:88:41: error: invalid conversion from ‘const long int’ to ‘const long long int’ [-fpermissive] const long long *pa = a.ptr();
I guess I need to read a bit more on how each OS handles the integers...