수정필요
지난 시간의 issue들이 있었다.
- corresponding point 찾는 것
- visual pattern이 없는 것
- 반사도가 크거나 uniform한 반사를 할 때 → 하얀 벽 같은 경우
✔ Stereo System
시점이 다른 우리는 두 개의 이미지가 있을 때 같은 부분이 어디있는지 찾고자 했다.
왼쪽 사진과 오른쪽 사진에서 이제 같은 곳이 어디인지 찾아야 한다. 노란 선을 따라 즉 같은 행을 따라 쭉 가면서 비슷한 곳을 찾게 된다.
이 때 비슷한 곳을 만나면 Match Score Value가 아래 그래프처럼 커지는 부분을 만나게 된다. 그러면 이제 이곳이 두 이미지에서 같은 부분이 된다.
그런데 우리가 이렇게 전부를 full search를 하면 cost가 너무 크다. 그래서 constraint를 걸어서 동작했었다. 여기까지 이전 수업의 내용이었다.
각 픽셀(?)의 동일한 부분을 찾을 때 전부 independent한 task를 해야할까?
각각 결정
→ 모든 픽셀(?) 에 대해 수행해야 함으로 너무 cost가 크다
상호관계
→ 예를 들어 L(7, 10)이랑 R(9, 10)이 같다는 것을 찾았으면 이후에는 L(9, 10)을 별도의 계산 없이 R(11, 10) 과 같다고 판단하는 것이다.
→ 문제는 바운더리와 같은 특정 부분에서는 이게 적용이 안 될 수도 있다.
⇒ 따라서 global optimal한 무언가를 찾아서 이 task를 수행하게 된다. 그때 사용하는 방법은 2에 해당하는 같이 결정하는 방식이다.
DSI 크기 : 100x100
그런 DSI가 100장 있는 것이다. 아래 사진에 해당하는 line 하나 당 한개씩 있는 것이다.
Disparity
: Stereo 정합을 위한 두 이미지(left image, right image, 또는 왼쪽에서 보는 시야와 오른쪽에서 보는 시야를 말함)에서의 객체의 위치 상의 다른 차이.
첨부된 사진을 보면 Left와 Right가 뒤바뀐 것을 볼 수 있다.
✔ DSI는 Dissimilarity
이다.
→ 낮을 수록, 어두울 수록 좋은 값이다.
if) 7-9 matching이 되었다면 ⇒ 0값을 갖는다.
→ 대각선 방향으로 0이 나와야 한다.
✔ DSI 를 보고 **Base Line**
을 추정할 수 있을까?
→ 픽셀과 픽셀 사이의 물리적인 거리 size를 알면 추론이 가능하다.
💡 Base Line
스테레오 비전 시스템에서 두 개의 카메라 렌즈(또는 눈) 사이의 수평적인 거리
✔ DSI에서 대각선
두 카메라 사이의 거리가 멀수록 선이 올라간다.
선이 왜 끊길까?
두 카메라 중 한 쪽에서는 안 보이는 상황(occlusion)에서 아래와 같은 jump가 발생한다.
camera로부터 거리가 다 달라 disparity가 다르다. 이게 마치 base line을 다르게 한 것과 같은 효과를 준다.
base line이 조금 움직이면 disparity가 크다. 따라서 가장 가까이 있는 object는 123번 중에 1번이다.
검정으로 뭉쳐 있는 부분은 왜 생길까?
이 근처가 되게 비슷한 것이다. flat한 물체라고도 말할 수 있다.
✔ DSI를 통해 알 수 있는 것
- base line
- 물체 모양
optimal한 line을 찾고 싶다
→ DSI가 Dissimilarity라고 했으니 대각선을 다 이어서 값을 더했을 때 최소가 되는 것이 optimal line이라고 추정할 수 있다.
하지만 DSI를 전부 보는 것은 낭비이다.
그러면 아래 그림과 같은 구간에서 찾게 된다.
✔ Lowest Cost Path
best path를 lowest cost로 찾고 싶다.
back방향으로는 갈 수 없음에 유의하자.
✔ Ordering Constraint
순서가바뀌네? 오른쪽처럼 D
가 너무 가까이 있으면 양쪽 카메라에서 봤을 때 순서가 다를 수도 있다. 이제 우리는 이런것을 다 고려하기 힘드니까 가까이 있는 것을 그냥 Noise로 처리하고 일단 뺀다.
✔ Dealing with Occlusions
몽미 잘 못들음
occlusion이 일어난 것은 빼고 matching 한다.
occlusion에서 발생하는 겂을 다 더해주지 않는다.
→ 대신 특정 값(score)를 더해준다.
→ 이때 score를 낮게 더해주면 ..?
Start를 보면 맨 왼쪽 모서리에서 시작한다. 그러나 실제론 그렇지 않느다. 조금 더 쉽게 하기 위해서 그렇게 보여주는 그림이다.
이때 대각선이 아니라 직선으로 표현된 부분들이 모두 occlusion된 부분이다.
모든 방향은 dissimilarity에 의해 아래 세가지 중 하나로 결정된다.
occluded from left
: left img에서 보이고 right img에서 안 보이는 것occluded from right
: right img에서 보이고 left img에서 안 보이는 것match
: 두img에서 모두 보인다.optimal path를 찾기 위해 각 DSI값을 모두 더한다고 했다. 이 때 어떤 알고리즘을 사용할 수 있을까?
Full Search
성능이 좋지만 계산량이 너무 많다.
Greedy Search
계산량이 full search에 비해 작다. 그러나 운이 나쁘면 고기만 10번 먹을 수도 있다. 즉, global optimal path만을 찾다가 back(뒤돌아 갈 수) 없어서 엄청나게 큰 Big Jump를 해야 할 수 도 있다.
Dynamic Programming
모든 pixel의 가능성을 살핌.