가상 3D 영상 생성 프로그램

개발한 것들 2013. 8. 1. 15:58

3차원 도형을 카메라로 봤을 때, 카메라의 위치 및 방향에 따라 어떤 영상이 얻어질지를 보여주는 프로그램입니다.


카메라의 시점에 따라서 이미지가 어떻게 바뀌는지 확인할 때 유용하게 활용될 수 있을 것이라 생각합니다. 또는 역으로 이미지로부터 카메라 시점을 알아낼 수 있는지 확인하는 용도로도 사용 가능합니다.


<실행 동영상 샘플>


기능 및 사용법


본 프로그램의 GUI(사용자 인터페이스) 및 샘플 화면은 다음과 같습니다.


<gui 화면>


<샘플 화면>



키보드의 화살표 키, Shift/Ctrl+화살표 키를 이용하여 카메라의 시점을 자유롭게 바꿀 수 있습니다. 화살표 키는 전진, 후진, 제자리 회전을 하고, shift 또는 ctrl 키를 같이 누르면 카메라 틸트(tilt) 조절, 옆으로 이동을 합니다.


카메라의 높낮이 조절은 PgUp, PgDown 키를 이용합니다.


총 4가지 종류의 도형(평행선, 사각형, 박스, 사다리)을 선택할 수 있으며 도형 꼭지점들의 3D 공간좌표 혹은 픽셀좌표를 볼 수 있습니다. 평행선의 경우에는 위 그림처럼 이미지에 투영된 두 선이 이루는 각을 부가적으로 보여줍니다.


<좌: 공간좌표를 출력한 경우, 우: 픽셀 좌표를 출력한 경우>


좌표계 설정 및 팬(pan), 틸트(tilt) 기준은 3D 좌표계 변환 방법 (예: 월드좌표계 - 카메라 좌표계) 글에서 설명한 내용과 동일합니다.


프로그램 다운로드


ImagingGeometry3D.zip (UI 부분을 제외한 소스코드 포함)



프로그램 용도


이 프로그램은 여러가지 목적을 가지고 구현한 것입니다.


한가지 목적은 최근 [컴퓨터 비전에서의 Geometry #1] 좌표계 ~ [컴퓨터 비전에서의 Geometry #7] Epipolar Geometry 시리즈 글을 올리면서 사용했던 카메라 기하 모델이 정말로 맞는지 확인할 목적이 있었는데 실제로 구현해 보니 잘 맞는 것 같습니다.


다른 목적은 카메라의 높이 및 각도에 따라서 영상이 어떤 특성을 가지고 변하는지 파악하기 위함입니다. 예를 들어, 차선인식 문제에 있어서 차선 영상만 가지고 촬영한 카메라의 위치, 높이, 팬, 틸트를 알아낼 수 있는지 여부를 확인하는 용도로도 사용할 수 있습니다.


마지막으로, 외부(extrinsic) 카메라 캘리브레이션 알고리즘 혹은 위치인식 알고리즘이 정상적으로 동작하는지 여부를 확인하는 용도로도 사용가능합니다. 프로그램에서 다양한 카메라 시점에 따라 영상좌표를 획득할 수 있기 때문에 이들 영상좌표를 입력으로 외부 캘리브레이션(extrinsic calibration) 혹은 위치인식 알고리즘을 적용하여 원래 카메라 시점이 복원되는지 확인해 볼 수 있습니다.


☞ 참고로 영상왜곡 모델도 반영은 됩니다만, 현재의 구현은 꼭지점들만 투영시킨 후 직선으로 연결하는 방식이라서 직선의 휘어짐이 표시되지는 않습니다.


by 다크 프로그래머