3D 재구성 (2) Sift 피쳐 추출 및 일치
// 100
nth_element(matches.begin(), matches.begin() + 99, matches.end());
matches.erase(matches.begin() + 99, matches.end());
잘못 썼어. 99를 00으로 썼어. 그래서 일치하는 결과를 볼 수 없었어. 여기 바뀌었어. - - - - - - - - - - - - - - - Opencv로 Sift 특징 추출과 일치하는 코드를 만들었어. Sift 특징에 대한 상세한 설명을 보고 싶으면'Distinctive Image Features'또는 제가 최근에 SIFT 알고리즘에 대한 상세한 설명 세 편을 썼습니다. SIFT 알고리즘 상해(1) 요약과 척도 공간 검측 SIFT 알고리즘 상해(2) 극치점의 정확한 위치와 특징점 방향의 계산 SIFT 알고리즘 상해(3) 특정점 설명서의 생성도 제가 참고한 자원이 있습니다.
다음은 내 코드입니다.
// Opencv SIFT
//lhc 2016-07-08
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
Mat image1 = imread("G:\\ET\\et000.jpg");
Mat image2 = imread("G:\\ET\\et001.jpg");
//Sift
SiftFeatureDetector detector;
//
vector image1KeyPoint, image2KeyPoint;
//
detector.detect(image1, image1KeyPoint);
detector.detect(image2, image2KeyPoint);
//
Mat imageOutput1;
Mat imageOutput2;
drawKeypoints(image1, image1KeyPoint, imageOutput1, Scalar(0, 255, 0));
drawKeypoints(image2, image2KeyPoint, imageOutput2, Scalar(0, 255, 0));
//Sift
SiftDescriptorExtractor extractor;
Mat descriptor1, descriptor2;
// Sift
extractor.compute(imageOutput1, image1KeyPoint, descriptor1);
extractor.compute(imageOutput2, image2KeyPoint, descriptor2);
//
BruteForceMatcherfloat>> matcher;
vector matches;
matcher.match(descriptor1, descriptor2, matches);
// 100
nth_element(matches.begin(), matches.begin() + 99, matches.end());
matches.erase(matches.begin() + 99, matches.end());
//
Mat image_matched;
drawMatches(imageOutput1, image1KeyPoint, imageOutput2, image2KeyPoint, matches, image_matched);
imshow("image1", imageOutput1);
imshow("image2", imageOutput2);
imshow("image_matched", image_matched);
waitKey(0);
return 0;
}
여기에 또 다른 Opencv의 실험 방법이 있는데 상세하다. 또한 Opencv가 자체로 가지고 있는 SIFT 특징 검출 방법은 연산 속도가 비교적 느리고 CPU로 달려야 하며 전원을 켜지 않아야 한다. 외국에서 GPU로 달리는 Sift 특징 검출을 썼지만 실행되지 않았다. 여기서 SiftGPU: A GPU Implementation of Scale Invariant Feature Transform(SIFT)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.