fixed, successful build
This commit is contained in:
@@ -982,7 +982,8 @@ void LoopClosing::CorrectLoop()
|
||||
unique_lock<mutex> lock(mMutexGBA);
|
||||
mbStopGBA = true;
|
||||
|
||||
mnFullBAIdx++;
|
||||
//mnFullBAIdx++;
|
||||
mnFullBAIdx = true;
|
||||
|
||||
if(mpThreadGBA)
|
||||
{
|
||||
@@ -1233,7 +1234,8 @@ void LoopClosing::MergeLocal()
|
||||
unique_lock<mutex> lock(mMutexGBA);
|
||||
mbStopGBA = true;
|
||||
|
||||
mnFullBAIdx++;
|
||||
//mnFullBAIdx++;
|
||||
mnFullBAIdx = true;
|
||||
|
||||
if(mpThreadGBA)
|
||||
{
|
||||
@@ -1806,7 +1808,9 @@ void LoopClosing::MergeLocal2()
|
||||
unique_lock<mutex> lock(mMutexGBA);
|
||||
mbStopGBA = true;
|
||||
|
||||
mnFullBAIdx++;
|
||||
//mnFullBAIdx++;
|
||||
mnFullBAIdx = true;
|
||||
|
||||
|
||||
if(mpThreadGBA)
|
||||
{
|
||||
|
||||
@@ -366,30 +366,49 @@ void MapPoint::ComputeDistinctiveDescriptors()
|
||||
return;
|
||||
|
||||
// Compute distances between them
|
||||
const size_t N = vDescriptors.size();
|
||||
const auto N = vDescriptors.size();
|
||||
|
||||
float Distances[N][N];
|
||||
for(size_t i=0;i<N;i++)
|
||||
//float Distances[N][N];
|
||||
//cv::Mat Distances = cv::Mat(N, N, CV_32F);
|
||||
vector<vector<float>> Distances;
|
||||
typedef vector<float> Row;
|
||||
|
||||
// Fill Distances
|
||||
for (size_t i = 0; i < N; ++i)
|
||||
{
|
||||
Distances[i][i]=0;
|
||||
for(size_t j=i+1;j<N;j++)
|
||||
Row row(N);
|
||||
|
||||
for (size_t j = 0; j < N; ++j)
|
||||
{
|
||||
int distij = ORBmatcher::DescriptorDistance(vDescriptors[i],vDescriptors[j]);
|
||||
Distances[i][j]=distij;
|
||||
Distances[j][i]=distij;
|
||||
row[j] = 0;
|
||||
}
|
||||
|
||||
Distances.push_back(row); // push each row after you fill it
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < N; i++)
|
||||
{
|
||||
Distances[i][i] = 0;
|
||||
for (size_t j = i + 1; j < N; j++)
|
||||
{
|
||||
int distij = ORBmatcher::DescriptorDistance(vDescriptors[i], vDescriptors[j]);
|
||||
Distances[i][j] = distij;
|
||||
Distances[j][i] = distij;
|
||||
}
|
||||
}
|
||||
|
||||
// Take the descriptor with least median distance to the rest
|
||||
int BestMedian = INT_MAX;
|
||||
int BestIdx = 0;
|
||||
for(size_t i=0;i<N;i++)
|
||||
for (size_t i = 0; i < N; i++)
|
||||
{
|
||||
vector<int> vDists(Distances[i],Distances[i]+N);
|
||||
sort(vDists.begin(),vDists.end());
|
||||
int median = vDists[0.5*(N-1)];
|
||||
// vector<int> vDists(Distances[i], Distances[i] + N);
|
||||
// Since the line above just copies the array, let's do it in a normal way
|
||||
vector<int> vDists(Distances[i].begin(), Distances[i].end());
|
||||
sort(vDists.begin(), vDists.end());
|
||||
int median = vDists[0.5 * (N - 1)];
|
||||
|
||||
if(median<BestMedian)
|
||||
if (median < BestMedian)
|
||||
{
|
||||
BestMedian = median;
|
||||
BestIdx = i;
|
||||
|
||||
Reference in New Issue
Block a user