KR102449759B1 - 비디오 인코딩을 위한 적응적 검색 윈도우 포지셔닝 - Google Patents

비디오 인코딩을 위한 적응적 검색 윈도우 포지셔닝 Download PDF

Info

Publication number
KR102449759B1
KR102449759B1 KR1020177005224A KR20177005224A KR102449759B1 KR 102449759 B1 KR102449759 B1 KR 102449759B1 KR 1020177005224 A KR1020177005224 A KR 1020177005224A KR 20177005224 A KR20177005224 A KR 20177005224A KR 102449759 B1 KR102449759 B1 KR 102449759B1
Authority
KR
South Korea
Prior art keywords
video frame
motion
search window
dimensional point
hint
Prior art date
Application number
KR1020177005224A
Other languages
English (en)
Other versions
KR20170040276A (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 에이티아이 테크놀로지스 유엘씨
Publication of KR20170040276A publication Critical patent/KR20170040276A/ko
Application granted granted Critical
Publication of KR102449759B1 publication Critical patent/KR102449759B1/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/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/179Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scene or a shot
    • 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/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/567Motion estimation based on rate distortion criteria
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • 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

Abstract

렌더링된 비디오 프레임들과 연관된 모션 힌트들을 이용하는 방법, 시스템, 및 컴퓨터 프로그램 제품. 이들 모션 힌트들은 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 비디오 인코더에 제공된다. 특히, 이들 모션 힌트들은 기준 비디오 프레임내 픽셀들의 블록의 모션을 더 양호하게 캡처하기 위해 기준 비디오 프레임에 검색 윈도우를 더 양호하게 위치시키는데 사용될 수 있다. 검색 윈도우가 기준 비디오 프레임에 더 양호하게 위치되기 때문에, 인코딩되는 이미지 품질 레벨의 희생 없이 인코딩 프로세스를 수행하는데 요구되는 메모리가 감소될 수 있다.

Description

비디오 인코딩을 위한 적응적 검색 윈도우 포지셔닝{ADAPTIVE SEARCH WINDOW POSITIONING FOR VIDEO ENCODING}
본 출원은 2014년 8월 1일에 출원된 미국 특허 출원 14/450,094의 이익을 주장하고, 이는 완벽하게 개시된 것처럼 참조로서 통합된다.
본 출원은 전반적으로 비디오 인코딩에 관한 것으로, 더 구체적으로, 모션-보상 예측(motion-compensation prediction)에 관한 것이다.
비디오 인코더들은 종종 연속적인 비디오 프레임들 사이의 임시 상관을 실행함으로써 인코딩할 데이터의 양을 감소시키기 위해 모션-보상된 예측을 적용한다. 모션-보상된 예측은 기준 비디오 프레임의 변환에 관해 현재 비디오 프레임을 기재하는 프로세스이다. 모션-보상된 예측은, 종종 하나의 비디오 프레임과 다른 비디오 프레임 사이의 유일한 차이가 카메라 이동 또는 프레임 이동에서의 오브젝트의 결과라는 점에 기초한다. 이것은, 하나의 프레임을 나타내는 많은 정보가 다음 프레임에 사용된 정보와 동일할 것이라는 것을 의미한다.
모션-보상된 예측은 현재 프레임내 각 블록에 대해, 기준 프레임 내의 "가장 최상의" 매칭을 발견하는 것으로 구성된다. 하지만, 전체 기준 프레임의 검색은 계산적 복잡도 및 메모리 대역폭에 관해 엄청나게 비용이 많이 든다. 따라서, 소프트웨어 및 하드웨어 비디오 인코더들의 실질적인 구현은 이전에 인코딩된 블록들에 기초하여 계산되는 예측된 모션 벡터 주위에 기준 프레임 내에 놓이는 선택된 영역, 즉 검색 범위를 검색한다.
더욱이, 많은 경우들에서, 인코더는 전체 기준 프레임을 저장할 정도로 충분한 메모리를 포함하지 않는다. 따라서, 사실상, 비디오 인코더는 일반적으로 기준 프레임의 서브셋(subset), 즉 검색 윈도우만을 저장한다. 이러한 검색 윈도우는 일반적으로 기준 프레임내 대응하여 위치된 블록, 즉 병치된 블록 상에 중심을 둔다. 예측된 모션 벡터는 이 후 이러한 검색 윈도우 내부에 머무르도록 제약된다. 검색된 영역은 검색 윈도우와 검색 범위 사이의 중첩 영역이다.
검색 윈도우가 더 커질수록, 비디오 프로세스가 계산 복잡도 및 메모리 대역폭에 관해 더 비용이 많이 들게 된다. 특히, 검색 윈도우가 더 커질수록, 요구된 메모리 푸트프린트(footprint)는 더 커지고, 비디오 인코더의 하드웨어 구현 비용은 더 커지게 된다.
다른 한 편으로, 고속 모션 프레임들에 대해, 더 작은 검색 윈도우는, 오브젝트가 검색 윈도우 외부로 이동할 것 같기 때문에 모션을 효율적으로 캡처하기 위해 모션-보상 예측 절차의 실패를 초래할 수 있다. 사실상, 이것은 고 에너지 잔차들을 갖는 인트라-예측된 블록 또는 인터-예측된 블록으로서 현재 블록을 인코딩하는 결과를 초래한다. 양쪽의 경우들에서, 인코더의 율-왜곡(rate-distortion)(R-D) 수행은 여러번 달성될 것이다. 그 결과, 더 높은 비트율은 비디오 프레임들을 인코딩하는데 요구된다.
그러므로, 제한된 메모리를 갖는 비디오 인코더들을 이용하여 고속 모션 비디오를 효율적으로 인코딩할 수 있는 시스템들 및 방법들이 필요하다.
특정 환경들 하에서 실시예들은 기준 및 현재 비디오 프레임들을 생성하는 애플리케이션에 의해 수신된 모션 정보에 기초하여 모션 힌트를 생성하고, 현재 비디오 프레임을 인코딩하기 위해 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 모션 힌트를 비디오 인코더에 제공하기 위한 방법을 포함한다. 이러한 모션 힌트는 기준 비디오 프레임내 픽셀들의 블록의 모션을 더 양호하게 캡처하기 위해 기준 비디오 프레임에서 검색 윈도우를 더 양호하게 하는데 사용될 수 있다. 검색 윈도우가 기준 비디오 프레임에 더 양호하게 위치되기 때문에, 인코딩 프로세스를 수행하는데 요구된 메모리는 인코딩된 이미지 품질 레벨을 희생시키지 않고도 감소될 수 있다.
실시예들의 추가 특징들 및 장점들 뿐 아니라 실시예들의 구조 및 동작은 첨부 도면들을 참조하여 아래에 더 구체적으로 기재된다. 실시예들이 본 명세서에 기재된 특정 실시예들에 제한되지 않는다는 것이 주지된다. 그러한 실시예들은 예시 목적을 위해서만 본 명세서에 제공된다. 추가 실시예들은 본 명세서에 포함된 가르침들에 기초하여 당업자에게 명백할 것이다.
본 명세서에 병합되고 본 명세서의 부분을 형성하는 첨부 도면들은 본 개시의 실시예들을 예시하고, 본 설명과 함께, 실시예들의 원리들을 설명하고, 당업자가 실시예들을 구성하고 이용하도록 추가로 작용한다.
도 1은 본 개시의 실시예들이 구현될 수 있는 시스템의 기능 블록도.
도 2는 기준 비디오 프레임을 이용하여 현재 비디오 프레임을 인코딩하기 위해 비디오 인코더들에 의해 일반적으로 실행된 모션-보상 예측 프로세스를 도시한 도면.
도 3은 본 개시의 실시예들에 따라 렌더링된 비디오 프레임들을 더 효율적으로 인코딩하기 위해 렌더링된 비디오 프레임들과 연관된 모션 힌트를 시행하기 위한 시스템의 기능 블록도.
도 4는 본 개시의 실시예들에 따라 모션 힌트를 이용하여 렌더링된 비디오 프레임을 더 효율적으로 인코딩하기 위해 렌더링된 비디오 프레임을 영역들 및 서브-영역들로 분할하는 것을 도시한 도면.
도 5는 본 개시의 실시예들에 따라 모션 힌트를 이용하여 렌더링된 비디오 프레임을 더 효율적으로 인코딩하기 위해 검색 윈도우 포지션을 식별하는 것을 도시한 도면.
도 6은 본 개시의 실시예들에 따라 모션 힌트를 이용하여 렌더링된 비디오 프레임을 더 효율적으로 인코딩하기 위해 여분의 검색 윈도우를 식별하는 것을 도시한 도면.
도 7은 본 개시의 실시예들에 따라 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 모션 힌트를 이용하기 위한 방법의 흐름도.
도 8은 본 개시의 실시예들에 따라 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 모션 벡터를 생성하기 위한 시스템의 기능 블록도.
도 9는 본 개시의 실시예들에 따라 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 모션 힌트를 결정하기 위한 방법의 흐름도.
도 10은 본 개시의 양상들을 구현하는데 사용될 수 있는 컴퓨터 시스템의 예를 도시한 블록도.
본 개시의 실시예들은 첨부 도면들을 참조하여 기재될 것이다. 요소가 먼저 나타나는 도면은 일반적으로 대응하는 도면 부호에서 가장 좌측의 숫자(들)에 의해 표시된다.
다음의 설명에서, 다수의 특정 세부사항들은 본 개시의 실시예들의 완전한 이해를 제공하기 위해 설명된다. 하지만, 구조들, 시스템들 및 방법들을 포함하는 실시예들이 이들 특정 세부사항들 없이 실시될 수 있다는 것이 당업자에게 명백할 것이다. 본 명세서의 설명 및 표현은 그 작업의 요소를 당업자에게 더 효율적으로 전달하기 위해 해당 분야에 경험되거나 숙련된 자들에 의해 사용된 공통 수단이다. 다른 경우들에서, 잘 알려진 방법들, 절차들, 구성요소들, 및 회로는 본 개시의 양상들을 불필요하게 모호하게 하는 것을 피하기 위해 구체적으로 기재되지 않았다.
본 명세서에서 "일실시예", "실시예", "실시예의 예", 등의 참조는, 기재된 실시예가 특정한 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 특정한 특징, 구조, 또는 특성을 반드시 포함할 필요가 없다는 것을 나타낸다. 더욱이, 그러한 구문들은 동일한 실시예를 언급할 필요는 없다. 더욱이, 특정한 특징, 구조 또는 특성이 실시예와 연계하여 기재될 때, 명확히 기재되거나 기재되지 않거나 다른 실시예들과 연계하여 그러한 특징, 구조 또는 특성을 달성하기 위해 당업자의 지식 내에 있다는 것이 제기된다.
1. 개요
본 개시는 렌더링된 비디오 프레임들을 더 효율적으로 인코딩하기 위해 렌더링된 비디오 프레임들을 생성하는 애플리케이션에 의해 수신되 정보에 기초하여 모션 힌트들을 실행하기 위한 시스템 및 방법에 관련된 실시예들에 관한 것이다. 시스템 및 방법의 추가 세부사항들을 기재하기 전에, 비디오 인코딩의 간략한 개요가 제공된다.
일반적으로, 비디오 인코딩은 잔류 이미지 정보를 제거하기 위해 렌더링된 비디오 프레임들의 시퀀스를 인코딩하는데 요구된 비트의 양을 감소시키기 위한 프로세스이다. 예를 들어, 비디오 프레임들의 시퀀스에서 밀접하게 인접한 비디오 프레임들은 일반적으로 매우 유사하고, 종종 오브젝트들이 묘사하는 장면들에서의 하나 이상의 오브젝트들이 순차 프레임들 사이에서 약간 이동한다는 점에서 상이하다. 비디오 인코딩은 인코딩될 현재 비디오 프레임내 픽셀들의 블록에 밀접하게 매칭하는 픽셀들의 블록에 대한 기준 비디오 프레임을 검색함으로써 적어도 하나의 경우에서의 비디오 프레임들 사이에 이러한 시간적 중복도(redundancy)를 실행하도록 구성된다.
비디오 인코더는, 일반적으로 기준 비디오 프레임에서 픽셀들의 밀접하게-매칭된 블록에 여분인 현재 비디오 프레임내 픽셀들의 블록을 저장하거나 송신할 필요가 없다는 점을 이용한다. 비디오 인코더는 그 대신에 중복 정보(redundant information)를 결정하고 그런 후에 현재 비디오 프레임내 픽셀들의 블록으로부터 예측을 감산하여, 잔차(residual)만을 남기기 위해 기준 비디오 프레임내 픽셀들의 밀접하게-매칭된 블록에 기초하여 현재 비디오 프레임내 픽셀들의 블록의 예측을 형성한다. 이러한 프로세스는 종종 모션-보상 예측으로 언급된다. 잔차(또는 잔차에 기초하여 결정된 정보)은 그런 후에 현재 비디오 프레임을 송신하는데 필요한 비트의 양을 감소시키기 위해 중복 정보 없이 수신 디바이스로 전송될 수 있다.
비디오 디코더는 잔차에 기초하여 현재 비디오 프레임내 픽셀들의 블록을 재구성할 수 있다. 중복 정보는 예를 들어, 비디오 인코더에 의해 수행된 동일한 예측 방법을 이용하여 기준 비디오 프레임내 픽셀들의 밀접하게-매칭된 블록에 기초하여 예측될 수 있다.
일실시예에서, 본 개시의 시스템 및 방법은 렌더링된 비디오 프레임들의 시퀀스를 인코딩하기 위해 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 개선하기 위해 렌더링된 비디오 프레임들의 시퀀스와 연관된 글로벌 모션 힌트들을 이용한다. 위에 기재된 모션-보상 예측은 인코딩될 현재 비디오 프레임내 픽셀들의 블록에 밀접하게 매칭하는 기준 비디오 프레임들에서의 픽셀들의 블록을 검색하는 것을 포함한다. 이러한 검색 프로세스를 개선하는 것은 현재 비디오 프레임내 픽셀들의 블록을 인코딩하는데 사용된 시간 및/또는 비트의 양을 감소시킬 수 있다.
다른 실시예에서, 본 개시의 시스템 및 방법은 렌더링된 비디오 프레임들의 시퀀스를 인코딩하기 위해 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 개선하기 위해 렌더링된 비디오 프레임들의 시퀀스와 연관된 반-글로벌 모션 힌트들을 이용한다.
위에 기재된 본 개시의 시스템 및 방법의 실시예들은, 모션 힌트들이 본 명세서에서의 가르침들에 기초하여 당업자에 의해 인식된 바와 같이 이용가능한 응용들에 사용될 수 있다. 예를 들어, 본 개시의 방법 및 시스템은 모션 힌트를 생성하기 위해 모션 정보와 연관된 사용자 입력된 명령들을 수신하는 비디오 게임에 사용될 수 있다.
본 개시의 이들 및 다른 특징들 뿐 아니라 다양한 실시예들의 구조 및 동작은 첨부 도면들을 참조하여 아래에 더 구체적으로 기재된다.
2. 예시 동작 환경
도 1은, 본 개시의 실시예들이 구현될 수 있는 동작 환경의 예의 기능 블록도(100)를 도시한다. 블록도(100)는 애플리케이션(101), 렌더링된 비디오 프레임들(102), 비디오 인코더(103), 및 모션 추정기(104)를 포함한다.
애플리케이션(101)은 렌더링 및 디스플레이를 위한 비디오 프레임들을 생성하는 비디오 게임, 비디오 편집 애플리케이션, 컴퓨터-보조 설계(CAD) 애플리케이션, 컴퓨터-보조 제조 애플리케이션 등과 같은 최종 사용자 애플리케이션일 수 있다.
일단 렌더링되면, 렌더링된 비디오 프레임들(102)의 시퀀스는 렌더링된 비디오 프레임들(102)의 시퀀스를 네트워크를 통해 수신 디바이스에 저장하거나 수신하기 위해 요구된 비트의 양을 감소시키기 위해 인코딩을 위한 비디오 인코더(103)에 제공될 수 있다. 예를 들어, 비디오 인코더(103)는 잔류 이미지 정보를 제거함으로써 렌더링된 비디오 프레임들(102)의 시퀀스를 저장하거나 송신하는데 필요한 비트의 양을 감소시킨다. 일례에서, 렌더링된 비디오 프레임들(102)의 시퀀스내 밀접하게 인접한 비디오 프레임들은 일반적으로 매우 유사하고, 이들이 묘사하는 장면들에서의 하나 이상의 오브젝트들이 이들 사이에서 약간 이동한다는 점에서 종종 상이하다.
모션 추정기(104)는 인코딩될 현재 비디오 프레임내 픽셀들의 블록에 밀접하게 매칭하는 픽셀들의 블록에 대한 렌더링된 비디오 프레임들(102)의 시퀀스에서의 기준 비디오 프레임을 검색함으로써 적어도 일례에서 비디오 프레임들 사이의 이러한 시간 중복도를 이용하도록 구성될 수 있다. 현재 비디오 프레임 및 기준 비디오 프레임은 렌더링된 비디오 프레임(102)의 시퀀스에서 연속 비디오 프레임들일 수 있거나, 시간적으로 더 이격될 수 있다. 기준 비디오 프레임내 픽셀들의 밀접하게-매칭된 블록이 수신 디바이스로 이미 송신되었다고 가정하면, 모션 추정기(104)는 일반적으로 기준 비디오 프레임내 픽셀들의 밀접하게-매칭된 블록에 중복하는 현재 비디오 프레임내 픽셀들의 블록의 컨텐츠를 수신 디바이스로 송출할 필요가 없다는 점을 이용한다. 모션 추정기(104)는 그 대신 중복 정보를 결정하고 그런 후에 픽셀들의 블록으로부터 예측을 감산하여, 잔차만을 남기기 위해 기준 비디오 프레임내 픽셀들의 밀접하게-매칭된 블록에 기초하여 픽셀들의 블록의 예측을 형성한다. 이러한 프로세스는 모션-보상 예측으로 언급된다. 잔차(또는 잔차에 기초하여 결정된 정보)은 그런 후에 현재 비디오 프레임을 송신하는데 필요한 비트의 양을 감소시키기 위해 중복 정보 없이 수신 디바이스로 전송될 수 있다.
도 2는 본 개시의 실시예들에 따라 픽셀들의 블록을 인코딩하기 위해 비디오 인코더(106)에 의해 이용된 전형적인 모션-보상 예측 프로세스(200)의 추가 세부사항들을 도시한다. 위에 기재된 바와 같이, 모션-보상 예측 프로세스는 인코딩될 현재 비디오 프레임(206)에서의 픽셀들의 블록(207)에 밀접하게 매칭하는 기준 비디오 프레임(201)에서의 픽셀들의 블록을 검색하는 것을 포함할 수 있다. 전체 기준 비디오 프레임(201)의 검색이 메모리 및 계산 복잡도에 관해 엄청나게 비용이 많이 들기 때문에, 소프트웨어 및 하드웨어 비디오 인코더들의 실질적인 구현들은 기준 비디오 프레임(201)의 선택된 영역을 검색할 수 있고, 이러한 선택된 영역은 검색 영역(202)으로서 언급된다. 검색 영역(202)은 픽셀들의 이전에 인코딩된 블록들에 기초하여 계산되는 예측된 모션 벡터(205) 주위에 기준 비디오 프레임(201) 내에 놓일 수 있다.
많은 경우들에서, 특히 하드웨어 인코더 구현들에서, 비디오 인코더는 전체 기준 비디오 프레임(201)을 저장하기 위해 충분한 메모리가 설치되지 않을 수 있다. 따라서, 검색 윈도우(203)로 언급된 기준 비디오 프레임(201)의 서브셋이 저장될 수 있고, 예측된 모션 벡터(205)는 검색 윈도우(203) 내부에 머무르도록 제약될 수 있다. 검색 윈도우(203)는 일반적으로 현재 비디오 프레임(206)에서의 픽셀들(207)의 블록과 동일한 상대 위치에 위치되는 기준 비디오 프레임(203)에서의 픽셀들(204)의 블록 상에 중심을 둘 수 있다. 이러한 픽셀들(204)의 블록은 병치된 블록으로서 종종 언급될 수 있다. 도 2에 도시된 바와 같이, 검색 범위(202)의 부분은 검색 윈도우(203) 외부에 있을 수 있다. 그러한 경우에서, 실제 검색된 영역(208)은 검색 윈도우(203)와 검색 범위(202) 사이의 중첩 영역이다.
일반적으로, 검색 윈도우(203)가 더 작게 만들어질수록, 도 1에 도시된 비디오 인코더(103)를 구현하는 비용은 더 작아지고, 요구된 메모리 푸트프린트는 더 작아진다. 하지만, 비교적 고속-모션 장면들을 묘사하는 비디오 프레임들에 대해, 또는 인코딩될 프레임으로부터 큰 시간 거리를 갖는 프레임이 기준 프레임으로서 사용될 때, 검색 윈도우(203)의 크기를 너무 많이 제약하는 것은 비디오 프레임들 사이의 모션을 효율적으로 캡처하기 위한 모션-보상 예측 프로세스의 실패를 초래할 수 있다. 픽셀들(207)의 블록에 의해 묘사된 오브젝트들이 검색 윈도우(203) 외부에서 이동할 가능성이 있기 때문에 실패가 발생한다. 사실상, 이것은 고 에너지 잔차들을 갖는 인트라-예측된 블록 또는 인터-예측된 블록으로서 픽셀들(207)의 인코딩 블록에서 초래될 수 있다. 다른 경우에서, 픽셀들(207)의 블록을 인코딩하는데 사용된 비트의 수는 일반적으로 비디오 프레임들 사이의 모션을 더 양호하게 캡처할 정도로 충분히 큰 검색 윈도우(203)를 인코딩된 이미지 품질의 동일한 레벨에 유지하기 위해 증가될 필요가 있을 것이다. 다음의 섹션에 기재된 바와 같이, 본 개시의 시스템 및 방법의 실시예들은 기준 비디오 프레임(201) 및 현재 비디오 프레임(206)과 연관된 모션 힌트들을 이용함으로써 픽셀들(207)의 블록을 인코딩하는데 요구된 비트 수와 검색 윈도우(203)의 크기 사이의 이러한 절충을 경감하는데 도움을 줄 수 있다.
3. 비디오 인코딩을 위해 검색 윈도우를 적응적으로 포지셔닝하는 시스템 및 방법
도 3은, 적응적 검색 윈도우 포지셔너(304)가 추가되었고 기존의 블록들에 대한 약간의 변형들이 본 개시의 실시예들에 따라 이루어졌다는 점을 제외하고 도 1에서의 기능 블록도(100)와 실질적으로 유사한 기능 블록도(300)를 도시한다. 특히, 애플리케이션(301)은 적어도 일실시예에서 출력으로서 렌더링된 비디오 프레임들(302)의 시퀀스와 연관된 모션 힌트(308)를 제공하기 위해 변형되었다.
적응적 검색 윈도우(304)는 애플리케이션(301)에 의해 생성된 장면들이 모션 보상 예측을 이용하여 그 위에서 인코딩되는 모션 추정기(305)와 애플리케이션(301) 사이에서 매개체일 수 있다. 적응적 검색 윈도우 포지셔너(304)는 모션 힌트(308)를 이용하여 픽셀들의 매칭 블록들을 지능적으로 검색함으로써 모션 추정을 더 효율적으로 만들 수 있다. 실시예에서, 적응적 검색 윈도우 포지셔너(304)는 비디오 인코더(303) 내에 포함된다.
일례에서, 적응적 검색 윈도우 포지셔너(304)는 모션 추정기(305)에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 모션 힌트(308)를 처리하도록 구성된다. 일실시예에서, 모션 추정기(305)는 비디오 인코더(303) 내에 포함된다. 일실시예에서, 모션 힌트(308)는 단일 모션 벡터를 포함할 수 있다. 당업자에 의해 인식되는 바와 같이, 모션 힌트(308)는 또한 단일 모션 벡터를 생성하는데 사용될 수 있다. 모션 벡터는 전체 현재 비디오 프레임(206)과 연관될 수 있고, 기준 비디오 프레임(201)과 연관된 모든 블록들의 모션을 예측할 수 있다. 즉, 이러한 단일 모션 벡터는 글로벌 모션 힌트를 구성한다.
다른 실시예에서, 모션 힌트(308)는 다수의 상이한 모션 벡터들을 포함할 수 있다. 대안적으로, 다른 실시예에서, 모션 힌트(308)는 다수의 상이한 모션 벡터들을 생성하는데 사용될 수 있다. 각 모션 벡터는 현재 비디오 프레임(206)에서의 상이한 이미지 영역과 연관되고, 각 모션 벡터는 기준 비디오 프레임(201)에서의 대응하느 영역과 연관된 블록들의 모션을 예측하는데 사용된다. 즉, 이들 2개의 실시예들에서, 모션 힌트(308)는 반-글로벌 모션 힌트들을 제공한다.
모션 힌트(308)가 단일 모션 벡터 또는 다수의 모션 벡터들과 연관되는 지의 여부에 상관 없이, 모션 힌트(308)는 현재 비디오 프레임(206)에서의 픽셀들(207)의 블록을 더 효율적으로 인코딩하기 위해 비디오 인코더(303)에 의해 사용될 수 있다. 특히, 애플리케이션(301)에 의해 제공된 모션 힌트(308)는, 픽셀들(207)의 블록이 놓이는 현재 비디오 프레임(206)의 이미지 영역과 연관된 모션 벡터를 발견하는데 사용될 수 있다. 이러한 모션 벡터는 기준 비디오 프레임(201)으로부터 픽셀들(207)의 블록의 모션을 더 양호하게 캡처하기 위해 기준 비디오 프레임(201)에서의 검색 윈도우(203)를 더 양호하게 위치시키는데 사용될 수 있다. 검색 윈도우(206)가 기준 비디오 프레임(201)으로부터 픽셀들(207)의 블록의 모션을 캡처하도록 더 양호하게 위치되기 때문에, 또한 인코딩된 이미지 품질의 레벨을 유지하면서, 픽셀들(207)의 블록을 인코딩하는데 필요한 비트의 수를 증가시키지 않고도 더 작게 할 수 있다.
이전 설명의 결과로서, 특정 이익들이 얻어질 수 있거나, 다양한 상황들에서 나타날 수 있다. 예를 들어, 위에 기재된 모션 힌트들의 결과로서, 본 명세서에 기재된 실시예들의 양상들을 이용하는 클라우드 또는 다른 원격 서버는 더 빠르게 및/또는 감소된 처리 및/또는 전력 요건들을 가지고 프레임들을 인코딩할 수 있다. 추가적으로, 이렇게 렌더링된 프레임들은 인식된 더 높은 품질 또는, 대안적으로 종래 기술의 동일한 품질을 갖지만, 감소된 대기 시간(latency)을 갖도록 최종 사용자 디바이스의 사용자에게 나타날 수 있다. 따라서, 그러한 클라우드 또는 다른 원격 서버 및 하나 이상의 최종 사용자 디바이스들을 포함하는 시스템은 더 큰 효율로 동작할 수 있다.
이제 도 4를 참조하면, 적응적 검색 윈도우 포지셔너(304)의 동작에 대한 추가 세부사항들은 본 개시의 실시예들에 따라 예시된다. 특히, 도 4는 기준 비디오 프레임(201)으로부터 현재 비디오 프레임(206)에서의 하나 이상의 상이한 이미지 영역들을 인코딩하는데 도움을 주기 위해 모션 힌트(308)와 연관된 하나 이상의 모션 벡터들을 이용하는 것을 상술한다.
일례에서, 애플리케이션(301)은 현재 비디오 프레임(206)에서 하나 이상의 애플리케이션 영역들을 생성한다. 각 애플리케이션 영역의 크기 및 위치는 애플리케이션(301)에 의해 결정될 수 있다. 예를 들어, 도 4에서, 현재 비디오 프레임(206)은 3개의 애플리케이션 영역들로 구성된다. 예를 들어, 애플리케이션 영역(401)은 현재 비디오 프레임(206)의 하부 우측에 위치된다. 당업자에 의해 인식되는 바와 같이, 다양한 전략들은 애플리케이션 영역들의 크기 및 위치를 선택하는데 사용될 수 있다.
적응적 검색 윈도우 포지셔너(304)는 각 애플리케이션 영역과 상이한 모션 벡터를 연관시킬 수 있다. 각 모션 벡터는 애플리케이션(301)에 의해 생성된 모션 벡터(308)에 기초할 수 있다. 실시예에서, 각 모션 벡터는 모션 힌트(308)에 직접 포함된다. 다른 실시예에서, 각 모션 벡터는 모션 힌트(308)로부터 생성된다. 당업자에 의해 인식되는 바와 같이, 모션 벡터는 애플리케이션(301) 또는 적응적 검색 윈도우 포지셔너(304)에 의해 생성될 수 있다. 더욱이, 당업자에 의해 인식되는 바와 같이, 모션 힌트(308)는 모션 정보의 사용자 입력 및 비-사용자 입력 유형들에 기초할 수 있다. 예를 들어, 모션 힌트(308)는 비디오 게임 애플리케이션을 플레이할 때 사용자에 의해 입력된 명령들에 기초할 수 있다.
다음으로, 하나 이상의 애플리케이션 영역들은 적응적 검색 윈도우 포지셔너(304)에 의해 하나 이상의 서브-영역들로 분할될 수 있다. 예를 들어, 애플리케이션 영역(401)은 서브-영역들(402, 404, 406, 408, 및 410)로 분할된다. 각 서브-영역의 크기 및 위치는 적응적 검색 윈도우 포지셔너(304)에 의해 결정될 수 있다.
서브-영역들의 입상도(granularity)는 모션 추정의 정밀도와 메모리 트래픽 요건들과 계산 복잡도 사이의 균형을 제어할 수 있다. 당업자에 의해 인식되는 바와 같이, 다양한 전략들이 이러한 균형을 달성하기 위해 이용될 수 있다. 예를 들어, 하나의 전략은 현재 비디오 프레임을 동일한 크기의 서브-영역들의 세트로 분할하는 것으로 구성된다. 다른, 잠재적으로 더 최적화 전략은 이전 비디오 프레임들 양단의 모션 벡터 분포, 현재 비디오 프레임과 기준 비디오 프레임 사이의 시간 차이, 및 애플리케이션에 의해 제공된 장면 변화 힌트들에 기초하여 서브-영역 크기 및 위치를 선택하는 것으로 구성된다.
각 서브-영역내 픽셀들의 블록들은 대응하는 애플리케이션 영역과 연관된 모션 벡터에 기초하여 인코딩될 수 있다. 예를 들어, 서브-영역들(402, 404, 406, 408 및 410)은 애플리케이션 영역(401)과 연관된 모션 벡터에 기초하여 인코딩된다.
일례에서, 하나 이상의 애플리케이션 영역들을 하나 이상의 서브-영역들로 분할한 후에, 고정(anchor) 블록은 각 서브-영역들에 대해 한정된다. 일실시예에서, 고정 블록은 현재 비디오 프레임(206)의 서브-영역의 제 1 블록으로서 정의된다. 예를 들어, 도 4에서, 고정 블록(412)은 애플리케이션 영역(401) 내의 서브-영역(402)의 제 1 블록이다.
이제 도 5를 참조하면, 적응적 검색 윈도우 포지셔너(304)의 추가 세부사항들은 본 개시의 실시예들에 따라 예시된다. 특히, 고정 블록들을 한정한 후에, 적응적 검색 윈도우 포지셔너(304)는 현재 비디오 프레임에서 블록들을 인코딩하기 위해 검색 윈도우를 어디에 위치시키는지를 결정한다. 검색 윈도우를 어디에 위치시키는 지에 대한 결정은 각 서브-영역에 대해 이루어진다.
일례에서, 서브-영역에서 픽셀들의 블록들을 인코딩하기 위해, 검색 윈도우는 연과된 모션 벡터에 의해 전환된 연관된 고정 블록의 병치된 블록 위치 상에 먼저 중심을 둘 수 있다. 예를 들어, 도 5에서, 현재 비디오 프레임(505)내 픽셀들(506)의 블록은 서브-영역(402)에서의 고정 블록(412)에 대응한다. 그리고 픽셀들(506)의 블록은 기준 비디오 프레임(501)에서의 병치된 블록(503)에 대응한다. 따라서, 검색 윈도우(502)의 위치는 모션 벡터(504)에 의해 전환된 병치된 블록(503)의 위치에 있다.
대안적으로, 모션 힌트가 애플리케이션에 의해 제공되지 않았으면, 검색 윈도우는 전환 없이 기준 비디오 프레임내 고정 블록의 병치된 블록 위치 상에 중심을 둔다. 예를 들어, 도 5에서, 검색 윈도우(502)는 기준 비디오 프레임(501)에서의 병치된 블록(503) 상에 중심을 둔다.
제공된 모션 힌트의 경우에, 고정 블록은 연관된 모션 벡터에 의해 전환된 고정 블록의 병치된 블록 위치 상에 중심을 둔 검색 윈도우(502)로 먼저 인코딩된다. 이러한 검색 윈도우 포지션으로 고정 블록을 인코딩하는 모션 추정기(305)에 의해 보고된 R-D 비용이 임계치보다 더 높으면, 적응적 검색 윈도우 포지셔너(304)는 다른 위치들에 검색 윈도우를 위치시키는 율-왜곡(R-D)을 평가한다. 당업자에 의해 인식되는 바와 같이, 임계치는 이를 행하는 계산 복잡도에 대해 픽셀들의 블록들을 인코딩하는데 요구된 비트 수의 균형을 맞추기 위한 값으로 설정할 수 있다. 더욱이, 실시예에서, 임계치는 인코딩 전략에 따라 적응적으로 변할 수 있다.
도 6은 본 개시의 실시예들에 따라 이들 다른 위치들에 검색 윈도우를 위치시키는 R-D 비용을 평가하는 프로세스를 예시한다. 일례에서, 검색 윈도우(603)는 모션 벡터(602)에 의해 전환된 픽셀들(601)의 블록에 초기에 위치된다. 이러한 초기 위치는 도 5에서의 검색 윈도우(502)의 위치에 대응한다. 후속하여, 추가 윈도우 포지션들이 식별된다. 예를 들어, 도 6에서, 7개의 검색 윈도우 포지션들(604)이 식별된다. 당업자에 의해 인식되는 바와 같이, 추가 검색 윈도우 포지션들(604)의 수는 계산 복잡도와 비디오 인코딩 효율 사이의 균형에 기초할 수 있다.
다양한 전략들은 추가 검색 윈도우 포지션들(604)을 선택하는데 사용될 수 있다. 이들 전략들은 이전에 인코딩된 비디오 프레임들 또는 동일한 비디오 프레임 내의 이전에 인코딩된 블록들을 선택하는데 사용될 수 있다. 당업자에 의해 인식되는 바와 같이, 하나의 전략은 초기 검색 윈도우 포지션(603), 즉 연관된 모션 벡터에 의해 전환된 병치된 블록에 위치된 검색 윈도우 주위에서 N개의 균일하게 샘플링된 위치들을 선택하는 것이다.
추가 검색 윈도우 포지션들(604)의 수 및 장소들을 식별한 후에, 적응적 검색 윈도우 포지셔너(304)는 추가 검색 윈도우 포지션들(604) 각각에 검색 윈도우를 위치시키는 R-D 비용을 평가한다. 추가 검색 윈도우 포지션들(604) 중에서 가장 낮은 R-D 비용이 여전히 위에 설정된 임계치보다 크거나 동일하면, 검색 윈도우의 포지션는 검색 윈도우 포지션(603)에 남아있다. 즉, 검색 윈도우, 예를 들어 도 6에서의 검색 윈도우(603)는 여전히 연관된 모션 벡터에 의해 전환된 고정 블록의 병치된 블록 위치 상에 중심을 둔다. 다른 한 편으로 추가 검색 윈도우 포지션들(604) 중에서 가장 낮은 R-D 비용이 임계치보다 낮으면, 검색 윈도우는 가장 낮은 R-D 비용을 갖는 추가 검색 윈도우 포지션(604)에 위치된다.
일단 최종 검색 윈도우 포지션이 선택되면, 현재 서브-영역내 비-고정 블록들은 최종 검색 윈도우 포지션을 이용하여 인코딩된다. 하지만, 최종 검색 윈도우 포지션은 비-고정 블록과 고정 블록 사이의 위치에서의 차이에 기초하여 편이(shifted)된다. 후속하여, 하나의 서브-영역내 블록들을 인코딩한 후에, 대응하는 애플리케이션 영역내 다른 서브-영역들은 인코딩된다. 이들 다른 서브-영역들은 동일한 최종 검색 윈도우 포지션을 이어받는다. 하지만, 최종 검색 윈도우 포지션은 그러한 영역에 대한 고정 블록과 비-고정 블록 사이의 위치에서의 차이에 기초하여 유사하게 편이된다.
이제 도 7을 참조하면, 모션 힌트에 기초하여 비디오 인코딩을 위해 검색 윈도우를 적응적으로 위치시키기 위한 방법(700)을 도시한 흐름도는 본 개시의 실시예들에 따라 예시된다. 일례에서, 방법(700)은 도 3 내지 도 6을 참조하여 위에 기재된 적응적 검색 윈도우 포지셔너(304)에 의해 구현될 수 있다. 하지만, 방법이 또한 다른 시스템들 및 구성요소들에 의해 구현될 수 있다는 것이 주지되어야 한다. 흐름도(700)의 몇몇 단계들이 발생할 필요는 없고, 및/또는 도 7에 도시된 순서로 발생할 필요가 없다는 것이 추가로 주지되어야 한다.
단계(702)에서, 인코딩될 현재 비디오 프레임 및 기준 비디오 프레임과 연관된 모션 힌트(308)는 애플리케이션(301)으로부터 수신된다. 당업자에 의해 인식되는 바와 같이, 수신된 모션 힌트(308)는 모션 정보의 사용자 입력 및 비-사용자 입력 유형들에 기초할 수 있다.
단계(704)에서, 현재 비디오 프레임은 하나 이상의 애플리케이션 영역들로 분할된다. 일실시예에서, 전체 현재 비디오 프레임은 애플리케이션 영역으로 구성된다. 다른 실시예에서, 현재 비디오 프레임은 복수의 애플리케이션 영역들로 분할된다. 당업자에 의해 인식되는 바와 같이, 다양한 전략들은 이들 애플리케이션 영역들의 크기 및 위치를 선택하는데 사용될 수 있다. 일실시예에서, 애플리케이션(301)은 비디오 프레임들의 분할 전략을 한정한다.
더욱이, 하나 이상의 애플리케이션 영역들은 하나 이상의 서브-영역들로 분할된다. 일실시예에서, 이러한 분할은 적응적 검색 윈도우 포지셔너(304)에 의해 수행된다. 서브-영역들의 입상도는 모션 추정의 정밀도와 메모리 트래픽 요건들과 계산 복잡도 사이의 균형을 제어한다. 일실시예에서, 단일 애플리케이션 영역을 통해, 단일 서브-영역만이 생성된다. 다른 실시예에서, 애플리케이션 영역은 동일한 크기의 서브-영역들의 세트로 분할된다. 다른 실시예에서, 애플리케이션 영역은 이전의 비디오 프레임들 양단의 모션 벡터 분포, 현재 비디오 프레임과 기준 비디오 프레임 사이의 시간 차이, 및 애플리케이션(301)에 의해 제공된 장면 변화 힌트들에 기초하여 서브-영역들로 분할된다.
단계(706)에서, 단계(702)의 수신된 모션 힌트(308)는 하나 이상의 모션 벡터들을 하나 이상의 애플리케이션 영역들과 연관시키는데 사용된다. 일실시예에서, 각 모션 벡터는 수신된 모션 힌트(308)에 포함된다. 다른 실시예에서, 각 모션 벡터는 모션 힌트(308)로부터 생성된다. 당업자에 의해 인식되는 바와 같이, 모션 벡터는 애플리케이션(301) 또는 적응적 검색 윈도우 포지셔너(304)에 의해 생성될 수 있다. 일실시예에서, 하나 이상의 모션 벡터들에서의 각 모션 벡터는 하나 이상의 애플리케이션 영역들에서의 애플리케이션 영역과 연관된다. 당업자에 의해 인식되는 바와 같이, 모션 벡터를 애플리케이션 영역과 연관시키는 것은 애플리케이션(301) 또는 적응적 검색 윈도우 포지셔너(304)에 의해 수행될 수 있다.
단계(708)에서, 하나 이상의 애플리케이션 영역들은 서브-영역들로 분할된다. 실시예에서, 각 서브-영역의 크기 및 위치는 적응적 검색 윈도우 포지셔너(304)에 의해 결정된다. 하나 이상의 서브-영역들의 입상도는 모션 추정의 정밀도와 메모리 트래픽 요건들과 계산 복잡도 사이의 균형을 제어한다. 당업자에 의해 인식되는 바와 같이, 다양한 전략들은 이러한 균형을 달성하기 위해 이용될 수 있다.
하나 이상의 애플리케이션 영역들을 서브-영역들로 분할한 후에, 고정 블록은 각 서브-영역에 대해 한정된다. 일실시예에서, 고정 블록은 서브-영역의 제 1 블록으로서 정의된다.
단계(710)에서, 검색 윈도우 포지션은 각 서브-영역에 대해 결정된다. 검색 윈도우의 포지션는 대응하는 애플리케이션 영역과 연관된 모션 벡터에 기초한다. 검색 윈도우는 연관된 모션 벡터에 의해 전환된 연관된 고정 블록의 병치된 블록 위치 상에 초기에 중심을 둔다. 고정 블록은 이 후 이 위치에서 검색 윈도우로 인코딩된다. 이러한 검색 윈도우 포지션에서 고정 블록을 인코딩하는 R-D 비용이 임계치보다 높으면, 추가 검색 윈도우 포지션들이 시도된다. 다양한 전략들은 추가 검색 윈도우 포지션들을 선택하는데 사용될 수 있다.
추가 검색 윈도우 포지션들을 식별한 후에, 추가 검색 윈도우 포지션들 각각에 검색 윈도우를 위치시키는 R-D 비용이 계산된다. 추가 검색 윈도우 포지션들 중에서 가장 낮은 R-D 비용이 여전히 위에서 설정된 임계치보다 높거나 동일하면, 검색 윈도우의 포지션는 초기 검색 윈도우 포지션에 남아있다. 다른 한 편으로, 추가 검색 윈도우 포지션들 중에서 가장 낮은 R-D 비용이 임계치보다 더 낮으면, 검색 윈도우는 가장 낮은 R-D 비용을 갖는 추가 검색 윈도우 포지션에 위치된다.
단계(712)에서, 고정 블록은 최종 검색 윈도우 포지션을 이용하여 인코딩된다. 더욱이, 서브-영역내 모든 비-고정 블록들은 최종 검색 윈도우 포지션을 이용하여 인코딩된다. 하지만, 비-고정 블록들에 대해, 최종 검색 윈도우 포지션은 각 비-고정 블록과 고정 블록 사이의 위치에서의 차이에 기초하여 편이된다.
하나의 서브-영역을 인코딩한 후에, 대응하는 애플리케이션 영역내 다른 서브-영역들이 인코딩된다. 각 다른 서브-영역은 동일한 최종 검색 윈도우 포지션을 이어받는다. 하지만, 검색 윈도우 포지션은 각 서브-영역의 대응하는 고정 블록에 대해 조정된다. 더욱이, 비-고정 블록들에 대해, 검색 윈도우 포지션은 각 비-고정 블록과 고정 블록 사이의 위치에서의 차이에 기초하여 유사하게 편이된다.
실시예에서, 예시를 위해 도 3의 시스템의 예를 이용하여, 모션 힌트(308)는 기준 및 현재 비디오 프레임들을 생성하는 애플리케이션(301)에 의해 수신된 모션 정보에 기초하여 생성될 수 있다. 애플리케이션(301)은 렌더링된 비디오 프레임들의 시퀀스와 연관되 모션 힌트(308)를 비디오 인코더(303)에 제공할 수 있다.
렌더링은 3차원 장면을 가상 카메라에 의해 관찰된 장면에 대응하는 2차원 평면으로 투사함으로써 비디오 프레임을 얻는 프로세스를 포함할 수 있다. 가상 카메라로부터 3차원 장면에서의 오브젝트들의 거리에 관련된 깊이 정보는, 3차원 장면내 어떤 오브젝트들이 렌더링된 비디오 프레임에서 사용자에게 보여져야 하거나 보여지지 않아야 한다는 것을 결정하기 위해 렌더링 프로세스 동안 계산될 수 있다. 예를 들어, 3차원 장면에서의 특정 오브젝트들은 사용자에게 보여지지 않을 수 있는데, 이는 이들 오브젝트들이 불투명한 3차원 장면에서의 다른 오브젝트들 뒤에 놓이기 때문이다.
도 8을 참조하면, 모션 힌트를 생성하는데 있어서 애플리케이션(301)에 의해 분석된 깊이 정보 및 카메라의 동작에 대한 추가 세부사항들은 본 개시의 실시예들에 따라 예시된다.
예시적인 동작에서, 애플리케이션(301)은 기준 비디오 프레임(201)에서 이미지 영역(804)을 선택한다. 애플리케이션(301)은 이 후 이미지 영역(804)에서 깊이 값과 2차원 포인트(802)(즉, 픽셀)를 연관시킬 수 있다. 일실시예에서, 2차원 포인트(802)는 이미지 영역(804)의 무게 중심으로서 선택되고, 깊이 값은 이미지 영역(804)에서 2차원 포인트들(즉, 픽셀들)의 평균 깊이 값으로서 설정된다. 일실시예에서, 이미지 영역(804)에서의 2차원 포인트들의 깊이 값들은, 이들이 가상 카메라(810)로부터 3차원 장면(808)에서 묘사하는 오브젝트들의 거리에 대응한다.
애플리케이션(301)은 2차원 포인트(802)를 3차원 장면(808)에서 3차원 포인트(806)로 다시 매핑할 수 있다. 당업자에 의해 인식되는 바와 같이, 2차원 포인트(802)를 3차원 포인트(806)로 매핑하는 것은 역 렌더링 프로세스일 수 있고, 기준 비디오 프레임(201)에서의 2차원 포인트(802)의 위치, 이와 연관된 깊이 값과, 기준 비디오 프레임(201)을 렌더링하는데 사용된 가상 카메라(814)의 위치와 방위를 이용하여 수행될 수 있다. 가상 카메라(810)의 위치 및 방위는 애플리케이션(301)에 이용가능하다.
애플리케이션(301)은 현재 비디오 프레임(206)을 렌더링하는데 사용된 가상 카메라(814)의 위치 및 방위에 기초하여 3차원 포인트(806)를 렌더링함으로써 현재 비디오 프레임(206)에서 3차원 포인트(806)를 2차원 포인트(812)(즉, 픽셀)에 매핑할 수 있다. 가상 카메라(814)의 위치 및 방위는 애플리케이션(301)에 유사하게 제공될 수 있다.
애플리케이션(301)은 2차원 포인트(802)와 2차원 포인트(812)의 위치에서의 차이에 기초하여 모션 벡터(816)를 결정할 수 있다.
애플리케이션(301)은 모션 힌트(308)를 결정하기 위해 모션 벡터(816){또는 모션 벡터(816)에 기초하여 결정된 몇몇 정보}를 결정할 수 있다. 애플리케이션(301)은 모션 힌트(308)를 비디오 인코더(303)에 제공한다. 위에 기재된 바와 같이, 비디오 인코더(303)는 현재 비디오 프레임(206)의 이미지 영역(818)에서 픽셀들의 블록을 더 효율적으로 인코딩하기 위해 모션 보상 예측을 수행하면서, 기준 비디오 프레임(201)에 검색 윈도우를 위치시키기 위해 모션 힌트(308)를 이용할 수 있다.
이제 도 9를 참조하면, 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 모션 벡터를 생성하기 위한 방법의 흐름도(900)는 본 개시의 실시예들에 따라 예시된다. 흐름도(900)의 방법은 위에 기재된 바와 같이 애플리케이션(301)에 의해 구현될 수 있다. 하지만, 방법이 또한 다른 시스템들 및 구성요소들에 의해 구현될 수 있다는 것이 주지되어야 한다. 흐름도(900)의 몇몇 단계들이 발생할 필요가 없거나 도 9에 도시된 순서로 발생할 필요가 없다는 것이 추가로 주지되어야 한다.
단계(902)에서, 인코딩될 현재 비디오 프레임과 기준 비디오 프레임과 연관된 카메라 및 깊이 정보가 수신된다.
단계(904)에서, 가상 카메라를 통해 보여진, 기준 비디오 프레임의 영역내 2차원 포인트(즉, 픽셀)는 2차원 포인트와 연과된 깊이 값에 기초하여, 그리고 기준 프레임의 렌더링 동안 가상 카메라의 위치 및 방위에 기초하여 3차원 포인트에 매핑될 수 있다. 일실시예에서, 2차원 포인트는 기준 비디오 프레임의 무게 중심으로서 선택될 수 있고, 깊이 값은 기준 비디오 프레임의 이미지 영역에서 2차원 포인트들(즉, 픽셀들)의 평균 깊이 값으로서 설정된다. 일실시예에서, 기준 비디오의 이미지 영역내 2차원 포인트들의 깊이 값들은 이들을 렌더링하는데 사용된 가상 카메라로부터 이들이 묘사하는 오브젝트들의 거리에 대응할 수 있다.
단계(906)에서, 3차원 포인트는 현재 프레임의 렌더링 동안 가상 카메라의 위치 및 방위에 기초하여 가상 카메라를 통해 보여진 현재 비디오 프레임내 2차원 포인트에 매핑될 수 있다.
단계(908)에서, 모션 벡터는 기준 비디오 프레임내 2차원 포인트와 현재 비디오 프레임내 2차원 포인트의 위치에서의 차이에 기초하여 결정될 수 있다.
단계(910)에서, 모션 힌트는 모션 벡터에 기초하여 결정될 수 있다. 모션 힌트는 현재 비디오 프레임을 인코딩하기 위해 비디오 인코더에 의해 수행된 모션-보상 예측 프로세스를 가이드하기 위해 비디오 인코더에 제공될 수 있다. 예를 들어, 비디오 인코더는 현재 비디오 프레임내 픽셀들의 블록을 더 효율적으로 인코딩하기 위해 모션 보상 예측을 수행하면서, 기준 비디오 프레임에 검색 윈도우를 위치시키기 위해 모션 힌트를 이용할 수 있다.
도 3 내지 도 9를 참조하여 위에 기재된 본 개시의 시스템 및 방법의 실시예들이 예를 들어, 서비스를 통해 비디오 게임을 플레이하는 것과 연관된 지연 시간의 양, 다운스트림 대역폭, 및/또는 계산 처리 파워를 개선하기 위해 클라우드 게이밍 서비스에서 동작하는 서버에 사용될 수 있다는 것이 주지되어야 한다. 본 개시의 방법 및 시스템은, 렌더링되거나 캡처된 비디오 게임과 연관된 모션 힌트 정보가 본 명세서에서의 가르침들에 기초하여 당업자에 의해 인식되는 바와 같이 이용가능한 다른 응용들에 추가로 사용될 수 있다. 예를 들어, 본 개시의 방법 및 시스템은 모션 정보와 연관된 사용자 명령들을 수신하는 비디오 게임 애플리케이션에 사용될 수 있다.
4. 컴퓨터 시스템 구현의 예
본 명세서에 기재된 바와 같이, 본 개시의 다양한 요소들 및 특징들이 아날로그 및/또는 디지털 회로들을 이용하는 하드웨어에서, 소프트웨어에서, 하나 이상의 일반적인 목적 또는 특수 목적의 프로세서들에 의한 지령들의 실시를 통해, 또는 하드웨어와 소프트웨어의 조합으로서 구현될 수 있다는 것이 당업자(들)에게 명백할 것이다.
일반적인 목적의 컴퓨터 시스템의 다음의 설명은 완벽함을 위해 제공된다. 본 개시의 실시예들은 하드웨어에서, 또는 소프트웨어와 하드웨어의 조합으로서 구현될 수 있다. 따라서, 본 개시의 실시예들은 컴퓨터 시스템 또는 다른 처리 시스템의 환경에서 구현될 수 있다. 그러한 컴퓨터 시스템(1000)의 예는 도 10에 도시된다. 도 1 및 도 3에 도시된 모든 모듈들은 하나 이상의 별도의 컴퓨터 시스템(1000) 상에서 실행할 수 있다. 더욱이, 도 7에 도시된 흐름도의 각 단계들은 하나 이상의 별도의 컴퓨터 시스템(1000) 상에서 구현될 수 있다.
컴퓨터 시스템(1000)은 프로세서(1004)와 같은 하나 이상의 프로세서들을 포함한다. 프로세서(1004)는 특수 목적 또는 일반적인 목적의 디지털 신호 프로세서일 수 있다. 프로세서(1004)는 통신 인프라구조(1002)(예를 들어, 버스 또는 네트워크)에 연결된다. 다양한 소프트웨어 구현들은 이러한 예시적인 컴퓨터 시스템에 관해 기재된다. 본 설명을 읽은 후에, 다른 컴퓨터 시스템들 및/또는 컴퓨터 구조들을 이용하여 개시된 실시예들을 어떻게 구현하는 지 당업자(들)에게 명백할 것이다.
컴퓨터 시스템(1000)은 또한 메인 메모리(1006), 바람직하게 랜덤 액세스 메모리(RAM)를 포함하고, 또한 보조 메모리(1008)를 포함할 수 있다. 보조 메모리(1008)는 예를 들어, 하드 디스크 드라이브(1010) 및/또는 플로피 디스크 드라이브, 자기 테이프 드라이브, 광 디스크 드라이브 등을 나타내는 제거가능 저장 드라이브(1012)를 포함할 수 있다. 제거가능 저장 드라이브(1012)는 잘 알려진 방식으로 제거가능 저장 유닛(1016)으로부터 판독되고, 및/또는 이에 기록된다. 제거가능 저장 유닛(1016)은 플로피 디스크, 자기 테이프, 광 디스크 등을 나타내고, 이것은 제거가능 저장 드라이브(1012)에 의해 판독되고, 이에 기록된다. 당업자(들)에 의해 인식되는 바와 같이, 제거가능 저장 유닛(1016)은 그 안에 컴퓨터 소프트웨어 및/또는 데이터를 저장한 컴퓨터 사용가능 저장 매체를 포함한다.
대안적인 구현들에서, 보조 메모리(1008)는 컴퓨터 프로그램들 또는 다른 지령들이 컴퓨터 시스템(1000)에 로딩되도록 하기 위한 다른 유사한 수단을 포함할 수 있다. 그러한 수단은 예를 들어, 제거가능 저장 유닛(1018) 및 인터페이스(1014)를 포함할 수 있다. 그러한 수단의 예들은 프로그램 카트리지 및 카트리지 인터페이스(비디오 게임 디바이스들에서 발견된 것과 같은), 제거가능 메모리 칩(EPROM, 또는 PROM) 및 연관된 소켓, 썸 드라이브 및 USB 포트, 및 소프트웨어 및 데이터가 제거가능 저장 유닛(1018)으로부터 컴퓨터 시스템(1000)으로 전달되도록 하는 다른 제거가능 저장 유닛들(1018) 및 인터페이스들(1014)을 포함할 수 있다.
컴퓨터 시스템(1000)은 또한 통신 인터페이스(1020)를 포함할 수 있다. 통신 인터페이스(1020)는 소프트웨어 및 데이터가 컴퓨터 시스템(1000)과 외부 디바이스들 사이로 전달되도록 한다. 통신 인터페이스(1020)의 예들은 모뎀, 네트워크 인터페이스(이더넷 카드와 같은), 통신 포트, PCMCIA 슬롯 및 카드, 등을 포함할 수 있다. 통신 인터페이스(1020)를 통해 전달된 소프트웨어 및 데이터는 전자, 전자기, 광학일 수 있는 신호들, 또는 통신 인터페이스(1020)에 의해 수신될 수 있는 다른 신호들의 형태이다. 이들 신호들은 통신 경로(1022)를 통해 통신 인터페이스(1020)에 제공된다. 통신 경로(1022)는 신호들을 운반하고, 와이어 또는 케이블, 광섬유, 전화 라인, 셀룰러 폰 링크, RF 링크 및 다른 통신 채널들을 이용하여 구현될 수 있다.
본 명세서에 사용된 바와 같이, "컴퓨터 프로그램 매체" 및 "컴퓨터 판독가능 매체"라는 용어들은 일반적으로 제거가능 저장 유닛들(1016 및 1018) 또는 하드 디스크 드라이브(1010)에 설치된 하드 디스크와 같은 실체적인 저장 매체로 언급하는데 사용된다. 이들 컴퓨터 프로그램 제품들은 소프트웨어를 컴퓨터 시스템(1000)에 제공하기 위한 수단이다.
컴퓨터 프로그램들(또한 컴퓨터 제어 로직으로 지칭됨)은 메인 메모리(1006) 및/또는 보조 메모리(1008)에 저장된다. 컴퓨터 프로그램들은 또한 통신 인터페이스(1020)를 통해 수신될 수 있다. 그러한 컴퓨터 프로그램들은 실행될 때 본 명세서에 논의된 바와 같이 컴퓨터 시스템(1000)이 본 개시를 구현하도록 한다. 특히, 컴퓨터 프로그램들은 실행될 때 프로세서(1004)가 본 명세서에 기재된 임의의 방법들과 같이 본 개시의 프로세스들을 구현하도록 한다. 따라서, 그러한 컴퓨터 프로그램들은 컴퓨터 시스템(1000)의 제어기들을 나타낸다. 개시된 실시예들이 소프트웨어를 이용하여 구현되는 경우, 소프트웨어는 컴퓨터 프로그램 제품에 저장될 수 있고, 제거가능 저장 드라이브(1012), 인터페이스(1014), 또는 통신 인터페이스(1020)를 이용하여 컴퓨터 시스템(1000)에 로딩될 수 있다.
다른 실시예에서, 본 개시의 특징들은 예를 들어 응용-특정 집적 회로들(ASICs) 및 게이트 어레이들과 같은 하드웨어 구성요소들을 이용하여 주로 하드웨어에서 구현된다. 본 명세서에 기재된 기능들을 수행하도록 하드웨어 상태 기계의 구현은 또한 당업자(들)에게 명백할 것이다.
요약 및 요약 섹션들은 본 발명자(들)에 의해 구상된 하나 이상일 뿐 아니라 모든 예시적인 실시예들을 설명할 수 있고, 어쨋든 실시예들 및 첨부된 청구항들을 제한하도록 의도되지 않는다.
본 명세서의 실시예들은 지정된 기능들의 구현 및 그 관련성들을 예시하는 기능 구축 블록도의 도움으로 위에 기재되었다. 이들 기능 구축 블록들의 경계들은 설명의 편리함을 위해 본 명세서에 임의의 한정되었다. 대안적인 경계들이 지정된 기능들 및 관련성들이 적절히 수행되는 한 정의될 수 있다.
특정 실시예들의 이전 설명은, 다른 실시예들이 해당 기술 내의 지식을 적용함으로써 실시예들의 일반적인 개념에서 벗어나지 않고도 과도한 실험 없이 그러한 특정 실시예들을 다양한 응용들에 대해 쉽게 변형하고 및/또는 적응할 수 있는 실시예들의 일반적인 특성을 완전히 나타낼 것이다. 그러므로, 그러한 적응 및 변형은 본 명세서에 표현된 가르침 및 가이드에 기초하여 개시된 실시예들의 등가물들의 의미 및 범위 내에 있도록 의도된다. 본 명세서의 구문 또는 용어가 제한을 위해서가 아니라 설명을 위한 것이어서, 본 명세서의 용어 또는 구문이 가르침 및 가이드를 고려하여 당업자에 의해 해석될 것이라는 것이 이해될 것이다.

Claims (25)

  1. 방법으로서,
    복수의 비디오 프레임들과 관련된 모션 정보에 기초하여 생성된 모션 힌트(motion hint)를 수신하는 단계 - 상기 복수의 비디오 프레임들은 기준 비디오 프레임 및 현재 비디오 프레임을 포함하고, 상기 모션 힌트는 상기 현재 비디오 프레임의 하나 이상의 영역과 연관된 하나 이상의 모션 벡터와 관련됨 - 와;
    상기 기준 비디오 프레임의 검색 윈도우를 사용하여 상기 복수의 비디오 프레임들에서 매칭하는 픽셀들의 블록들을 검색하는 단계 - 상기 검색 윈도우의 포지션은 상기 모션 힌트를 사용하여 업데이트되고, 상기 검색 윈도우는 상기 매칭하는 픽셀들의 블록들의 모션을 캡처함 - 와; 그리고
    상기 모션 힌트 및 상기 검색 윈도우를 사용하여 상기 현재 비디오 프레임을 인코딩하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 기준 비디오 프레임 및 현재 비디오 프레임은 비디오 프레임들의 시퀀스내 연속 비디오 프레임들인, 방법.
  3. 삭제
  4. 청구항 1에 있어서,
    상기 기준 비디오 프레임내 상기 검색 윈도우에 대한 포지션(position)에 기초하여 고정 블록(anchor block)을 인코딩하기 위한 율-왜곡(R-D : rate-distortion) 비용을 계산하는 단계 - 상기 고정 블록은 상기 현재 비디오 프레임의 서브-영역의 제 1 블록임 - 와;
    상기 R-D 비용을 R-D 임계치와 비교하는 단계와;
    상기 비교에 기초하여 상기 기준 비디오 프레임내 추가 검색 윈도우(extra search window) 포지션들을 식별하는 단계와; 그리고
    상기 비교에 기초하여 상기 검색 윈도우의 포지션을 상기 추가 검색 윈도우 포지션들 중 하나에 업데이트하는 단계를 포함하는, 방법.
  5. 삭제
  6. 청구항 1에 있어서, 상기 현재 비디오 프레임의 영역을 서브-영역들로 분할하는 단계를 더 포함하고, 각 서브-영역은 고정 블록을 갖는, 방법.
  7. 청구항 6에 있어서, 모션 벡터 분포, 상기 기준 비디오 프레임과 현재 비디오 프레임 사이의 시간 차이, 및 장면 변화 힌트(scene change hint) 중 적어도 하나에 기초하여 상기 현재 비디오 프레임의 영역을 상기 서브-영역들로 분할하는 단계를 더 포함하는, 방법.
  8. 청구항 1에 있어서, 상기 현재 비디오 프레임의 영역의 서브-영역내 픽셀들의 블록을 인코딩하는데 사용하는 상기 기준 비디오 프레임내 검색 윈도우에 대한 포지션을 결정하기 위해 상기 모션 벡터가 이용되는, 방법.
  9. 청구항 8에 있어서, 상기 현재 비디오 프레임의 상기 서브-영역내 픽셀들의 상기 블록을 인코딩하는데 사용하는 상기 기준 비디오 프레임내 상기 검색 윈도우에 대한 포지션을 결정하기 위해 상기 모션 벡터에 의해 전환된 상기 서브-영역내 고정 블록을 이용하는 단계를 더 포함하는, 방법.
  10. 삭제
  11. 시스템으로서,
    프로세서;
    메모리; 및
    비디오 인코더를 포함하고,
    상기 비디오 인코더는:
    복수의 비디오 프레임들과 관련된 모션 정보에 기초하여 생성된 모션 힌트를 수신하고, 상기 복수의 비디오 프레임들은 기준 비디오 프레임 및 현재 비디오 프레임을 포함하고, 상기 모션 힌트는 상기 현재 비디오 프레임의 하나 이상의 영역과 연관된 하나 이상의 모션 벡터와 관련되며,
    상기 기준 비디오 프레임의 검색 윈도우를 사용하여 상기 복수의 비디오 프레임들에서 매칭하는 픽셀들의 블록들을 검색하고, 상기 검색 윈도우의 포지션은 상기 모션 힌트를 사용하여 업데이트되고, 상기 검색 윈도우는 상기 매칭하는 픽셀들의 블록들의 모션을 캡처하며, 그리고
    상기 모션 힌트 및 상기 검색 윈도우를 사용하여 상기 현재 비디오 프레임을 인코딩하도록 구성되는, 시스템.
  12. 청구항 11에 있어서, 상기 기준 비디오 프레임 및 현재 비디오 프레임은 비디오 프레임들의 시퀀스내 연속 비디오 프레임들인, 시스템.
  13. 삭제
  14. 청구항 11에 있어서, 상기 비디오 인코더는:
    상기 기준 비디오 프레임내 상기 검색 윈도우의 포지션에 기초하여 고정 블록을 인코딩하기 위한 율-왜곡(R-D) 비용을 계산하고, 상기 고정 블록은 상기 현재 비디오 프레임의 영역내 서브-영역의 제 1 블록이며;
    상기 R-D 비용을 R-D 임계치와 비교하고;
    상기 비교에 기초하여 상기 기준 비디오 프레임내 추가 검색 윈도우 포지션들을 식별하고;
    상기 비교에 기초하여 상기 검색 윈도우의 포지션을 상기 추가 검색 윈도우 포지션들 중 하나에 업데이트하도록 추가로 구성되는, 시스템.
  15. 방법으로서,
    제 1 비디오 프레임을 영역들로 분할하는 단계 - 상기 영역들 중 제 1 영역은 제 1의 2차원 포인트를 포함함 - 와;
    제 2 비디오 프레임을 영역들로 분할하는 단계 - 상기 영역들 중 제 1 영역은 제 2의 2차원 포인트를 포함함 - 와;
    상기 제 1의 2차원 포인트와 상기 제 2의 2차원 포인트 사이의 모션 정보에 기초하여 모션 벡터를 결정하는 단계와; 그리고
    복수의 비디오 프레임들과 관련된 모션 정보에 기초한 상기 모션 벡터를 이용하여 모션 힌트를 생성하는 단계 - 상기 복수의 비디오 프레임들은 기준 비디오 프레임 및 현재 비디오 프레임을 포함하고, 상기 모션 힌트는 상기 제 1의 2차원 포인트 및 상기 제 2의 2차원 포인트와 연관된 하나 이상의 모션 벡터와 관련됨 - 와;
    상기 기준 비디오 프레임의 검색 윈도우를 사용하여 상기 복수의 비디오 프레임들에서 매칭하는 픽셀들의 블록들을 검색하는 단계 - 상기 검색 윈도우의 포지션은 상기 모션 힌트를 사용하여 업데이트되고, 상기 검색 윈도우는 상기 매칭하는 픽셀들의 블록들의 모션을 캡처함 - 와; 그리고
    상기 모션 힌트 및 상기 검색 윈도우를 사용하여 상기 제 2 비디오 프레임을 인코딩하는 단계를 포함하는, 방법.
  16. 청구항 15에 있어서, 상기 모션 정보는 상기 제 1의 2차원 포인트 및 상기 제 2의 2차원 포인트의 위치에서의 차이에 기초하는, 방법.
  17. 청구항 16에 있어서,
    카메라를 이용하여 상기 제 1 비디오 프레임을 보는 단계; 및
    상기 카메라의 위치 및 방위와 깊이 값(depth value)에 기초하여 상기 제 1의 2차원 포인트를 3차원 포인트에 매핑하는 단계를 더 포함하는, 방법.
  18. 청구항 17에 있어서,
    상기 카메라의 위치 및 방위에 기초하여 상기 3차원 포인트를 상기 제 2의 2차원 포인트에 매핑하는 단계를 더 포함하는, 방법.
  19. 청구항 17에 있어서,
    상기 깊이 값은 상기 카메라로부터의 3차원 장면내 오브젝트(object)의 거리인, 방법.
  20. 시스템으로서,
    컴퓨터 판독가능한 저장 장치; 및
    인코더를 포함하고,
    상기 컴퓨터 판독가능한 저장 장치에는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 모션 벡터를 사용하여 모션 힌트를 생성하도록 하는 명령어들이 기록되며, 상기 명령어들은:
    상기 프로세서가 제 1 비디오 프레임 및 제 2 비디오 프레임을 생성하고, 상기 제 1 비디오 프레임의 제 1 영역내 제 1의 2차원 포인트와 상기 제 2 비디오 프레임의 제 2 영역내 제 2의 2차원 포인트 사이의 모션 정보에 기초하여 상기 모션 벡터를 결정하고, 그리고 상기 모션 벡터를 이용하여 상기 모션 힌트를 생성하도록 하는 코드를 포함하며,
    상기 인코더는:
    복수의 비디오 프레임들과 관련된 모션 정보에 기초하여 생성된 모션 힌트를 수신하고, 상기 모션 힌트는 상기 제 1의 2차원 포인트 및 상기 제 2의 2차원 포인트와 연관된 하나 이상의 모션 벡터와 관련되며;
    상기 제 1 비디오 프레임의 검색 윈도우를 사용하여 상기 비디오 프레임들에서 매칭하는 픽셀들의 블록들을 검색하고, 상기 검색 윈도우의 포지션은 상기 모션 힌트를 사용하여 업데이트되고, 상기 검색 윈도우는 상기 매칭하는 픽셀들의 블록들의 모션을 캡처하며; 그리고
    상기 모션 힌트 및 상기 검색 윈도우에 기초하여 상기 제 2 비디오 프레임내 상기 제 2 영역내 픽셀들의 블록을 인코딩하도록 구성되는, 시스템.
  21. 청구항 20에 있어서, 상기 인코더는:
    상기 검색 윈도우의 포지션에 기초하여 상기 픽셀들의 블록을 인코딩하도록 더 구성되는, 시스템.
  22. 청구항 20에 있어서, 상기 코드는:
    상기 프로세서로 하여금, 상기 제 1의 2차원 포인트와 상기 제 2의 2차원 포인트의 위치에서의 차이에 기초하여 상기 모션 정보를 결정하도록 추가로 구성되는, 시스템.
  23. 청구항 22에 있어서, 상기 코드는: 상기 프로세서로 하여금,
    카메라를 이용하여 상기 제 1 비디오 프레임을 보고; 그리고
    상기 카메라의 위치 및 방위와 깊이 값에 기초하여 상기 제 1의 2차원 포인트를 3차원 포인트에 매핑하도록 추가로 구성되는, 시스템.
  24. 청구항 23에 있어서, 상기 코드는:
    상기 프로세서로 하여금, 상기 카메라의 상기 위치 및 방위에 기초하여 상기 3차원 포인트를 상기 제 2의 2차원 포인트에 매핑하도록 추가로 구성되는, 시스템.
  25. 청구항 23에 있어서, 상기 깊이 값은 상기 카메라로부터 3차원 장면내 오브젝트의 거리인, 시스템.
KR1020177005224A 2014-08-01 2015-07-30 비디오 인코딩을 위한 적응적 검색 윈도우 포지셔닝 KR102449759B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/450,094 2014-08-01
US14/450,094 US9769494B2 (en) 2014-08-01 2014-08-01 Adaptive search window positioning for video encoding
PCT/CA2015/050719 WO2016015155A1 (en) 2014-08-01 2015-07-30 Adaptive search window positioning for video encoding

Publications (2)

Publication Number Publication Date
KR20170040276A KR20170040276A (ko) 2017-04-12
KR102449759B1 true KR102449759B1 (ko) 2022-09-30

Family

ID=55181444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177005224A KR102449759B1 (ko) 2014-08-01 2015-07-30 비디오 인코딩을 위한 적응적 검색 윈도우 포지셔닝

Country Status (6)

Country Link
US (1) US9769494B2 (ko)
EP (1) EP3175620A4 (ko)
JP (1) JP6605581B2 (ko)
KR (1) KR102449759B1 (ko)
CN (1) CN106576170B (ko)
WO (1) WO2016015155A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9769494B2 (en) * 2014-08-01 2017-09-19 Ati Technologies Ulc Adaptive search window positioning for video encoding
WO2018068264A1 (zh) * 2016-10-13 2018-04-19 富士通株式会社 图像编码/解码方法、装置以及图像处理设备
JP7320352B2 (ja) * 2016-12-28 2023-08-03 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元モデル送信方法、三次元モデル受信方法、三次元モデル送信装置及び三次元モデル受信装置
WO2019001734A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. ENCODER, DECODER, COMPUTER PROGRAM, AND COMPUTER PROGRAM PRODUCT FOR PROCESSING A FRAME OF A VIDEO SEQUENCE
CN109429065A (zh) * 2017-09-05 2019-03-05 联咏科技股份有限公司 视频编码装置及视频编码方法
WO2021163862A1 (zh) * 2020-02-18 2021-08-26 深圳市大疆创新科技有限公司 视频编码的方法与装置
CN111447444A (zh) * 2020-03-13 2020-07-24 西安万像电子科技有限公司 图像处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120147961A1 (en) * 2010-12-09 2012-06-14 Qualcomm Incorporated Use of motion vectors in evaluating geometric partitioning modes
US20130072299A1 (en) * 2011-09-16 2013-03-21 Sony Computer Entertainment Inc. Three-dimensional motion mapping for cloud gaming

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06189291A (ja) * 1992-12-21 1994-07-08 Sharp Corp 画像の動き検出装置
US5473379A (en) * 1993-11-04 1995-12-05 At&T Corp. Method and apparatus for improving motion compensation in digital video coding
JPH0937269A (ja) * 1995-07-25 1997-02-07 Hitachi Ltd 画像圧縮装置
US6049362A (en) * 1996-02-14 2000-04-11 International Business Machines Corporation Dual prime motion estimation system and method
JP2004518105A (ja) 1999-11-12 2004-06-17 ゴー・センサーズ・エルエルシー 向きと距離を測定するための方法と装置
JP3753578B2 (ja) * 1999-12-07 2006-03-08 Necエレクトロニクス株式会社 動きベクトル探索装置および方法
US6795068B1 (en) 2000-07-21 2004-09-21 Sony Computer Entertainment Inc. Prop input device and method for mapping an object from a two-dimensional camera image to a three-dimensional space for controlling action in a game program
US20040104935A1 (en) * 2001-01-26 2004-06-03 Todd Williamson Virtual reality immersion system
JP3941921B2 (ja) * 2002-01-25 2007-07-11 三菱電機株式会社 動画像符号化装置
US7038676B2 (en) * 2002-06-11 2006-05-02 Sony Computer Entertainmant Inc. System and method for data compression
JP3968712B2 (ja) * 2003-04-28 2007-08-29 ソニー株式会社 動き予測補償装置及びその方法
US20050286777A1 (en) 2004-06-27 2005-12-29 Roger Kumar Encoding and decoding images
EP1878229A4 (en) 2005-04-28 2011-07-27 Apple Inc VIDEO PROCESSING IN MULTIPLE PARTICIPANT VIDEO CONFERENCE
JP4389866B2 (ja) * 2005-12-12 2009-12-24 セイコーエプソン株式会社 画像処理方法、画像処理装置、表示装置およびプログラム
US8494052B2 (en) * 2006-04-07 2013-07-23 Microsoft Corporation Dynamic selection of motion estimation search ranges and extended motion vector ranges
CN100584006C (zh) * 2006-06-20 2010-01-20 中兴通讯股份有限公司 一种基于时间分辨率变换的视频转换处理方法
US8121423B2 (en) * 2007-10-12 2012-02-21 Microsoft Corporation Remote user interface raster segment motion detection and encoding
JP5171675B2 (ja) * 2009-02-03 2013-03-27 三洋電機株式会社 画像処理装置、およびそれを搭載した撮像装置
KR20110061468A (ko) * 2009-12-01 2011-06-09 (주)휴맥스 고해상도 영상의 부호화/복호화 방법 및 이를 수행하는 장치
US9357228B2 (en) * 2010-05-27 2016-05-31 The Hong Kong University Of Science And Technology Motion estimation of images
CN101945284B (zh) * 2010-09-29 2013-01-02 无锡中星微电子有限公司 一种运动估计的装置和方法
JP5979848B2 (ja) * 2011-11-08 2016-08-31 キヤノン株式会社 画像符号化方法、画像符号化装置及びプログラム、画像復号方法、画像復号装置及びプログラム
EP2645713A1 (en) * 2012-03-30 2013-10-02 Alcatel Lucent Method and apparatus for encoding a selected spatial portion of a video stream
US10602175B2 (en) * 2012-12-21 2020-03-24 Nvidia Corporation Using an average motion vector for a motion search
US9483845B2 (en) * 2013-04-26 2016-11-01 Nvidia Corporation Extending prediction modes and performance of video codecs
US10491916B2 (en) * 2013-10-01 2019-11-26 Advanced Micro Devices, Inc. Exploiting camera depth information for video encoding
US9769494B2 (en) * 2014-08-01 2017-09-19 Ati Technologies Ulc Adaptive search window positioning for video encoding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120147961A1 (en) * 2010-12-09 2012-06-14 Qualcomm Incorporated Use of motion vectors in evaluating geometric partitioning modes
US20130072299A1 (en) * 2011-09-16 2013-03-21 Sony Computer Entertainment Inc. Three-dimensional motion mapping for cloud gaming

Also Published As

Publication number Publication date
JP6605581B2 (ja) 2019-11-13
JP2017526268A (ja) 2017-09-07
KR20170040276A (ko) 2017-04-12
EP3175620A4 (en) 2018-02-28
CN106576170A (zh) 2017-04-19
CN106576170B (zh) 2019-06-21
WO2016015155A1 (en) 2016-02-04
US9769494B2 (en) 2017-09-19
EP3175620A1 (en) 2017-06-07
US20160037166A1 (en) 2016-02-04

Similar Documents

Publication Publication Date Title
KR102449759B1 (ko) 비디오 인코딩을 위한 적응적 검색 윈도우 포지셔닝
US11252430B2 (en) Exploiting camera depth information for video encoding
US10390040B2 (en) Method, apparatus, and system for deep feature coding and decoding
EP3264767B1 (en) Image coding/decoding method and related apparatus
US20150341664A1 (en) Method and apparatus of disparity vector derivation in three-dimensional video coding
KR102177900B1 (ko) 비디오에 있어서의 키포인트 궤적을 처리하는 방법
US10742989B2 (en) Variable frame rate encoding method and device based on a still area or a motion area
CN104717510A (zh) 用于图像处理的方法和装置
KR20060055534A (ko) 다중-장면 비디오 코딩을 위한 의미론에 기초한 동작 평가
US20160277756A1 (en) Method, apparatus and coder for selecting optimal reference frame in hevc coding
US10244259B2 (en) Method and apparatus of disparity vector derivation for three-dimensional video coding
US10924758B2 (en) Method and apparatus for determining a motion vector
US20150264356A1 (en) Method of Simplified Depth Based Block Partitioning
WO2019175057A1 (en) Method and apparatus for processing a 3d scene
Zhao et al. Real-time scene-aware LiDAR point cloud compression using semantic prior representation
US10536726B2 (en) Pixel patch collection for prediction in video coding system
Afonso et al. Energy-aware motion and disparity estimation system for 3D-HEVC with run-time adaptive memory hierarchy
CA2921759C (en) Method of motion information prediction and inheritance in multi-view and three-dimensional video coding
TWI548264B (zh) 3d影像編碼中的視圖間先進殘餘値預測方法
US20160173854A1 (en) Multiview video coding method using non-referenced view video group
KR20230166173A (ko) 깊이 영상의 화면 내 예측을 위한 이차 곡면 표면 모델링을 통한 화면 내 예측방법 및 이를 위한 장치
Naman et al. Overlapping motion hints with polynomial motion for video communication
US10783609B2 (en) Method and apparatus for processing video information
CN105306953A (zh) 图像编码方法和装置
Chen et al. A shape-adaptive low-complexity technique for 3D free-viewpoint visual applications

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