sift 예제

이 자습서에서는 OpenCV의 `matcher_simple` 예제를 사용하여 SIFT 기능 추출 및 두 이미지 간의 SIFT 피처 일치를 다룹니다. 그러나 모든 이미지에서 학습된 개체를 식별할 수 있는 개체 인식 데모를 설정하는 것만큼 멀리 가지는 않습니다. 세계에서 객체의 고유한 속성은 특정 배율 범위에서 의미 있는 개체로만 존재한다는 것입니다. 간단한 예는 나무의 가지의 개념입니다, 이는 단지 몇 센티미터에서 몇 미터에, 예를 들어, 규모에서 의미가 있습니다. 나노미터 또는 킬로미터 수준에서 나무 개념을 논의하는 것은 의미가 없습니다. 그 규모에서 나무의 잎을 형성하는 분자, 또는 나무가 성장하는 숲에 대해 이야기하는 것이 더 관련이있다. 마찬가지로 특정 범위의 거친 스케일에서 클라우드에 대해 이야기하는 것은 의미가 있습니다. 미세한 스케일에서는 양성자와 전자 등으로 구성된 원자로 구성된 물 분자로 구성된 개별 방울을 고려하는 것이 더 적절합니다. SURF 및 ORB 각각에 대한 하나의 예제를 살펴보겠습니다(둘 다 서로 다른 거리 측정을 사용). 시퀀스에서 두 개의 이미지를 가져와 서열에서 두 개의 이미지를 가져 간 다음 그 중 하나를 펭귄만 으로 자른 다음 두 이미지에서 예제를 실행했습니다. 결과는 아래와 같습니다. 지난 몇 장에서, 우리는 해리스 등 같은 몇 가지 코너 탐지기를 보았다. 그들은 이미지가 회전하는 경우에도 동일한 모서리를 찾을 수 있음을 의미 회전 고정입니다.

모서리가 회전된 이미지의 모서리에도 남아 있기 때문에 분명합니다. 하지만 스케일링은 어떨까요? 이미지의 배율이 조정된 경우 모서리가 모서리가 아닐 수 있습니다. 예를 들어 아래의 간단한 이미지를 확인하십시오. 작은 창 내의 작은 이미지의 모서리는 동일한 창을 확대할 때 평평합니다. 그래서 해리스 코너는 스케일 고정되지 않습니다. 나는 다른 위치와 각도에서 플래시 카드를 들고 나를 캡처 한 이미지의 시퀀스가 있습니다. 플래시 카드에는 펭귄이 있습니다. 다음은 이 예제에 사용한 시퀀스의 두 프레임입니다. 두 이미지 간의 기능을 일치시키기만 하면 SIFT의 작동 방식에 대한 좋은 예가 되지만, 학습된 개체를 실제로 인식하는 방법은 아닙니다.

예를 들어 비디오 스트림에서 펭귄 플래시 카드를 안정적으로 감지 할 수있는 예제를 설정하고 싶습니다. 예제 코드를 찾았을 때 다른 게시물을 작성하겠습니다. “C:opencvsamplescpp”에서 보면 예제 소스 파일 및 이미지의 큰 무질서한 혼란을 찾을 수 있습니다. 이번에는 BFMatcher.knnMatch()를 사용하여 k 베스트 매치를 얻을 것입니다. 이 예제에서는 d.Lowe가 논문에서 설명한 비율 테스트를 적용할 수 있도록 k=2를 적용합니다. `matcher_simple.cpp`의 예 중 하나는 기능 추출에 대한 소개를 제공합니다. 그것은 기본적으로 SURF를 사용하지만, 당신은 `Sift`와 `서핑`의 간단한 찾기 및 교체와 SIFT로 변경할 수 있습니다! OpenCV는 또한 cv2.drawKeyPoints() 기능을 제공하여 키 포인트 위치에 작은 원을 그립니다. 플래그를 전달하면 cv2. DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS에, 키 포인트의 크기와 원을 그릴 것입니다 그리고 그것은 심지어 방향을 표시 합니다. 아래 예제를 참조하십시오. 다음은 예제에서 찾을 수 있는 유일한 설명서입니다. 그런 다음 왼쪽 이미지의 각 기능에 대해 오른쪽 이미지에서 가장 가까운 일치 기능을 찾습니다.

왼쪽 이미지의 각 키포인트에서 오른쪽 이미지에서 가장 가까운 일치 지점까지 선을 그립니다. 나는 명확하게 잘못 일치하는 다섯 가지 기능을 볼 수 있지만, 그들 중 대부분은 올바른 것처럼 보인다. 이 설명서는 예제의 중요성에 대한 많은 통찰력을 제공하지 않으며 실망스럽게도 재생할 예제 이미지에 대한 권장 사항을 제공하지 않습니다.

Share on Google+Share on FacebookTweet about this on Twitter
error: Садржај је заштићен !!