2013-05-03 1 views
0

그래서 FAST 감지기와 FREAK 설명자를 사용하여 응용 프로그램을 만들고 있습니다. 그것이 일치에 관해서는 BRUTEFORCE_HAMMING 매칭을 사용하고 싶었지만 기대 한 결과를 얻지 못했습니다 (원본과 아무런 관련이없는 이미지와 비슷하게 보이는 이미지, 그 다음 비슷하게 보이는 이미지)FREAK 설명자를 찾는 가장 좋은 방법은 무엇입니까?

시도해 보았습니다. 다음 코드

MatOfDMatch matches = new MatOfDMatch(); 

     matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING); 
     matcher.match(descriptors,descriptors1,matches); 
     MatOfDMatch goedematches = new MatOfDMatch(); 

     double max_dist = 0; 
     double min_dist = 100; 
     //if (descriptors.cols() == descriptors1.cols()) 
     //{ 
     for(int i = 0; i < descriptors.rows(); i++) 
     { double dist = matches.toArray()[i].distance; 
      if(dist < min_dist) min_dist = dist; 
      if(dist > max_dist) max_dist = dist; 
     } 
     // should only draw good matches 
     for(int i = 0; i < descriptors.rows(); i++) 
     { MatOfDMatch temp = new MatOfDMatch(); 
      if(matches.toArray()[i].distance <= 2*min_dist) 
      { temp.fromArray(matches.toArray()[i]); 
       goedematches.push_back(temp); 
       }   
     // } 
     } 

     Log.d("LOG!", "Number of good matches= " + goedematches.size()); 

그러나 "나쁜"결과가 나타납니다. 그래서 내 질문은, FREAK 설명자와 일치하는 다른 방법이 있습니까? (OpenCV Library 2.4.4와 자바 래퍼를 사용하므로 C 코드는 사용하지 않습니다.)

답변

1

일단 기술자가 있으면 무차별 접근 방식을 사용하면 a와 일치 시키려고 시도 할 수있는 가장 가까운 대응을 얻을 수 있습니다 디스크립터를 제 2 이미지의 모든 디스크립터와 비교한다.

따라서 대답은 '아니오'입니다. FREAK 설명자를 사용하면 얻을 수있는 최상의 결과 (해밍 거리)는 무차별 대응으로 얻을 수 있습니다.

(이 이미지가 비슷 때 좋고 나쁜 경기를 많이 받아야했다. 당신이 일치하는 항목을 그리는 시도? 필터링 단계를 사용하지 않고 경기 사이에 선을 그릴보십시오.)

+0

키포인트를 두 이미지에 모두 그리는 방법을 알고 있지만 이미지를 연결하는 방법은 알지 못합니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까? – user1393500

+0

두 이미지를 매트릭스에 나란히 그려서 점 사이에 선 (cv :: line)을 그립니다. – JonesV

0

만약 당신이 체크하고있는 이미지의 중복이라면 10의 해밍 거리를 가지고 BRISK 알고리즘을 사용할 것을 제안합니다. 내 application에서 이것을 사용하고 난 최선의 알고리즘을 찾는 데 도움이 될 tool을 개발했습니다. 아마도 당신은 내가 매칭 된 타입으로 디자인 한 툴을 업그레이드 할 수 있습니다.

0

FREAK 자체가 회전 및 크기 변경되지 않기 때문에 나쁜 결과가 발생할 수 있습니다. 해당 키포인트 주변에서 BRISK 키포인트 감지 및 FREAK 설명자를 사용하십시오.

JavaCV를 사용하면 설명자 매트를 null로 설정하면 BRISK 키포인트 감지 기능을 사용할 수 있습니다.