일부 내장형 OpenCV 기능 감지기를 사용하여 이미지에서 기능 감지를 실행하려고합니다. 그러나, 나는 오직 최고/최고 n 기능을 이미지에 나타 내기를 원합니다 (이 예제에서는 30을 말합니다). 이미 피쳐를 찾은 다음 다른 피사체에서 그 피사체를 식별하는 코드를 사용했지만 발견 된 키포인트 수를 제한하는 방법을 찾을 수 없습니다. 나는 다음과 같이 다양한 감지기/추출기/매처 (matcher)를 초기화 : 나는 이미 SO 해결책을 찾기 위해 시도했지만 유일한 해결책은 내가 aren't for the android version of OpenCV을 찾을 수 있습니다Android OpenCV에서 키포 수 설정
private final FeatureDetector mFeatureDetector = FeatureDetector.create(FeatureDetector.ORB);
private final DescriptorExtractor mDescriptorExtractor = descriptorExtractor.create(DescriptorExtractor.ORB);
private final DescriptorMatcher mDescriptorMatcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMINGLUT);
. 이와 유사한 방법을 이러한 방법으로 시도해도 효과가 없었습니다.
제가 생각할 수있는 유일한 방법은 처음 30 개의 기능을 사용하는 것뿐입니다. 그러나 이미지의 한 부분에 모두 클러스터링 될 수 있으므로 제대로 작동하지 않을 것이라고 생각합니다. 그래서 30 대 기능을 선택하는 방법을 아는 사람이 있는지 궁금합니다. 나는 MSER, ORB, SIFT, SURF, STAR, GFTT 등 어떤 특징 탐지 알고리즘을위한 솔루션인지 신경 쓰지 않는다.
또한 정확히 30 개의 기능을 감지해야하므로 "약"정도가 될 때까지 감도로 재생하는 것은 옵션이 아닙니다.
편집 : 정확하게 30 개의 기능을 찾을 필요가있는 이유는 그것들을 내 탐지기를 훈련시키는 데 사용할 것입니다. 아이디어는 일련의 훈련 이미지 각각에서 30 개의 피쳐를 얻은 다음 그 결과를 사용하여 한 장면에서 다시 피사체를 찾는 것입니다. 교육 이미지가 객체의 클로즈업에 가까워 지므로 피쳐가 이미지의 한 부분에 클러스터되지 않을 수도 있습니다.
모든 알고리즘에는 https://github.com/Itseez/opencv_contrib/blob/master/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp에서와 같이'nFeatures' (src의 SURF 생성자 참조)가 없습니다. # L79. Java 래퍼는 각 알고리즘에 대해 제공되지 않기 때문에 자유롭지 않을 수 있습니다. 우리는 단지'create'라는 이름을 가지고 있습니다. 또한 최상의 30 가지 기능을 제공하더라도 이미지의 한 부분에 클러스터되지 않을 것이라는 보장은 없습니다.제한 기능에 대한 필요성을보다 명확하게 나타낼 수 있습니까? 'knnMatch' 또는'radiusMatch'가 도움이 될까요? – Kiran
필자는 필자가 필자의 기능을 제한해야하는 이유로 필자의 질문을 업데이트했습니다 (필자는 일정한 기능을 필요로하는 방식으로 필자의 감지기를 교육하고 있습니다). 불행히도 나는'knnMatch' 또는'radiusMatch'가 도움이 될 것이라고 생각하지 않지만, 생각에 감사드립니다. nFeatures 알고리즘이 어떻게 구현되었는지 알고 있습니까? – TheOmegaPostulate
정확한 질문을 이해했는지 확실하지 않습니다. C++에서 피처 포인트 (SURF에서 알고있는 점)는 사용 된 필터의 응답으로 정렬됩니다. 안드로이드에 없다면 스스로 발견 할 수 있습니다. 탐지 한 모든 키포인트는 플로트 응답 멤버 값을 가지고 있기 때문에 스스로 할 수 있습니다. 따라서 목록의 처음 30 개 키포인트를 가장 높은 응답을 가진 키포인트로 가져 가야합니다. 그들은 자연의 이미지의 일부에 clusterd되지 않습니다! – PeterNL