2014-01-26 4 views
0

orb 피처 검출기에 대한 매개 변수에 대해 궁금합니다. 키포인트 추출기 및 설명자로 사용하고 있습니다. 매처로 나는 BFMatcher를 사용합니다. 나는이처럼 사용하는 순간OpenCV : Orb 매개 변수

:

ORB orb(25, 1.0f, 2, 10, 0, 2, 0, 10); 

나는 작은 이미지와 빠른 성능에서 찾고 있기 때문에 나는 여전히 잘 내 응용 프로그램과 함께 작동하는 것으로 보인다 어떤 약 25에 기능의 수를 감소. 그리고 문제는 두 번째 매개 변수로 시작합니다. 기본값은 1.2입니다. 나는 1 초 전에 그것을 설정했지만 더 높은 가치를 지니고있는 것이 훨씬 빠르다는 것을 알게되었습니다. 문제는 다음과 같습니다.

OpenCV Error: Assertion failed ((type == CV8U && dtype == CV_32S) ||dtype == CV_32F) in cv_batchDistance, file..........stat.cpp, line 2480

다음은 피라미드 수준의 매개 변수입니다. 기본값은 8입니다. 2로 설정하면 성능이 크게 향상되었습니다. 하지만 1로 설정하면 위와 같은 오류가 발생합니다.

작은 그림으로 작업하고 있으므로 더 낮은 값으로 설정하려고했습니다. 하지만 아무 것도 바뀌지 않는 것 같습니다. 마지막 매개 변수 (patchSize)에도 동일하게 적용됩니다. 이 매개 변수는 대략 일치해야한다고 나와 있습니다.

저는 나머지 매개 변수에 관심이 없습니다.

다른 질문에서 이미 설명했듯이 비디오의 개체를 추적하려고합니다. 이를 위해 모든 경계 상자의 특징을 추출하고 다음 피쳐의 경계 상자와 일치 시키려고합니다. 이렇게하면 프레임 사이의 관계를 구축하려고합니다. 그리고 지금까지는 잘 작동하고 있습니다. 그러나 나는 더 빨라야합니다. 소수의 바운딩 박스가있는 경우 실시간으로 30FPS를 갖기 때문에 너무 오래 걸립니다.

누군가가 이러한 매개 변수를 사용하면 도움이 될만한 것이 있다면 고맙겠습니다.

+0

설명서에 scaleFactor> 1이 나와 있습니다. '1 축척 계수에 너무 가깝다는 것은 특정 축척 범위를 커버하기 위해서는 더 많은 피라미드 레벨이 필요하므로 속도가 떨어질 것입니다.'그래서 1보다 큰 값을 입력하고 다시 확인하십시오. –

+0

글쎄, 1보다 큰 값은 때때로 위의 오류를 줄 수 있습니다. 어쩌면이 오류가 무엇에 관한 것인지 알 수 있습니다. – user2175762

+0

나는 건너 가지 않았다. 오류를 일으키는 라인에서 사용되는 특정 이미지는 uint8, int32 또는 float32 유형이어야합니다. 오류를 재현하기 위해 여기에 최소한의 코드 조각을 추가 할 수 있습니다. –

답변

0

설명서에 따르면 매개 변수 번호 4와 8의 값은 키포인트가 경계에서 얼마나 멀리 떨어져 있어야하는지 알려줍니다. 작은 이미지를 사용하기 때문에 10 픽셀이 좋은 선택 일 수 있지만 더 중심에 배치 된 키포인트를 원한다면 더 큰 값을 가져야합니다. 두 번째 매개 변수는 1보다 커야합니다. 어떤 값을 선택했는지 알지 못하지만 2를 시도 할 수 있습니다. 매개 변수 번호 7에 관심이 없지만 1은 FAST_SCORE에 해당하므로 0 대신 1로 설정할 수 있습니다 이는 HARRIS_SCORE보다 계산이 빠릅니다. 코드를 추가하면 오류와 관련하여 도움을받을 수 있습니다.