KR102179243B1 - 360도 영상 재생 방법 및 장치 - Google Patents
360도 영상 재생 방법 및 장치 Download PDFInfo
- Publication number
- KR102179243B1 KR102179243B1 KR1020190052964A KR20190052964A KR102179243B1 KR 102179243 B1 KR102179243 B1 KR 102179243B1 KR 1020190052964 A KR1020190052964 A KR 1020190052964A KR 20190052964 A KR20190052964 A KR 20190052964A KR 102179243 B1 KR102179243 B1 KR 102179243B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtual camera
- map
- degree image
- camera path
- path
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/111—Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
- H04N13/117—Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation the virtual viewpoint locations being selected by the viewers or determined by viewer tracking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/271—Image signal generators wherein the generated image signals comprise depth maps or disparity maps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/332—Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/366—Image reproducers using viewer tracking
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Studio Devices (AREA)
Abstract
본 발명은 360도 영상 재생 방법 및 장치에 관한 것이다. 본 발명의 일 실시예에 따른 360도 영상 재생 방법은 360도 영상의 일부 영역을 재생하는 방법으로서, 복수의 360도 영상 프레임 각각의 복수 픽셀에 대해, 옵티컬 플로우(optical flow)과 돌출성(saliency)을 각각 계산하는 전처리 단계; 계산된 옵티컬 플로우와 돌출성을 이용하여 각 360도 영상 프레임에서의 가상 카메라 경로를 설정하는 설정 단계; 및 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생하는 재생 단계;를 포함한다.
Description
본 발명은 360도 영상 재생 방법 및 장치에 관한 것으로서, 더욱 상세하게는 사용자가 360도 영상을 HMD(Head mounted display) 등의 전용 재생 장치 외에서도 시청 가능하도록 재생하는 방법 및 장치에 관한 것이다.
360도 영상(360 degree video)은 모든 방향에 대한 정보를 포함한 영상이다. 최근 들어, 360도 영상에 대한 관심이 높아짐에 따라, 360도 영상을 촬영하기 위한 360도 카메라, 360도 영상을 재생하기 위한 360도 영상 재생 장치 등과 같이, 360도 영상에 관련된 다양한 장치들이 개발되고 있다.
이러한 360도 영상은 모든 방향에 대한 영상 정보를 포함하고 있는 특성이 있다. 이에 따라, 사용자가 360도 영상을 시청하는데 가장 편리한 방법은 HMD(Head mounted display) 등과 같은 전용 재생 장치를 이용하는 것이다. 즉, 사용자는 전용 재생 장치를 착용한 후 머리, 몸 등을 돌려 원하는 방향을 선택함으로써 360도 영상을 자유롭게 시청할 수 있다.
하지만, 이러한 전용 재생 장치는 사용자가 별도로 구매해야 할 뿐 아니라, 휴대 또는 착용하는데 있어 불편하거나 번잡할 수 있다. 이에 따라, 360도 영상에 대한 보다 일반적인 시청 방법은 스마트폰, 컴퓨터 등의 2차원 디스플레이를 가진 전자 장치를 이용하는 것이다. 이러한 2차원 디스플레이를 이용한 360도 영상의 재생하는 방식은 크게 3가지로 나뉠 수 있다.
먼저, 제1 방식은 360도 영상 전체를 구형 파노라마로 투영하여 재생함으로써 사용자가 모든 방향을 한번에 볼 수 있게 하는 방식이다. 하지만, 이러한 제1 방식에 따라 재생되는 영상의 상단 또는 하단 등에는 왜곡된 영역을 포함할 수 밖에 없으며, 이에 따라 이를 시청하는 사용자에게 혼란을 야기할 수 있는 문제점이 있었다. 제1방식으로 재생되는 경우, 모든 방향으로 감상할 수 있지만, 2차원으로 투영하기 때문에 왜곡된 상태로 감상할 수 밖에 없는 문제점이 있다.
이러한 문제점을 개선하기 위해, 제2 방식은 360도 영상의 일부 영역만을 선택하여 이를 일반 시야각(Normal Field of View; NFOV)의 2차원 영상으로 변환하여 재생하는 방식이다. 즉, 제2 방식은 일반 카메라로 촬영한 2차원 영상을 시청하는 것과 유사한 시청 환경을 사용자에게 제공할 수 있다. 하지만, 이 경우, 사용자가 자신이 원하는 시청 방향을 매 순간 선택해야 하는 불편함이 있을 뿐 아니라, 시청 방향을 잘못 선택하면 영상 중 중요 부분을 시청할 수 없게 되는 문제점이 있었다.
이러한 문제점을 개선하기 위해, 제3 방식은 360도 영상을 분석하여 그 중 가중 중요한 부분을 통과하는 경로, 즉 가상 카메라 경로를 찾고, 이 가상 카메라 경로를 따라 NFOV의 2차원 영상을 재생하는 방식이다. 이에 따라, 사용자는 매 순간 방향을 지정하지 않더라도 중요 부분의 영상을 자유롭게 시청할 수 있다.
하지만, 종래의 제3 방식(이하, "AutoCam 방식"이라 지칭함)은 360도 영상을 5초 간격으로 자른 후, 5초 간격의 360도 영상에서 198개의 지점을 중심으로 하는 198개의 NFOV 영상을 변환하여 변환된 영상의 capture worthiness를 계산하며, 계산된 capture worthiness가 가장 큰 경로를 가상 카메라 경로로 설정하여 영상을 재생하였다. 하지만, 이러한 제3 방식은 영상을 5초 간격으로 자름에 따라 움직일 수 있는 범위가 한정되어 움직이는 물체를 제대로 재생할 수 없는 문제점이 있었다.
또한, 종래의 또 다른 제3 방식은 deep learning을 사용한 방식(이하, "Deep 360 Pilot 방식"이라 지칭함)으로서, 360도 영상에서 주요 객체(main object)를 찾는 Selector RNN 네트워크와, 찾아진 주요 객체를 보여주기 위한 가상 카메라 경로를 찾는 Regressor RNN 네트워크를 이용하여 영상을 재생한다. 하지만, 이러한 제3 방식은 여러 개의 주요 객체가 있을 경우에 이들 주요 객체 사이를 빠르게 건너뛰면서 추적하는 점핑(jumping) 추적의 가상 카메라 경로를 설정하여 영상을 재생하는 문제점이 있었다. 즉, 점핑 추적의 가상 카메라 경로를 따라 영상이 재생되는 경우, 이를 시청하는 사용자에게 어지러움과 주요 객체에 대한 인식 혼란을 야기할 수 있다.
본 발명은 사용자가 360도 영상을 HMD(Head mounted display) 등의 전용 재생 장치 외에서도 시청 가능하도록 재생하는 360도 영상 재생 방법 및 장치를 제공하는데 그 목적이 있다.
또한, 본 발명은 360도 영상 내 움직임을 반영한 NFOV 영상을 제공하여, 영상 내 물체 속도에 의한 영향이 적고 더 안정적인 NFOV 영상을 제공하는 360도 영상 재생 방법 및 장치를 제공하는데 그 목적이 있다.
또한, 본 발명은 사용자가 NFOV 영상 감상 중 다른 방향에서의 NFOV 영상을 감상할 수 있게 하는 영상 재생 방법 및 장치를 제공하는데 그 목적이 있다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 과제를 해결하기 위한 본 발명의 일 실시예에 따른 360도 영상 재생 방법은 360도 영상의 일부 영역을 재생하는 방법으로서, 복수의 360도 영상 프레임 각각의 복수 픽셀에 대해, 옵티컬 플로우(optical flow)과 돌출성(saliency)을 각각 계산하는 전처리 단계; 계산된 옵티컬 플로우와 돌출성을 이용하여 각 360도 영상 프레임에서의 가상 카메라 경로를 설정하는 설정 단계; 및 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생하는 재생 단계를 포함한다.
본 발명의 일실시예에서, 360도 영상의 재생 도중 사용자의 입력이 발생하는 경우, 상기 설정 단계는 사용의 입력 방향을 기반으로 한 가상 카메라 경로를 설정하고, 상기 재생 단계는, 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생할 수 있다.
상기 전처리 단계는, 연속하는 360도 영상 프레임 중 비 연속하는 복수의 특정 프레임(키 프레임)의 픽셀들에 대해 돌출성을 계산하여 각 키 프레임에 대한 맵(제2 맵)을 생성하는 단계; 및 임의의 키 프레임과 그 다음의 키 프레임 사이에 나머지 360도 영상 프레임(중간 프레임)의 픽셀들에 대해 옵티컬 플로우를 누적 계산하여 각 키 프레임에 대한 맵(제1 맵)을 생성하는 단계를 포함할 수 있다.
상기 키 프레임은 연속하는 360도 영상 프레임 중 n(단, n은 1보다 큰 자연수) 배수째의 프레임일 수 있다.
상기 설정 단계는 상기 제2 맵에서 돌출성이 일정 이상인 객체(주요 객체)를 추적하되 상기 제1 맵을 반영함으로써 주요 객체의 움직임 반영하는 제1 가상 카메라 경로를 설정하는 제1 설정 단계를 포함할 수 있다.
상기 제1 가상 카메라 경로는 주요 객체가 복수개인 경우의 점핑 추적을 방지하는 경로일 수 있다.
상기 전처리 단계는 각 키 프레임에서 복수의 지역에 대한 돌출성(지역 돌출성)을 해당 키 프레임의 제2 맵을 이용하여 계산하는 단계를 더 포함하고, 상기 설정 단계는 각 지역 돌출성을 이용하여 제2 가상 카메라 경로를 설정하는 제2 설정 단계를 포함할 수 있다.
상기 제2 설정 단계는 돌출성이 가장 큰 주요 객체(중요 객체)의 일정 거리 내 주변에 주요 객체(주변 객체)가 있는 경우, 중요 객체 및 주변 객체가 상기 일부 영역에 포함되도록 제2 가상 카메라 경로를 설정하는 단계를 포함할 수 있다.
상기 설정 단계는 제2 가상 카메라 경로의 이동 속도 및 가속도를 반영함으로써 제2 가상 카메라 경로를 평탄화한 제3 가성 카메라 경로를 설정하는 제3 설정 단계를 포함할 수 있다.
상기 설정 단계는 연속하는 복수의 360도 영상 프레임(제i+1 영상 프레임들)을 제i+1 시간 윈도우(Wi+1)(단, i는 2보다 큰 자연수)에 포함시키고 제i+1 영상 프레임들에서의 가상 카메라 경로를 설정하는 윈도우 설정 단계를 포함하고, 상기 재생 단계는 제i 시간 윈도우(Wi)에 포함되도록 기 설정된 연속하는 복수의 360도 영상 프레임(제i 영상 프레임들)에서의 가상 카메라 경로를 따라 2차원 영상을 재생하는 윈도우 재생 단계를 포함하고, 상기 윈도우 재생 단계의 수행 중에 상기 윈도우 설정 단계의 수행이 시작 또는 완료될 수 있다.
상기 재생 단계의 수행 중에 360도 영상의 특정 부위 또는 방향에 대한 선택이 입력(선택 입력)되는 경우, 상기 윈도우 설정 단계는 Wi 또는 그 이후의 시간 윈도우의 영상 프레임들에서 해당 특정 부위 또는 방향을 포함하는 가상 카메라 경로(입력 반영 경로)를 설정하되, 입력 반영 경로에서 점차적으로 제1 맵 및 제2 맵을 이용한 가상 카메라 경로로 전환되도록 가상 카메라 경로를 설정하는 입력 반영 설정 단계를 포함할 수 있다.
상기 입력 반영 설정 단계는 Wi 또는 그 이후의 시간 윈도우에 대해 해당 시간 윈도우에 포함된 연속하는 복수의 360도 영상 프레임의 개수를 점차적으로 늘리도록 설정할 수 있다.
상기 입력 반영 설정 단계는, 선택 입력된 영역의 돌출성 크기에 따라 시간 윈도우에 포함되는 360도 영상 프레임의 개수를 조절하는 단계를 포함할 수 있다.
상기 입력 반영 설정 단계는, 선택 입력된 영역의 돌출성 크기가 클수록 시간 윈도우에 포함되는 360도 영상 프레임 개수의 증가 속도를 줄이는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따른 360도 영상 재생 장치는 360도 영상의 일부 영역을 재생하는 장치로서, (1) 연속하는 복수의 360도 영상 프레임 각각의 픽셀들에 대해, 옵티컬 플로우(optical flow) 나타내는 맵(제1 맵)과 돌출성(saliency)를 나타내는 맵(제2 맵)을 저장한 저장부, (2) 제1 맵과 제2 맵을 이용하여 각 360도 영상 프레임에서의 가상 카메라 경로를 설정하고, 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생하도록 제어하는 제어부를 포함한다.
상기와 같이 구성되는 본 발명은 사용자가 360도 영상을 HMD(Head mounted display) 등의 전용 재생 장치 외에서도 시청 가능하도록 재생할 수 있어 보다 간편한 이점이 있다.
또한, 본 발명은 360도 영상 내 움직임을 반영한 NFOV 영상을 제공하며, 이에 따라 움직임을 반영하지 않을 경우 나타나는 문제점(즉, 물체의 속도에 따라 NFOV 영상의 품질이 저하되거나 NFOV 영상이 물체 사이를 빠르게 이동함에 따라 이를 시청하는 사용자에게 어지러움을 유발시킬 수 있는 등 문제점)을 해결할 수 있어, 영상 내 물체 속도에 의한 영향이 적고 더 안정적인 NFOV 영상을 제공할 수 있는 이점이 있다.
또한, 본 발명은 사용자가 NFOV 영상 감상 중 다른 방향에서의 NFOV 영상을 감상할 수 있게 하여, 다양한 정보 감상 및 사용자 자율성을 보장할 수 있는 이점이 있다.
도 1은 본 발명의 일 실시예에 따른 360도 영상 재생 장치의 블록 구성도를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 360도 영상 재생 방법의 순서도를 나타낸다.
도 3은 S210에서 생성되는 각 맵의 일 예를 나타낸다. 도 3(a)는 제1 맵, 도 3(b)는 제2 맵, 도 3(c)는 제3 맵을 각각 나타낸다.
도 4은 제1 맵 및 제2 맵을 생성하는 과정의 일 모습을 나타낸다.
도 5는 360도 영상과, 이에 대한 제1 맵 및 제2 맵의 일 예를 나타낸다.
도 6은 다양한 지역에 대한 일 예를 나타낸다.
도 7은 S220에 대한 보다 상세한 순서도를 나타낸다.
도 8은 다양한 방법으로 설정된 가상 카메라 경로를 나타낸다.
도 9는 S222를 적용하기 전후 영상의 일 예를 나타낸다.
도 10은 패스 파인더(Path Finder)와 영상 플레이어(Video Player)의 스레드(thread)에 대한 일 예를 나타낸다.
도 11은 각 구형 파노라마 360도 영상이 가상 카메라 경로에 따라 NFOV 영으로 투영되는 일 예를 나타낸다.
도 12는 대화형 경로 업데이트의 작동 방식에 대한 일 예를 나타낸다.
도 13은 복수의 360도 영상(도 13(a))과, 그 중의 돌출성이 가장 큰 중요 객체를 보여주는 NFOV 영상(도 13(b))과, 사용자 상호 작용에 의해 시선 방향이 바뀌는 시간 그래프(도 13(c))의 일 예를 각각 나타낸다.
도 14는 복수의 주요 객체에 대한 일 예를 나타낸다.
도 15는 식(2)에서 돌출성에 대한 조건 항과 일시적인 평탄 조건(temporal oothness) 항에 대한 균형을 제어하는 ωO의 효과를 나타내는 일 예이다.
도 16은 종래의 Deep 360 Pilot 방식과 본 발명에 대한 결과의 일 예를 나타낸다.
도 17은 종래의 AutoCam 방식과 본 발명에 대한 결과의 일 예를 나타낸다.
도 18은 대화형 경로 업데이트의 일 예를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 360도 영상 재생 방법의 순서도를 나타낸다.
도 3은 S210에서 생성되는 각 맵의 일 예를 나타낸다. 도 3(a)는 제1 맵, 도 3(b)는 제2 맵, 도 3(c)는 제3 맵을 각각 나타낸다.
도 4은 제1 맵 및 제2 맵을 생성하는 과정의 일 모습을 나타낸다.
도 5는 360도 영상과, 이에 대한 제1 맵 및 제2 맵의 일 예를 나타낸다.
도 6은 다양한 지역에 대한 일 예를 나타낸다.
도 7은 S220에 대한 보다 상세한 순서도를 나타낸다.
도 8은 다양한 방법으로 설정된 가상 카메라 경로를 나타낸다.
도 9는 S222를 적용하기 전후 영상의 일 예를 나타낸다.
도 10은 패스 파인더(Path Finder)와 영상 플레이어(Video Player)의 스레드(thread)에 대한 일 예를 나타낸다.
도 11은 각 구형 파노라마 360도 영상이 가상 카메라 경로에 따라 NFOV 영으로 투영되는 일 예를 나타낸다.
도 12는 대화형 경로 업데이트의 작동 방식에 대한 일 예를 나타낸다.
도 13은 복수의 360도 영상(도 13(a))과, 그 중의 돌출성이 가장 큰 중요 객체를 보여주는 NFOV 영상(도 13(b))과, 사용자 상호 작용에 의해 시선 방향이 바뀌는 시간 그래프(도 13(c))의 일 예를 각각 나타낸다.
도 14는 복수의 주요 객체에 대한 일 예를 나타낸다.
도 15는 식(2)에서 돌출성에 대한 조건 항과 일시적인 평탄 조건(temporal oothness) 항에 대한 균형을 제어하는 ωO의 효과를 나타내는 일 예이다.
도 16은 종래의 Deep 360 Pilot 방식과 본 발명에 대한 결과의 일 예를 나타낸다.
도 17은 종래의 AutoCam 방식과 본 발명에 대한 결과의 일 예를 나타낸다.
도 18은 대화형 경로 업데이트의 일 예를 나타낸다.
본 발명의 상기 목적과 수단 및 그에 따른 효과는 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며, 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 경우에 따라 복수형도 포함한다. 본 명세서에서, "포함하다", "구비하다", "마련하다" 또는 "가지다" 등의 용어는 언급된 구성요소 외의 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
본 명세서에서, "또는", "적어도 하나" 등의 용어는 함께 나열된 단어들 중 하나를 나타내거나, 또는 둘 이상의 조합을 나타낼 수 있다. 예를 들어, "또는 B""및 B 중 적어도 하나"는 A 또는 B 중 하나만을 포함할 수 있고, A와 B를 모두 포함할 수도 있다.
본 명세서에서, "예를 들어" 등에 따르는 설명은 인용된 특성, 변수, 또는 값과 같이 제시한 정보들이 정확하게 일치하지 않을 수 있고, 허용 오차, 측정 오차, 측정 정확도의 한계와 통상적으로 알려진 기타 요인을 비롯한 변형과 같은 효과로 본 발명의 다양한 실시 예에 따른 발명의 실시 형태를 한정하지 않아야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소에 '연결되어’ 있다거나 '접속되어' 있다고 기재된 경우, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성 요소에 '직접 연결되어' 있다거나 '직접 접속되어' 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소의 '상에' 있다거나 '접하여' 있다고 기재된 경우, 다른 구성요소에 상에 직접 맞닿아 있거나 또는 연결되어 있을 수 있지만, 중간에 또 다른 구성요소가 존재할 수 있다고 이해되어야 할 것이다. 반면, 어떤 구성요소가 다른 구성요소의 '바로 위에' 있다거나 '직접 접하여' 있다고 기재된 경우에는, 중간에 또 다른 구성요소가 존재하지 않은 것으로 이해될 수 있다. 구성요소간의 관계를 설명하는 다른 표현들, 예를 들면, '~사이에'와 '직접 ~사이에' 등도 마찬가지로 해석될 수 있다.
본 명세서에서, '제1', '제2' 등의 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 해당 구성요소는 위 용어에 의해 한정되어서는 안 된다. 또한, 위 용어는 각 구성요소의 순서를 한정하기 위한 것으로 해석되어서는 안되며, 하나의 구성요소와 다른 구성요소를 구별하는 목적으로 사용될 수 있다. 예를 들어, '제1구성요소'는 '제2구성요소'로 명명될 수 있고, 유사하게 '제2구성요소'도 '제1구성요소'로 명명될 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 360도 영상 재생 장치(100)의 블록 구성도를 나타낸다.
본 발명의 일 실시예에 따른 360도 영상 재생 장치(100)는 HMD(Head mounted display) 등과 같은 360도 영상의 전용 재생 장치를 제외한 전자 장치로서, 360도 영상의 일부 영역을 2차원 영상으로 재생하는 장치이다.
예를 들어, 본 발명의 일 실시예에 따른 360도 영상 재생 장치(100)는 스마트폰(smart phone), 이동 전화기(mobile phone), 스마트패드(smart pad), 태블릿 PC(tablet personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), 또는 웨어러블 장치(wearable device) 등일 수 있다.
본 발명의 일 실시예에 따른 360도 영상 재생 장치는, 도 1에 도시된 바와 같이, 입력부(110), 통신부(120), 표시부(130), 저장부(140) 및 제어부(150)를 포함할 수 있다.
입력부(110)는 사용자의 입력에 대응하여, 입력데이터를 발생시킨다. 입력부(110)는 다양한 입력수단을 포함한다. 예를 들어, 입력부(110)는 키보드(key board), 키패드(key pad), 돔 스위치(dome switch), 터치 패널(touch panel), 터치 키(touch key), 터치 패드(touch pad), 마우스(mouse), 메뉴 버튼(menu button) 등을 포함할 수 있다.
통신부(120)는 360도 영상 획득장치(미도시), 서버(미도시) 등의 외부장치와의 통신을 수행하는 구성으로서, 360도 영상데이터를 수신할 수 있다. 예를 들어, 통신부(120)는 5G(5th generation communication), LTE-A(long term evolution-advanced), LTE(long term evolution), 블루투스, BLE(bluetooth low energe), NFC(near field communication), 와이파이(WiFi) 통신 등의 무선 통신을 수행할 수 있고, 케이블 통신 등의 유선 통신을 수행할 수 있다.
표시부(130)는 다양한 영상데이터를 표시하며, 특히 3차원 영상의 일부 영역을 2차원 영상으로 표시할 수 있다. 또한, 표시부(130)는 입력부(120)와 결합되어 터치 스크린(touch screen) 등으로 구현될 수 있다. 표시부(130)는 비발광형 패널 또는 발광형 패널로 구성될 수 있다.
예를 들어, 발광형 패널은 발광 다이오드 디스플레이 패널(light emitting diode display panel), 유기전계발광 디스플레이 패널(organic electroluminescence display panel, 또는 OLED[organic light emitting diode] panel), 백라이트형 액정 디스플레이 패널(backlight liquid crystal display panel), 또는 양자점 디스플레이 패널(quantum dot display panel) 등일 수 있다. 또한, 비발광형 패널은 액정 디스플레이 패널(liquid crystal display panel), 전기영동 디스플레이 패널(electrophoretic display panel), 콜레스테릭 액정 디스플레이 패널(cholesteric liquid crystal display panel), 마이크로전기기계 시스템 디스프레이 패널(micro-electromechanical system display panel), 일렉트로웨팅 디스플레이 패널(electrowetting display panel), 또는 전자유체 디스플레이 패널 등일 수 있다.
저장부(140)는 360도 영상 재생 장치의 동작에 필요한 각종 저장 정보, 프로그램들을 저장한다. 이때, 저장 정보는 3차원 영상데이터, 옵티컬 플로우(optical flow)을 나타내는 맵(이하, "제1 맵"이라 지칭함), 돌출성(saliency)를 나타내는 맵(이하, "제2 맵"이라 지칭함), 각 360도 영상 프레임/제2 맵에서 인접 픽셀들로 이루어진 지역(region)에 대해 계산된 돌출성(이하, "지역 돌출성"이라고 지칭함)을 나타내는 맵(이하, "제3 맵"이라 지칭함), 가상 카메라 경로, 식(1) 내지 식(12)의 연산에 필요한 데이터 및 그 결과 데이터 등을 포함할 수 있다.
예를 들어, 저장부(140)는 그 유형에 따라 하드디스크 타입(hard disk type), 마그네틱 매체 타입(Sagnetic media type), CD-ROM(compact disc read only memory), 광기록 매체 타입(Optical Media type), 자기-광 매체 타입(Sagneto-optical media type), 멀티미디어 카드 마이크로 타입(Sultimedia card micro type), 플래시 메모리 타입(flash memory type), 롬 타입(read only memory type), 또는 램 타입(random access memory type) 등일 수 있다. 또한, 저장부(140)는 그 용도/위치에 따라 캐시(cache), 버퍼, 주기억장치, 또는 보조기억장치이거나 별도로 마련된 저장 시스템 등일 수 있다.
제어부(150)는 다양한 제어동작을 수행하며, 360도 영상의 일부 영역을 2차원 영상으로 재생하는 제어동작을 수행할 수 있다. 예를 들어, 제어부(150)는 프로세서(processor) 또는 프로세서에서 동작하는 제어 프로그램일 수 있다. 또한, 제어부(150)는 입력부(110), 통신부(120), 표시부(130) 및 저장부(140)의 동작을 제어할 수 있다.
이하, 제어부(150)에 의해 제어 동작되는 본 발명의 일 실시예에 따른 360도 영상 재생 방법에 대하여 설명하도록 한다.
도 2는 본 발명의 일 실시예에 따른 360도 영상 재생 방법의 순서도를 나타낸다.
즉, 도 2를 참조하면, 본 발명의 일 실시예에 따른 360도 영상 재생 방법은 S210 내지 S230을 포함한다.
도 3은 S210에서 생성되는 각 맵의 일 예를 나타낸다. 도 3(a)는 제1 맵, 도 3(b)는 제2 맵, 도 3(c)는 제3 맵을 각각 나타낸다.
<전처리 단계(S210)>
S210은 전처리 단계로서, 연속하는 복수의 360도 영상 프레임 각각의 복수 픽셀에 대해, 제1 맵, 제2 맵 및 제3 맵을 생성하는 단계이다.
제1 맵은 각 360도 영상 프레임에서 각 픽셀에 대해 계산된 옵티컬 플로우(optical flow)을 나타내는 맵(map)이다. 이때, 옵티컬 플로우(optical flow)는 영상에서 움직이는 객체(object)에 의해 발생하는 외관상의 움직임으로서, 영상 시퀀스에서 픽셀 강도(pixel intensity)의 시공간적인 변화(spatio-temporal variations)를 나타낸다. 제1 맵은 서로 다른 방향을 나타내는 옵티컬 플로우의 벡터를 다양한 색상을 이용해 시각화한다. 예를 들어, 옵티컬 플로우는 밀집 옵티컬 플로우(dense optical flow) 기법, 또는 희소 옵티컬 플로우(sparse optical flow) 기법 등의 다양한 옵티컬 플로우 알고리즘을 이용하여 계산될 수 있다.
제2 맵은 각 360도 영상 프레임에서 각 픽셀에 대해 계산된 돌출성(saliency)을 나타내는 맵이다. 이때, 돌출성은 다른 영역에 비해 상대적으로 밝기 및/또는 색상의 차이가 크게 나는 영역, 윤곽선의 특징이 상대적으로 강한 영역일 수 있다. 예를 들어, 돌출성은 시각적 집중영역 검출(saliency region detection) 기법 등의 다양한 돌출성 검출 알고리즘을 이용하여 계산될 수 있다.
제3 맵은 각 360도 영상 프레임/제2 맵에서 인접 픽셀들로 이루어진 지역(region)에 대해 계산된 지역 돌출성을 나타내는 맵이다. 이때, 지역 돌출성은 다른 지역에 비해 상대적으로 밝기 및/또는 색상의 차이가 크게 나는 지역, 윤곽선의 특징이 상대적으로 강한 지역일 수 있다.
옵티컬 플로우 및 돌출성에 대한 효율적인 계산을 위해, W×H 크기(단, W 및 H는 각각 가로 및 세로의 픽셀 수)의 구형 파노라마(spherical panorama video)의 360도 영상을, W'×H', W'=W/n, H'=H/n (단, n은 스케일링 팩터)로 각각 다운 샘플링(down sampling)한다. 예를 들어, W'=360이 되도록 n을 설정할 수 있는데, 이는 옵티컬 플로우 및 돌출성을 합리적으로 추정할 수 있는 최소의 폭이다. 또한, 360도 영상의 왼쪽 경계와 오른쪽 경계 사이의 컷(cut) 주변에 대한 정확한 옵티컬 플로우 및 돌출성을 계산하기 위해, 360도 영상의 왼쪽 경계 및 오른쪽 경계는 원형 형상(circular fashion)으로 20 픽셀씩 채워(padded)진 패드 영역(pad area)을 형성할 수 있다.
이와 같이 가공된 360도 영상에 대해, 다양한 알고리즘을 사용하여 옵티컬 플로우 및 돌출성을 계산하여 제1 맵 및 제2 맵을 생성한다. 그 결과, 생성된 제1 맵 및 제2 맵은 다운 샘플링된 360도 영상과 동일한 크기의 픽셀 수를 갖는다. 예를 들어, 돌출성에 대한 점수는 0~1의 실수 값을 가질 수 있다. 이 경우, 0과 1은 각각 돌출성 점수의 최소값과 최대값을 나타낸다.
도 4는 제1 맵 및 제2 맵을 생성하는 과정의 일 모습을 나타낸다. 또한, 도 5는 360도 영상과, 이에 대한 제1 맵 및 제2 맵의 일 예를 나타낸다. 즉, 도 5(a)는 특정 360도 영상을, 도 5(b)는 해당 360도 영상에 대한 제1 맵을, 도 5(c)는 해당 360도 영상에 대한 제2 맵을 각각 나타낸다. 이때, 도 5(b)의 오른쪽 하단에 있는 상자는 서로 다른 방향의 옵티컬 플로우 벡터에 대한 다양한 색깔을 매핑하며, 도 5(c)의 오른쪽에 있는 상자는 0~1까지의 돌출성에 대한 다양한 색깔을 매핑한다.
계산 효율성을 위해, 연속하는 가공 360도 영상 프레임들 중 비 연속하는 복수의 특정 프레임(이하, "키 프레임"(key frame)이라 지칭함)의 픽셀들에 대해서만 돌출성을 계산하여 각 키 프레임에 대한 제2 맵을 생성할 수 있다. 즉, 키 프레임은 연속하는 360도 영상 프레임 중 n(단, n은 1보다 큰 자연수) 배수째의 프레임일 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 4 프레임마다 다운 샘플링된 키 프레임만을 사용하여 해당 키 프레임에 대해서만 돌출성을 계산하여, 그에 대한 제2 맵을 생성할 수 있다.
또한, 각 키 프레임 사이에 대해 옵티컬 플로우를 계산한다. 즉, 어느 키 프레임(제1 프레임)과 그 다음의 키 프레임(제2 프레임) 사이에 있는 나머지 360도 영상 프레임(중간 프레임)의 픽셀들에 대해, 옵티컬 플로우를 누적(accumulating) 계산함으로써 각 키 프레임에 대한 제1 맵(가령, 제1 프레임에 대한 제1 맵)을 생성할 수 있다.
예를 들어, 도 3에서, 회색 화살표는 각 각 프레임에서의 옵티컬 플로우 벡터(vector)를 나타내며, 주황색 화살표는 제1 키 프레임에서 제2 키 프레임까지의 사이에서 획득한 옵티컬 플로우 벡터를 나타낸다. 한편, 옵티컬 플로우 및 돌출성을 계산한 후, 패드 영역을 왼쪽 및 오른쪽 경계에서 자른다.
또한, 계산 효율 및 S220에서의 보다 정확한 가상 카메라 경로 설정을 위해, 제1 맵 및 제2 맵의 상단과 하단을 10 픽셀만큼 잘라낼 수 있다. 이는 구형 파노라마의 상단 및 하단 부분이 옵티컬 플로우 및 돌출성의 정확성을 해칠 수 있는 기하학적 왜곡을 가지기 때문이다. 또한, 이들 상단 및 하단 부분은 일반적으로 하늘 및 땅에 대응하는 영상을 가지므로, 중요한 영상 내용을 가지지 않을 것이다.
즉, S220에서 가상 카메라 경로를 설정할 때, 이들 상단 및 하단 부분을 제외하면 된다. 다만, 경우에 따라 상단 및 하단 부분을 고려해야 할 수도 있다. 이 경우, 입력 360도 영상을 큐브맵(cubemap)에 투영하여 이들 상단 및 하단 부분의 옵티컬 플로우 및 돌출성을 계산할 수도 있다.
이와 같은 자르기를 한 후, 이후 단계에서의 효율적인 계산을 위해, 제1 맵 및 제2 맵을 다운 샘플링할 수 있다. 예를 들어, 제1 맵 및 제2 맵을 그 너비가 180 픽셀이 되도록 다운 샘플링할 수 있다.
제2 맵이 생성되면, 계산된 각 제2 맵의 돌출성 점수를 통합(integrating)하여 제2 맵에서의 복수의 지역, 즉 NFOV의 크기에 해당하는 가능한 모든 지역에 대한 지역 돌출성을 계산한다.
이때, 각 지역에 대한 지역 중요도는 하기의 식(1)을 이용하여 계산할 수 있다.
이때, p는 다운 샘플링된 구형 파노라마 360도 영상에서의 2차원 픽셀 좌표, st(p)는 t 번째 키 프레임의 p에서의 중요도 점수, R(p)는 p를 중심으로 지역, |R(p)|는 R(p)의 픽셀 수, St(p)는 t 번째 키 프레임에서 R(p)의 지역 중요도 점수를 각각 나타낸다.
도 6은 다양한 지역에 대한 일 예를 나타낸다. 도 6(a)는 구형 파노라마에서의 NFOV에 대응하는 지역(검정선 내 영역)과 이를 근사화한 지역(붉은 점선 내 영역)을 나타내고, 도 6(b)는 도 4(c)에 대한 지역 돌출성의 제3 맵을 나타낸다.
R(p)의 모양과 크기는 p의 y 성분과 NOV(field of view)로 결정될 수 있으며, NOV가 고정된 것으로 가정할 수도 있다. 구형 파노라마에서 NFOV로의 비선형적인 매핑으로 인해, 도 5(a)에 도시된 바와 같이, R(p)는 서로 다른 p에서 서로 다른 형상(검정색 내 영역), 즉 불규칙한 형상을 갖는다. 이에 따라, St(p)를 보다 효율적으로 계산하기 위해, 구형 파노라마에서 불규칙한 형상의 지역(검정색 내 영역)을 직사각형(붉은 점선 내 영역)으로 근사화할 수 있다. 즉, 직사각형 R(p)에 대한 St(p)는 합계 면적 테이블(summed-area table)을 사용하여 효율적으로 계산될 수 있다.
<설정 단계(S220)>
S220은 설정 단계로서, 계산된 옵티컬 플로우 및 돌출성을 이용하여, 즉 제1 맵 내지 제3 맵을 이용하여 각 360도 영상 프레임에서의 가상 카메라 경로를 설정하는 단계이다. 이때, 가상 카메라 경로는 연속하는 360도 영상에서 선택 재생되는 그 일부 영역에 대한 시간적인 경로를 지칭한다.
도 7은 S220에 대한 보다 상세한 순서도를 나타낸다.
S220에서, 각 360도 영상에서 돌출성이 가장 큰 부분을 통과하되 사용자가 보다 편안하게 시청할 수 있도록 부드럽게 평탄화된 최적의 가상 카메라 경로를 찾는다. 이를 위해, 도 7에 도시된 바와 같이, S220은 S221 내지 S223을 포함할 수 있다.
-초기 경로 설정(S221)-
S221은 초기 경로를 설정하는 제1 설정 단계로서, 제2 맵에서 돌출성이 일정 이상인 객체(이하, "주요 객체"라 지칭함) 또는 제2 맵에서 돌출성이 가장 큰 객체(이하, "중요 객체"라 지칭함)를 추척하는 제1 가상 카메라 경로를 설정한다. 동시에, S221은 제1 맵을 반영함으로써 주요 객체 또는 중요 객체의 움직임 반영하는 제1 가상 카메라 경로를 설정할 수 있다.
즉, 키 프레임의 집합을 FKey={f1 key, ..., fT key}, 이에 대응하는 제1 맵의 집합을 S={s1, ..., sT}, 제2 맵의 집합을 O={o1, ..., oT}라고 각각 정의할 수 있다. 이 경우, 제1 가상 카메라 경로를 P={p1, ..., pT}라 정의할 수 있다. 이때, pt는 제1 가상 카메라 경로의 원소로서 다운 샘플링된 구형 파노라마 t 번째 키 프레임에서의 2차원 픽셀 좌표이다. 이 경우, 하기 식(2)의 에너지 함수 E(P)가 최소값을 갖도록 하는 P를 찾을 수 있다.
이때, st(pt)는 t 번째 키 프레임의 pt에서의 돌출성 점수를, ot(pt)는 t번째 키 프레임에서 (t+1)번째 키 프레임까지 pt에서의 옵티컬 플로우 벡터를, ∥ ∥은 L1 norm을, v(pt+1, pt)는 pt에서 pt+1까지의 수평 순환 방식(horizontally circular fashion)의 벡터를 각각 나타낸다. 또한, v(pt+1, pt)의 x 성분인 vx(pt+1, pt)은 하기 식(3)과 같이 정의될 수 있다.
이때, px t 및 px t+1는 각각 pt 및 pt+1의 x 성분이고, a는 -1, 0 또는 +1 중에서 |vx(pt+1, pt)|를 최소값으로 만드는 값이다. 또한, ωo는 식(2)의 오른쪽 두 항의 균형을 맞추기 위한 가중치(실제 구현 시 ωo = 0.1로 설정함)이다.
식(2)의 에너지 함수에서, 오른쪽 첫째 항은 돌출성에 대한 조건을 나타내는 것으로서 키 프레임에서 가장 돌출성이 큰 부분을 제1 가상 카메라 경로가 통과하게 하는 조건이다. 또한, 식(2)의 에너지 함수에서, 오른쪽 둘째 항은 평탄 조건(smoothness term)으로서 제1 가상 카메라 경로가 옵티컬 플로우를 따르도록 하는 조건입니다.
식(2)에서 평탄 조건은 시간 변화가 0에 가까워 지게 권장하는 종래의 평탄 조건을 수정한 것으로서, 종래의 평탄 조건은 하기 식(4)와 같이 정의될 수 있다.
식(4)를 식(2)의 평탄 조건으로 수정한 함으로써 다음과 같은 이점이 생길 수 있다. 첫째, 옵티컬 플로우가 객체의 움직임을 반영하므로, 움직이는 객체를 보다 효과적으로 추적할 수 있는 이점이 있다. 둘째, 주요 개체들 사이를 빠르게 건너뛰면서 추적하는 점핑 추적을 방지할 수 있다. 즉, 주요 객체가 복수개인 경우, 돌출성을 최대화하거나 등가적으로 식(2)의 오른쪽 첫째 항이 최소화되게 하는 것은 점핑 추적의 가상 카메라 경로를 만들 수 있다. 한편, 식(4)를 최소화하는 것은 가상 카메라 경로가 주요 객체들 사이에서 점핑하는 것을 방지할 수 있는 반면, 빠르게 움직이는 객체를 따라가는 경로를 방해하는 문제(이하, "경로 방해 문제"라 지칭함)가 발생한다. 하지만, 식(2)에 따라, 옵티컬 플로우에 기반한 시간적 평탄 조건은 주요 객체의 옵티컬 플로우를 따라가는 경로를 설정하게 하므로, 경로 방해 문제를 이 효과적으로 해결할 수 있다.
도 8은 다양한 방법으로 설정된 가상 카메라 경로를 나타낸다. 즉, 도 8에서, (a)는 돌출성만을 최대화하여 계산된 가상 카메라 경로를, (b) 내지 (d)는 식(4)에 따른 종래의 평탄 조건((b) ωo=0.01, (c) ωo=0.05, (d) ωo=0.1)을 이용하여 계산된 가상 카메라 경로를 각각 나타낸다. 이때, ωo가 클수록 돌출성을 따르지 않는 동일한 위치의 경로를 만들고, ωo가 작을수록 주요 객체 사이를 점핑하는 경로를 만든다. 또한, 도 8에서, (e)는 식(2)를 이용하여 계산된 가상 카메라 경로를 나타내는 것으로서, 옵티컬 플로우 기반의 평탄 조건은 주요 객체를 보다 효과적이고 안정적으로 따라가도록 하는 경로를 만든다.
한편, 동적 프로그래밍(dynamic programming)을 사용하여 식(2)의 최적 솔루션을 찾을 수 있다. 특히, 제1 키 프레임으로부터 pt로 끝나는 t 번째 키 프레임까지의 최적 경로의 에너지 Et(pt)는 하기 식(5) 및 식(6)과 같이 재귀적으로 계산될 수 있다.
이때, N(pt)는 수평 순환 방식으로 정의된 pt의 이웃 공간이다. 예를 들어, 이웃 공간의 크기를 31×31로 설정할 수 있으며, 이는 다운 샘플링된 키 프레임에서 빠르게 움직이는 객체를 추적할 만큼 충분히 크다.
동적 프로그래밍을 풀기 위해, t를 1에서 T까지 순차적으로 증가시키면서 모든 pt에 대해 Et(pt)를 계산할 수 있다. 이 프로세스의 끝에서, 최소값의 ET(pT)는 첫 번째 키 프레임에서 T 번째 키 프레임까지의 최적 경로의 에너지이다. 최소값의 ET(pT)에 해당하는 최적 경로는 T 번째 키 프레임에서 역 추적하여 찾을 수 있다.
-FOV 인식 경로 설정(S222)-
S222는 FOV 인식 경로를 설정하는 제2 설정 단계로서, 제2 맵에서 돌출성이 가장 큰 중요 객체의 일정 거리 내 주변에 주요 객체(이하, "주변 객체"라 지칭함)(또는 주변 객체는 주요 객체 중에서 돌출성이 기준 이상으로 큰 객체)가 있는 경우, 중요 객체 및 주변 객체가 FOV의 재생 영역에 포함되도록 제2 가상 카메라 경로를 설정한다. 즉, S222에 따라, 제1 가상 카메라 경로에 가까우면서, 주변 객체를 보다 효과적으로 보여주는 가상 카메라 경로를 찾을 수 있다.
도 9는 S222를 적용하기 전후 영상의 일 예를 나타낸다. 즉, 도 9(a)는 S222를 적용하지 않은 가상 카메라 경로에 따른 영상이며, 도 9(b)는 S222를 적용한 가상 카메라 경로에 따른 영상이다.
S221에서는 단순히 가장 돌출성이 큰 이벤트를 추적한다. 이에 따라, 제1 가상 카메라 경로를 기반으로 NFOV에 따른 일부 영역을 재생하면, 도 9(a)에 도시된 바와 같이, 그 영상은 주변 환경에 관계없이 돌출성이 가장 큰 중요 객체(여성 객체)를 항상 그 중앙에 표시한다. 즉, 중요 객체 외에 돌출성이 기준 이상인 주요 개체가 있거나 서로 인접한 여러 주요 객체가 있는 경우, S221에 따른 제1 가상 카메라 경로는 이들 객체를 이상적으로 표시하지 못하는 결과를 낼 수 있다.
즉, S221에 따른 제1 가상 카메라 경로 보다 이상적인 가상 카메라 경로는 돌출성이 가장 큰 객체뿐만 아니라 그 주변 객체도 효과적으로 보여주는 경로이다. 이를 위해, P에 가깝지만 NFOV의 시야를 반영하는 FOV 인식 경로 P~를 찾는다. 즉, 각 키 프레임에 대해 하기 식(7)의 에너지 함수 E~(P~ t)가 최소값을 갖도록 하는 제2 가상 카메라 경로 P~를 설정할 수 있다. 그 결과, 도 9(b)에 도시된 바와 같이, 중요 객체(여성)의 주변 객체(여성의 왼쪽 사람)도 자연스럽게 표시할 수 있는 FOV 인식 경로를 찾을 수 있다.
이때, P~는 제2 가상 카메라 경로의 집합으로서 {p~ 1, ..., p~ T}이며, p~ t는 제2 가상 카메라 경로의 원소(p~t∈P~)로서 t 번째 키 프레임에서의 2차원 픽셀 좌표를 나타내는데 t 번째 키 프레임에서의 FOV 인식 경로이다.
식(7)에서, 오른쪽 첫째 항은 지역 돌출성 St(p~ t)에 따라 더 돌출한 지역을 포함하며, 오른쪽 둘째 항은 p~ t가 pt에 가깝게 되도록 한다. ωp는 오른쪽 둘째 항의 가중치(실제 구현 시, ωp=0.0001로 설정)이다.
식(7)은 시간 상관성(temporal coherence)을 장려하는 항을 포함하지 않는다. 이는 이후에 별도로 평탄화된 경로 설정 단계(S223)를 수행하기 때문이다. 식(7)은 다른 프레임과 독립적으로 정의되기 때문에 철저한 검색을 통해 그 계산이 효율적으로 최소화될 수 있다. 계산 효율을 위해, p~ t는 pt를 중심으로 하는 21x21 크기의 공간 이웃 내에 있도록 제한할 수 있다.
식(2)에서의 st(pt)를 St(pt)로 대체함으로써 P 대신 P~를 직접 찾을 수 있다. 물론, P와 P~를 따로 계산할 수도 있다. 360도 영상에서 돌출성이 큰 영역은 일반적으로 객체에 해당하며, P는 지점에서 돌출성을 최대화하여 가장 두드러진 객체을 추적하도록 계산된다. 한편, P~는 지역의 돌출성을 최대화함으로써 주요 객체를 둘러싼 상황 정보를 보여주기 위해 계산된다. 다만, P~에 대해 직접 계산하는 것이 덜 만족스러운 결과를 가져올 수 있다. 이는 St(pt)가 한 지역에 대한 돌출성 점수이므로, 주요 대상의 탐지 및 추적이 모호해지기 때문으로, 이에 따라, pt에서의 옵티컬 플로우 ot(pt)는 더 이상 주요 대상의 움직임을 반영하지 않는다.
-평탄화된 경로 설정(S223)-
S223은 평탄화된 경로(smoothing path)를 설정하는 제3 설정 단계로서, 제2 가상 카메라 경로의 이동 속도 및 가속도를 반영함으로써 제2 가상 카메라 경로를 평탄화한 제3 가성 카메라 경로를 설정한다.
즉, 하기 식(8)에 따른 에너지 함수 E(P)가 최소값을 갖도록 하는 평탄화된 경로를 설정할 수 있다.
다음의 에너지 함수를 최소화함으로써 FoV 인식 경로 P~로부터 시간적으로 부드러운 경로 P = {p^1, ... p^T}를 계산한다.
이때, P^는 제3 가상 카메라 경로의 집합으로서 {p^1, ... p^T}이며, p^t는 제3 가상 카메라 경로의 원소로서 t 번째 키 프레임에서의 2차원 픽셀 좌표이다.
식(8)에서, 오른쪽 첫째 항은 데이터 항이고 둘째 항 및 셋째 항은 각각 속도와 가속도를 기반으로 평탄화한 항이다. ωV는 이동 속도 평탄화에 대한 가중치를 나타내며, ωa는 가속도 평탄화에 대한 가중치를 나타낸다(구현 시, ωv=200 및 ωa=2.0×104를 사용).
속도 기반의 평탄화 항은 가상 카메라 경로가 정지하지 않도록 하는 반면, 가속 기반의 평탄화 항은 가상 카메라 경로가 panning 또는 dolly shot 등과 같이 일정 속도로 움직이는 것을 촉진한다.
보다 최적의 솔루션을 위해, 식(7)과 식(8)을 통합하는 통합 에너지 함수로 공식화할 수 있다. 하지만 통합 에너지 함수는 돌출성 점수를 포함한 이산 최적화 문제를 일으킬 수 있다. 물론, 동적 프로그래밍을 이용하여 이러한 문제를 해결할 수 있지만, 온라인 처리에 적합하지 않은 2차 미분 기반 시간 상관성 조건(temporal coherence term)으로 인해 여전히 많은 검색 공간과 계산 시간이 필요하다.
이에 따라, S223의 수행 전에, 2n을 곱하여 FOV 인식 경로 P~를 상향 조정하고, 모든 중간 프레임을 선형적으로 보간한다(linearly interpolate). 이후, S223을 수행하여 모든 프레임에 정의된 부드럽고 적절하게 조정된 제3 가상 카메라 경로를 얻을 수 있다.
<재생 단계(S230)>
S230은 재생 단계로서, 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 NFOV 영상 프레임에 따른 2차원 영상으로 재생하는 단계이다.
<온라인 실행>
한편, 본 발명의 일 실시예에 따른 360도 영상 재생 방법은 온라인(online) 방식으로 실행될 수 있도록 다음의 프로세스를 포함할 수 있다.
도 10은 패스 파인더(Path Finder)와 영상 플레이어(Video Player)의 스레드(thread)에 대한 일 예를 나타낸다.
도 10을 참조하면, 제어부(150)는 경로 파인더(Path Finder)와 영상 플레이어(Video Player)의 스레드(thread)를 별도로 수행할 수 있다. 이때, 영상 플레이어는 현재 시간 윈도우에 대한 NFoV 비디오를 재생하고, 경로 파인더는 다음 시간 윈도우에 대한 최적 경로를 계산한다. 이때, 시간 윈도우는 복수의 360도 영상 프레임을 포함하는 하나의 그룹으로서, i번째 시간 윈도우를 Wi로 나타낸다.
즉, S220은 연속하는 복수의 360도 영상 프레임(제i+1 영상 프레임들)을 제i+1 시간 윈도우(Wi)(단, i는 2보다 큰 자연수)에 포함시키고 제i+1 영상 프레임들에서의 가상 카메라 경로를 설정하는 단계(이하, "윈도우 설정 단계"라 지칭함)를 포함할 수 있다.
이때, S230은 제i 시간 윈도우(Wi)에 포함되도록 기 설정된 제i+1 영상 프레임들 이전의 연속하는 복수의 360도 영상 프레임(제i 영상 프레임들)에서의 가상 카메라 경로를 따라 2차원 영상을 재생하는 단계(이하, "윈도우 재생 단계"라 지칭함)를 포함할 수 있다. 즉, 윈도우 재생 단계의 수행 중에 윈도우 설정 단계의 수행이 시작 또는 완료될 수 있다.
예를 들어, 입력되는 360도 영상을 N/4개의 키 프레임에 대응하는 N개 프레임의 분리된 시간 윈도우로 나눌 수 있다. 이때, S220에서, 경로 찾기 스레드는 S230에서의 영상 플레이어 스레드가 Wi-1의 NFOV 영상을 재생하는 동안 Wi에 대한 최적 경로를 계산한다. Wi-1의 NFOV 비디오를 재생한 후, 두 스레드는 다음 윈도우를 진행한다. 이때, 각 시간 윈도우는 100개의 키 프레임에 대응하는 N=400 개의 프레임을 가질 수 있다.
경로 찾기 스레드는 상술한 S221 내지 S223에 따라 Wi에 대한 카메라 경로를 찾는다. 연속적인 프레임 사이의 시간적 일관성을 위해, 초기 경로와 평활화 된 경로는 서로 다른 목표에 도움이 되므로 일관성이 있어야 한다. 이를 위해 초기 경로에 대한 S221을 다음과 같이 수정할 수 있다.
즉, Wi의 키 프레임 Fi key 집합을 만들고 Fi key의 첫 번째 키 프레임으로 Wi-1의 마지막 키 프레임을 포함시킨다. 그런 다음, 식(2)를 최적화하여 Wi에 대한 초기 경로를 추가 제약인 pi,1=p(i1),T를 이용해 찾는다. 이때, pi,1은 Wi의 초기 경로에서 첫 번째 가상 카메라의 위치이고, p(i1),T는 Wi-1의 초기 경로에서 마지막 가상 카메라의 위치이다. 이러한 제약은 식(6) 및 식(6)에서 E1(p, T)를 하기 식(9)와 같이 설정함으로써 동적 프로그래밍을 이용해 쉽게 구현될 수 있다.
상관성 있는 경로 평탄화(coherent path smoothing)를 위해, 식(8)에서 추가적인 제약 pi,1=p(i-1),T이 도입될 수 있다. 최적화된 식(8)은 간단한 이차 프로그래밍 문제이므로, Lagrange multiplier method[Wright and Nocedal 2006] 등을 이용해 쉽게 풀 수 있다.
도 11은 각 구형 파노라마 360도 영상이 가상 카메라 경로에 따라 NFOV 영상으로 투영되는 일 예를 나타낸다. 도 11에서, 왼쪽 영상의 구부러진 빨간색 상자는 NFOV 프레임으로 투영된 영역을 나타낸다.
영상 플레이어 스레드는 계산된 가상 카메라 경로를 기반으로 NFOV 영상 프레임을 렌더링(rendering)한다. 도 11을 참조하면, 입력된 구형 파노라마 360도 영상의 각 프레임은 등변 투영법을 사용하여 NFOV 영상 프레임으로 투영된다. 이때, 현재 프레임의 카메라 경로가 투영 중심으로 사용된다.
<대화형 경로>
또한, 본 발명의 일 실시예에 따른 360도 영상 재생 방법은 360도 영상의 특정 부위 또는 방향에 대한 사용자 선택(이하, "사용자 상호 작용"이라 지칭함)을 반영한 경로로 가상 카메라 경로를 업데이트하기 위해 다음의 프로세스를 포함할 수 있다.
먼저, 그래픽 사용자 인터페이스 (GUI)를 제공할 수 있다. 이 인터페이스는 일반적인 영상 플레이어 응용 프로그램과 유사하며, 사용자는 GUI를 사용하여 입력 360도 영상에서 생성된 NFOV 비디오를 시청할 수 있다. 사용자가 시청 방향을 변경하려면 영상 플레이어 창에서 마우스의 드래그 등으로 입력하면 된다. 이러한 입력이 입력부(110를 통해 전달되면, 제어부(150)는 해당 사용자 입력을 반영하도록 가상 카메라 경로를 업데이트한다.
특히, 제어부(150)는 시스템은 현재 프레임으로부터 시간 윈도우를 재정의한다. 이후, 각 시간 윈도우에 대해, 새로운 가상 카메라 경로가 사용자에 의해 지정된 시청 방향에 따라 계산된다.
대기 시간 없이 경로 업데이트를 바로 제공하기 위해, 시간 윈도우의 크기를 적응적으로 변경한다. 긴 시간 윈도우를 사용하면 오랜 시간 동안 더 최적의 경로를 생성할 수 있지만 가상 카메라 경로 설정에 긴 계산 시간이 필요하다. 반대로, 짧은 시간 윈도우는 계산 시간을 줄이지만 돌출성이 큰 주요 객체를 따르지 않게 되어 비 최적인 경로가 설정될 수 있다.
이에 따라, 사용자가 보기 방향을 변경한 후, 돌출성의 영역 대신 순간적으로 사용자 지정 지점을 추적한 다음, 점차적으로 다시 주요 객체가 존재하는 지역을 추적하도록 경로를 설정하는 것이 바람직할 수 있다.
즉, S220의 윈도우 설정 단계는 Wi 또는 그 이후의 시간 윈도우의 영상 프레임들에서 해당 특정 부위 또는 방향을 포함하는 가상 카메라 경로(입력 반영 경로)를 설정하되, 입력 반영 경로에서 점차적으로 제1 맵 및 제2 맵을 이용한 가상 카메라 경로로 전환되도록 가상 카메라 경로를 설정하는 단계(이하, "입력 반영 설정 단계"라 지칭함)를 포함할 수 있다.
이러한 입력 반영 설정 단계를 따를 경우, 매우 짧은 시간의 시간 윈도우 조차도 경로 품질을 크게 떨어뜨리지 않으므로, 사용자가 시선 방향을 바꾸는 순간에 짧은 시간의 시간 윈도우를 사용하고 점차적으로 시간 윈도우의 시간을 증가시킨다.
즉, 입력 반영 설정 단계는 Wi 또는 그 이후의 시간 윈도우에 대해 해당 시간 윈도우에 포함된 연속하는 복수의 360도 영상 프레임의 개수를 점차적으로 늘리도록 설정할 수 있다.
정리하면, 영상 플레이어 스레드가 현재 시간 윈도우에 대한 NFOV 비디오를 재생하는 동안, 경로 탐색기 스레드는 다음의 시간 윈도우에 대한 최적 경로를 찾는다. 이때, 대기 시간을 줄이기 위해, 사용자의 상호 작용이 발생한 직후에 작은 시간 윈도우를 사용하되, 점차 시간 윈도우의 시간을 증가시킨다.
특히, 현재 프레임부터 τ초 후에 가장 가까운 키 프레임까지의 프레임들을 첫 번째 시간 윈도우로 설정할 수 있다. 이때, τ는 자동 탐색을 재개하기 전에 짧은 지연을 주기 위해 사용된다.
한편, 실험을 통해, 사용자가 한 번이 아닌 여러 번 연속하여 마우스를 드래그하여보기 방향을 변경하는 경우가 많다는 것이 발견됐다. 특히, 마우스 드래그를 하는 중에 보기 방향이 변경되면, 사용자는 불편함을 느낄 수 있다. 이에 따라, 연속적인 마우스 드래그 중의 보는 방향의 변경을 방지하기 위해, τ=0.5로 설정함으로써 15개 내지 18개의 프레임을 가지는 제1 시간 윈도우를 만들었다.
도 12는 대화형 경로 업데이트의 작동 방식에 대한 일 예를 나타낸다.
제1 시간 윈도우에서는 돌출성과 관계없이 현재 위치에서 옵티컬 플로우를 추적하도록 한다. 따라서, 영상 플레이어 스레드는 단순히 제1 시간 윈도우를 재생하고, 경로 찾기 스레드는 다음 시간의 시간 윈도우(제2 시간 윈도우)를 위한 가상 카메라 경로를 계산한다. 도 12를 참조하면, 실험에서, 제2 시간 윈도우의 크기를 5개의 키 프레임으로 설정하고 100에 도달 할 때까지 각 시간 윈도우의 크기를 두 배로 늘렸다.
한편, S220에서, 사용자 의도를 반영하는 가상 카메라 경로는 다음과 같이 얻어질 수 있다. 우선, 사용자의 지정 보기 방향의 중심점의 픽셀 좌표를 q로 나타낸다. 즉, q는 사용자가 시청하고자 하는 지점이라고 가정한다.
이후, 대화형 경로 업데이트를 위해 다음과 같은 기준을 고려한다.
1) q가 돌출성이 높은 영역(일정 이상) 내에 있다면, 갱신된 경로는 해당 점 근처의 가장 돌출성이 큰 객체를 따라야 한다.
2) q가 돌출성이 낮은(일정 미만) 영역에 있더라도, 사용자가 여전히 그 방향을 보고 싶어한다고 가정한다. 따라서, 일정 시간 동안 사용자가 지정한 방향이 표시되어야 한다.
이러한 기준을 만족시키기 위해, 식(2)를 하기 식(10)과 같이 수정함으로써 사용자 지정 포인트를 다음과 같이 반영한다.
이때, t0는 현재 시간 윈도우에서의 첫 번째 키 프레임의 인덱스이고, 오른쪽 둘째 항의 qt는 옵티컬 플로우를 누적하여 계산한 t 번째 키 프레임의 q에 해당하는 2차원 픽셀 좌표이다. 즉, 다음 윈도우에 대해, 추가적인 하드 제약 pt0=qt0를 사용한다.
ωt는 시간이 지남에 따른 가중치로서, 처음에는 1이고 점차 0으로 감쇠한다. 특히, ωt를 하기 식(11)과 같이 정의할 수 있다.
이때, u는 자동 탐색을 다시 시작하는 키 프레임의 인덱스이고, σ는 돌출성에 따라 결정되는 감속 속도를 제어하는 매개 변수이다. 사용자 지정 지점의 돌출성이 높으면(일정 이상) σ를 작게 설정하여 ωt가 빠르게 0으로 줄어들며, 경로가 기준 1)을 만족하는 가장 돌출성이 큰 객체를 따라 가게 된다.
반면, 사용자 지정 포인트의 돌출성이 낮으면(일정 미만), σ를 크게 설정하여 경로가 기준 2)를 만족하는 더 긴 시간 동안 사용자가 지정한 지점에 머무르도록 한다. 특히 σ를 하기 식(12)와 같이 정의할 수 있다.
이때, α는 ωt의 감쇠 속도를 제어하는 매개 변수(실험 시, α=10로 설정함)이다. ε은 식(11)에서 0에 의한 나눗셈을 방지하기 하기 위한 상수(실험 시, ε를 설정함)이다.
도 13은 복수의 360도 영상(도 13(a))과, 그 중의 돌출성이 가장 큰 중요 객체를 보여주는 NFOV 영상(도 13(b))과, 사용자 상호 작용에 의해 시선 방향이 바뀌는 시간 그래프(도 13(c)의 일 예를 각각 나타낸다.
도 13(c)에서, y축은 360도 영상의 수평 각이다. 파란색 실선은 설정된 가상 카메라 경로를 나타내고, 점선은 사용자 상호 작용에 의해 시선 방향이 변경된 순간을 나타낸다. 즉, 점선 오른쪽의 파란색 실선은 사용자 상호 작용 이후에 업데이트된 경로를 나타낸다.
<실험>
Matlab 및 C++을 사용하여, S210 및 S220을 구현했다. 옵티컬 플로우를 추정산하기 위해 [Liu 2009], 돌출성을 추정하기 위해 [Zhou et al. 2014]에서 각각 제시하는 실행 파일을 사용했다. 두 실행 파일은 모두 Matlab과 C++을 사용하여 구현되었으며, 해당 웹 사이트에 접속하여 사용할 수 있다.
단계 | 시간 |
1분의 360도 영상에 대한 전처리 | |
소계 | 177분 |
옵티컬 플로우 계산 | 10분 |
돌출성 계산 | 166분 |
지역 돌출성 계산 | 0.37초 |
100개 키 프레임들에 대한 경로 설정 | |
초기 설정 | 3.58초 |
NFOV 인식 설정 | 2.14초 |
평탄화된 경로 설정 | 0.04초. |
표 1은 각 단계에서 소요되는 연산 시간의 일 예를 나타낸다. 이때, 100개의 키 프레임은 초당 30 프레임의 영상으로, 약 13초에 해당한다.
표 1의 연산 시간은 Intel Core-i7 3.7GHz CPU 및 32GB RAM이 장착된 PC에서 측정되었다. S210의 전처리 단계는 옵티컬 플로우 및 돌출성의 계산으로 인해 연산 시간이 오래 걸린다. 반대로, S220의 가상 카메라 경로 설정 단계는 온라인 방식의 경로 찾기가 가능할 정도로 빠르다. S220의 가상 카메라 경로 설정은 초당 30 프레임 영상 약 13초에 해당하는 100개의 키 프레임에 대해 5.8초 가 소요된다. 가상 카메라 경로 설정은 사용자 상호 작용 후 즉시로 경로를 업데이트할 수 있도록 5개의 키 프레임에 대해 0.3초가 소요된다. 다만, 이러한 구현은 최적화되지 않은 실험 상황에서의 결과이며, 코드 최적화와 더 효율적인 옵티컬 플로우 및 돌출성 추정 방법을 채택함으로써 그 연산 시간을 더 줄일 수 있다.
도 14는 복수의 주요 객체에 대한 일 예를 나타낸다. 도 14(a)는 종래의 평탄화 조건을 사용한 경우의 결과를, 도 14(b)는 본 발명에 따른 식 (4)를 사용한 경우의 결과를 각각 나타낸다. 다만, 도 14(a) 및 도 14(b)에서, 각 프레임은 시간 순서에 따라 왼쪽에서부터 오른쪽으로 표시된다.
도 14는 여러 개의 빠르게 움직이는 주요 객체가 있는 360도 영상에 대한 결과를 보여준다. 두 결과 모두 사용자 상호 작용이 없이 상황에서 얻은 결과이다. 평탄화 조건의 효과를 보다 명확하게 나타내기 위해, FOV 인식 경로 설정 단계(S222)를 수행하지 않았다. 두 결과 모두 처음에 왼쪽의 빨간 선수를 추적한다. 본 발명에 따른 우리의 결과는, 도 14(b)에 도시된 바와 같이, 옵티컬 플로우를 반영하는 평탄화 조건 덕분에 장면의 끝까지 해당 선수를 계속 추적한다. 하지만, 종래의 평탄화 조건을 사용한 결과, 도 14(a)에 도시된 바와 같이, 해당 선수를 끝까지 추적하지 못하고 다른 영역으로 이동한다. 즉, 종래의 평탄화 조건을 사용할 경우 빠르게 이동하는 객체를 추적하지 못하는 반면, 본 발명에 따른 평탄화 조건을 사용한 경우, 빠르게 이동하는 객체라도 끝까지 성공적으로 추적할 수 있다.
도 15는 식(2)에서 돌출성에 대한 조건 항과 일시적인 평탄 조건(temporal smoothness) 항에 대한 균형을 제어하는 ωo의 효과를 나타내는 일 예이다. 도 15(a)는 ωo=12, 도 15(b)는 ωo=0.1인 경우의 NFOV 영상을 각각 나타낸다. 다만, 도 15(a) 및 도 15(b)에서, 각 프레임은 시간 순서에 따라 왼쪽에서부터 오른쪽으로 표시된다.
즉, 작은 ωo는 경로가 다른 이벤트들 사이(주요 객체들 사이)를 빠르게 이동하게 점핑(jumping)하는 반면, 큰 ωo는 이러한 점핑을 방지하여 경로를 보다 안정하게 만든다.
도 16은 종래의 Deep 360 Pilot 방식과 본 발명에 대한 결과의 일 예를 나타낸다. 도 16(a)는 종래의 Deep 360 Pilot 방식, 도 16(b)는 본 발명에 따른 결과를 각각 나타낸다. 다만, 도 16(a) 및 도 16(b)에서, 각 프레임은 시간 순서에 따라 왼쪽에서부터 오른쪽으로 표시된다.
도 16(a)를 참조하면, Deep 360 Pilot 방식은 순환 신경망(RNN)을 사용하여 따라야 할 주요 객체를 찾는데, 훈련된 RNN이 여러 프레임을 사용하더라도 주요 객체를 선택할 때 객체의 동작을 고려하지 않다. 그 결과, Deep 360 Pilot은 제1 주요 객체를 보여주고 다른 제2 주요 객체에게 점핑한 다음 짧은 시간 내에 다시 원래 제1 객체에게로 돌아간다.
반면, 도 16(b)를 참조하면, 본 발명은 옵티컬 플로우를 반영하여 객체의 동작을 명시적으로 고려하므로, 주요 객체들 사이를 점핑하지 않고 보다 안정적인 카메라 경로를 설정한다.
도 17은 종래의 AutoCam 방식과 본 발명에 대한 결과의 일 예를 나타낸다. 도 17(a)는 종래의 AutoCam 방식, 도 16(b)는 본 발명에 따른 결과를 각각 나타낸다. 다만, 도 17(a) 및 도 17(b)에서, 각 프레임은 시간 순서에 따라 왼쪽에서부터 오른쪽으로 표시된다.
도 17(a)를 참조하면, AutoCam의 방식의 결과는 동적으로 움직이는 자전거를 추적하지 못하고 동일한 방향을 계속 보여 준다. 즉, AutoCam 방식은 컴퓨팅 캡처 성능 스코어가 상대적으로 긴 비디오 시퀀스를 필요로 하기 때문에 카메라 경로가 5초 동안 30도 미만으로 이동하는 것을 제한한다. 그 결과, AutoCam 방식은 현장을 빠르게 지나가는 자전거를 추적하지 못하고 동일한 방향을 계속 보여준다.
반면, 도 17(b)를 참조하면, 본 발명은 효과적인 경로 추적으로 인해 자전거에 대해 보다 반응적으로 추적한다.
도 18은 대화형 경로 업데이트의 일 예를 나타낸다. 도 18(a)은 360도 영상으로서, 빨간색 원은 사용자 상호 작용으로 지정된 보기 방향을 나타낸다. 도 18(b)는 각종 경로를 나타낸다. 도 18(b)에서 녹색 곡선은 사용자 상호 작용 없이 계산한 가상 카메라 경로를 나타낸다. 아이가 돌출성이 가장 큰 중요 객체이기 때문에, 아이를 따라가도록 경로가 생성된다. 검은색 화살표는 사용자 상호 작용으로 벽을 오르는 남성쪽으로 보는 방향이 바뀌는 순간을 나타낸다. 도 18(b)에서 파란색 곡선(실선)과 빨간색 곡선(점선)은 사용자 상호 작용을 통해 업데이트된 카메라 경로를 나타낸다. 각 곡선은 경로가 사용자 상호 작용에 의해 영향을 받는 기간을 제어하는 α에 대해 다른 값을 사용하여 계산된다. 파란 곡선의 경우, 사용자가 지정한 위치에 길게 머물도록 α=30을 사용한다. 적색 곡선의 경우 α=5를 사용하여 돌출성이 더 큰 객체로 경로가 더 빠르게 이동한다. 초록색 곡선과 빨간색 곡선은 모두 녹색 곡선과 똑같이 추적한다. 사용자가 벽을 오르는 남자를 향한 관찰 방향을 변경 한 후, 파란색 곡선은 아이 대신 남자를 추적하기 시작한다. 빨간 곡선도 남자를 잠시 추적하고, 아이가 남자보다 더 돌출성이 큰 객체이므로 다시 아이에게 돌아간다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되지 않으며, 후술되는 청구범위 및 이 청구범위와 균등한 것들에 의해 정해져야 한다.
100: 영상 재생 장치
110: 입력부 120: 통신부
130: 표시부 140: 저장부
150: 제어부
110: 입력부 120: 통신부
130: 표시부 140: 저장부
150: 제어부
Claims (15)
- 360도 영상의 일부 영역을 재생하는 방법으로서,
복수의 360도 영상 프레임 각각의 복수 픽셀에 대해, 옵티컬 플로우(optical flow)과 돌출성(saliency)을 각각 계산하는 전처리 단계;
계산된 옵티컬 플로우와 돌출성을 이용하여 각 360도 영상 프레임에서의 가상 카메라 경로를 설정하는 설정 단계; 및
설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생하는 재생 단계;
를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제1항에 있어서,
360도 영상의 재생 도중 사용자의 입력이 발생하는 경우,
상기 설정 단계는 사용의 입력 방향을 기반으로 한 가상 카메라 경로를 설정하고,
상기 재생 단계는, 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생하는 것을 특징으로 하는 360도 영상 재생 방법 - 제1항에 있어서, 상기 전처리 단계는,
연속하는 360도 영상 프레임 중 비 연속하는 복수의 특정 프레임(키 프레임)의 픽셀들에 대해 돌출성을 계산하여 각 키 프레임에 대한 맵(제2 맵)을 생성하는 단계; 및
임의의 키 프레임과 그 다음의 키 프레임 사이에 나머지 360도 영상 프레임(중간 프레임)의 픽셀들에 대해 옵티컬 플로우를 누적 계산하여 각 키 프레임에 대한 맵(제1 맵)을 생성하는 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제3항에 있어서,
상기 키 프레임은 연속하는 360도 영상 프레임 중 n(단, n은 1보다 큰 자연수) 배수째의 프레임인 것을 특징으로 하는 360도 영상 재생 방법. - 제3항에 있어서,
상기 설정 단계는, 상기 제2 맵에서 돌출성이 일정 이상인 객체(주요 객체)를 추적하되 상기 제1 맵을 반영함으로써 주요 객체의 움직임 반영하는 제1 가상 카메라 경로를 설정하는 제1 설정 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제5항에 있어서,
상기 제1 가상 카메라 경로는 주요 객체가 복수개인 경우의 점핑 추적을 방지하는 경로인 것을 특징으로 하는 360도 영상 재생 방법. - 제5항 또는 제6항에 있어서,
상기 전처리 단계는, 각 키 프레임에서 복수의 지역에 대한 돌출성(지역 돌출성)을 해당 키 프레임의 제2 맵을 이용하여 계산하는 단계를 더 포함하며,
상기 설정 단계는 각 지역 돌출성을 이용하여 제2 가상 카메라 경로를 설정하는 제2 설정 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제7항에 있어서,
상기 제2 설정 단계는 돌출성이 가장 큰 주요 객체(중요 객체)의 일정 거리 내 주변에 주요 객체(주변 객체)가 있는 경우, 중요 객체 및 주변 객체가 상기 일부 영역에 포함되도록 제2 가상 카메라 경로를 설정하는 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제7항에 있어서,
상기 설정 단계는 제2 가상 카메라 경로의 이동 속도 및 가속도를 반영함으로써 제2 가상 카메라 경로를 평탄화한 제3 가성 카메라 경로를 설정하는 제3 설정 단계를 더 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제3항에 있어서,
상기 설정 단계는, 연속하는 복수의 360도 영상 프레임(제i+1 영상 프레임들)을 제i+1 시간 윈도우(Wi+1)(단, i는 2보다 큰 자연수)에 포함시키고 제i+1 영상 프레임들에서의 가상 카메라 경로를 설정하는 윈도우 설정 단계를 포함하고,
상기 재생 단계는, 제i 시간 윈도우(Wi)에 포함되도록 기 설정된 연속하는 복수의 360도 영상 프레임(제i 영상 프레임들)에서의 가상 카메라 경로를 따라 2차원 영상을 재생하는 윈도우 재생 단계를 포함하며,
상기 윈도우 재생 단계의 수행 중에 상기 윈도우 설정 단계의 수행이 시작 또는 완료되는 것을 특징으로 하는 360도 영상 재생 방법. - 제10항에 있어서,
상기 재생 단계의 수행 중에 360도 영상의 특정 부위 또는 방향에 대한 선택이 입력(선택 입력)되는 경우,
상기 윈도우 설정 단계는, Wi 또는 그 이후의 시간 윈도우의 영상 프레임들에서 해당 특정 부위 또는 방향을 포함하는 가상 카메라 경로(입력 반영 경로)를 설정하되, 입력 반영 경로에서 점차적으로 제1 맵 및 제2 맵을 이용한 가상 카메라 경로로 전환되도록 가상 카메라 경로를 설정하는 입력 반영 설정 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제11항에 있어서,
상기 입력 반영 설정 단계는 Wi 또는 그 이후의 시간 윈도우에 대해 해당 시간 윈도우에 포함된 연속하는 복수의 360도 영상 프레임의 개수를 점차적으로 늘리도록 설정하는 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제12항에 있어서,
상기 입력 반영 설정 단계는, 선택 입력된 영역의 돌출성 크기에 따라 시간 윈도우에 포함되는 360도 영상 프레임의 개수를 조절하는 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 제13항에 있어서,
상기 입력 반영 설정 단계는, 선택 입력된 영역의 돌출성 크기가 클수록 시간 윈도우에 포함되는 360도 영상 프레임 개수의 증가 속도를 줄이는 단계를 포함하는 것을 특징으로 하는 360도 영상 재생 방법. - 360도 영상의 일부 영역을 재생하는 장치로서,
연속하는 복수의 360도 영상 프레임 각각의 픽셀들에 대해, 옵티컬 플로우(optical flow) 나타내는 맵(제1 맵)과 돌출성(saliency)를 나타내는 맵(제2 맵)을 저장한 저장부; 및
제1 맵과 제2 맵을 이용하여 각 360도 영상 프레임에서의 가상 카메라 경로를 설정하고, 설정된 가상 카메라 경로를 따라 360도 영상의 일부 영역을 재생하도록 제어하는 제어부;
를 포함하는 것을 특징으로 하는 360도 영상 재생 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190052964A KR102179243B1 (ko) | 2019-05-07 | 2019-05-07 | 360도 영상 재생 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190052964A KR102179243B1 (ko) | 2019-05-07 | 2019-05-07 | 360도 영상 재생 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102179243B1 true KR102179243B1 (ko) | 2020-11-16 |
Family
ID=73679912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190052964A KR102179243B1 (ko) | 2019-05-07 | 2019-05-07 | 360도 영상 재생 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102179243B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180118499A (ko) * | 2017-04-21 | 2018-10-31 | 삼성전자주식회사 | 영상 표시 장치 및 영상 표시 방법 |
-
2019
- 2019-05-07 KR KR1020190052964A patent/KR102179243B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180118499A (ko) * | 2017-04-21 | 2018-10-31 | 삼성전자주식회사 | 영상 표시 장치 및 영상 표시 방법 |
Non-Patent Citations (1)
Title |
---|
강경국 외 1인. 360도 비디오 재생을 위한 자동 패딩. 2018년 한국소프트웨어종합학술대회 논문집.2018.12., pp.1238-1240* * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200227089A1 (en) | Method and device for processing multimedia information | |
US11756223B2 (en) | Depth-aware photo editing | |
US10609284B2 (en) | Controlling generation of hyperlapse from wide-angled, panoramic videos | |
US8421819B2 (en) | Pillarboxing correction | |
US9824426B2 (en) | Reduced latency video stabilization | |
CN107624243B (zh) | 通过帧选择的实时超延时视频创建 | |
CN111684393A (zh) | 在虚拟、增强或混合现实环境中生成和显示3d视频的方法和系统 | |
US11756279B1 (en) | Techniques for depth of field blur for immersive content production systems | |
US20220078358A1 (en) | System for automatic video reframing | |
CN110650368A (zh) | 视频处理方法、装置和电子设备 | |
US20110273466A1 (en) | View-dependent rendering system with intuitive mixed reality | |
EP3827416B1 (en) | Lighting estimation for augmented reality | |
US20110273369A1 (en) | Adjustment of imaging property in view-dependent rendering | |
US11245887B2 (en) | Electronic device and operation method therefor | |
JP2006003871A (ja) | 画像フレーム処理方法、装置、レンダリングプロセッサおよび動画像表示方法 | |
US20180336927A1 (en) | Seamless Output Video Variations for an Input Video | |
US9934818B1 (en) | Automated seamless video loop | |
Kang et al. | Interactive and automatic navigation for 360 video playback | |
JP2009110536A (ja) | 画像フレーム処理方法、装置、レンダリングプロセッサおよび動画像表示方法 | |
WO2022116962A1 (zh) | 视频播放方法、装置及电子设备 | |
US20240007588A1 (en) | Slow-motion video recording method and device | |
US10062409B2 (en) | Automated seamless video loop | |
US20230217067A1 (en) | Producing and adapting video images for presentation displays with different aspect ratios | |
KR102179243B1 (ko) | 360도 영상 재생 방법 및 장치 | |
CN117395386A (zh) | 一种虚拟延时视频的交互拍摄方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |