KR102444292B1 - 360도 영상을 처리하는 방법 및 장치 - Google Patents

360도 영상을 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR102444292B1
KR102444292B1 KR1020180045741A KR20180045741A KR102444292B1 KR 102444292 B1 KR102444292 B1 KR 102444292B1 KR 1020180045741 A KR1020180045741 A KR 1020180045741A KR 20180045741 A KR20180045741 A KR 20180045741A KR 102444292 B1 KR102444292 B1 KR 102444292B1
Authority
KR
South Korea
Prior art keywords
degree image
motion vector
motion vectors
image
rotation information
Prior art date
Application number
KR1020180045741A
Other languages
English (en)
Other versions
KR20180127185A (ko
Inventor
앨버트 사-가리가
앨레산드로 반디니
토마소 매스트리
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to CN201880032626.7A priority Critical patent/CN110622210A/zh
Priority to PCT/KR2018/005440 priority patent/WO2018212514A1/ko
Priority to DE112018002554.3T priority patent/DE112018002554T5/de
Priority to US16/606,004 priority patent/US20210142452A1/en
Publication of KR20180127185A publication Critical patent/KR20180127185A/ko
Application granted granted Critical
Publication of KR102444292B1 publication Critical patent/KR102444292B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • G06T5/006
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • G06T5/002
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • H04N23/685Vibration or motion blur correction performed by mechanical compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/695Control of camera direction for changing a field of view, e.g. pan, tilt or based on tracking of objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Image Analysis (AREA)
  • Studio Devices (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Heating, Cooling, Or Curing Plastics Or The Like In General (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 개시는, 360도 영상에 대한 복수의 모션 벡터를 획득하고, 필터링을 통해 상기 복수의 모션 벡터 중 상기 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하며, 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하고, 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정하는, 360도 영상을 처리하는 방법에 관한 것이다.

Description

360도 영상을 처리하는 방법 및 장치 {METHOD AND APPARATUS FOR PROCESSING 360 DEGREE IMAGE}
본 개시는 360도 영상을 처리하는 방법, 360도 영상을 처리하는 장치 및 360도 영상을 처리하는 방법을 수행하는 프로그램이 기록된 기록매체에 관한 것이다.
영상 처리 기술이 발달함에 따라, 사용자에게 보다 실감나는 영상을 제공하기 위한 기술 중 하나로 360도 영상을 제공하는 방법에 대한 연구가 활발하게 이루어지고 있다. 360도 영상 제공 시, 문제점은 일명 가상 현실(virtual reality, VR) 병으로 이는 사용자가 360도 영상을 시청하는 동안 멀미와 유사한 증상을 느끼는 것이다. VR 병은 사용자가 360도 영상을 시청하는 동안 모순된 감각을 입력 받아 발생할 수 있다. VR 병은 바람직하지 않은 카메라 움직임을 보정하여 영상을 안정화함으로써 완화될 수 있다.
한편, 영상의 안정화는 영상의 사후 처리 단계에서 수행될 수 있으며 대부분의 영상 안정화 기술은 두 가지 별도의 작업을 수행해야 한다. 첫 번째로, 의도하지 않은 카메라의 움직임을 추정된 카메라 궤적으로부터 검출하고 억제하는 작업이 수행되어야 하고, 두 번째로 카메라의 안정된 궤적과 원래의 영상 시퀀스를 사용하여 새로운 영상 시퀀스를 생성하는 작업이 수행되어야 한다. 그러나 보정되지 않은 단일 시점 이미징 시스템에서 카메라 궤적을 추정하기 어렵고, 안정화 된 카메라 뷰에서 새로운 이미지를 생성하는 것 또한 신뢰성 있게 수행되기 어렵다는 점에서, 360도 영상을 안정화시키기 위한 추가적인 연구가 필요한 실정이다.
개시된 실시예는 360도 영상의 모션 벡터를 회전 정보로 변환하고, 이를 이용하여 360도 영상에 포함된 흔들림으로 인한 왜곡을 보정함으로써 영상을 안정화시킬 수 있는 360도 영상을 처리하는 방법 및 장치를 제공하고자 한다.
일 실시예에 따른 360도 영상을 처리하는 방법은, 360도 영상에 대한 복수의 모션 벡터를 획득하는 단계; 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하는 단계; 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하는 단계; 및 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정하는 단계를 포함할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 복수의 모션 벡터 중 프로젝션의 종류에 따라 기 결정된 영역에 포함된 모션 벡터를 제거하는 단계를 포함할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하는 단계; 생성된 마스크를 360도 영상에 적용하여, 360도 영상에서 텍스쳐가 존재하지 않는 영역을 결정하는 단계; 및 복수의 모션 벡터 중 텍스쳐가 존재하지 않는 영역에 포함된 모션 벡터를 제거하는 단계를 포함할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 기 설정된 오브젝트 검출 프로세스를 통해 360도 영상으로부터 적어도 하나의 움직이는 오브젝트를 검출하는 단계; 및 복수의 모션 벡터 중 검출된 오브젝트와 연관된 모션 벡터를 제거하는 단계를 포함할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 적어도 하나의 모션 벡터를 결정하는 단계는, 복수의 모션 벡터 중 360도 영상이 투영된 단위 구(unitsphere) 상의 반대편에 위치한 모션 벡터가 서로 평행하고, 반대 부호를 가지며, 특정 임계값 내의 크기를 갖는 모션 벡터를 글로벌 회전을 나타내는 모션 벡터로 결정할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하는 단계; 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하는 단계; 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는 단계를 포함할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 선택된 빈과 선택된 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 3차원 회전 정보를 획득할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 3차원 회전 정보로 획득할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법에 있어서, 3차원 회전 정보를 획득하는 단계는, 기 생성된 학습 네트워크 모델을 이용하여, 복수의 모션 벡터를 기초로 3차원 회전 정보를 획득할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 방법은, 촬영 장치를 통해 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하는 단계를 더 포함하고, 360도 영상의 왜곡을 보정하는 단계는, 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 360도 영상의 왜곡을 보정할 수 있다.
일 실시예에 따른 360도 영상을 처리하는 장치는 하나 이상의 인스트럭션을 저장하는 메모리; 및 메모리에 저장된 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고, 프로세서는, 360도 영상에 대한 복수의 모션 벡터를 획득하고, 필터링을 통해 상기 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정하며, 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 360도 영상에 대한 3차원 회전 정보를 획득하고, 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다.
도 1은 일 실시예에 따른 360도 영상이 저장되는 포맷을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 보다 구체적으로 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 360도 영상에서의 모션 벡터를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 영상 처리 장치가 필터링을 통해 복수의 모션 벡터를 기 설정된 영역의 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 텍스쳐 프리 영역에 포함된 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전이 아닌 것으로 판단되는 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전을 나타내는 모션 벡터를 결정하는 방법을 설명하기 위한 흐름도이다.
도 9는 일 실시예에 따른 영상 처리 장치가 모션 벡터를 3차원 회전으로 변환하는 방법을 설명하기 위한 흐름도이다.
도 10은 일 실시예에 따른 360도 영상의 모션 벡터를 도시한 도면이다.
도 11은 일 실시예에 따른 복수의 모션 벡터를 복수의 빈으로 분류한 결과를 설명하기 위한 표이다.
도 12는 일 실시예에 따라 도 11에서 분류된 복수의 모션 벡터를 히스토그램으로 표시한 도면이다.
도 13은 일 실시예에 따른 영상 처리 장치가 360도 영상에 대해 모션 벡터를 기초로 획득된 회전 정보 및 흔들림에 관한 센싱 데이터를 조합하여 회전 정보를 재결정하는 방법을 설명하기 위한 흐름도이다.
도 14는 일 실시예에 따른 영상 처리 장치의 블록도이다.
도 15는 일 실시예에 따른 적어도 하나의 프로세서를 설명하기 위한 도면이다.
도 16은 일 실시예에 따른 데이터 학습부의 블록도이다.
도 17는 일 실시예에 따른 데이터 인식부의 블록도이다.
도 18은 다른 실시예에 따른 영상 처리 장치의 블록도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되지는 않는다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 항목들의 조합 또는 복수의 관련된 항목들 중의 어느 하나의 항목을 포함한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 특성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 일 실시예에 따른 360도 영상이 저장되는 포맷을 설명하기 위한 도면이다.
도 1을 참조하면, 360도 영상은 다양한 포맷으로 저장될 수 있다. 예를 들어, 단위 구체 표현(unitsphere representation)에 따르면, 360도 영상의 프레임을 구성하는 픽셀들은 가상 구(virtual sphere, 110)의 표면상의 각 픽셀의 위치를 정의하는 3차원 좌표 시스템에서 인덱싱 될 수 있다.
다만, 이는 일 예일 뿐, 다른 예에 따라 큐브 맵 프로젝션(cube map projection, 120) 또는 등변 직사각형 프로젝션(equirectangular projection, 130)과 같은 등가의 2차원 표현이 사용될 수도 있다. 큐브 맵 프로젝션(120)에서, 가상 큐브의 각 면에 대한 영상 데이터는 90 ° × 90 ° 시야에 걸친 2 차원 이미지로서 저장될 수 있다. 또한, 등변 직사각형 프로젝션(130)에서, 영상 데이터는 360 ° × 180 ° 시야에 걸친 단일 2 차원 이미지로서 저장될 수 있다.
한편, 도 1에서 '상부', '하부', '전면', '후면', '좌측' 및 '우측'이라는 라벨은 전술한 등가의(equivalent) 프로젝션에서 각각 대응되는 360도 영상의 영역을 나타낸다. 다만, 도 1에 도시된 포맷들은 일 예일 뿐, 다른 실시예에 따라 360도 영상은 도 1에 도시된 포맷과 상이한 포맷으로 저장될 수 있다.
도 2는 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 설명하기 위한 흐름도이다.
단계 S210에서, 영상 처리 장치는 360도 영상에 대한 복수의 모션 벡터를 획득할 수 있다. 일 실시예에 따른, 360도 영상에 대한 2차원 영상 데이터에서의 모션 벡터의 예는 도 4에 도시되어 있다.
도 4는 일 실시예에 따른 360도 영상에서의 모션 벡터를 설명하기 위한 도면이다.
모션 벡터는 레퍼런스 프레임(401)과 현재 프레임(402) 사이의 이미지의 소정의 영역(411)의 이동(displacement)을 설명하는 정보이다. 본 실시예에서는, 영상의 직전 프레임이 레퍼런스 프레임(401)으로서 선택되지만, 다른 실시예에서는 연속적이지 않은 프레임을 레퍼런스 프레임으로 사용하여 모션 벡터를 계산할 수도 있다. 본 실시예에서는 360도 영상의 프레임의 넓은 시야를 최대한 활용하기 위해, 프레임 전체에 걸쳐 균일하게 분포된 지점에서 모션 벡터가 획득될 수 있다.
한편, 도 4에서는 2 차원 모션 벡터 V가 도시되어 있지만, 다른 실시예에따라, 복수의 3 차원 모션 벡터가 획득될 수 있다. 예를 들어, 현재 프레임에 대한 영상 데이터가 도 1에 도시 된 단위 구 표현을 사용하여 저장되는 경우, 3차원 모션 벡터가 획득될 수 있다.
본 실시예에서 획득된 복수의 모션 벡터는 360도 영상의 프레임의 영상 데이터를 인코딩하는 동안 이전에 생성된 모션 벡터이다. 모션 벡터는 MPEG 4.2 또는 H.264 인코딩과 같은 기존 영상 인코딩 프로세스에서 일반적으로 생성되고 저장될 수 있다. 영상의 인코딩 동안, 모션 벡터는 다음 프레임을 그리기(draw) 위해 이전 프레임의 블록을 재사용함으로써 영상 데이터를 압축하는 데 사용될 수 있다. 모션 벡터를 생성하는 방법에 대한 구체적인 설명은 생략하도록 한다.
한편, 이전에 생성된 모션 벡터는 저장된 360도 영상 파일로부터 검색될 수 있다. 이러한 방식으로 모션 벡터를 재사용하면 전체 처리 부담이 줄어들 수 있다. 다른 실시예에 따라, 360도 영상 파일이 모션 벡터를 포함하지 않는 경우, 모션 벡터는 단계 S210에서 생성될 수 있다.
단계 S220에서, 영상 처리 장치는 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정할 수 있다.
여기에서 '글로벌 회전'이란 영상의 일부에만 영향을 주는 로컬 회전과 달리 프레임 전체에서 영상에 영향을 주는 회전을 의미한다. 글로벌 회전은 영상이 캡쳐되는 동안 카메라가 회전된 결과이거나 동일한 방식으로 프레임 내의 큰 부분이 카메라 주위를 이동한 결과일 수 있다. 예를 들어, 움직이는 차량에서 360도 영상을 촬영하는 경우 차량의 회전으로 인해 백그라운드에서 글로벌 회전이 발생할 수 있으며 카메라 자체의 회전으로 인해 백그라운드 및 포어 그라운드에서 보이는 차량의 모든 부분에서 글로벌 회전이 발생할 수 있다. 회전은 프레임의 상당 부분에 영향을 줄 때 '글로벌 회전'으로 간주될 수 있다.
글로벌 회전을 나타내지 않는 모션 벡터의 예로는 장면에서 상대적으로 더 작은 움직임의 물체와 연관된 모션 벡터 또는 카메라를 기준으로 고정됨에 따라 카메라가 회전할 때 회전하지 않는 것으로 보이는 정적 물체와 연관된 모션 벡터가 포함될 수 있다.
일 실시예에 따른 영상 처리 장치는 필터링을 수행하여 복수의 모션 벡터 중 기 결정된 영역에 포함된 모션 벡터를 제거할 수 있다. 이에 대해서는 도 5를 참조하여 보다 구체적으로 후술하도록 한다.
또한, 다른 실시예에 따른 영상 처리 장치는 필터링을 수행하여 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하고, 생성된 마스크를 360도 영상에 적용하여 360도 영상에서 텍스쳐 프리(texture-free) 영역에 포함된 모션 벡터를 제거할 수 있다. 이에 대해서는 도 6을 참조하여 보다 구체적으로 후술하도록 한다.
또 다른 실시예에 따른 영상 처리 장치는 필터링을 수행하여 360도 영상에서 움직이는 오브젝트와 연관된 모션 벡터를 제거할 수 있다.
또 다른 실시예에 따른 영상 처리 장치는 단위 구 상의 반대편에 위치한 모션 벡터가 특정 조건을 만족하는지 여부를 판단하여, 해당 모션 벡터가 글로벌 회전을 나타내는지 여부를 판단하여 필터링을 수행할 수 있다. 이에 대해서는 도 7을 참조하여 보다 구체적으로 후술하도록 한다.
한편, 영상 처리 장치는 전술한 필터링 방법들 중 2개 이상을 조합하여, 복수의 모션 벡터 중 글로벌 회전을 나타내지 않는 모션 벡터를 제거할 수 있다.또한, 전술한 예시들은 모션 벡터를 필터링하는 방법의 일 예일 뿐, 다른 필터링방법이 사용될 수도 있다. 모션 벡터가 필터링 될 수 있는 다른 실시예는 정적 오브젝트 필터링, 백그라운드 플로우 서브트랙션(background flow subtraction)및 매뉴얼 필터링이 포함될 수 있으나, 이에 한정되지는 않는다. 정적 오브젝트 필터링에서는 한 프레임에서 다음 프레임으로 위치를 변경하지 않는 정적 오브젝트가 검출될 수 있으며, 정적 오브젝트와 연관된 모션 벡터가 필터링 될 수 있다. 360도 영상에서 발생할 수 있는 정적 오브젝트 유형의 예로는 렌즈의 검정색 픽셀 또는 카메라 앞에 있는 사용자의 손가락 등이 있다.
백그라운드 플로우 서브트랙션에서, 전체 영상에서 일정한 비율로 움직이는 백그라운드 픽셀들은 안정화 회전을 산출하기 위한 유용한 정보를 포함하지 않는 것으로 가정하여, 제외될 수 있다. 매뉴얼 필터링은 수동으로 모션 벡터를 필터링하는 작업자(human operator)를 포함할 수 있다.
단계 S230에서, 영상 처리 장치는 결정된 적어도 하나의 모션 벡터를 3차원 변환하여 360도 영상에 대한 3차원 회전 정보를 획득할 수 있다.
일 실시예에 따른 영상 처리 장치는 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류할 수 있다. 영상 처리 장치는 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈의 방향 및 거리를 변환하여, 3차원 회전 정보를 획득할 수 있다. 다만, 이는 일 예일 뿐, 다른 예에 따라 영상 처리 장치는 가장 많은 모션 벡터를 포함하는 빈과 해당 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 3차원 회전 정보를 획득할 수도 있다.
다른 실시예에 따른 영상 처리 장치는 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 3차원 회전 정보로 획득할 수도 있다.
또 다른 실시예에 따른 영상 처리 장치는 기 생성된 학습 네트워크 모델을 이용하여, 복수의 모션 벡터를 기초로 3차원 회전 정보를 획득할 수 있다.
예를 들어, 인간은 몸이 회전하는 경우, 환경에 대한 움직임에 의해 발생하는 이미지 쉬프트(움직임 벡터와 유사한)를 분석함으로써, 그들의 눈의 레벨을 유지하면서 시선을 안정화할 수 있다. 이와 유사 행동은 상대적으로 적은 수의 뉴런을 가지고 있는 파리와 같은 더 단순한 표본에서도 관찰될 수 있다.
뉴런은 감각 정보를 그들의 모터 시스템 요구 사항에 대응되는 포맷으로 변환할 수 있다. 따라서, AI(Artificial Intelligence) 기반의 실시 예에서, 살아있는 것들의 행동을 모방하고, 입력 데이터로서 모션 벡터를 이용하여 센서 회전 변환을 획득하는데 머신 러닝 메커니즘이 사용될 수 있다. 또한, AI 기반의 실시 예에서는, 특정 회전을 갖는 프레임에서의 모션 벡터의 패턴이 트레이닝된 학습 네트워크 모델과 같은 머신 러닝 시스템이 사용될 수 있다. 이러한 메커니즘은 살아있는 존재를 모방하는 경향이 있고, 복수의 모션 벡터를 입력으로 수신하여, 360도 영상을 안정화하기 위한 전체 회전(overall rotation)을 출력할 수 있다.
단계 S240에서, 영상 처리 장치는 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다.
일 실시예에 따른 영상 처리 장치는 3차원 회전 정보에 따라 360도 영상을 회전시킴으로써 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다. 또한, 영상 처리 장치는 보정된 360도 영상을 렌더링하여 표시하거나, 이후의 재생을 위해 이를 인코딩하여 저장할 수 있다.
도 3은 일 실시예에 따른 영상 처리 장치가 360도 영상을 처리하는 방법을 보다 구체적으로 설명하기 위한 흐름도이다.
실시 예에 따라, 도 3에 개시된 방법의 모든 단계들은 동일한 장치에서 수행될 수도 있고, 각각의 단계들이 상이한 장치들에서 수행될 수도 있다. 도 3에 도시된 임의의 단계는 실시 예에 따라 소프트웨어 또는 하드웨어로 수행될 수 있다. 하나 이상의 단계가 소프트웨어에서 수행되는 경우, 도 3에 개시된 방법을 수행하기 위한 장치는 하나 이상의 프로세서를 포함하는 프로세싱 유닛과, 프로세싱 유닛에 의해 해당 방법을 수행하도록 실행 가능한 컴퓨터 프로그램 명령을 저장한 컴퓨터 판독 가능 메모리를 포함할 수 있다.
단계 S310에서, 영상 처리 장치는 360도 영상의 현재 프레임에 대한 복수의 모션 벡터를 획득할 수 있다.
일 실시예에 따른 영상 처리 장치는 저장된 360도 영상 파일로부터 모션벡터를 검색하거나, 프레임 전체에 걸쳐 균일하게 분포된 지점에서 모션 벡터를 생성함으로써 복수의 모션 벡터를 획득할 수 있다.
한편, 단계 S310은 도 2를 참조하여 전술한 단계 S210과 대응될 수 있다.
단계 S320에서, 영상 처리 장치는 복수의 모션 벡터에 필터링을 수행할 수 있다. 특히, 단계 S320에서는 360도 영상의 글로벌 회전을 나타내지 않는 모션 벡터가 제거될 수 있도록 모션 벡터가 필터링 될 수 있다.
예를 들어, 영상 처리 장치는 필터링을 통해, 프레임에서 상대적으로 더 작은 움직임의 물체와 연관된 모션 벡터 또는 카메라를 기준으로 고정됨에 따라 카메라가 회전할 때 회전하지 않는 것으로 보이는 정적 물체와 연관된 모션 벡터를 제거할 수 있다. 모션 벡터를 필터링하는 다양한 방법의 예는 이후에 도 5 내지 도 7을 참조하여 보다 구체적으로 설명하도록 한다.
한편, 다른 실시예에 따라, 모션 벡터는 필터링되지 않을 수 있으며, 이 경우 단계 S320은 생략될 수 있다.
단계 S330에서, 영상 처리 장치는 모션 벡터를 3D(dimensional) 회전으로 변환할 수 있다.
일 실시예에 따른 영상 처리 장치는 복수의 모션 벡터를 필터링하여, 글로벌 회전을 나타내지 않는 모션 벡터를 제거한 후, 남아있는(remaining) 모션 벡터는 360도 영상을 안정화하기 위해 현재 프레임에 적용될 수 있는 3 차원 회전으로 변환될 수 있다.
예를 들어, 360도 영상은 등변 직사각형 프로젝션을 통해 2 차원의 영상 데이터로서 저장되고, 모션 벡터를 3 차원 회전으로 변환하기 위해 기-정의된 변환이 사용될 수 있다. 기-정의된 변환은 2 차원 프로젝션의 기하학에 기초하여 미리 정의될 수 있다. 본 실시예에서는, 다음의 수학식 1에 따른 변환이 사용될 수 있다.
[수학식 1]
Figure 112018039189856-pat00001
Figure 112018039189856-pat00002
Figure 112018039189856-pat00003
상기의 수학식 1에서, Rx, Ry 및 Rz는 각각 x, y 및 z 축에 대한 도 단위의 회전을 나타내며, width는 픽셀 단위의 시야(field of view)의 전체 폭을 나타내며, height는 픽셀 단위의 시야(field of view)의 전체 높이를 나타내며, 모션 벡터 v는 예를 들어, x축 방향으로 13픽셀 변환 및 y축 방향으로 8 픽셀 변환을 나타내는 (13, 8)로 표현될 수 있다. 본 실시예에서, 가로 방향의 프레임 폭은 36 픽셀이고, 픽셀 당 10 °에 해당하는 것으로 가정한다.
따라서 상기의 수학식 1을 사용하면 모션 벡터의 수평 성분을 (360/36) * 13 = 130 도의 z 축을 중심으로 등가의 회전으로 변환 할 수 있다. 또한, 모션 벡터의 수직 성분은 프레임에서의 모션 벡터의 위치에 따라 x축 또는 y 축을 중심으로 등가 회전으로 변환될 수 있다.
360도 영상을 안정화하는데 필요한 전체 회전(overall rotation)은 3 차원 회전, 즉 3 차원 공간에서의 회전으로 표현될 수 있다. 회전은 서로 수직인 축들, 예를 들어 도 1에 도시된 바와 같이 x, y 및 z 축과 같은 3 개의 분리된 회전 성분에 의해 표현될 수 있다. 단계 S330에서 획득된 회전은 카메라 흔들림을 효과적으로 보정하여 360도 영상을 안정화시킬 수 있음에 따라 안정화 회전(stabilising rotation)으로 지칭될 수 있다.
360도 영상을 안정화하기 위해 적용되는 전체 회전(overall rotation)은 다양한 방법으로 결정될 수 있다. 예를 들어, 각각의 모션 벡터는 상술한 바와 같이 등가의 회전으로 변환 될 수 있고, 전체 프레임에 걸친 평균 회전(예를 들어, 평균 또는 모드)이 전체 회전으로 간주될 수 있다. 일부 실시 예에서, 가우스 또는 메디안(median) 필터가 평균 또는 모드 값 주위의 이웃하는 값을 고려하여 평균을 취할 때 사용될 수도 있다. 또한, 다른 실시예에 따라, 평균 모션 벡터가 전체 프레임에 대해 계산될 수 있고, 평균 모션 벡터는 미리 정의된 변환을 사용하여 전체 회전으로 변환될 수 있다.
한편, 전술한 수학식 1은 다른 실시예에서 필요에 따라 수정될 수 있다. 예를 들어, 360도 영상이 단위 구 표현과 같은 3차원 포맷으로 저장되는 경우, 전술한 수학식 1은 수정될 수 있다.
단계 S340에서, 영상 처리 장치는 안정화된 영상을 생성하기 위해 영상 프로세싱 유닛에 3D 회전을 제공할 수 있다.
단계 S350에서, 영상 처리 장치는 현재 프레임의 영상 데이터에 3D 회전을 적용하여 안정화된 영상을 생성할 수 있다.
또한, 영상 처리 장치는 안정화된 영상을 렌더링하여 표시하거나, 이후의 재생을 위해 이를 인코딩하여 저장할 수 있다. 일부 실시 예에서, 안정화된 영상은 프레임 간 압축을 사용하여 인코딩 될 수 있다. 이러한 실시 예에서, 안정화된영상 데이터에 적용된 회전에 기초하여 보다 효과적인 압축이 달성될 수 있다. 전술한 영상 안정화 프로세스는 연속적인 두 프레임의 영상 데이터 간의 차이를 최소화하는 방식으로 원본 360도 영상의 프레임들을 수정하는 것으로, 이로 인하여 인코더가 이전 프레임들로부터 보다 많은 정보를 재사용할 수 있어, 인터프레임 압축을 수행하는 경우, 더 낮은 비트레이트를 사용할 수 있다. 그 결과, 생성되는 키 프레임들의 양이 줄어들 수 있고, 이에 따라 압축률이 향상될 수 있다.
한편, 다른 실시예에 따라, 제 1 영상 처리 장치에서 영상을 안정화하기 위한 회전을 결정하기 위한 분석이 수행될 수 있고, 안정화된 영상을 생성하는 단계 S350은 제 1 영상 처리 장치와 물리적으로 분리된 제 2 영상 처리 장치에 의해 수행될 수 있다. 예를 들어, 일부 실시예에서, 제 1 영상 처리 장치는 360도 영상과 연관된 메타데이터 내의 3D 회전 파라미터의 값을 결정된 회전에 따라 설정할 수 있다.
제 1 영상 처리 장치는 단계 S340에서, 예를 들어, 브로드캐스트 신호 또는 네트워크 연결과 같은 적절한 메커니즘을 통해 메타데이터 및 연관된 영상 데이터를 제 2 영상 처리 장치에 제공할 수 있다. 제 2 영상 처리 장치는 회전을 결정하기 위해 메타데이터로부터 3차원 회전 파라미터의 값을 획득할 수 있다. 이 후, 제 2 영상 처리 장치는 단계 S350에서, 3D 회전 파라미터에 의해 정의된 회전을 360도 영상에 적용함으로써, 안정화된 360도 영상을 생성할 수 있다. 또한, 일부 실시예에 따른 제 2 영상 처리 장치는 회전된 영상 데이터를 렌더링하기 전에 카메라 제어 입력에 의해 정의된 회전 및/또는 변환(translation)을 회전된 영상 데이터에 적용함으로써, 안정화된 360도 영상을 생성할 수 있다.
도 5는 일 실시예에 따른 영상 처리 장치가 필터링을 통해 복수의 모션 벡터를 기 설정된 영역의 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 등변 직사각형 프로젝션에서는 상부 영역(511)과 하부 영역(512)의 거리가 과장되는 경향이 있어, 등변 직사각형 프로젝션이 사용되는 경우, 프레임(500)의 상부 영역(511) 및 하부 영역(512)에서의 모션 벡터는 잠재적으로 큰 오차를 포함할 수 있다.
이에 따라, 일 실시예에 따른 영상 처리 장치는 등변 직사각형 프로젝션이 사용되는 경우, 360도 영상의 안정화를 위한 회전 계산시 복수의 모션 벡터 중 상부 영역(511)과 하부 영역(512)의 모션 벡터를 제거할 수 있다.
도 6은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 텍스쳐 프리 영역에 포함된 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 영상 처리 장치는 프레임에 대해 에지 검출을 수행하고, 이를 팽창시킴(dilate)으로써 마스크를 생성할 수 있다. 영상 처리 장치는 텍스쳐가 실질적으로 없는 영역인 텍스쳐-프리 영역의 제거를 위해, 프레임에 마스크를 적용할 수 있다.
도 6에 도시된 예에서, 마스크 내의 검은 픽셀은 에지가 검출되지 않은 영역을 나타내고, 이는 텍스처가 실질적으로 없는 영역을 의미할 수 있다. 예를 들어, 마스크는 1 또는 0의 픽셀 값만을 포함하도록 임계화 될 수 있으며, 도 6에서 1은 백색 픽셀을 나타내고 0은 검은 픽셀을 나타낼 수 있다. 영상 처리 장치는 360도 영상 내의 모션 벡터의 위치를 마스크의 픽셀값과 비교하고, 마스크가 그 위치에서 픽셀 값 0을 갖는 경우 모션 벡터를 버림으로써, 필터링을 수행할 수 있다.
한편, 본 실시예에서는 텍스처 프리 영역의 모션 벡터가 필터링을 통해 제거되는 경우에 대해 설명하였으나, 다른 실시예에 따라, 모션 벡터는 신뢰할 수 없는 모션 벡터를 포함할 수 있는 다른 유형의 영역으로부터 필터링 될 수도 있다. 신뢰할 수 없는 모션 벡터를 포함할 수 있는 다른 유형의 영역의 예로는 단풍이나 연기와 같은 혼돈스러운(chaotic) 움직임을 나타내는 영역이 포함될 수 있다.
도 7은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전이 아닌 것으로 판단되는 모션 벡터를 제거하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 영상 처리 장치는 360도 영상에서 글로벌 회전이 단위 구의 반대 측 상에서 유사한 크기 및 반대 방향을 갖는 모션 벡터를 생성한다는 사실을 이용하여, 필터링을 수행할 수 있다. 구체적으로, 영상 처리 장치는 단위 구상의 레퍼런스 포인트 또는 그 근방의 하나 이상의 모션 벡터를 "미러링 포인트"로 지칭되는 구의 반대 측상의 하나 이상의 대응되는 모션 벡터와 비교하여, 모션 벡터가 글로벌 회전과 연관되는지 여부를 판단할 수 있다.
영상 처리 장치는 서로 반대측에 있는 두 모션 벡터가 특정 임계값 (예 : ± 10 %) 내의 크기를 갖고, 서로 평행하며 반대 방향의 부호를 갖는 경우, 글로벌 회전을 나타내는 모션 벡터인 것으로 결정할 수 있다. 영상 처리 장치는 모션 벡터가 글로벌 회전을 나타내는 것으로 결정하는 경우, 이를 360도 영상의 안정화를 위한 회전을 결정하는데 이용할 수 있다.
도 8은 일 실시예에 따른 영상 처리 장치가 필터링을 통해 글로벌 회전을 나타내는 모션 벡터를 결정하는 방법을 설명하기 위한 흐름도이다.
도 8을 참조하여 설명하는 단계 S810 내지 단계 S890은 도 3을 참조하여 전술한 단계 S310 및 단계 S330 사이에서 수행될 수 있다.
단계 S810에서, 영상 처리 장치는 360도 영상에 대한 복수의 모션 벡터 중 적어도 하나의 영역의 모션 벡터를 필터링할 수 있다. 예를 들어, 영상 처리 장치는 360도 영상에 등변 직사각형 프로젝션이 사용된 경우, 필터링을 통해 360도 영상의 상부 영역 및 하부 영역에서의 모션 벡터를 제거할 수 있다.
단계 S820에서, 영상 처리 장치는 텍스쳐-프리 영역을 필터링하기 위한 마스크를 생성할 수 있다. 예를 들어, 영상 처리 장치는 360도 영상에 대해 에지 검출을 수행하고, 이를 팽창시킴으로써 마스크를 생성할 수 있다.
단계 S830에서, 영상 처리 장치는 텍스쳐-프리 영역의 모션 벡터를 필터링 하기 위해 현재 프레임에 마스크를 적용할 수 있다. 예를 들어, 영상 처리 장치는 360도 영상 내의 모션 벡터의 위치를 마스크의 픽셀값과 비교하고, 마스크가 그 위치에서 픽셀 값 0(에지가 검출되지 않은 영역)을 갖는 경우 모션 벡터를 제거함으로써, 필터링을 수행할 수 있다.
단계 S840에서, 영상 처리 장치는 360도 영상에서 움직이는 오브젝트를 검출할 수 있다. 영상 처리 장치는 기존의 오브젝트 검출 알고리즘 중 적절한 오브젝트 검출 알고리즘을 사용하여, 360도 영상 내에서 하나 이상의 움직이는 오브젝트를 검출할 수 있다.
단계 S850에서, 영상 처리 장치는 움직이는 오브젝트와 연관된 모션 벡터를 필터링할 수 있다. 영상 처리 장치는 필터링을 통해 남아있는 모션 벡터 중 움직이는 오브젝트와 연관된 모션 벡터를 제거할 수 있다. 움직이는 오브젝트와 연관된 모션 벡터는 다른 모션 벡터보다 크기가 훨씬 클 수 있다. 따라서, 영상 처리 장치는 이러한 모션 벡터를 필터링함으로써 안정화 회전이 빠르게 움직이는 오브젝트로 인한 큰 모션 벡터에 의해 왜곡되지 않도록 할 수 있다.
단계 S860에서, 영상 처리 장치는 구의 반대 측면 상의 모션 벡터들을 비교할 수 있다.
단계 S870에서, 영상 처리 장치는 모션 벡터가 글로벌 회전에 해당하는지 여부를 판단할 수 있다. 예를 들어, 영상 처리 장치는 서로 반대측에 있는 두 모션 벡터가 특정 임계값 (예 : ± 10 %) 이내의 크기를 가지며, 서로 평행하며 반대 방향의 부호를 갖는 경우, 글로벌 회전으로 판단할 수 있다.
단계 S880에서, 영상 처리 장치는 모션 벡터가 글로벌 회전에 해당하는 것으로 판단됨에 따라, 모션 벡터를 유지할 수 있다.
단계 S890에서, 영상 처리 장치는 모션 벡터가 글로벌 회전에 해당하지 않는 것으로 판단됨에 따라, 회전 산출 시 모션 벡터를 제외시킬 수 있다.
도 9는 일 실시예에 따른 영상 처리 장치가 모션 벡터를 3차원 회전으로 변환하는 방법을 설명하기 위한 흐름도이다.
단계 S910에서, 영상 처리 장치는 복수의 모션 벡터를 특정 방향의 특정 크기 범위에 대응하는 복수의 빈으로 분류할 수 있다.
영상 처리 장치가 복수의 모션 벡터를 복수의 빈으로 분류하는 구체적인 방법에 대해서는 도 10 내지 도 12를 참조하여 설명하도록 한다.
도 10은 일 실시예에 따른 360도 영상의 모션 벡터를 도시한 도면이다.
도 10을 참조하면, 도 10에는 도 6에 도시된 마스크를 적용한 후의 360도 영상에 대한 모션 벡터가 도시되어 있다. 본 실시예에서는 설명의 간략화를 위해, 수평(x 축) 방향의 모션 벡터만을 도시하였다. 다만, 이것은 일 예일 뿐이며, 본 실시예에 적용되는 방법은 3차원 회전을 결정하기 위해 다른 축의 모션 벡터로도 확장될 수 있다.
도 11은 일 실시예에 따른 복수의 모션 벡터를 복수의 빈으로 분류한 결과를 설명하기 위한 표이다.
도 11을 참조하면, 특정 빈과 관련된 거리는 도 3의 단계 S330을 참조하여 전술한 것과 같이 기 결정된 변환을 이용하여 등가 각도로 변환될 수 있다. 본 실시예에서, 모션 벡터는 -1에서 +12 사이의 값을 가지는 것을 확인할 수 있다.
도 12는 일 실시예에 따라 도 11에서 분류된 복수의 모션 벡터를 히스토그램으로 표시한 도면이다.
도 12를 참조하면, 분류 결과, 20번째에 해당하는 거리 7의 빈에 가장 많은 모션 벡터가 포함됨을 확인할 수 있다.
계속해서 도 9를 참조하면, 단계 S920에서, 영상 처리 장치는 복수의 빈 중 가장 많은 수의 모션 벡터를 포함하는 빈을 식별할 수 있다. 도 12를 참조하여 전술한 바와 같이, 영상 처리 장치는 거리 7의 빈에 가장 많은 모션 벡터가 포함됨을 식별할 수 있다.
단계 S930에서, 영상 처리 장치는 식별된 빈과 이웃한 빈에 기초한 가중 평균으로 회전을 산출할 수 있다.
전술한 단계 S920에서 식별된 빈에 대응되는 거리 7은 0.043 라디안 (2.46 °)의 회전과 등가이다. 일 실시예에 따른 영상 처리 장치는 식별된 빈에 대응되는 거리를 소정의 변환을 사용하여 등가 회전으로 변환함으로써 360도 영상을 안정화하기 위한 회전을 결정할 수 있다.
본 실시예에서는, 실제 카메라 회전이 0.04109753 라디안으로 측정된 360도 영상을 기준으로 분석이 수행된 것으로 복수의 빈들 중에서 가장 많은 모션 벡터가 포함된 빈의 거리를 변환하여 획득된 값(0.043 라디안) 은 실제 카메라 회전의 합리적인 추정치라는 것을 알 수 있다.
한편, 다른 실시예에 따라 영상 처리 장치는 획득되는 회전 값에 대한 정확도를 높이기 위해, 전술한 단계 S920에서 식별된 빈 및 복수의 이웃한 빈들에 걸친 가중 평균을 사용하여 회전을 산출할 수 있다. 가중 평균의 예로 3 진폭 가우시안 가중 평균이 사용될 수 있으나, 이는 일 예일 뿐, 다른 실시 예에 따라, 다른 형태의 가중 평균이 사용될 수도 있다. 본 실시예에서 가중 평균을 적용하면 0.04266 라디안의 추정 회전이 얻어지며 이는 실제 카메라 회전 0.04109753에 더 가까운 수치임을 확인할 수 있다.
모션 벡터를 3 차원 회전으로 변환하는 전술한 방법에 대한 또 다른 대안으로서, 다른 실시예에서는 360도 영상의 프레임에 대한 다음의 수학식 2에 따른 전체 모션 필드 M을 결정하기 위해 다음과 같이 복수의 모션 벡터 vj를 합산함으로써 회전이 결정될 수 있다.
[수학식 2]
Figure 112018039189856-pat00004
360도 영상을 안정화하기 위한 3 차원 회전은 하기의 수학식 3과 같이 전체 모션 필드를 최소화하는 회전 R을 결정함으로써 획득될 수 있다.
[수학식 3]
Figure 112018039189856-pat00005
도 13은 일 실시예에 따른 영상 처리 장치가 360도 영상에 대해 모션 벡터를 기초로 획득된 회전 정보 및 흔들림에 관한 센싱 데이터를 조합하여 회전 정보를 재결정하는 방법을 설명하기 위한 흐름도이다.
단계 S1310에서, 영상 처리 장치는 360도 영상에 대한 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정할 수 있다.
한편, 단계 S1310은 도 2를 참조하여 전술한 단계 S220과 대응될 수 있다.
단계 S1320에서, 영상 처리 장치는 결정된 적어도 하나의 모션 벡터를 변환하여 3차원 회전 정보를 획득할 수 있다.
한편, 단계 S1320은 도 2를 참조하여 전술한 단계 S230과 대응될 수 있다.
단계 S1330에서, 영상 처리 장치는 360도 영상의 촬영 시 획득된 흔들림에 관한 센서 데이터 및 회전 정보를 조합하여 360도 영상에 대한 회전 정보를 재결정할 수 있다.
예를 들어, 영상 처리 장치는 360도 영상이 캡쳐되는 동안 촬영 장치의 흔들림에 관한 센서 데이터를 획득하도록 설정될 수 있다. 영상 처리 장치는 회전을 결정할 때, 센서 데이터를 고려할 수 있다. 예를 들어, 영상 처리 장치는 센서 데이터를 사용하여 모션 벡터를 분석하여 획득한 회전 정보를 검증하거나 모션 벡터를 분석하여 획득한 회전 정보를 사용하여 센서 데이터를 통해 얻은 회전 정보를 검증할 수 있다.
다른 예에 따라 영상 처리 장치는 센서 데이터를 모션 벡터를 분석하여 획득한 회전 정보에 병합할 수 있다. 예를 들어, 모션 벡터를 분석하여 획득한 회전 정보에 대한 센서 데이터의 상대적인 에러 마진에 따라 센서 데이터 및 모션 벡터 분석 결과에 가중치를 적용하여 센서 데이터와 모션 데이터를 분석한 결과를 병합할 수 있다. 이러한 접근법은, 모션 벡터를 사용하여 계산된 회전이 센서에 의해 획득된 측정 보다 큰 오차를 가질 수 있는 시나리오에서 유리할 수 있다. 예를 들어, 장면이 텍스처가 없는 큰 영역이 존재하는 경우가 전술한 시나리오에 포함될 수 있다. 이 상황에서 센서 데이터에 더 많은 가중치가 부여될 수 있다. 반면 센서는 드리프트 문제를 겪을 수 있다. 드리프트 문제는 센서 데이터를 모션 벡터에서 계산된 회전과 결합함으로써 완화될 수 있다.
도 14는 일 실시예에 따른 영상 처리 장치(1400)의 블록도이다.
도 14를 참조하면, 영상 처리 장치(1400)는 적어도 하나의 프로세서(1410) 및 메모리(1420)를 포함할 수 있다. 다만, 이는 일 실시예일 뿐, 영상 처리 장치(1400)의 구성 요소가 전술한 예에 한정되는 것은 아니다.
적어도 하나의 프로세서(1410)는 도 1 내지 도 13을 참조하여 전술한 360도 영상의 처리 방법을 수행할 수 있다. 예를 들어, 적어도 하나의 프로세서(1410)는 360도 영상에 대한 복수의 모션 벡터를 획득할 수 있다. 적어도 하나의 프로세서(1410)는 필터링을 통해 복수의 모션 벡터 중 360도 영상의 글로벌 회전을 나타내는 적어도 하나의 모션 벡터를 결정할 수 있다. 또한, 적어도 하나의 프로세서(1410)는 결정된 적어도 하나의 모션 벡터를 변환하여 360도 영상에 대한 3차원 회전 정보를 획득할 수 있다. 적어도 하나의 프로세서(1410)는 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 360도 영상의 왜곡을 보정할 수 있다.
한편, 메모리(1420)는 적어도 하나의 프로세서(1410)의 처리 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 메모리(1420)에 저장된 프로그램들은 기능에 따라 복수 개의 모듈들로 구분될 수 있다.
일 실시예에 따라 메모리(1420)는 도 15를 참고하여 후술할 데이터 학습부 및 데이터 인식부가 소프트웨어 모듈로 구성될 수 있다. 또한, 데이터 학습부 및 데이터 인식부는 각각 독립적으로 학습 네트워크 모델을 포함하거나, 하나의 학습 네트워크 모델을 공유할 수 있다.
도 15는 일 실시예에 따른 적어도 하나의 프로세서(1410)를 설명하기 위한 도면이다.
도 15를 참조하면, 일 실시예에 따른 적어도 하나의 프로세서(1410)는 데이터 학습부(1510) 및 데이터 인식부(1520)를 포함할 수 있다.
데이터 학습부(1510)는 360도 영상에 대한 복수의 모션 벡터로부터 3차원 회전 정보를 획득하기 위한 기준을 학습할 수 있다. 데이터 인식부(1520)는 데이터 학습부(1510)를 통해 학습된 기준에 기초하여, 360도 영상에 대한 복수의 모션 벡터로부터 3차원 회전 정보를 결정할 수 있다.
데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나는, 적어도 하나의 하드웨어 칩 형태로 제작되어 영상 처리 장치에 탑재될 수 있다. 예를 들어, 데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나는 인공 지능(AI; artificial intelligence)을 위한 전용 하드웨어 칩 형태로 제작될 수도 있고, 또는 기존의 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부로 제작되어 전술한 각종 영상 처리 장치에 탑재될 수도 있다.
이 경우, 데이터 학습부(1510) 및 데이터 인식부(1520)는 하나의 영상 처리 장치에 탑재될 수도 있으며, 또는 별개의 영상 처리 장치들에 각각 탑재될 수도 있다. 예를 들어, 데이터 학습부(1510) 및 데이터 인식부(1520) 중 하나는 영상 처리 장치에 포함되고, 나머지 하나는 서버에 포함될 수 있다. 또한, 데이터 학습부(1510) 및 데이터 인식부(1520)는 유선 또는 무선으로 통하여, 데이터 학습부(1510)가 구축한 모델 정보를 데이터 인식부(1520)로 제공할 수도 있고, 데이터 인식부(1520)로 입력된 데이터가 추가 학습 데이터로서 데이터 학습부(1510)로 제공될 수도 있다.
한편, 데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나는 소프트웨어 모듈로 구현될 수 있다. 데이터 학습부(1510) 및 데이터 인식부(1520) 중 적어도 하나가 소프트웨어 모듈(또는, 인스트럭션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 어플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 어플리케이션에 의해 제공될 수 있다.
도 16은 일 실시예에 따른 데이터 학습부(1510)의 블록도이다.
도 16을 참조하면, 일부 실시예에 따른 데이터 학습부(1510)는 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650)를 포함할 수 있다. 다만, 이는 일 실시예일 뿐, 전술한 구성들 보다 적은 구성 요소로 데이터 학습부(1510)가 구성되거나, 전술한 구성들 이외에 다른 구성 요소가 추가적으로 데이터 학습부(1510)에 포함될 수 있다.
데이터 획득부(1610)는 적어도 하나의 360도 영상을 학습 데이터로 획득할 수 있다. 일 예로, 데이터 획득부(1610)는 데이터 학습부(1510)를 포함하는 영상 처리 장치 또는 데이터 학습부(1510)를 포함하는 영상 처리 장치와 통신 가능한 외부의 장치로부터 적어도 하나의 360도 영상을 획득할 수 있다.
전처리부(1620)는 후술할 모델 학습부(1640)가 학습을 위하여 획득된 적어도 하나의 360도 영상을 이용할 수 있도록, 획득된 적어도 하나의 360도 영상을 기 설정된 포맷으로 가공할 수 있다.
학습 데이터 선택부(1630)는 전처리된 데이터 중에서 학습에 필요한 360도 영상을 선택할 수 있다. 선택된 360도 영상은 모델 학습부(1640)에 제공될 수 있다. 학습 데이터 선택부(1630)는 설정된 기준에 따라, 전처리된 360도 영상 중에서 학습에 필요한 360도 영상을 선택할 수 있다.
모델 학습부(1640)는 학습 네트워크 모델 내의 복수의 레이어에서 360도 영상으로부터 어떠한 정보를 이용하여, 복수의 모션 벡터로부터 3차원 회전 정보를 결정할 지 여부에 관한 기준을 학습할 수 있다.
또한, 모델 학습부(1640)는, 예를 들어, 획득된 360도 영상이 학습에 적절한지 여부에 대한 피드백을 이용하는 강화 학습(reinforcement learning)을 통하여, 데이터 인식 모델을 학습시킬 수 있다.
또한, 데이터 인식 모델이 학습되면, 모델 학습부(1640)는 학습된 데이터 인식 모델을 저장할 수 있다.
모델 평가부(1650)는 학습 네트워크 모델에 평가 데이터를 입력하고, 평가 데이터로부터 출력되는 인식 결과가 소정 기준을 만족하지 못하는 경우, 모델 학습부(1640)로 하여금 다시 학습하도록 할 수 있다. 이 경우, 평가 데이터는 학습 네트워크 모델을 평가하기 위한 기 설정된 데이터일 수 있다.
한편, 데이터 학습부(1510) 내의 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나는, 적어도 하나의 하드웨어 칩 형태로 제작되어 영상 처리 장치에 탑재될 수 있다. 예를 들어, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나는 인공 지능(AI; artificial intelligence)을 위한 전용 하드웨어 칩 형태로 제작될 수도 있고, 또는 기존의 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부로 제작되어 전술한 각종 영상 처리 장치에 탑재될 수도 있다.
또한, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650)는 하나의 영상 처리 장치에 탑재될 수도 있으며, 또는 별개의 영상 처리 장치들에 각각 탑재될 수도 있다. 예를 들어, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 일부는 영상 처리 장치에 포함되고, 나머지 일부는 서버에 포함될 수 있다.
또한, 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나는 소프트웨어 모듈로 구현될 수 있다. 데이터 획득부(1610), 전처리부(1620), 학습 데이터 선택부(1630), 모델 학습부(1640) 및 모델 평가부(1650) 중 적어도 하나가 소프트웨어 모듈(또는, 인스트럭션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 애플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 애플리케이션에 의해 제공될 수 있다.
도 17는 일 실시예에 따른 데이터 인식부(1520)의 블록도이다.
도 17를 참조하면, 일부 실시예에 따른 데이터 인식부(1520)는 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750)를 포함할 수 있다.
데이터 획득부(1710)는 적어도 하나의 360도 영상을 획득할 수 있으며, 전처리부(1720)는 획득된 적어도 하나의 360도 영상을 전처리할 수 있다. 전처리부(1720)는 후술할 인식 결과 제공부(1740)가 복수의 모션 벡터에 대한 3차원 회전 정보의 결정을 위하여 획득된 적어도 하나의 360도 영상을 이용할 수 있도록, 적어도 하나의 360도 영상을 기 설정된 포맷으로 가공할 수 있다. 인식 데이터 선택부(1730)는 전처리된 데이터에 포함된 복수의 모션 벡터 중 3차원 회전 정보 결정에 필요한 모션 벡터를 선택할 수 있다. 선택된 모션 벡터는 인식 결과 제공부(1740)에게 제공될 수 있다.
인식 결과 제공부(1740)는 선택된 모션 벡터를 기초로 3차원 회전 정보를 결정할 수 있다. 또한, 인식 결과 제공부(1740)는 결정된 3차원 회전 정보를 제공할 수 있다.
모델 갱신부(1750)는 인식 결과 제공부(1740)에 의해 제공되는 3차원 회전 정보에 대한 평가에 기초하여, 학습 네트워크 모델에 포함된 레이어의 파라미터 등이 갱신되도록 평가에 대한 정보를 도 16을 참고하여 전술한 모델 학습부(1640)에게 제공할 수 있다.
한편, 데이터 인식부(1520) 내의 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나는, 적어도 하나의 하드웨어 칩 형태로 제작되어 영상 처리 장치에 탑재될 수 있다. 예를 들어, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나는 인공 지능을 위한 전용 하드웨어 칩 형태로 제작될 수도 있고, 또는 기존의 범용 프로세서(예: CPU 또는 application processor) 또는 그래픽 전용 프로세서(예: GPU)의 일부로 제작되어 전술한 각종 영상 처리 장치에 탑재될 수도 있다.
또한, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750)는 하나의 영상 처리 장치에 탑재될 수도 있으며, 또는 별개의 영상 처리 장치들에 각각 탑재될 수도 있다. 예를 들어, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 일부는 영상 처리 장치에 포함되고, 나머지 일부는 서버에 포함될 수 있다.
또한, 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나는 소프트웨어 모듈로 구현될 수 있다. 데이터 획득부(1710), 전처리부(1720), 인식 데이터 선택부(1730), 인식 결과 제공부(1740) 및 모델 갱신부(1750) 중 적어도 하나가 소프트웨어 모듈(또는, 인스트럭션(instruction) 포함하는 프로그램 모듈)로 구현되는 경우, 소프트웨어 모듈은 컴퓨터로 읽을 수 있는 판독 가능한 비일시적 판독 가능 기록매체(non-transitory computer readable media)에 저장될 수 있다. 또한, 이 경우, 적어도 하나의 소프트웨어 모듈은 OS(Operating System)에 의해 제공되거나, 소정의 어플리케이션에 의해 제공될 수 있다. 또는, 적어도 하나의 소프트웨어 모듈 중 일부는 OS(Operating System)에 의해 제공되고, 나머지 일부는 소정의 어플리케이션에 의해 제공될 수 있다.
도 18은 다른 실시예에 따른 영상 처리 장치의 블록도이다.
도 18을 참조하면, 본 실시예에서, 영상 처리 장치는 3차원 회전 정보를 결정하기 위해 360도 영상을 분석하는 제 1 장치(1800)를 포함하고, 제 1 장치(1800)에 의해 제공된 회전에 기초하여 안정화 된 영상을 생성하는 제 2 장치(1810)를 포함할 수 있다. 다른 실시 예들에서, 제 1 장치(1800) 및 제 2 장치(1810)의 일부 또는 모든 구성 요소들은 단일의 물리적 장치로 구현될 수 있다.
제 1 장치(1800)는, 360도 영상에 대한 복수의 모션 벡터를 획득하는 모션 벡터 획득 유닛(1801) 및 복수의 모션 벡터를 3 차원 회전으로 변환하고 3차원 회전을 제 2 장치(1810)에 포함된 영상 프로세싱 유닛(1811)에 제공하는 모션 벡터 변환 유닛(1802)을 포함할 수 있다.
제 2 장치(1810)는 영상 프로세싱 유닛(1811) 및 영상 프로세싱 유닛(1811)에 의해 렌더링된 안정화된 360도 영상을 디스플레이 하는 디스플레이(1812)를 포함할 수 있다. 또한, 제 2 장치(1810)는 회전 및/또는 변환을 정의하는 촬영 장치의 제어 입력을 수신하도록 구성된 입력 유닛(1813)을 더 포함할 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
실시 예에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
도면에 도시된 실시 예들에서 참조 부호를 기재하였으며, 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 실시 예는 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 또한, 실시예는 동종의 또는 서로 다른 종류의 코어들, 서로 다른 종류의 CPU들을 채용할 수도 있다. 본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
실시 예에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 실시 예의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, "필수적인", "중요하게" 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
실시 예의 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 실시 예에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 실시 예에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 실시 예들이 한정되는 것은 아니다. 실시 예에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 실시 예를 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 실시 예의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (21)

  1. 360도 영상에 대한 복수의 모션 벡터를 획득하는 단계;
    필터링을 통해 상기 복수의 모션 벡터 중 상기 360도 영상의 글로벌 회전(global rotation)을 나타내는 적어도 하나의 모션 벡터를 결정하는 단계;
    상기 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 상기 360도 영상에 대한 3차원 회전 정보를 획득하는 단계; 및
    상기 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 상기 360도 영상의 왜곡을 보정하는 단계를 포함하고,
    상기 적어도 하나의 모션 벡터는, 상기 복수의 모션 벡터 중 상기 360도 영상이 투영된 단위 구(unitsphere) 상의 반대편에 위치한 모션 벡터가 서로 평행하고, 반대 부호를 가지며, 특정 임계값 내의 크기를 갖는 모션 벡터를 포함하는, 360도 영상을 처리하는 방법.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서, 상기 적어도 하나의 모션 벡터를 결정하는 단계는,
    상기 복수의 모션 벡터 중 프로젝션의 종류에 따라 기 결정된 영역에 포함된 모션 벡터를 제거하는 단계를 포함하는, 360도 영상을 처리하는 방법.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서, 상기 적어도 하나의 모션 벡터를 결정하는 단계는,
    상기 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하는 단계;
    상기 생성된 마스크를 상기 360도 영상에 적용하여, 상기 360도 영상에서 텍스쳐가 존재하지 않는 영역을 결정하는 단계; 및
    상기 복수의 모션 벡터 중 상기 텍스쳐가 존재하지 않는 영역에 포함된 모션 벡터를 제거하는 단계를 포함하는, 360도 영상을 처리하는 방법.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서, 상기 적어도 하나의 모션 벡터를 결정하는 단계는,
    기 설정된 오브젝트 검출 프로세스를 통해 상기 360도 영상으로부터 적어도 하나의 움직이는 오브젝트를 검출하는 단계; 및
    상기 복수의 모션 벡터 중 상기 검출된 오브젝트와 연관된 모션 벡터를 제거하는 단계를 포함하는, 360도 영상을 처리하는 방법.
  5. 삭제
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서, 상기 3차원 회전 정보를 획득하는 단계는,
    상기 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하는 단계;
    상기 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하는 단계;
    상기 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는 단계를 포함하는, 360도 영상을 처리하는 방법.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    제 6 항에 있어서, 상기 3차원 회전 정보를 획득하는 단계는,
    상기 선택된 빈과 상기 선택된 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 방법.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서, 상기 3차원 회전 정보를 획득하는 단계는,
    상기 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 상기 3차원 회전 정보로 획득하는, 360도 영상을 처리하는 방법.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1항에 있어서, 상기 3차원 회전 정보를 획득하는 단계는,
    기 생성된 학습 네트워크 모델을 이용하여, 상기 복수의 모션 벡터를 기초로 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 방법.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    촬영 장치를 통해 상기 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하는 단계를 더 포함하고,
    상기 360도 영상의 왜곡을 보정하는 단계는,
    상기 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 상기 360도 영상의 왜곡을 보정하는, 360도 영상을 처리하는 방법.
  11. 하나 이상의 인스트럭션을 저장하는 메모리; 및
    상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고,
    상기 프로세서는,
    360도 영상에 대한 복수의 모션 벡터를 획득하고,
    필터링을 통해 상기 복수의 모션 벡터 중 상기 360도 영상의 글로벌 회전(global rotation)을 나타내는 적어도 하나의 모션 벡터를 결정하며,
    상기 결정된 적어도 하나의 모션 벡터를 3차원 변환하여, 상기 360도 영상에 대한 3차원 회전 정보를 획득하고,
    상기 획득된 3차원 회전 정보를 기초로 흔들림으로 인한 상기 360도 영상의 왜곡을 보정하며
    상기 적어도 하나의 모션 벡터는, 상기 복수의 모션 벡터 중 상기 360도 영상이 투영된 단위 구(unitsphere) 상의 반대편에 위치한 모션 벡터가 서로 평행하고, 반대 부호를 가지며, 특정 임계값 내의 크기를 갖는 모션 벡터를 포함하는, 360도 영상을 처리하는 장치.
  12. 제 11 항에 있어서, 상기 프로세서는,
    상기 복수의 모션 벡터 중 프로젝션의 종류에 따라 기 결정된 영역에 포함된 모션 벡터를 제거하는, 360도 영상을 처리하는 장치.
  13. 제 11 항에 있어서, 상기 프로세서는,
    상기 360도 영상으로부터 검출된 에지를 기초로 마스크를 생성하고,
    상기 생성된 마스크를 상기 360도 영상에 적용하여, 상기 360도 영상에서 텍스쳐가 존재하지 않는 영역을 결정하며,
    상기 복수의 모션 벡터 중 상기 텍스쳐가 존재하지 않는 영역에 포함된 모션 벡터를 제거하는, 360도 영상을 처리하는 장치.
  14. 제 11 항에 있어서, 상기 프로세서는,
    기 설정된 오브젝트 검출 프로세스를 통해 상기 360도 영상으로부터 적어도 하나의 움직이는 오브젝트를 검출하고,
    상기 복수의 모션 벡터 중 상기 검출된 오브젝트와 연관된 모션 벡터를 제거하는, 360도 영상을 처리하는 장치.
  15. 삭제
  16. 제 11 항에 있어서, 상기 프로세서는,
    상기 결정된 적어도 하나의 모션 벡터를 특정 방향 및 특정 크기 범위에 대응하는 복수의 빈으로 분류하고,
    상기 분류된 복수의 빈 중 가장 많은 모션 벡터를 포함하는 빈을 선택하며,
    상기 선택된 빈의 방향 및 거리를 변환하여, 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 장치.
  17. 제 16 항에 있어서, 상기 프로세서는,
    상기 선택된 빈과 상기 선택된 빈에 인접한 복수의 빈의 방향 및 거리에 가중 평균을 적용하여, 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 장치.
  18. 제 11 항에 있어서, 상기 프로세서는,
    상기 결정된 적어도 하나의 모션 벡터의 합을 최소화하는 회전 값을 상기 3차원 회전 정보로 획득하는, 360도 영상을 처리하는 장치.
  19. 제 11항에 있어서, 상기 프로세서는,
    기 생성된 학습 네트워크 모델을 이용하여, 상기 복수의 모션 벡터를 기초로 상기 3차원 회전 정보를 획득하는, 360도 영상을 처리하는 장치.
  20. 제 11 항에 있어서, 상기 프로세서는,
    촬영 장치를 통해 상기 360도 영상의 촬영 시 발생된 흔들림을 센싱한 결과 생성된 센서 데이터를 획득하고,
    상기 획득된 센서 데이터와 상기 3차원 회전 정보를 조합하여, 상기 360도 영상의 왜곡을 보정하는, 360도 영상을 처리하는 장치.
  21. ◈청구항 21은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1항 내지 제4항 및 제6항 내지 제 10항 중 어느 하나의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020180045741A 2017-05-18 2018-04-19 360도 영상을 처리하는 방법 및 장치 KR102444292B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201880032626.7A CN110622210A (zh) 2017-05-18 2018-05-11 用于处理360度图像的方法和装置
PCT/KR2018/005440 WO2018212514A1 (ko) 2017-05-18 2018-05-11 360도 영상을 처리하는 방법 및 장치
DE112018002554.3T DE112018002554T5 (de) 2017-05-18 2018-05-11 Verfahren und Vorrichtung zur Verarbeitung eines 360-Grad-Bildes
US16/606,004 US20210142452A1 (en) 2017-05-18 2018-05-11 Method and apparatus for processing 360-degree image

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1708001.1 2017-05-18
GB1708001.1A GB2562529B (en) 2017-05-18 2017-05-18 Method and apparatus for stabilising 360 degree video

Publications (2)

Publication Number Publication Date
KR20180127185A KR20180127185A (ko) 2018-11-28
KR102444292B1 true KR102444292B1 (ko) 2022-09-19

Family

ID=59220507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180045741A KR102444292B1 (ko) 2017-05-18 2018-04-19 360도 영상을 처리하는 방법 및 장치

Country Status (5)

Country Link
US (1) US20210142452A1 (ko)
KR (1) KR102444292B1 (ko)
CN (1) CN110622210A (ko)
DE (1) DE112018002554T5 (ko)
GB (1) GB2562529B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11245887B2 (en) * 2017-09-14 2022-02-08 Samsung Electronics Co., Ltd. Electronic device and operation method therefor
US11295541B2 (en) * 2019-02-13 2022-04-05 Tencent America LLC Method and apparatus of 360 degree camera video processing with targeted view
GB2608583B (en) * 2021-05-25 2023-10-11 Opteran Tech Limited Unconstrained image stabilisation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056295A (ja) * 2003-08-07 2005-03-03 Iwane Kenkyusho:Kk 360度画像変換処理装置
US20070286286A1 (en) * 2006-04-21 2007-12-13 Dilithium Holdings, Inc. Method and System for Video Encoding and Transcoding
KR101137107B1 (ko) * 2003-12-09 2012-07-02 마이크로소프트 코포레이션 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134603B2 (en) * 2005-08-12 2012-03-13 Nxp B.V. Method and system for digital image stabilization
JP4178480B2 (ja) * 2006-06-14 2008-11-12 ソニー株式会社 画像処理装置、画像処理方法、撮像装置および撮像方法
CN103714327B (zh) * 2013-12-30 2017-02-01 上海合合信息科技发展有限公司 一种图像方向校正方法及系统
US9277122B1 (en) * 2015-08-13 2016-03-01 Legend3D, Inc. System and method for removing camera rotation from a panoramic video

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056295A (ja) * 2003-08-07 2005-03-03 Iwane Kenkyusho:Kk 360度画像変換処理装置
KR101137107B1 (ko) * 2003-12-09 2012-07-02 마이크로소프트 코포레이션 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법
US20070286286A1 (en) * 2006-04-21 2007-12-13 Dilithium Holdings, Inc. Method and System for Video Encoding and Transcoding

Also Published As

Publication number Publication date
GB2562529B (en) 2019-12-11
KR20180127185A (ko) 2018-11-28
GB2562529A (en) 2018-11-21
CN110622210A (zh) 2019-12-27
DE112018002554T5 (de) 2020-01-30
GB201708001D0 (en) 2017-07-05
US20210142452A1 (en) 2021-05-13

Similar Documents

Publication Publication Date Title
CN110799991B (zh) 用于使用卷积图像变换执行同时定位和映射的方法和系统
CN111465962B (zh) 用于手持式用户设备的增强现实的运动深度
US8417059B2 (en) Image processing device, image processing method, and program
US11037325B2 (en) Information processing apparatus and method of controlling the same
KR102444292B1 (ko) 360도 영상을 처리하는 방법 및 장치
KR101784183B1 (ko) ADoG 기반 특징점을 이용한 이동 로봇의 위치를 인식하기 위한 장치 및 그 방법
JP6230751B1 (ja) 物体検出装置および物体検出方法
Lee et al. Simultaneous localization, mapping and deblurring
KR101071352B1 (ko) 좌표맵을 이용한 팬틸트줌 카메라 기반의 객체 추적 장치 및 방법
US20150243031A1 (en) Method and device for determining at least one object feature of an object comprised in an image
JP2016522485A5 (ko)
JP2018022360A (ja) 画像解析装置、画像解析方法およびプログラム
US20210122367A1 (en) Methods, devices, media, and apparatuses of detecting moving object, and of intelligent driving control
US10861185B2 (en) Information processing apparatus and method of controlling the same
CN112149458A (zh) 障碍物检测方法、智能驾驶控制方法、装置、介质及设备
JP2022508072A (ja) 深層ニューラルネットワーク姿勢推定システム
KR102262671B1 (ko) 비디오 영상에 보케 효과를 적용하는 방법 및 기록매체
KR20200095339A (ko) 폴트 톨러런스 및 플럭츄에이션 로버스트를 위한 복수의 뉴럴 네트워크를 사용하여 흔들리는 카메라로 인해 생성된 비디오에서 지터링을 제거하기 위한 학습 방법 및 학습 장치, 그리고 이를 이용한 테스트 방법 및 테스트 장치
KR20180015570A (ko) 스테레오 카메라로부터 획득된 이미지 페어를 처리하는 장치 및 방법
CN113592706B (zh) 调整单应性矩阵参数的方法和装置
Ghanbari et al. Contour-based video inpainting
WO2015198592A1 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP5111321B2 (ja) 瞼尤度演算装置、及びプログラム
WO2020263277A1 (en) Landmark temporal smoothing
US11417063B2 (en) Determining a three-dimensional representation of a scene

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant