본문 바로가기

VISION/Stereo Vision

(5)
Stereo Vision : Rectification 1. Rectification이란? 하나의 물체를 찍은 2영상에서 depth를 계산할 수 있을까? 계산을 위해 1) 충분한 baseline이 필요하다. 2) 2영상은 Rectified 되어야한다. Rectification 이란 2영상의 epipolar line을 수평하게 만드는 것을 말한다. 즉 위와 같은 배치를 강제로 다음과 같이 일렬로 만들어주는 것이다. 그렇다면 왜 이런 배치를 만드는 것일까? 두 영상의 관계가 다음과 같이 단순화 되기 때문이다. R=I, t=(T,0,0) 2. Stereo Rectification 을 수행하는 개념 두 카메라 center, O, O' 사이의 선에 대해 평행한 공통 plane 으로 영상을 Reproject 한다.!! 이를 위해 2개의 homographies 를 이용하..
Stereo Vision : Match Matching 기법은 기존의 hamming , sad, ssd 등이 있다. 여기서는 sad를 기준으로 설명한다. 1. Feature를 정규화한다. (hamming제외) Feature 점이 2차원일 경우, 각 열을 기준으로 norm을 계산한다. (sqrt 제곱합) 단 매우 작은 수는 0으로 치환한다. Xnorm = sqrt(sum(X.^2,1)) Xnormal = X/Xnorm
Stereo Vision : 8 Point Algorithm (Find Fundamental Mat) Fundamental Matrix를 구하는 방법 0. Point를 정규화 한다. 이미지 크기 width, and height 의 최대 크기인 M으로 데이터값을 나누어주어 scaling 하자. 이미지 크기 구하는 함수 [python] : size 이때 변환 행렬 T를 이용하자. 마지막에 F를 계산한 후에는 unscale 한다. x_norm = Tx F_unnorm = T'FT 1. 선형 시스템을 구성하자. M개의 점이 매칭되어 있을 때 에피폴라 제약에 따라 다음을 만족해야 한다. F는 3x3 행렬이므로 9개의 unknowns를 homogeneous 선형 시스템으로 풀자. F를 f1~f9 로 나타내고, 점을 homogeneous 로 표시하여 정리하면, 2-3. A에서 SVD로 X (=F)를 알아내자. [주의..
Stereo Vision : Rectification 예제 (Matlab) 출처 : Matlab example 1. Rectification 이란? 스테레오 비전에서 2개의 카메라를 이용하여 같은 높이(same raw)에서 영상을 찍을 경우 2D 문제가 1D 문제로 감소된다. (그러나 실제적으로 같은 높이가 아닐 확률이 높을 것이다.) Rectification 은 보통 dispatiry 를 계산하기 전의 전처리를 사용된다. 2개의 카메라로 동시에 찍었을 때 명백하게 방향 및 위치에 offset이 존재하는 것을 볼 수 있다. rectification 의 목표는 연관된 점(point)들이 두 영상에서 같은 열(Row)에서 위치하도록 영상을 변환(Transform) 하는 것이다. 2. 각 영상에서 관련된 특징점을 찾자. 기본적으로 2 영상에서 관련된 즉, 같은 점이라고 생각되는 점들..
Stereo Vision : Triangulation 1. Triangulation이란? 두개의 영상이 하나의 3D점을 찍어서 나온 결과라고 생각해보자. 먼저 영상 1의 한점 x가 3D점 X의 투영결과라고 보면, 카메라 행렬 P로 나타낼수 있다. 즉 x = P'X 그렇다면 X를 X= inv(P)x 로 구할수있을 것이다. 그러면, 3D 점 X 를 카메라에서 본 x과 x' 는 한점에서 만날것인가? 영상의 잡음 때문에 single solution은 불가할 것이다. 결론적으로 Triangulatio 문제는 다음으로 정의된다. 2d 점들과 카메라 행렬들을 이용, 원래 3D점을 찾는 문제. 2. 3D 계산하기 2D 점 x는 homogeneous coordinate 이다. 깊이를 모르기 때문에 정확하게 3D 점이 어디 있는지는 알수가 없다. (2개의 영상이 있어서 정의..