<Camera model>
1. 카메라 모델이란?
3차원 좌표계의 한 점과 2차원인 이미지 평면(image plane)에 투영(projection)된 점 사이의 수학적 관계식
카메라 모델을 사용하여 → 이미지 평면에서의 좌표(x,y)를 가지고 world coordinate(월드 좌표계)의 좌표(x,y,z)를 알 수 있음
• Coordinate Transformation: 월드 좌표계 좌표(X,Y,Z)와 카메라 좌표계 좌표(Xc,Yc,Zc)의 관계식 → Extrinsic Matrix
• Projection Transformation: 카메라 좌표계 좌표(Xc,Yc,Zc)를 2차원 영상 평면(u,v)에 투영하는 변환식 → Intrinsic Matrix
① Extrinsic(외부): 카메라와 대상과의 관계 (카메라가 대상을 촬영했을 당시의 위치와 자세에 관한 특성)
- R : rotation parameter (회전)
word coordinate system에서 camera coordinate system으로의 방향 정렬
(word와 camera 축 방향 자체가 다르기 때문)
- T : translation parameter (평행이동)
word coordinate system의 원점에서 카메라 중심까지의 위치
camera 좌표계에서 world의 기준점 위치. (word에서 camera translation(C) = -R^-1*T)
② Intrinsic(내부): 카메라 자체의 특성 (렌즈와 이미지 센서와의 관계로부터 파생되는 초점거리 등)
- Focal Length (fx,fy): 렌즈의 중심과 이미지 센서 사이의 거리 (단위: pixel)
- Principal Point (cx, cy): 렌즈의 중심에서 이미지 센서에 내린 수선의 발의 좌표
- Skew Coefficient (γ): 이미지 센서의 축이 기울어 있는 정도 (대부분 '0')
③ (u,v): Image 좌표
④ (X,Y,Z): 3차원 좌표
2. 카메라 모델을 정의할 때 필요한 3개의 좌표계를 설명하라.
① World coordinate system
- 3차원 물체나 장면의 절대적인 위치와 방향을 나타내는 기준 좌표계 ⇒ 우수계
② Camera coordinate system
- 카메라의 정면 방향을 Z축, 카메라의 오른쪽을 X축, 카메라의 아래 방향을 Y축으로 정의 ⇒ 우수계
- 카메라를 기준으로 모든 점의 위치를 표현하고 싶을 때 사용되는 좌표계
③ Image coordinate system
- 원점이 좌측 상단에 있고 가로가 X축, 세로가 Y축(아래 방향이 +)
- 영상의 픽셀의 좌표를 표현하기 위해 사용되는 좌표계
3. 핀홀 카메라 모델의 단점을 설명하고 이를 보완하는 카메라 모델을 조사하라.
핀홀 카메라 모델은 렌즈 왜곡을 고려하지 않아 현실과 차이가 남.
이를 보완하기 위해 왜곡 보정 파라미터를 포함한 렌즈 왜곡 모델을 사용
4. 사람의 눈은 2개인데 두 눈으로 보는 영상은 1개로 느껴지는 이유를 설명하라.
사람의 두 눈으로 들어온 두 영상을 뇌를 통해 하나로 통합하여 깊이와 입체감을 가진 하나의 영상으로 인식하기 때문임
5. 카메라 1대로는 객체의 거리를 측정할 수 없는 이유를 설명하라.
카메라 1대만으로는 깊이를 판단할 수 있는 시차 정보가 없기 때문임
위 사진과 같이 3차원 공간상에서의 서로 다른 점들이 2차원 영상에서는 좌표가 같은 것을 확인할 수 있음
6. Image rectification이 필요한 이유를 설명하라.
두 대의 카메라를 통해 각각의 영상 평면의 x축이 평행하다는 조건으로 위 공식을 통해 객체와의 깊이(거리, z)를 구할 수 있지만, 실제 두 대의 카메라는 수평하게 존재하지 않기 때문에 가상의 카메라 좌표계가 필요
B: 베이스라인 / f: 초점거리 / d: 시차(좌우 영상에서 동일하게 나타나는 물체에 대한 x축 위치 차이)
7. 실제 좌우 카메라 좌표계와 image rectification 후의 좌우 카메라 좌표계의 관계를 설명하라.
실제 좌우 카메라 좌표계는 서로 약간 틀어져 있지만, image rectification 후에는 두 카메라가 평행하게 보도록 변환되어 동일한 수평 좌표(x)축을 갖음
8. Stereo vision을 통하여 객체의 거리(깊이)를 측정할 때 기준이 되는 좌표계는 무엇인가?
왼쪽 카메라의 좌표계를 사용 (Rectified camera coordinate system)
<o3d.visualization>
1. Triangle Mesh를 설명하라.
표면을 수많은 삼각형으로 분할하여 3D 객체의 형상과 구조를 표현하는 방식
2. Voxel grid를 설명하라.
3D 공간을 동일한 크기의 격자로 나눈 체적 데이터 구조로, 각 격자(voxel)는 공간 내의 점유 여부나 특성을 나타냄
3. Point cloud를 설명하라.
Point cloud는 3차원 공간상의 물체나 환경을 표현하기 위해 수많은 점들의 좌표 정보를 모은 데이터 집합
4. ply 파일 포맷을 자세히 설명하라.
- 각 점마다 RGB 컬러, 법선(normal), 투명도(alpha), 반사율 등 다양한 속성을 저장할 수 있음
- point cloud 또는 mesh 구조로 읽을 수 있고, 각각의 데이터로 저장할 수 있음 (open3d.io.<멤버함수>)
- ASCII 및 바이너리 형식을 모두 지원하지만, 일반적으로 바이너리 형태를 사용
Mesh: 메시와 점군을 저장 가능. 다양한 속성 포함 가능
Point cloud: 컬러 및 법선 정보를 저장할 수 있어 점군과 메시 저장 가능
5. pcd 파일 포맷을 자세히 설명하라.
- Point Cloud Library (PCL)에서 기본적으로 사용하는 Point cloud 데이터 포맷 (주로 LiDAR 스캔 데이터 저장 및 처리하는데 사용)
- ASCII, 바이너리, 압축 바이너리 형식을 지원
- XYZ 좌표, RGB, 법선(normal), 반사율 등의 정보를 저장할 수 있음
6. 좌표계란?
공간상의 위치를 수치로 표현하기 위한 기준 체계
7. 오른손 좌표계와 왼손 좌표계를 조사하라
왼손 좌표계: z축이 안쪽으로 향하며, 회전 방향이 각 축에 대해 시계방향임
오른손 좌표계: z축이 바깥쪽으로 향하며, 회전 방향이 각 축에 대해 반시계방향임
8. up벡터와 front벡터는 수직이어야 하는데 두 벡터가 수직임을 확인 하는 방법은?
두 벡터의 내적이 '0'이면 수직임
<open3d viewpoint에서의 축(x,y,z)>
z축: -front 방향 (카메라가 바라보는 방향)
y축: up 방향 (카메라의 위쪽 방향)
x축: right=front*up (카메라의 오른쪽 방향)
• lookat: 카메라가 바라보는 대상 위치 (월드 좌표계 기준)
• front: 카메라가 바라보는 방향 벡터
9. 아래 그림처럼 출력되도록 front, up, lookat 벡터를 설정하라