Computer Vision/3D Reconstruction (5) 썸네일형 리스트형 (5) Source Code (4) 3D Reconstruction pixel의 위치와 disparty를 알면 3차원 정보를 알 수 있다. 3차원 정보가 K(Camera intrinsic parameter)를 통해 나왔기 때문에 K의 inverse를 구하면 3차원 정보가 나오게 되는 것이다. K(Camera intrinsic parameter)의 inverse matrix를 구한 후 cv2.reprojectImage3D() 함수와 K의 inverse, disparity를 이용해 3차원 좌표값을 구했다. cv2.cvtColor() 함수를 이용해 그 pixel의 RGB 값을 구하고 범위를 0~1로 해주기 위해 255로 나눴다. 마지막으로 신뢰할 수 없는 부분은 3D reconstruction 할 때 필요 없기 때문에 값을 0으로 해주었다. (3) Stereo matching Disparity는 stereo 정합을 위한 left image, right image에서의 객체의 위치상의 다른 차이를 말한다. 이 차이를 parallax 하게 만드는 것을 disparity map이라고 한다. StereoBM_create()함수를 이용해 numDisparities와 blockSize를 정해주고(blockSize가 클 경우 smooth해지고 blockSize가 작을 경우 noise가 많이 생기지만 detail이 좋아지는 특성이 있다.) left image와 right image의 dispartiy map을 구해준다. StereoBM은 16bit integer type이기 때문에 .astype(‘unit8’)을 사용해 8bit unsigned integer type으로 바꿔주었다. 구한 .. (2) Undistortion of stereo images stereo left image, steroe right image를 undistorted image로 만들기 위해 cv2.undistort() 함수를 이용했다. 이 함수는 stereo image를 K, dist, K_undist를 이용해 undistorted steroe image로 바꿔준다. Camera calibration을 통해 K, dist, K_undist 값을 구했고 이를 이용해 undistorted stereo image와 undistorted stereo gray image를 얻을 수 있었다. stereo left image, stereo right image (1) Camera calibration 우리가 보고 있는 세상은 3차원이지만 카메라로 이것을 찍으면 2차원의 이미지로 변하게 된다. 이 이미지는 사용된 렌즈, 렌즈와 이미지 센서와의 거리, 렌즈와 이미지 센서가 이루는 각도 등의 요인에 의해 크게 영향을 받아 왜곡이 생기게 된다. 따라서 2차원의 이미지로부터 3차원 공간 좌표를 복원할 때에는 이러한 왜곡을 제거해야 제대로 된 계산이 가능해지고 이러한 내부 요인의 파라미터 값을 구하는 과정을 Camera calibration이라고 한다. 왜곡을 보정하기 위해서는 dist(distortion coefficient), K(Camera intrinsic parameter)를 찾아야 하고 이러한 파라미터들을 찾기 위해선 체스판(잘 정의된 패턴)이 이용된다. 이미지에서 특정한 점들 즉, 체스판의 사각형 .. 이전 1 다음