이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다.
도 2는 본 발명에 의하여 영상기반 렌더링을 수행하는 과정을 개략적으로 나타내는 흐름도이다.
상기 첨부도면 도 2를 참조하면, 직각 교차 실린더(ORTHOGONAL CROSS CYLINDER, 이하 OCC라 한다.) 매핑을 이용하여 전체 주변환경을 표현하기 위해서는 XZ & XY 실린더 맵 생성, 중복 제거에 의한 OCC 맵 생성, OCC 맵 샘플링에 의한 렌더링 등의 과정을 순차적으로 수행하게 된다.
상기 OCC 맵은 도 3에 도시된 바와 같이 XZ 실린더 맵 및 XY 실린더 맵을 각각 생성하고, 혼합하여 서로 중복되는 샘플들을 제거함으로써 생성하게 된다.
본 발명에서 환경 맵은 컴퓨터 영상들로부터 생성할 때에는 3차원으로 구성된 환경 내에 가상 라인 카메라를 이용하여 생성하며, 실세계 영상을 이용하여 생성할 때에는 스티칭 알고리즘을 사용하여 생성한다. 도 3에 도시된 바와 같이 생성된 XZ & XY 실린더 맵은 서로 중복된 샘플을 저장하고 있어 비효율적이므로 중복된 샘플들의 제거를 통한 효율적인 OCC 맵의 구성 단계가 필요하다. 중복된 샘플들의 제거를 통해 구성된 OCC 맵은 실린더, 구 또는 큐브 등과 같은 다른 일반적인 맵들과 호환 할 수 있도록 구성된다. 이렇게 구성된 OCC 맵은 텍스춰 매핑방법과 레이 케스팅 방법을 이용한 렌더링 단계를 거쳐 임의의 방향의 영상을 자유롭게 생성 할 수 있다.
도 4에는 가상 카메라를 설정하는 동작과 그에 의해 생성된 실린더 맵의 예가 도시되어 있다.
상기 첨부도면 도 4를 참조하여 OCC 맵의 생성과정을 좀 더 상세히 설명하면, 가상 공간으로부터 OCC 맵을 생성하기 위해서는 주변환경에 대한 3차원 기하모델, 렌더링 시스템, 가상 라인 카메라가 필요하게 된다. OCC 맵은 XZ 실린더 맵과 XY 실린더 맵으로 구성되는데, XZ 실린더 맵은 하나의 시점으로부터 가상 카메라의 방향을 Y축으로 360도를 회전하며, XY 실린더 맵은 같은 시점에서 Z축으로 360도 회전하여 얻을 수 있다. 각 축을 기준으로 가상 카메라를 회전할 때 일정한 각도와 속도를 유지하여 영상을 생성하며 생성된 영상버퍼로부터 하나의 중앙 수직 라인(center-strip)을 뽑아낸다. 획득된 수직라인을 차곡차곡 정렬하여 붙여나가면 각 실린더 맵을 생성할 수 있다. 이때, 가상 카메라의 수평, 수직 시역은 90도를 유지해야 한다. 왜냐하면, 카메라의 시역에 따라 생성된 영상내의 물체 크기와 범위가 달라지며 큐브 맵을 생성할 때와 마찬가지로 각 실린더 맵의 시역이 90도 보다 클 때 전체 주변 환경을 얻을 수 있기 때문이다.
상기의 과정에 의해 생성된 XZ 실린더 맵과 XY 실린더 맵을 저장할 때, 시역(FOV)과 실린더의 반지름(r)에 따른 실린더의 높이(h)는 다음의 수학식 1과 같다.
상기 수학식 1에 의해 시역(FOV)이 90도 일 때 실린더 맵의 너비(w), 높이(h)와 실린더의 반지름(r)의 관계는 다음의 수학식 2와 같게 된다.
그러므로, XZ실린더 맵과 XY 실린더 맵의 너비와 높이와의 관계가 항상 ω=πr 이 되도록 실린더 맵을 저장해야 한다.
한편, 도 5는 본 발명에 의하여 실사영상으로부터 OCC 맵을 생성하는 과정을 설명하기 위한 도면이다.
상기 첨부도면 도 5를 참조하여 OCC 맵을 생성하는 과정을 설명하면, 본 발명의 실시예에서는 실사영상으로부터 전체 주변환경의 영상을 얻기 위해 Sony DCR-TRV20 디지털 캠코더, 삼각대와 세미 어안렌즈를 사용하였다. OCC를 생성하는 과정은 주변 영상의 획득, 획득된 영상의 조합, XZ & XY 실린더 맵 변환과 변환된 실린더 맵에서의 홀 제거로 이루어진다.
도 5에서와 같이 실사영상으로부터 OCC를 생성하기 위하여 먼저, 삼각대를 이용하여 세미 어안렌즈를 장착한 카메라를 수평면에서 수직으로 +30도 기울여 Y축으로 반시계 방향으로 30도씩 회전하여 6개의 영상들을 획득하고, 다시 카메라를 수평면에서 -30도 기울여 Y축으로 30도씩 회전하여 주변환경 6개의 영상들을 획득한다. 마지막으로 삼각대를 치운 후 카메라가 있던 위치에서 윗 영상과 아랫 영상 즉, 2개의 영상을 획득한다.
그후, 상기 1번째 회전에서 얻어진 영상들을 파노라마 툴을 이용하여 실린더 영상으로 스티칭 하고, 다음 회전에서 얻어진 영상들을 조합하여 두 번째 실린더 영상을 생성한다. 이렇게 생성된 두 개의 실린더 맵을 같은 방법으로 스티칭하면 광각을 갖는 파노라믹 영상을 얻을 수 있다. 그러나, 이 파노라믹 영상은 각 극점에서의 주변 환경에 대한 정보가 없어 여전히 전체 주변환경을 모두 포함하지 못하기 때문에 이러한 점을 보안하기 위해 파노라믹 영상을 XZ & XY 실린더 맵으로 변환한다.
상기 변환된 XZ 실린더 맵은 파노라믹 영상으로부터 주변환경에 대한 정보를 모두 얻어올 수 있어 완전하나, 변환된 XY 실린더 맵은 위와 아래의 영상에 대한 정보가 없어 홀을 가지게 된다. 이러한 홀은 처음에 얻은 윗 영상, 아랫 영상과 영상 편집 프로그램을 사용하여 채울 수 있다. 본 발명에서는 레이어 기반을 갖는 포토??을 이용하여 환경 맵을 편집하였다. 이렇게 생성된 XZ & XY 실린더 맵를 이용하여 OCC를 생성할 수 있다.
상기와 같이 OCC를 구성하기 위한 XZ 실린더 맵과 XY 실린더 맵에는 주변 환경이 중복으로 샘플링되어 저장되어 있는 문제점이 있다. 이러한 중복(Redundancy)을 제거하기 위해서는 XZ 실린더와 XY 실린더가 교차된 영역을 구하고 실제 OCC 매핑에 사용되는 부분만을 저장하는 것이 필요하다. 이를 위해 먼저 XZ 실린더와 XY 실린더의 교차 영역에 대해 구하고 이를 이용한 효과적인 OCC 맵을 구성하기 위해 생성한 다양한 맵에 대해 설명하고자 한다.
먼저, XZ 실린더와 XY 실린더의 교차 영역을 구하기 위해서는 각 실린더에 대한 함수식이 필요하다. 각 실린더의 함수식은 다음의 수학식 3과 같이 표현될 수 있다.
이때, 두 함수의 교차점을 (a,b,c)라 하여 수학식 3을 연립하여 연산하면 다음의 수학식 4와 같은 관계가 유도된다.
임의의 실세계 좌표점 P(X,Y,Z)는 실린더 스크린 좌표점 (θ,υ)로 다음의 수학식 5와 같은 관계에 의해 매핑된다.
상기 수학식 4에 b,c를 ζ라고 하면 교차점은 로 나타낼 수 있게 된다. 상기 수학식 5에 이 교차점을 대입하여 교차영역을 구하면 다음의 수학식 6과 같이 표현된다.
상기 수학식 6에 의해 υ를 θ에 의해 정리하면 XZ 실린더와 XY 실린더의 교차되는 영역을 나타내는 함수는 다음의 수학식 7과 같이 표현된다.
상기 수학식 7을 임의의 실린더의 반지름(r)을 고려하고 실린더 스크린 좌표계(θ,υ)로 일반화하면 다음과 같은 수학식 8의 관계를 유도 할 수 있다.
본 발명에서 이중 교차 실린더를 2차원 화면 좌표계로 매핑하기 위하여 XZ & XY 실린더 맵을 사용하게 된다. 그러나 두 실린더 맵은 도 6a에 도시된 바와 같이 주변환경을 중복으로 저장하고 있어 제거할 필요가 있다. 상기에서 설명한 실린더 교차 영역 함수를 통해 도 6b에 도시된 바와 같이 각 실린더 맵에서의 중복을 제거할 수 있다.
그런데, 상기 첨부도면 도 6b에 도시된 바와 같은 실린더 맵은 약 35%정도의 빈 공간이 생겨 저장공간의 효율이 떨어지는 문제점을 가지고 있다. XZ & XY 실린더 맵을 이중교차 실린더의 개념으로 보면 도 6c에 도시된 바와 같이 4개의 잎을 가진 클로바 형태와 유사하다. 각 클로버 잎의 끝 부분은 하나의 점에서 만나게 된다. 이러한 성질을 이용하여 도 6d와 같은 OCC의 오른쪽면과 왼쪽면을 매핑한 맵과, 도 6e와 같은 OCC의 앞과 뒷면을 매핑한 맵을 구성할 수 있다. 이렇게 구성함으로써 XZ & XY 실린더 맵에서의 OCC를 만드는데 필요한 샘플을 저장하는데 드는 저장공간을 25% 줄이고 공간 낭비를 19%로 줄일 수 있다.
한편, 보다 효과적인 공간 사용을 위해 도 7에 도시된 바와 같이 앞뒷면 맵을 와핑하여 팔면 맵으로 구성할 수 있으며, 도 8a에 도시된 위도 맵을 와핑하여 도 8b에 도시된 바와 같이 팔면 맵으로 구성할 수 있다. 상기 도 7에서 팔면 맵은 앞면 및 뒷면 영상 맵의 비어있는 공간을 채우도록 해당 직선으로 픽셀들을 와핑시켜 구성한다.
상기 팔면 맵은 OCC 맵을 저장하는 한 형태로 도 9에서 볼 수 있듯이 구면 매핑에서 나타나는 극점에서의 왜곡현상을 제거할 수 있게 된다. 이러한 극점에서의 왜곡 현상의 제거를 통해 θ와 ψ의 구간을 서로 변환할 수 있게 한다. 즉, 도 9에 도시된 바와 같이 팔면 맵의 반쪽면을 140도 회전하여 각 극점에 연결하면 θ를 -90도부터 90으로, ψ를 0부터 360도의 구간으로 손쉽게 변환할 수 있다. 또한, 이 팔면 맵은 주변환경을 팔면체(Octahedron)로 구성했을 때 각 삼각면의 텍스춰 맵으로써 사용되어 될 수 있다.
한편, 본 발명에서는 OCC 맵을 이용하여 원하는 영상을 렌더링하기 위해 실제 구성한 3차원 모델에 텍스춰를 매핑하는 방법과, OCC 맵에서 스크린 픽셀에 해당하는 텍셀을 샘플링하는 레이 케스팅 방법을 사용할 수 있다.
상기 텍스춰 매핑 방법은 도 10에 도시된 바와 같이 XZ 실린더와 XY 실린더를 이용하여 OCC를 3차원 모델링하여 OCC 맵에서부터 필요한 텍스춰를 매핑하게 된다. 알고리즘의 구현을 위해 OpenGL을 사용하여 3차원 모델링과 텍스춰 매핑를 하는데, 이 방법에서는 원하는 시선의 영상을 얻기 위해 실제 모델을 회전하는 모델 변환 방법을 사용하게 된다. 모델 변환은 Up 벡터에 제한없이 물체를 자유롭게 관찰할 수 있다는 장점이 있다.
또한, 상기 레이 케스팅 방법은 OCC와 광선의 교차를 이용하여 화면 좌표에 해당하는 텍셀을 샘플링하는 방법이다. 이 방법은 광선 생성, 광선과 물체의 교차판별, 교차점에 해당하는 텍셀 샘플링의 단계를 거친다. 광선은 시각 좌표계와 시각 평면에 의해 생성된다. 광선과 OCC의 교차 판별은 광선과 XZ 실린더, 광선과 XY 실린더의 교차 판별로 구성할 수 있다. XZ 실린더와 광선의 교차점 테스트를 보면 도 11에 도시된 바와 같다.
상기와 같은 교차점 테스트에 의해 레이와 교차한 XZ 실린더 맵에서 텍셀 (u,υ)는 다음과 수학식 9와 같이 표현될 수 있다.
XY 실린더에도 상기와 같은 함수 관계에 의해 교차점을 구할 수 있는데, 두개의 교차점 중 광선을 구성하는 s값이 적은 값을 실제 화면 좌표의 텍셀로 샘플링한다. 레이 케스팅의 단계 중에서 텍셀을 어떻게 샘플링하느냐가 중요하게 되는데, 본 발명에서는 텍셀을 샘플링하기 위해 포인트 샘플링, U 보간, V 보간, UV 보간 방법을 사용하였다. 첨부도면 도 12는 각 방법으로 텍셀을 샘플링 했을때의 결과를 나타낸 영상이다. 결과 영상에서 알 수 있듯이 UV 보간법에 의해 원래 영상에서의 계단현상이 제거되었음을 알 수 있다.
상기 레이 케스팅 방법에서는 주변환경을 회전하고 확대하기 위해 물체 변환이 아닌 시각 변환을 사용하여 렌더링하였다. 시각 변환의 경우 극점에서 Up 벡터를 표현하지 못해 영상이 갑자기 변하는 현상이 발생한다. 이러한 현상을 막기 위해 실제 사람이 환경을 볼 때 완전한 피치(pitch)를 하지 못한다는 사실을 고려하여 극점에서 피치의 범위를 제한하였다.
본 발명에서는 일정한 솔리드 앵글에 해당하는 텍스춰의 영역 비교, 각 텍셀에 해당하는 솔리드 앵글(Solid Angle) 비교를 하여 각 맵에 대한 정확성을 검토하였다. 각 환경 맵에서 화면 픽셀(일정한 솔리드 영역)이 차지하는 텍스춰 영역을 비교하여 보면 도 13에 도시된 바와 같이 OCC 맵이나 팔면 맵이 구면 맵과 달리 화면 픽셀이 차지하는 영역이 수평 부근이나 극점에서도 일정하게 나타나는 것을 알 수 있다.
또한, 각 맵에 대한 샘플링의 효율을 측정하기 위해 각 텍셀에 해당하는 솔리드 앵글을 측정하였다. 본 연구에서는 큐브 맵, 실린더 맵, 구면 맵, OCC 맵, 팔면 맵에 대한 각 텍셀당 솔리드 앵글을 측정하였다. 솔리드 앵글은 각 텍셀에 해당하는 광선이 구면에 투사되는 영역으로 나타내었다.
다음의 표 1은 각 맵에서의 솔리드 앵글의 최소값, 최대값, 평균, 분산을 보여준다.
평균값은 하나의 텍셀이 나타내는 솔리드 앵글(환경 영역)의 평균값을 나타낸다. 평균값이 작으면 하나의 텍셀이 나타내는 환경 영역이 작고 평균값이 크면 하나의 텍셀이 보다 많은 환경 영역을 나타낸다. 분산 값은 솔리드 앵글의 변화량을 말하다. 분산 값이 작을 수록 솔리드 앵글이 변화가 일정함을 알 수 있다. 그러므로 좋은 샘플링을 가진 맵은 평균값이 크고 분산 값이 적다는 것을 알 수 있다. 큐브 맵은 평균값이 가장 적으나 분산 값이 작아 각 텍셀의 솔리드 앵글의 변화가 적게 일어난다. 실린더 맵은 평균 값이 크고 분산 값이 작아 좋은 샘플링 패턴을 보이나 전 영역을 포함하지 못하는 문제가 있다. 구면 맵은 솔리드 앵글의 최소와 최대 값의 차이 크고 가장 큰 분산 값을 가지며 극점에서 솔리드 앵글이 심하게 작아지는 샘플링 패턴을 갖는다. OCC 맵은 가장 큰 평균값과 가장 적은 분산 값을 가지므로 가장 좋은 샘플링 패턴을 가진 맵임을 알 수 있다.
각 맵에서의 각 텍셀에 해당하는 솔리드 앵글의 시각적인 구별을 위해 도 14a와 같이 회색 음영 칼라 테이블 대신 스팩트럼 칼라 테이블을 사용하여 표시하였다. 첨부도면 도 14b 내지 도 14f와 같이 다른 맵에 비해 OCC 맵이 주변 환경을 가장 효과적으로 샘플링하는 것을 알 수 있다.
상기와 같이 구성한 OCC 맵이나 팔면 맵은 3차원 공간을 2차원 평면에 매핑한 관계식에 의해 텍셀을 빠르고 정확하게 샘플링할 수 있다.
본 발명에서는 이의 검증을 위해 다음의 표 2와 같이 구면 매핑, OCC 매핑, 팔면 매핑의 렌더링 시간을 해상도와 4가지 렌더링 방법에 따라 비교하였다.
픽셀 중복이란 속도 향상을 위해 이웃하는 픽셀들을 하나의 대표 픽셀로 대치하여 렌더링하는 방법이다. 여기에서는 4개의 픽셀을 하나 대표 픽셀의 색깔로 대치하여 렌더링하였다. 상기 표 2를 통해 알 수 있듯이 OCC 매핑과 팔면 매핑이 구면 매핑보다 적은 렌더링 시간을 갖는다는 것을 알 수 있다.
이상의 본 발명은 상기에 기술된 실시예들에 의해 한정되지 않고, 당업자들에 의해 다양한 변형 및 변경을 가져올 수 있으며, 이는 첨부된 청구항에서 정의되는 본 발명의 취지와 범위에 포함된다.