본문 바로가기

VISION

(9)
OpenCV 함수 : Camera Calibration and 3D Reconstruction Camera Calibration and 3D Reconstruction cv2.triangulatePoints Camera Calibration and 3D Reconstruction — OpenCV 2.4.13.7 documentation Parameters: objectPoints – In the new interface it is a vector of vectors of calibration pattern points in the calibration pattern coordinate space (e.g. std::vector >). The outer vector contains as many elements as the number of the pattern views. If th docs.op..
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 를 이용하..
Assign 3 : 3D Reconstruction Sparse Reconstruction You now have all the pieces you need to generate a full 3D reconstruction. Write a test script python/test temple coords.py that does the following: import numpy as np from numpy.lib.arraysetops import in1d import helper as hlp import skimage.io as io import submission as sub import matplotlib.pyplot as plt import cv2 as cv import numpy.linalg as la import skimage.color as ..
Homography : 2D-2D 평면 변환 비전에서 가장 중요한 변환이 Homography 2D-2D 변환, 카메라 행렬 구하기 : 3D-2D 변환 스테레오 변환 행렬 E : 2D Point - 2D line 변환이다. 1. Homography 수식 유도 여기서 첫번째 Homography를 정리해보자. 먼저 이 H 변환은 2D에서의 변환이다. 즉 하나의 평면을 유지하는 가정이 중요하다. 여기서 x1과 x2가 homogenous 좌표계로 나타나 있다고 하면, X1 = [xi yi zi] - homogenous 좌표계 X1 = [xi/zi yi/zi] - inhomogenous 또는 heterogenous 좌표계 로 나타낼 수 있다. 위 그림과 같이 2D-2D 변환은 여러가지가 존재하는데 PP3 평명을 2개의 카메라로 투영(Projective)하여 ..
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개의 영상이 있어서 정의..