소개하는 선별(규모 Invariant 기능 Transform)
선별대한 스케일 고정 기능을 변환하고 처음에 제시된 2004 년에 의하여,D.Lowe,University of British Columbia. SIFT 는 이미지 스케일과 회전에 대한 불변성입니다. 이 알고리즘은 특허를 받았으므로이 알고리즘은 OpenCV 의 비 자유 모듈에 포함됩니다.
의 중요한 이점 체
- 지역:기능은 로컬,그래서 강력한을 폐색하고 혼란(사전 분할)
- 특수성:개인적인 기능과 일치할 수 있는 대형 데이터베이스의 개체
- 량:많은 기능을 생성할 수 있도 작은 물체
- 효율: 실시간에 가까운 성능
- 성:쉽게 확장할 수 있습을 다양한 기능의 유형으로 각각의 견고성을 추가
이것은 부분의 7-시리즈 검색 기능을과 일치합니다. 다른 기사를 포함
- 소개 기능의 검출과 일치하는
- 소개하는 해리스쪽 탐지기
- 소개 서핑(속 업 강력한 기능)
- 소개 빠르다(기능에서 가속하 세그먼트 테스트)
- 소개하는 간단(Binary 강력한 독립 초등학교 기능)
- 소개 ORB(향 빠르고 간단한 회전)
선별은 확실히 관련된 알고리즘이 있습니다. 주로 선별 알고리즘에 관련된 네 단계가 있습니다. 우리는 그것들을 하나씩 보게 될 것입니다.
- 스케일-공간 피크 선택: 기능을 찾기위한 잠재적 인 위치.
- 키포인트 현지화:기능 키포인트를 정확하게 찾습니다.
- 오리엔테이션 할당:키포인트에 오리엔테이션을 할당합니다.
- 키포인트 설명자:키포인트를 고차원 벡터로 기술한다.
- 키포인트 매칭
스케일의 공간 피크 선택
실체를 의미에서 특정 규모입니다. 테이블 위에 설탕 큐브가 완벽하게 보일 수도 있습니다. 그러나 은하수 전체를 보면 단순히 존재하지 않습니다. 물체의이 다중 스케일 특성은 본질적으로 매우 일반적입니다. 그리고 스케일 공간은 디지털 이미지에이 개념을 복제하려고 시도합니다.
규모 공간의 이미지는 기능이 L(x,y,σ) 에서 생성되는 회선의 가우스 커널(번짐)다른 규모에서 입력된 이미지입니다. 스케일-공간은 옥타브로 구분되며 옥타브와 스케일의 수는 원본 이미지의 크기에 따라 다릅니다. 그래서 우리는 원본 이미지의 몇 옥타브를 생성합니다. 각 옥타브의 이미지 크기는 이전 옥타브의 절반입니다.
흐리게
옥타브 내에서 가우시안 블러 연산자를 사용하여 이미지가 점진적으로 흐려집니다. 수학적으로,”블러 링”은 가우스 연산자와 이미지의 컨볼 루션이라고합니다. 가우시안 블러에는 각 픽셀에 적용되는 특정 표현식 또는”연산자”가 있습니다. 어떤 결과가 흐린 이미지입니다.
G Gaussian Blur 운전자 및 나은 이미지입니다. X,y 는 위치 좌표이고 σ 는”스케일”매개 변수입니다. 흐림의 양으로 생각하십시오. 값이 클수록 흐림이 커집니다.
개(차이의 가우스 커널)
이제 우리가 사용하는 사람들이 흐리게 이미지를 생성하는 또 다른 이미지의 설정,차이의 Gaussians(DoG). 이 개 이미지는 이미지에서 흥미로운 키포인트를 찾는 데 좋습니다. 의 차이를 가우스로 얻어지는 차이의 가우스의 흐림도 이미지와 두 개의 서로 다른 σ,그것은 σ 및 kσ. 이 프로세스는 가우시안 피라미드에서 이미지의 다른 옥타브에 대해 수행됩니다. 그것은 표현에서 아래 이미지:
을 찾는 키포인트
지금까지, 우리가 생성되는 규모 공간을 사용한 규모의 공간의 차이를 계산하 Gaussians. 그런 다음 스케일 불변 인 가우스 근사의 라플라시안을 계산하는 데 사용됩니다.
하나의 픽셀에서 이미지와 비교 8 이웃뿐만 아니라 9 픽셀에서 다음 규모 9 픽셀에서 이전 것입니다. 이 방법으로 총 26 개의 수표가 만들어집니다. 로컬 극단이라면 잠재적 인 키포인트입니다. 그것은 기본적으로 키포인트가 그 규모에서 가장 잘 표현된다는 것을 의미합니다.
키포인트 로컬라이제이션
이전 단계에서 생성된 키포인트는 많은 키포인트를 생성합니다. 그들 중 일부는 가장자리를 따라 누워 있거나 충분한 대비가 없습니다. 두 경우 모두 기능만큼 유용하지 않습니다. 그래서 우리는 그들을 제거합니다. 이 접근법은 에지 피쳐를 제거하기 위해 해리스 코너 검출기에 사용 된 것과 유사합니다. 낮은 대비 기능의 경우 강도를 확인하기 만하면됩니다.
들이 사용 테일러 시리즈에 확장 규모의 공간을 보다 정확한 결과를 얻기 위해 위의 극값의 경우 강도에서 이 extrema 보 임계값(0.03 에 따라 종이),그것은 거부했다. 개는 가장자리에 대해 더 높은 반응을 보이므로 가장자리도 제거해야합니다. 그들은 2×2 헤센 행렬(H)을 사용하여 주 곡률을 계산했습니다.
방향을 지정
이제 우리는 합법적인 키포인트. 그들은 안정적인 것으로 테스트되었습니다. 우리는 이미 키포인트가 감지 된 스케일을 알고 있습니다(흐린 이미지의 스케일과 동일합니다). 그래서 우리는 규모의 불변성을 가지고 있습니다. 다음 것은 회전 불변성을 만들기 위해 각 키포인트에 방향을 할당하는 것입니다.
지역은 주위에 키포인트 위치에 따라 규모 그리고 그 크기와 방향은 계산에는 지역입니다. 360 도를 덮는 36 개의 빈이있는 방향 히스토그램이 생성됩니다. 말하자 그라데이션 방향에서 특정 시점(에서”오리엔테이션 컬렉션 지역”)에 18.759 도,그것으로 이동합니다 10-19 도 bin. 그리고 빈에 추가되는”양”은 그 시점에서 그라디언트의 크기에 비례합니다. 키포인트 주변의 모든 픽셀에 대해이 작업을 수행하면 히스토그램은 어느 시점에서 피크를 갖습니다.
에서 가장 높은 피크 히스토그램은 취하고 모든 최상 80% 그것은 또한 것으로 간주됩을 계산하는 방향입니다. 위치와 규모가 동일하지만 방향이 다른 키포인트를 만듭니다. 그것은 일치의 안정성에 기여합니다.
키포인트 설명자
이 시점에서 각 키포인트에는 위치,눈금,방향이 있습니다. 다음은 계산하는 설명자에 대한 지역 이미지 영역에 대해 각 키포인트는 매우 독특한 및 고정이 가능한 변화의 변화 등의 관점과 조명이 있습니다.이렇게하려면 키포인트 주위에 16×16 창이 나타납니다. 4×4 크기의 16 개의 하위 블록으로 나뉩니다.
For each sub-block, 8 bin orientation histogram is created.
So 4 X 4 descriptors over 16 X 16 sample array were used in practice. 4 X 4 X 8 directions give 128 bin values. It is represented as a feature vector to form keypoint descriptor. 이 기능 벡터는 몇 가지 합병증을 소개합니다. 우리는 지문을 마무리하기 전에 그들을 제거해야합니다.
- 회전 의존성 특징 벡터는 그라디언트 방향을 사용합니다. 분명히 이미지를 회전하면 모든 것이 바뀝니다. 모든 그라디언트 방향도 변경됩니다. 회전 독립성을 달성하기 위해 키포인트의 회전은 각 방향에서 뺍니다. 따라서 각 그라디언트 방향은 키포인트의 방향에 상대적입니다.
- 조명 의존성 우리가 큰 숫자를 임계 값 경우,우리는 조명 독립성을 달성 할 수 있습니다. 따라서 0.2 보다 큰 숫자(128 개 중)는 0.2 로 변경됩니다. 이 결과적인 특징 벡터는 다시 정규화됩니다. 그리고 지금 당신은 조명 독립적 인 기능 벡터를 가지고!
키포인트 매칭
두 이미지 사이의 키포인트는 가장 가까운 이웃을 식별하여 일치한다. 그러나 어떤 경우에는 두 번째로 가까운 경기가 첫 번째 경기와 매우 가까울 수 있습니다. 소음이나 다른 이유로 인해 발생할 수 있습니다. 이 경우 가장 가까운 거리와 두 번째 가장 가까운 거리의 비율이 취해집니다. 0.8 보다 크면 거부됩니다. 종이에 따라 5%의 올바른 일치 만 버리는 동안 거짓 일치의 약 90%를 제거합니다.
구현
OpenCV(3.4)를 사용하여 sift 를 구현할 수있었습니다. 여기에 어떻게 그것을 했:
Github 에 대한 링크를 코드:https://github.com/deepanshut041/feature-detection/tree/master/sift