💡 Corner를 왜 찾을까?
Triangulation
→ 2차원 정보를 3차원으로 복워하기 위해서이다. 다른 각도에서 보아도 같은 점인지 알기 위해서.
한 이미지의 어느 부분이 다른 이미지의 어느 부분과 대응하는지 확인하는 문제를 말한다.
✅ 전제조건
✅ What we gonna do
✅ 2 Methods Approach
Correlation-based algorithms
→ Dense : 모든 픽셀 값을 조사해서 일치여부 판단
→ reconstruction 할 때
Feature-based algorithms
→ Sparse : feature만 비교해서 일치여부 판단
→ robustness
✔ Similarity Measure
왼쪽 사진의 핑크 박스 부분이 오른쪽 초록색 박스들 중 무엇이 더 똑같을까? 어떻게 판단할 수 있을까?
✔ Appearance similarity function
함수를 만들어 화면을 슬라이딩하면서 같은 것을 찾는다.
가장 유명한 방법으로는 SSD와 Cross-Correlation 이 있다.
로봇이 사진 속 중앙의 돌맹이를 집기위해서 왼쪽 사진에서의 patch와 동일한 점을 오른쪽에서 찾고자 한다.
✅ Cross-Correlation
을 사용하면 Similarity Measure이기 때문에 유사하면 높은 값이 나온다.
그런데 이상한 곳에서 높은 일치율이 나오는 것을 볼 수 있다.
이는 허공의 밝기가 땅보다 2v로 높아 cross-correlation을 구했을때 더 높은 값이 나온 것이였다. 왼쪽 사진처럼 kernel 값이 2배이면 결과도 더 큰 값이 나오세게 된다.
이를 해결하기 위해 zero-mean template(평균을 빼주자)를 사용하여 패치의 어두운 부분과 어두운 부분이 만나면 correlation score가 크도록 만들어 문제를 해결했다.
템플릿 매칭을 할 영역의 평균값들을 그 영역을 구성하는 각 픽셀에게서 빼준 것이다. 그렇게 만들어진 이미지 영역과 템플릿을 컨볼루션해서 결과 값을 구한다.
하지만 여전히 원하는 값을 얻지는 못했다.
+) 약간 수정이 가능하다. 예를 들면 아래 사진에서 흰색 부분이 global maxima이고 초록색 부분이 local maxima이다. 하지만 우리가 구하고자 하는 것은 초록색이다.(아마도..) 그래서 초록색 부분이 더 큰 값을 갖는 흰색(가짜인..) 부분을 이기도록 physical constraint를 추가해준다. 예를 들어 아래 사진처럼 초록선상에 있는 maxima를 찾는 방법이 있다. (?)
matching
위에서 말한 것처럼 constraint를 추가하는 방법도 있지만 성격이 급해서 다른 방법을 쓰기로 했다.
우리는 앞서 설명한 작업들을 할 때, 같은 이미지를 다른 위치, 시간에서 찍어도 이미지에서 오로지 밝기만 변화한다는 믿음 아래 작업을 진행한다. 색상은 변하지 않는다고 가정하는 것이다.
그렇다면 정말 Color 성분에는 변화가 없을까? 사실은 그렇지 않다. 우리가 사용하는 light source 가 white일 때는 변화지 않을 수 있어도 red light를 켜면 Chrominance 가 변한다. 만약 이런 상황이 된다면 shape를 가지고 판단할 수 있을 것이다.
밝기 정보가 다른 두 image에서 correspondence point를 찾기 위해서는 intensity normalization(평균을 뺀 뒤, 표준편차로 나눔)을 한다.
외부 상황에 의해 나타난 것들을 죽이기 위해 Normalize하는 과정을 거친다.