13

두 이미지를 비교하려면 CV_TM_CCORR_NORMED 템플릿과 일치하는 방법을 사용하고 있습니다 ...이 회전 및 크기 불변 .. 어떤 아이디어로 만들고 싶습니다? 크기 및 회전 템플릿 일치

나는 이미지와 템플릿의 푸리에 변환에 같은 방법을 사용하려고하지만 개체가 회전하거나 장면에서 크기를 조절할 때 여전히 회전 후 결과는 matchTemplate

답변

28

템플릿 매칭은 좋은 다르지 않다입니다 .

프레임 워크 Features2D에서 openCV 기능을 사용해보십시오. 예를 들어 SIFT 또는 SURF 개의 설명 자 및 FLANN 일치자를 예로들 수 있습니다. 또한 findHomography 방법이 필요합니다.

Here은 장면에서 회전 된 개체를 찾는 좋은 예입니다.

업데이트 : 짧은에서

, 알고리즘은 이것이다 : 개체 이미지 1.1의

  1. 찾기 키포인트. 키포인트에서 2.1 추출 설명

  2. 매치 설명 정규

  3. 하여 현장 이미지의 키포인트를 찾는 사람들 키포인트

  4. 에서 기술자를 추출하면 일치

있습니다 다른 클래스 분석 FeatureDetectors, DescriptorExtractors 및 DescriptorMatches에 대한 정보를 읽은 다음 해당 타사에 적합한 정보를 선택할 수 있습니다 sks.

+0

** 고맙습니다. 이미 관심사로 모서리를 찾은 서핑 대신 동격이를 사용했습니다.이 광고는 FLANN과 함께 사용할 수 있습니까? 서핑과 시프트는 오랜 시간이 걸리고 성능이 저하 될 수 있습니다 ** – Storm2012

+0

'관심 지점'은 일반적인 용어입니다. 그것들은 모서리이며 대부분 모퉁이입니다. 관심 장소를 어떻게 찾았습니까? openCV 'FeatureDetector'중 하나를 사용하거나 직접 작성할 수 있습니다. 예를 들어'FAST','STAR'가 있습니다. 그들은 간단하고 빠릅니다. 그러나 그들은 관심있는 포인트의 각도에 대한 정보를 보관하지 않습니다. 'SURF'와'SIFT'는 느리지 만 흥미 지점에 대한 정보는 더 커집니다 (각도). 'SIFT'와'SURF'는 스케일 불변의 일치를 찾을 수있게합니다. 그러나 당신은 당신의 일치자를 위해 모든 openCV 탐지기를 사용할 수 있습니다. 다른 matchers를 시도해 볼 수도 있습니다 (openCV에는 몇 가지가 있습니다) –

+0

고맙습니다. – Storm2012

6

회전

각 키 포인트 :

  1. 주요 지점 주변을 차지하십시오.
  2. 그라디언트 또는 다른 방법으로이 영역의 방위각을 계산하십시오.
  3. 이 각도의 패턴 및 요청 영역을 0으로 회전하십시오.
  4. 회전 된 영역에 대한 설명자를 계산하고 일치시킵니다.

BRISK 방법

2

쉽게 템플릿 규모와 일치의 방법으로 당신이 알고있는 경우 (기능 감지 및 호모 그래피를 통해가는 것보다 회전 불변 있습니다 참조 불변 규모는 정말에만 회전 및 스케일 , 그 밖의 모든 것은 일정하다). 실제 개체 검색의 경우 위의 제안 된 키포인트 기반 접근 방식이 더 잘 작동합니다.

만약 그것이 동일한 템플릿이고 원근법 변경이 없다는 것을 알게되면 스케일 피사체를 이미지 피라미드로 찍어 피라미드의 다른 레벨에서 템플릿을 일치시킵니다 (예 : SSD 또는 NCC). 피라미드의 더 높은 (낮은 해상도) 레벨에서 거친 일치를 찾는 것은 값 싸게 될 것입니다. 실제로는 너무 싸기 때문에 템플릿을 대략적으로 저해상도 수준으로 회전 할 수 있으며 템플릿을 고해상도 수준으로 다시 추적 할 때 더 정교한 회전 스테핑을 사용합니다. 이것은 꽤 표준적인 템플릿 매칭 기법이며 실제로 잘 작동합니다.

관련 문제