Hi!
I have to implement calculation of key point pairs, based on euclidean
distance, between points described by 128 values.
The idea is that I have the lists of points (set A, and set B )/>. First i calculate for each key point at set A its nearest neighbor in set B. Then i do this other way around. This is the function:
Then, i search for key points pairs for which key points point at each other.
But something is wrong, I get the result that every point from set A has an mutual nearest neighbor.
Do you have any suggestions? I'm a beginner, and there is probably some small stupid mistake.
Thank you in advance.
I have to implement calculation of key point pairs, based on euclidean
distance, between points described by 128 values.
The idea is that I have the lists of points (set A, and set B )/>. First i calculate for each key point at set A its nearest neighbor in set B. Then i do this other way around. This is the function:
void FriendCalculator(ArrayList<point> ListA, ArrayList<point> ListB){ point tempA; point tempB; for(int i=0;ListA.size()>i;i++){ tempA=ListA.get(i); for(int j=0;ListB.size()>j;j++){ tempB=ListB.get(j); float dist=0 ; float sum=0; for(int k=0; tempA.values.size()>k;k++){ sum=(tempA.values.get(k)-tempB.values.get(k))*(tempA.values.get(k)-tempB.values.get(k)); dist=sum+dist; } dist=(float) Math.sqrt(dist); if(tempA.distance>dist || tempA.distance==0){ tempA.distance=dist; tempA.n=tempB; } else{} //System.out.printf("%d. Distance: %f \n",i, tempA.distance); } //System.out.printf("..\n"); //System.out.printf("Distance: %d \n", tempA.distance); } }
Then, i search for key points pairs for which key points point at each other.
void KeyPointC(ArrayList<point> ListA,ArrayList<point> ListB,ArrayList<point> ListC){ FriendCalculator(ListA,ListB); FriendCalculator(ListB,ListA); point tempA; point tempB; for(int i=0;ListA.size()>i;i++){ tempA=ListA.get(i); tempB=tempA.n; if(tempA==tempB.n){ System.out.printf("%d Best budies A:x:%f y:%f B:x:%f y:%f\n",i, tempA.x,tempA.y,tempA.n.x,tempA.n.y); } } }
But something is wrong, I get the result that every point from set A has an mutual nearest neighbor.
Do you have any suggestions? I'm a beginner, and there is probably some small stupid mistake.
Thank you in advance.