|
|
2. Camera coordinate system(카메라 좌표계)
3. Image coordinate system
3. 핀홀 카메라 모델의 단점을 설명하고 이를 보완하는 카메라 모델을 조사하라.
<단점>
1. 렌즈 왜곡 무시
- 카메라 렌즈는 광학적 특성으로 인해 왜곡을 발생시키는데 핀홀 모델은 이러한 왜곡을 고려하지 않기 때문에 정확한 이미지 좌표를 얻기 어려움
2. 조리개 크기 0 지정
- 핀홀 카메라는 이론적으로 무한히 작은 구멍을 통해 빛이 들어온다고 가정함
--> 하지만 실제 카메라는 유한한 조리개 사용해 초첨 흐림 현상이 발생함
3. 조리개/렌즈의 굴절,산란 등 무시
- 광선이 렌즈를 통과하면서 굴절, 산란, 수차 등을 겪는 현실을 고려하지 않음
--> 핀홀 카메라 모델의 단점을 보완할 수 있는 카메라 모델은 핀홀 모델에 왜곡 보정을 항을 추가한 확장모델 렌즈 왜곡 보정 모델과 투영 행렬을 통해 더 일반화된 변환을 다루며, 렌즈 왜곡뿐 아니라 스케일링, 셰어링, 중심 오프셋 등을 통합적으로 표현한 투영 카메라 모델 등이 있다.
4. 사람의 눈은 2개인데 두눈으로 보는 영상은 1개로 느껴지는 이유를 설명하라.
사람은 두눈을 사용하여 사물을 동시에 봐 서로 약간 다른 시차를 가지는 영상을 받아들이지만 사람의 뇌의 시상하부의 시각 피질에서 두영상의 차이를 처리하여 하나의 영상으로 통합한다. 또, 뇌는 양쪽 눈의 작은 차이를 이용해 거리와 입체감을 계산하여 하나의 3D 세계를 인식할 수 있다.
5. 카메라 1대로는 객체의 거리를 측정할 수 없는 이유를 설명하라.
1대의 카메라는 한 점에서 나오는 빛을 한 방향으로만 받아들인다. 예를 들어 1m 거리에 있는 사람과 10m 거리에 서있는 10배 큰 사람을 1대의 카메라는 그 방향으로부터 빛이 왔다는 사실만 알고 있기 때문에 두 사람의 모습을 이미지에서 똑같은 크기로 나온다.
수학적으로 말하면 3D의 점(X,Y,Z)는 2D 이미지의 점 (x,y)로 바뀐다. 하지만 반대로 이미지 상의 한점 (x,y)는 무수히 많은 3D 점들로부터 올 수 있다. 그래서 한 이미지 점으로부터 Z를 유일하게 정할 수 없어서 점을 선으로 못되돌려 거리를 측정할 수 없다.
6. Image rectification이 필요한 이유를 설명하라.
일방적으로 카메라들의 위치와 방향이 같지 않다. 좌우 영상 평면은 방향이 달라 객체의 깊이(거리)를 구하는 공식이 적용되지 않는다. 따라서 좌표 변환을 통하여 좌우 영상 평면이 평행하도록 정렬하는 Image rectification 과정이 필요하다.
7. 실제 좌우 카메라 좌표계와 image rectification 후의 좌우 카메라 좌표계의 관계를설명하라.
- 실제 좌우 카메라 좌표계 즉 image rectification 하기 전 좌표계는 두 카메라가 서로 평행하지 않아 3D 점 Q가 좌우 영상에서 서로 다른 y값을 가질 수 있으므로 스테레오 매칭이 복잡하고 오차 발생 가능성이 크다.
- Rectification 후의 가상 좌표계는 수학적으로 정렬된 상태로 두 카메라가 같은 방향을 바라보는 것처럼 좌표계를 정렬한다.
--> 좌우 카메라 이미지 평면이 같은 높이(y좌표)를 공유하도록 정렬되었고, 동일한 3D 점 Q는 좌우 이미지에서 같은 y좌표 줄에 나타나 스테레오 매칭이 쉬워진다.
8. Stereo vision을 통하여 객체의 거리(깊이)를 측정할 때 기준이 되는 좌표계는 무엇인가
- Stereo vision 시스템에서는 두 카메라 중 보통 왼쪽 카메라를 기준 좌표계로 설정한다.
- 왼쪽 카메라를 기준한 좌표계를 기준으로 오른쪽 카메라는 회전행렬 R과 이동벡터 T로 표현된다.
--> 오른쪽 카메라의 위치는 자측 기준 좌표계에서 (R,T)로 정의됨.
4장
1. Triangle Mesh 를 설명하라.
수많은 삼각형(triangle) 조각들이 모여 3D 물체의 표면(surface)을 구성하는 데이터 구조
2. Voxel grid를 설명하라.
3차원 공간을 작은 정육면체(큐브) 단위로 나누어 표현하는 방식
--> 3D 버전의 픽셀
3. Point cloud 를 설명하라.
3차원 공간에 존재하는 수많은 점(point)들의 집합으로, 물체의 표면이나 환경을 디지털로 표현한 3D 데이터 형태
4. ply 파일 포맷을 자세히 설명하라.
PLY(Point cloud Library File) 포맷이란?
- 3D 스캔 데이터나 모델을 저장하기 위한 파일형식
--> 정점(vertex), 면(face), 색상(color), 법선(normal) 등의 정보 저장 가능
- 주로 Point Cloud, Traingle Mesh, 3D 스캔 결과 등을 표현하는데 사용
5. pcd 파일 포맷을 자세히 설명하라.
PCD(Point Cloud Data)포맷이란?
- PCL(Point Cloud Library)에서 만든 전용 포인트 클라우드 저장 포맷
- 주로 3D 스캐너, LiDAR, RGB-D 카메라 등의 데이터를 저장하고 교환하기 위해 사용됨.
- ASCII, BINARY, BINARY_COMPRESSED 의 종류가 있음
6. 좌표계란?
공간 상의 점들의 위치를 수치적으로 표현하기 위한 기준 틀
--> 위치나 방향을 숫자로 나타낼 수 있게 해주는 수학적 도구
좌표계는 좌표계의 기준이 되는 점 원점(Origin)과 공간 상의 방향을 나타내는 선 축(Axes)과 각 축에서의 간격 또는 길이 기준인 단위(Scale)의 세 요소로 구성됨.
7. 오른손 좌표계와 왼손 좌표계를 조사하라
8. up벡터와 front벡터는 수직이어야 하는데 두 벡터가 수직임을 확인하는 방법은?
두 벡터의 내적이 0인지 확인하면 됨.
내적이 0이면 수직, 아니면 직교하지 않은 상태이며, 필요시 정규직교화로 수정가능함.
9. 아래 그림처럼 출력되도록 front, up, lookat 벡터를 설정하라.
1 2 3 4 5 6 7 | import open3d as o3d mesh_sphere = o3d.io.read_triangle_mesh("./datafile/mesh_sphere.ply") mesh_sphere.compute_vertex_normals() mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=1, origin=[0, 0, 0]) o3d.visualization.draw_geometries([mesh_sphere, mesh_frame],width=500,height=500, front= [0,-1,0 ], lookat= [0,0,0],up= [1,0,1], zoom = 1 ) | cs |
1 2 3 4 5 6 7 8 | import open3d as o3d mesh_sphere = o3d.io.read_triangle_mesh("./datafile/mesh_sphere.ply") mesh_sphere.compute_vertex_normals() mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=1, origin=[0, 0, 0]) o3d.visualization.draw_geometries([mesh_sphere, mesh_frame],width=500,height=500, front= [-1,0,-1 ], lookat= [0,0,0],up= [0,-1,0], zoom = 1 ) | cs |