KR102523311B1 - 인코딩된 비트 스트림에서의 움직임 벡터 표현 - Google Patents

인코딩된 비트 스트림에서의 움직임 벡터 표현 Download PDF

Info

Publication number
KR102523311B1
KR102523311B1 KR1020227024378A KR20227024378A KR102523311B1 KR 102523311 B1 KR102523311 B1 KR 102523311B1 KR 1020227024378 A KR1020227024378 A KR 1020227024378A KR 20227024378 A KR20227024378 A KR 20227024378A KR 102523311 B1 KR102523311 B1 KR 102523311B1
Authority
KR
South Korea
Prior art keywords
precision
frames
region
value
frame
Prior art date
Application number
KR1020227024378A
Other languages
English (en)
Other versions
KR20220104075A (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 KR20220104075A publication Critical patent/KR20220104075A/ko
Application granted granted Critical
Publication of KR102523311B1 publication Critical patent/KR102523311B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • 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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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
    • 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/172Methods 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 picture, frame or field
    • 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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/55Motion estimation with spatial constraints, e.g. at image or region borders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

움직이는 이미지 데이터를 인코딩하는데 사용하기 위한 포맷은, 적어도 하나의 영역이 움직임 추정을 사용하여 인코딩되는 복수의 프레임을 포함하는 프레임 시퀀스; 상기 프레임 각각 또는 상기 프레임 각각 내의 하나 이상의 영역 각각에 대한 움직임 추정의 움직임 벡터를 나타내는 움직임 벡터 값들의 세트; 및 개개의 프레임 또는 영역의 개개의 움직임 벡터 값이 제 1 해상도 또는 제 2 해상도로 인코딩되는지를 나타내는, 상기 개개의 프레임 또는 영역 각각과 연관된 적어도 하나의 지표를 포함한다.

Description

인코딩된 비트 스트림에서의 움직임 벡터 표현{REPRESENTING MOTION VECTORS IN AN ENCODED BITSTREAM}
현대 통신 시스템들에서, 비디오 신호는 유선 네트워크 및/또는 무선 네트워크와 같은 매체, 대개 인터넷과 같은 패킷 기반 네트워크를 통해 하나의 단말기로부터 다른 단말기에 전송될 수 있다. 예를 들어, 비디오는 데스크톱 또는 랩톱 컴퓨터, 태블릿 또는 스마트 폰과 같은 사용자 단말기에서 실행되는 VoIP(voice over Internet Protocol) 클라이언트 애플리케이션으로부터 처리되는 VoIP 호출(call)의 일부일 수 있다.
통상적으로, 비디오의 프레임은 네트워크를 통한 전송을 위해 이들을 압축하기 위해, 송신 단말기에서 인코더에 의해 인코딩된다. 주어진 프레임에 대한 인코딩은 블록이 동일한 프레임에서의 다른 블록에 관하여 인코딩되는 인트라 프레임(intra frame) 인코딩을 포함할 수 있다. 이 경우, 타겟 블록은 해당 블록과 이웃 블록 간의 차이(잔차) 면에서 인코딩된다. 대안적으로, 일부 프레임에 대한 인코딩은 타겟 프레임에서의 블록이 통상적으로 움직임 예측에 기초하여, 이전 프레임에서의 대응 부분에 관하여 인코딩되는 인터 프레임(inter frame) 인코딩을 포함할 수 있다. 이 경우, 타겟 블록은 해당 블록과 예측될 대응 부분 간의 오프셋, 및 해당 블록과 예측되는 대응 부분 간의 차이(잔차)를 식별하는 움직임 벡터 면에서 인코딩된다. 수신기에 있는 대응하는 디코더가 디코더 측의 스크린으로의 출력을 위해 수신된 비디오 신호의 프레임을 압축 해제하기 위해, 적절한 타입의 예측에 기초하여 상기 수신된 비디오 신호의 프레임을 디코딩한다.
비디오를 인코딩(압축)할 때, 움직임 벡터는 현재 프레임에 대한 인터 프레임 예측을 생성하기 위해 사용된다. 인코더는 먼저 현재 블록(타겟 블록)과 가장 일치하는 이전에 인코딩된 프레임에서의 유사 블록(기준 블록)을 검색하고, 인코딩된 비트 스트림의 일부로서 디코더에 기준 블록과 타겟 블록 간의 변위를 시그널링한다. 변위는 통상적으로 수평 및 수직의 x 및 y 좌표로서 표현되고, 움직임 벡터로 지칭된다.
기준 "블록"은 사실은 기준 프레임의 실제 블록 위치에 있는 것으로 제한되지 않고, 즉, 타겟 블록과 동일한 그리드로 한정되는 것이 아니라, 움직임 벡터만큼 타겟 블록의 위치에 관해 오프셋된 기준 프레임의 대응 크기 부분이다. 현재 표준에 따라, 움직임 벡터는 부화소 해상도(fractional pixel resolution)로 표현된다. 예를 들어, H.264 표준에서, 각각의 움직임 벡터는 ¼ 화소 해상도로 표현된다. 그래서 한 예로서, 현재 프레임의 16×16 블록이 타겟 블록 위치의 1 화소 좌측에 있는 이전 프레임의 다른 16×16 블록으로부터 예측될 경우, 그 움직임 벡터는 (4,0) 이다. 또는, 타겟 블록이 타겟 블록의 좌측으로 단지 화소의 ¾에 있는 기준 블록으로부터 예측될 경우, 움직임 벡터는 (3,0) 이다. 부화소 위치에 있는 기준 블록은 실제로 그 자체가 존재하는 것이 아니라, 기준 프레임의 화소들 간의 보간에 의해 생성된다. 서브 화소 움직임 벡터는 압축 효율 면에서 상당한 성능을 달성할 수 있다.
그러나, 부화소 해상도를 사용하는 것은 움직임이 정수 화소 해상도(integer pixel resolution)에서 추정되었던 경우보다 움직임 벡터를 인코딩하기 위해 더 많은 비트를 초래하고, 또한 최상의 일치 기준을 검색하는데 더 많은 처리 자원을 초래한다. 비디오 코딩의 경우, 이것은 가치가 있을 수 있고, 예컨대, 더 많이 일치된 잔차의 감소된 크기는 일반적으로 움직임 벡터를 인코딩하는데 초래되는 비트보다 클 수 있기 때문에, 또는 획득된 품질은 자원을 조정하기 위해 고려될 수 있기 때문에, 가치가 있을 수 있다. 그러나, 인코딩될 모든 움직이는 이미지는 비디오(즉, 카메라에서 캡처됨)가 아니다. 본원에서는, 카메라보다는 스크린에서 캡처된 움직이는 이미지를 인코딩(압축)할 때, 인코딩된 비트 스트림의 움직임 벡터의 대부분이 일반적으로 정수 화소를 가리킬 것이고, 부화소 위치에는 발견되는 경향이 거의 없다는 것이 인식된다. 따라서, 인코더는 보통 ¼ 화소 단위로 비트 스트림에서 움직임 벡터를 나타내지만, 애플리케이션을 공유 또는 기록하는 스크린의 경우, 단지 1 화소 단위로 움직임 벡터를 인코딩함으로써, 대역폭은 실제로 품질의 과도한 손실 없이 절약될 수 있다.
그럼에도 불구하고, 분수 움직임 벡터가 보통의 비디오(카메라에 의해 캡처됨) 또는 아마 다른 움직이는 이미지(예컨대, 애니메이션)에 여전히 유용하다는 것을 고려하면, 움직임 벡터는 융통성 있는 방법으로 시그널링될 수 있다. 비디오 소스가 캡처된 스크린에서 오는 경우, 움직임 벡터는 1 화소 단위로 시그널링될 수 있지만, 보통의 비디오 및/또는 다른 움직이는 이미지의 경우, 부화소 단위가 여전히 사용될 수 있다.
보다 일반적으로, 예컨대, 인코더의 설계자가 임의의 원하는 트레이드 오프 또는 효과를 구현하기를 원하는 방법에 따라, 부화소 또는 정수 화소 움직임 벡터 해상도가 사용되는지의 여부에 대한 제어를 갖는 것이 유용할 수 있는 여러 상황이 있을 수 있다. 예컨대, 아마도 일부 비디오 또는 애니메이션은 자신들의 특징의 일부 양태로 인해, 움직임 추정에서 정수 화소 해상도로 더욱 효율적으로 제공될 것이고, 다른 비디오 또는 다른 타입의 움직이는 이미지는 부화소 해상도로 더욱 효율적으로 제공될 수 있다.
따라서, 본원에 개시된 일 양태에 따라, 움직이는 이미지 데이터를 인코딩하는데 사용하기 위한 포맷이 제공되고, 그것에 의하여, 상기 포맷에 따라 인코딩된 움직이는 이미지 데이터는,
·적어도 하나의 영역이 움직임 추정을 사용하여 인코딩되는 복수의 프레임을 포함하는 프레임 시퀀스;
·상기 프레임 각각 또는 상기 프레임 각각 내의 하나 이상의 영역 각각에 대한 움직임 추정의 움직임 벡터를 나타내는 움직임 벡터 값의 세트; 및
·개개의 프레임 또는 영역의 개개의 움직임 벡터 값이 제 1 해상도 또는 제 2 해상도로 인코딩되는지를 나타내는, 상기 개개의 프레임 또는 영역 각각과 연관된 적어도 하나의 지표를 포함한다.
제 1 해상도로 인코딩된 움직임 벡터 값은 많은 수의 미세한 단계(finer step)를 갖는 스케일로 표현되고, 제 2 해상도로 인코딩된 움직임 벡터 값은 적은 수의 대강의 단계(coarser step)를 갖는 스케일로 표현되는 프로토콜에 따라 움직임 벡터 값은 인코딩되고, 이에 의해, 인코딩된 비트 스트림에 평균적으로 더 적은 비트를 초래한다. 대강의 단계는 정수 화소 단위를 나타내며, 미세한 단계는 부화소 단위를 나타낸다.
본원에 개시된 다른 양태에 따라, 포맷 또는 프로토콜에 따라 인코딩된 움직이는 이미지 데이터의 비트 스트림을 전달하는 네트워크 요소 또는 컴퓨터 판독 가능 저장 매체가 제공된다.
실시예에서, 제 1 해상도로 인코딩된 복수의 프레임 또는 영역의 일부 및 제 2 해상도로 인코딩된 복수의 프레임 또는 영역의 다른 부분을 포함하는 비트 스트림이 제공될 수 있고, 개개의 지표는 상기 복수의 (인터 프레임 인코딩된) 프레임 또는 영역 각각에 대해 개별적으로 해상도를 나타낸다.
실시예에서, 각각의 프레임 또는 영역의 움직임 벡터 값 각각의 값은 인코딩된 비트 스트림의 움직임 벡터 필드에 포함될 수 있고, 상기 프로토콜에 따라, 움직임 벡터 필드는 움직임 벡터가 제 2 해상도로 인코딩되는 프레임 또는 영역에 대해 감소된 크기를 가질 수 있다.
본원에 개시된 다른 양태에 따라, 인코딩된 형태의 움직이는 이미지 데이터를 수신하기 위한 입력부, 및 움직임 예측 모듈을 포함하는 디코더가 제공된다. 본원에 개시된 실시예들 중 일부에 따르면, 움직이는 이미지 데이터는 적어도 하나의 영역이 포맷 또는 프로토콜에 기반을 둔 움직임 추정을 사용하여 인코딩되는 복수의 프레임(즉, 인터 프레임 인코딩된 프레임)을 포함한다. 움직임 예측 모듈은 움직임 벡터 값에 기초하여 상기 (인터 프레임 인코딩된) 프레임 또는 영역을 디코딩한다. 이것은 개개의 프레임 또는 영역의 움직임 벡터 값이 제 1 해상도 또는 제 2 해상도로 인코딩되는지, 제 1 해상도가 부화소 단위로 움직임 벡터 값을 해석하는 경우인지, 제 2 해상도가 정수 화소 단위로 움직임 벡터 값을 해석하는 경우인지를 결정하기 위해 지표 각각을 판독하는 것을 포함한다.
실시예에서, 움직이는 이미지 데이터는 상기 프레임 또는 영역 각각과 연관된 두 개의 지표를 포함할 수 있고, 두 개의 지표는 2 차원으로 움직임 벡터의 해상도를 나타내고, 움직임 예측 모듈은 두 개의 지표 모두를 판독하고, 그에 따라 움직임 벡터 값을 해석하도록 구성될 수 있다.
실시예에서, 상기 프레임 중 적어도 일부 프레임 각각은 다수의 영역으로 분할될 수 있고; 움직이는 이미지 데이터는 각각의 영역의 움직임 벡터 값이 제 1 해상도 또는 제 2 해상도로 인코딩되는지를 개별적으로 나타내기 위해 다수의 영역 각각과 연관된 적어도 하나의 지표를 포함할 수 있고; 움직임 예측 모듈은 각각의 영역의 움직임 벡터 값이 제 1 해상도 또는 제 2 해상도로 인코딩되는지를 결정하기 위해 지표를 판독하고, 그에 따라 움직임 벡터 값을 상기 부화소 또는 정수 화소 단위로 해석하도록 구성될 수 있다. 실시예에서, 상기 영역은 H.26x 표준의 슬라이스일 수 있다.
실시예에서, 움직이는 이미지 데이터는 움직임 벡터 값의 해상도가 영역마다 또는 프레임마다 나타나는지를 설정하기 위해 설정부(setting)를 더 포함할 수 있고, 움직임 예측 모듈은 그 설정부를 판독하고, 그에 따라 움직임 벡터 값을 해석하도록 구성될 수 있다.
다른 실시예들에서, 움직임 예측 모듈은, 지표가 상기 프레임 또는 영역 중 하나에 대해 존재하지 않는 경우, 움직임 벡터의 값을 디폴트(default)로 부화소 단위로 해석하도록 구성될 수 있다.
또 다른 실시예에서, 움직임 벡터를 포함하는 움직이는 이미지 데이터는 또한 무손실 인코딩 방법에 따라 인코딩될 수 있다. 디코더는 움직임 예측 모듈에 의한 상기 디코딩 이전에 무손실 인코딩 스테이지의 역을 포함할 수 있다.
또 다른 양태에 따르면, 컴퓨터 프로그램 제품이 제공되고, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 저장 매체에 구현되고, 실행되는 경우 본 명세서에 개시된 임의의 실시예에 따른 디코더의 동작을 수행하도록 구성된다.
이 요약은 아래의 상세한 설명에서 더욱 기술되는 개념들의 선택을 간략화된 형태로 소개하기 위해서 제공된다. 요약은 주장되는 대상의 중요 특징 또는 필수 특징을 식별하기 위한 것도 아니고, 주장되는 대상의 범위를 한정하기 위해 사용되는 것도 아니다. 주장되는 대상은 본원에 언급된 단점들 중 일부 또는 모두를 해결하는 구현예에 한정되는 것도 아니다.
본 개시의 이해를 돕기 위해 그리고 실시예들이 실행될 수 있는 방법을 보여주기 위해, 첨부 도면을 예로서 참조한다.
도 1은 비디오 스트림의 개략도이다.
도 2는 통신 시스템의 개략적 블록도이다.
도 3은 인코딩된 비디오 스트림의 개략도이다.
도 4는 인코더의 개략적 블록도이다.
도 5는 디코더의 개략적 블록도이다.
도 6은 인터 프레임 인코딩 방식의 개략도이다.
도 7은 다른 인터 프레임 인코딩 방식의 개략도이다.
도 1은 카메라에서 캡처되어, 공간 분할로 분할된 입력 비디오 신호의 개략도를 제공하는 것으로, 입력 비디오 신호는 인코딩된 비트 스트림을 생성하기 위해 비디오 인코더에 의해 인코딩될 것이다. 신호는 시간적으로 복수의 프레임(F)으로 분할된 움직이는 비디오 이미지를 포함하고, 각각의 프레임은 시간적으로 상이한 개개의 순간(…t-1, t, t+1…)에서 이미지를 나타낸다. 각 프레임 내에서, 프레임은 각각이 복수의 화소를 나타내는 복수의 분할로 공간적으로 분할된다. 이러한 분할은 블록으로 지칭될 수 있다. 특정 방식에서, 프레임을 상이한 레벨의 블록으로 분할 및 세분된다. 예를 들어, 각각의 프레임은 매크로 블록(macroblock; MB)으로 분할될 수 있고, 각각의 매크로 블록은 블록(b)으로 분할될 수 있으며, 예컨대, 각각의 블록은 프레임 내의 8×8 화소의 영역을 나타내고, 각각의 매크로 블록은 2×2 블록(16×16 화소)의 영역을 나타낸다. 특정 방식에서, 각각의 프레임은 또한 각각이 복수의 매크로 블록을 포함하는 독립적으로 디코딩 가능한 슬라이스(S)로 분할될 수 있다. 슬라이스(S)는 일반적으로 임의의 형태를 취할 수 있고, 예컨대, 각각의 슬라이스는 한 행 이상의 매크로 블록이거나, 불규칙하게 또는 임의로 정의된 매크로 블록의 선택(예컨대, 이미지에서 관심 영역(ROI)에 대응함)일 수 있다.
용어 "화소"에 관해, 다음에서, 용어는 픽처 어레이에 대한 샘플링 그리드에서 샘플 및 샘플링 위치를 나타내기 위해 사용된다(때때로, 문헌에서, 용어 "화소"는 하나의 공간 위치에 대응하는 세 개의 색상 컴포넌트 모두를 나타내기 위해 대신 사용되며, 때때로, 이것은 단일 어레이에서 단일 정수 샘플 값 또는 단일 위치를 나타내기 위해 사용된다). 샘플링 그리드의 해상도는 루마 및 크로마 샘플링 어레이 사이에서 대개 상이하다. 실시예에서, 다음은 4:4:4 표현에 적용될 수 있지만, 이것은 잠재적으로, 예를 들어, 4:2:2 및 4:2:0 에도 적용될 수 있다.
임의의 주어진 표준이 용어 블록 또는 매크로 블록에 특정 의미를 제공할 수 있지만, 용어 블록은 또한 인트라 또는 인터 예측과 같은 인코딩 및 디코딩 동작이 수행되는 레벨에서 프레임의 분할을 나타내기 위해서 당해 분야에서 대개 더욱 일반적으로 사용되며, 이것은 특별히 달리 언급되지 않는 한 본원에서 사용될 일반적인 의미인 것을 주의한다. 예를 들어, 본원에 나타나는 블록은 사실은 H.26x 표준에서 블록 또는 매크로 블록이라고 불리는 분할일 수 있고, 다양한 인코딩 및 디코딩 스테이지가 논의되고 있는 표준, 애플리케이션 및/또는 인코딩 모드에 적절한 임의의 분할 레벨에서 동작할 수 있다.
캡처된 바와 같은 입력 신호의 블록은 보통 공간 도메인으로 표현되고, 여기서 각각의 색 공간 채널이 그 블록 내에서 공간 위치의 함수로서 표현된다. 예를 들어, YUV 색 공간에서, 휘도(Y) 및 색차(U, V) 채널 각각은 직교 좌표 x 및 y의 함수, Y(x,y), U(x,y) 및 V(x,y)로서 표현될 수 있고; 또는 RGB 색 공간에서, 적색(R), 녹색(G), 및 청색(B) 채널 각각은 직교 좌표의 함수, R(x,y), G(x,y), B(x,y)로서 표현될 수 있다. 이 표현에서, 각각의 블록 또는 부분은 상이한 공간 좌표, 예컨대, x 및 y 좌표에서, 화소 값들의 세트로 표현되어, 색 공간의 각각의 채널은 이산 세트의 화소 위치 각각에서 그 채널의 크기 면으로 표현된다.
그러나, 양자화 이전에, 블록은 인코딩 프로세스의 일부로서 변환 도메인 표현, 통상적으로 공간 주파수 도메인 표현(때때로, 주파수 도메인으로 언급됨)으로 변환될 수 있다. 주파수 도메인에서, 블록에서의 각각의 색 공간 채널은 2 차원 각각에서 공간 주파수의 함수(1/길이의 치수)로서 표현된다. 예를 들어, 이것은 수평 및 수직 방향에서 각각 파수 kx 및 ky로 나타날 수 있어서, 결국 채널은 YUV 공간에서 Y(kx, ky), U(kx, ky) 및 V(kx, ky); 또는 RGB 공간에서 R(kx, ky), G(kx, ky), B(kx, ky)로 표현될 수 있다. 따라서, 이산 세트의 화소 위치 각각에서 크기 면으로 색 공간 채널을 나타내는 대신에, 변환은 각각의 색 공간 채널을 그 블록을 구성하는 이산 세트의 공간 주파수 컴포넌트 각각과 연관된 계수 면으로, 즉, 블록에 걸쳐 상이한 주파수의 공간 변화에 대응하는 이산 세트의 공간 주파수 성분 각각의 진폭 면으로 나타난다. 이러한 변환에 대한 가능성은 푸리에 변환, 이산 코사인 변환(Discrete Cosine Transform; DCT), 카루넨 루베 변환(Karhunen-Loeve Transform; KLT), 또는 기타 변환을 포함한다.
도 2의 블록도는 본 개시의 기술이 사용될 수 있는 통신 시스템의 일례를 제공한다. 통신 시스템은 제 1 송신 단말기(12), 및 제 2 수신 단말기(22)를 포함한다. 예를 들어, 각각의 단말기(12, 22)는 휴대 전화 또는 스마트 폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터, 또는 텔레비전 세트, 셋톱 박스, 스테레오 시스템 등과 같은 다른 가전 제품 중 하나를 포함할 수 있다. 제 1 및 제 2 단말기(12, 22)는 각각 통신 네트워크(32)에 작동적으로 결합되고, 제 1 송신 단말기(22)는 이에 의해 제 2 수신 단말기(22)에 의해 수신될 신호를 전송하도록 구성된다. 물론, 송신 단말기(12)는 또한 수신 단말기(22)로부터 신호를 수신할 수 있고, 그 반대도 가능하지만, 설명을 위해, 전송은 제 1 단말기(12)의 관점에서 본원에서 설명되고, 수신은 제 2 단말기(22)의 관점에서 설명된다. 통신 네트워크(32)는, 예를 들어, 광역 인터넷 및/또는 로컬 영역 네트워크 및/또는 이동 셀룰러 네트워크와 같은 패킷 기반 네트워크를 포함할 수 있다.
제 1 단말기(12)는 플래시 메모리 또는 다른 전자 메모리, 자기 저장 장치, 및/또는 광학 저장 장치와 같은 컴퓨터 판독 가능 저장 매체(14)를 포함한다. 제 1 단말기(12)는 또한 하나 이상의 실행 유닛을 갖는 프로세서 또는 CPU 형태의 처리 장치(16), 송신기(18)를 갖는 유선 또는 무선 모뎀과 같은 트랜스시버, 비디오 카메라(15), 및 스크린 (17)(즉, 디스플레이 또는 모니터)를 포함한다. 카메라(15) 및 스크린(17) 각각은 단말기(12)의 나머지 부분과 동일한 케이싱 내에 수용될 수도 있고 수용되지 않을 수도 있다(예컨대, 후자의 경우 동글 또는 무선 라우터를 포함하는 송신기(18)가 심지어 내부 또는 외부에 있을 수 있음). 저장 매체(14), 비디오 카메라(15), 스크린(17), 및 송신기(18)는 각각 처리 장치(16)에 작동적으로 결합되며, 상기 송신기(18)는 유선 또는 무선 링크를 통해 네트워크(32)에 작동적으로 결합된다. 유사하게, 제 2 단말기(22)는 전자, 자기, 및/또는 광학 저장 장치와 같은 컴퓨터 판독 가능 저장 매체(24); 및 하나 이상의 실행 유닛을 갖는 CPU 형태의 처리 장치(26)를 포함한다. 제 2 단말기는 적어도 하나의 수신기(28)를 갖는 유선 또는 무선 모뎀과 같은 트랜스시버, 및 단말기(22)의 나머지 부분과 동일한 케이싱 내에 수용될 수도 있고 수용되지 않을 수도 있는 스크린(25)을 포함한다. 제 2 단말기의 저장 매체(24), 스크린(25), 및 수신기(28)는 각각 처리 장치(26)에 작동적으로 결합되며, 상기 수신기(28)는 유선 또는 무선 링크를 통해 네트워크(32)에 작동적으로 결합된다.
제 1 단말기(12) 상의 저장 매체(14)는 움직이는 이미징 데이터를 인코딩하기 위한 인코더를 적어도 저장하고, 상기 인코더는 처리 장치(16)에서 실행되도록 구성된다. 인코더가 실행되면, 비디오 카메라(15)로부터 "미가공(raw)"(비인코딩) 입력 비디오 스트림을 수신하고, 이것은 비디오 스트림을 낮은 비트 레이트 스트림으로 압축하기 위해서 비디오 스트림을 인코딩하도록 동작하며, 송신기(18) 및 통신 네트워크(32)를 통한 전송을 위해 상기 인코딩된 비디오 스트림을 제 2 단말기(22)의 수신기(28)에 출력한다. 제 2 단말기(22) 상의 저장 매체(24)는 그 자신의 처리 장치(26)에서 실행되도록 구성된 비디오 디코더를 적어도 저장한다. 디코더가 실행되면, 수신기(28)로부터 인코딩된 비디오 스트림을 수신하고, 이를 스크린(25)으로 출력하기 위해 디코딩한다.
인코더 및 디코더는 또한 스크린 공유 스트림을 비롯한 다른 타입의 움직이는 이미지 데이터를 인코딩 및 디코딩하기 위해 동작 가능하다. 스크린 공유 스트림은 한 명 이상의 다른 원격 사용자들이 인코더 측에 있는 사용자가 스크린을 통해 보는 것을 볼 수 있도록, 또는 그 스크린의 사용자가 나중에 한 명 이상의 다른 사용자들에게 재생하기 위해 스크린 상에 무슨 일이 있었는지를 기록할 수 있도록 인코더 측에 있는 스크린(17)에서 캡처된 이미지 데이터이다. 송신 단말기(12) 및 수신 단말기(22) 사이에 수행된 호출(call)의 경우, 송신 단말기(12)에 있는 스크린(17)의 움직이는 콘텐츠는 인코딩되어 수신 단말기(22)의 스크린(25) 상에 디코딩 및 디스플레이되도록 라이브로(실시간으로) 전송될 것이다. 예를 들어, 인코더 측 사용자는 자신이 자신의 운영 체제의 데스크탑, 또는 일부 애플리케이션을 작동하는 방법을 다른 사용자와 공유하기를 원할 수 있다.
스크린 공유 스트림이 스크린 등으로부터 캡처되는 경우, 이는 그렇게 하기 위해 어떤 특정한 메커니즘으로도 한정되지 않는다는 것을 주의한다. 예컨대, 데이터는 스크린(17)의 스크린 버퍼로부터 판독되거나, 또는 스크린(17) 상의 디스플레이용 애플리케이션으로부터 또는 운영 체제로부터 출력되는 동일한 그래픽 데이터의 인스턴스를 수신함으로써 캡처될 수 있다.
도 3은 송신 단말기(12) 상에서 작동하는 인코더에서부터 수신 단말기(22) 상에서 작동하는 디코더에 전송되는 바와 같은 인코딩된 비트 스트림(33)의 개략도를 제공한다. 비트 스트림(33)은 임의의 연관된 움직임 벡터와 함께 그 프레임 또는 슬라이스의 블록에 대한 인코딩된 샘플을 포함하는 각각의 프레임 또는 슬라이스에 대한 인코딩된 이미지 데이터(34)를 포함한다. 하나의 애플리케이션에서, 비트 스트림은 송신 단말기(12)와 수신 단말기(22) 간의 VoIP 호출(VoIP 호출은 또한 비디오 및 스크린 공유를 포함할 수 있다)과 같은 라이브(실시간) 호출의 일부로서 전송될 수 있다. 비트 스트림(33)은 또한 각각의 프레임 또는 슬라이스와 연관된 헤더 정보(36)를 포함한다. 실시예에서, 헤더(36)는 움직임 벡터의 해상도를 나타내는 적어도 하나의 플래그(37)의 형태로 적어도 하나의 부가적인 요소를 포함하도록 구성되고, 이는 이하에서 보다 상세히 논의될 것이다.
도 4는 송신 단말기(12) 상에 구현될 수 있는 인코더를 도시한 블록도이다. 인코더는 메인 인코더 모듈(40)을 포함하고, 메인 인코더 모듈(40)은 이산 코사인 변환(DCT) 모듈(51), 양자화기(53), 역 변환 모듈(61), 역 양자화기(63), 인트라 예측 모듈(41), 인터 예측 모듈(43), 스위치(47), 감산 스테이지(-)(49), 및 무손실 인코딩 스테이지(65)를 포함한다. 인코더는 또한 인터 예측 모듈(43)에 결합된 제어 모듈(50)을 포함한다. 이러한 모듈 또는 스테이지들 각각은 송신 단말기의 저장 매체(14) 상에 저장되거나 그 처리 장치(16) 상에서 실행하기 위해 구성된 코드의 일부분으로서 구현될 수 있지만, 전체적으로 또는 부분적으로 전용 하드웨어 회로에 구현되는 이들 중 일부 또는 전부의 가능성은 배제되지 않는다.
감산 스테이지(49)는 복수의 프레임(F)을 통해 복수의 블록을 포함하는 입력 신호의 인스턴스를 수신하도록 구성된다. 입력 스트림은 카메라(15)로부터 수신되거나, 또는 스크린(17) 상에 디스플레이되는 것으로부터 캡처된다. 인트라 또는 인터 예측 모듈(41, 43)은 다른 이미 인코딩된 블록 또는 대응 크기의 기준 부분으로부터의 예측에 기초하여, 인코딩될 현재(타겟) 블록의 예측 버전을 생성한다. 예측 버전은 감산 스테이지(49)의 입력에 공급되고, 감산 스테이지(49)에서, 이것은 공간 도메인의 입력 신호(즉, 실제 신호)로부터 감산되어 블록의 예측 버전과 실제 입력 신호의 대응 블록 간의 차이를 나타내는 잔차 신호를 생성한다.
인트라 예측 모드에서, 인트라 예측 모듈(41)은 동일한 프레임의 다른 이미 인코딩된 블록, 통상적으로 이웃 블록으로부터의 예측에 기초하여 인코딩될 현재(타겟) 블록의 예측 버전을 생성한다. 인트라 프레임 인코딩을 수행할 때, 아이디어는 프레임 내의 이미지 데이터의 부분이 동일한 프레임 내의 다른 부분과 얼마나 상이한지에 대한 측정치만 인코딩하여 전송하는 것이다. 그런 다음, 그 부분은 디코더에서 예측될 수 있고(시작하기 위한 일부 절대 데이터가 제공됨), 그래서 실제 데이터 자체 보다는 예측과 실제 데이터 간의 차이를 전송하는 것만이 필요하다. 차이 신호는 통상적으로 크기가 작아서, (무손실 압축 스테이지(65)의 동작으로 인해-아래 참조) 인코딩하는데 더 적은 비트를 사용한다.
인터 예측 모드에서, 인터 예측 모듈(43)은 현재 블록과는 상이한 프레임에서의 다른 이미 인코딩된 기준 부분으로부터의 예측에 기초하여 인코딩될 현재(타겟) 블록의 예측 버전을 생성하고, 여기서 기준 부분은 블록 크기를 갖지만, 인터 예측 모듈(43)에 의해 예측되는 움직임 벡터만큼 공간 도메인에서 타겟 블록에 관하여 오프셋된다(인터 예측은 또한 움직임 예측 또는 움직임 추정으로 지칭될 수 있다). 인터 예측 모듈(43)은 공간 도메인에서 타겟 프레임 이외의 하나 이상의 프레임에서 복수의 가능한 움직임 벡터만큼 오프셋된 복수의 후보 기준 부분을 검색하고, 적당한 메트릭에 따라 타겟 블록에 대한 잔차를 최소화하는 후보를 선택함으로써, 주어진 타겟 블록에 대한 최적의 기준을 선택한다. 인터 예측 모듈(43)은 인트라 프레임 예측 스테이지(41) 대신에, 스위치(47)에 의해 피드백 경로로 스위칭되어, 이에 따라서, 다른 프레임의 블록들에 관하여 인터 프레임을 인코딩하기 위해서, 하나의 프레임과 다른 프레임의 블록들 사이에 피드백 루프가 생성된다. 즉, 잔차는 이제 인터 예측된 블록과 실제 입력 블록 간의 차이를 나타낸다. 이것은 통상적으로 인트라 프레임 인코딩보다 인코딩에 훨씬 더 적은 비트를 사용한다.
잔차 신호(예측이 입력 신호로부터 감산된 이후의 잔차 블록을 포함함)의 샘플은 감산 스테이지(49)로부터 출력되고, 변환(DCT) 모듈(51) (또는 다른 적절한 변환)을 통해, 이러한 잔차 값들은 주파수 도메인으로 변환되고, 그런 다음, 양자화기(53)에서, 변환된 값들은 실질적으로 이산 양자화 인덱스로 변환된다. 상기 변환 모듈(51) 및 양자화 모듈(53)에 의해 생성된 잔차의 양자화되고 변환된 인덱스는 물론, 예측 모듈들(41, 43)에서 사용되는 예측의 표시, 및 인터 예측 모듈(43)에 의해 생성된 임의의 움직임 벡터는 인코딩된 비디오 스트림(33)(도 3의 요소(34) 참조)에 포함하기 위해 모두 출력된다; 골롬 인코더 또는 엔트로피 인코더와 같은 추가의 무손실 인코딩 스테이지(65)를 통해, 움직임 벡터, 및 변환되고 양자화된 인덱스는 당해 분야에 공지된 무손실 인코딩 기술을 사용하여 더욱 압축된다.
양자화되고 변환된 신호의 인스턴스가 또한 역 양자화기(63) 및 역 변환 모듈(61)을 통해 피드백되어, 인코딩되는 현재 타겟 블록이 이전에 인코딩된 블록의 역 양자화 및 역 변환 버전에 기초하여 예측되었던 동일한 방식으로, 인코딩될 후속 블록을 예측하는데 있어서 선택된 예측 모듈(41 또는 43)에 의한 사용을 위해 블록의 예측 버전(디코더에서 볼 수 있음)을 생성한다. 스위치(47)는 현재 인코딩되는 프레임 또는 블록에 대해 사용된 인코딩에 적절하게 인트라 예측 모듈(41) 또는 인터 예측 모듈(43) 중 어느 하나의 입력에 역 양자화기(63)의 출력을 통과시키도록 구성된다.
도 5는 수신 단말기(22) 상에 구현될 수 있는 디코더를 도시한 블록도이다. 디코더는 역 무손실 인코딩(95), 역 양자화 스테이지(83), 역 DCT 변환 스테이지(81), 스위치(70), 인트라 예측 스테이지(71), 및 움직임 보상 스테이지(73)를 포함한다. 이러한 모듈 또는 스테이지들 각각은 수신 단말기의 저장 매체(24) 상에 저장되거나 그 처리 장치(26) 상에서 실행하기 위해 구성된 코드의 일부분으로서 구현될 수 있지만, 전체적으로 또는 부분적으로 전용 하드웨어 회로에 구현되는 이들 중 일부 또는 전부의 가능성은 배제되지 않는다.
역 양자화기(81)는 수신기(28) 및 역 무손실 인코딩 스테이지(95)를 통해 인코더로부터의 인코딩된 신호(33)를 수신하도록 구성된다. 역 양자화기(81)는 잔차 신호(잔차 블록을 포함함)의 역 양자화된 샘플로 인코딩된 신호의 양자화 인덱스를 변환하고, 역 양자화된 샘플을 역 DCT 모듈(81)에 통과시키며, 여기서 역 양자화된 샘플은 주파수 도메인에서 다시 공간 도메인으로 변환된다. 그런 다음, 스위치(70)는 디코딩되는 현재의 프레임 또는 블록에 사용되는 예측 모드에 적절하게 인트라 또는 인터 예측 모듈(71 또는 73)에 역 양자화된 공간 도메인 잔차 샘플을 통과시키고, 인트라 또는 인터 예측 모듈(71, 73)은 블록을 디코딩하기 위해 각각 인트라 또는 인터 예측을 사용한다. 어떤 모드를 사용할지는 예측의 표시 및/또는 인코딩된 비트 스트림(33)에서 인코딩된 샘플(34)과 함께 수신된 임의의 움직임 벡터를 사용하여 결정된다. 이 스테이지에 이어, 디코딩된 블록은 수신 단말기(22)에서 스크린(25)을 통해 재생되도록 출력된다.
위에서 말한 바와 같이, 종래의 표준에 따른 코덱은 1/4 화소의 해상도로 움직임 예측을 수행하고, 이는 움직임 벡터가 또한 1/4 화소 스텝 면에서 표현된다는 것을 의미한다. 1/4 화소 해상도 움직임 추정의 예가 도 6에 도시된다. 이 예에서, 타겟 블록의 좌측 상부 코너의 화소(p)는 화소들(a, b, c 및 d) 간의 보간으로 예측되고, 타겟 블록의 다른 화소들도 또한 하나의 프레임의 타겟 블록과 다른 프레임의 기준 부분(이러한 블록들은 도 6에서 굵은 점선으로 도시됨) 간의 오프셋에 따라, 기준 프레임에 있는 화소들의 그룹 간의 유사한 보간에 기초하여 예측될 것이다. 그러나, 이러한 단위로 움직임 추정을 수행하는 것은 아래에 논의된 바와 같은 결과를 갖는다.
무손실 코더(65) 및 디코더(95)를 참조하면, 무손실 코딩은 정보를 버리는 것(양자화 같은 것)이 아니라, 무손실 인코딩 스테이지(65)에 의해 인코딩될 데이터에, 상이한 값들이 발생할 가능성 또는 상이한 값들이 발생하는 빈도에 따라 상이한 값들을 나타내기 위해 상이한 길이의 코드워드를 사용함으로써 작동하는 압축 형태이다. 예를 들어, 1을 직면하기 이전의 코드워드에서의 선두 0의 수는 코드워드의 길이를 나타낼 수 있으므로, 1은 가장 짧은 코드워드이고, 010 및 011은 그 다음 짧은 코드워드이며, 그 다음은 00100 …, 등이다. 따라서, 가장 짧은 코드워드는 균일한 코드워드 길이가 사용되었을 경우에 필요한 것보다 훨씬 짧지만, 가강 긴 코드워드는 그것보다 길다. 그러나, 가장 짧은 코드워드에 가장 빈번하거나 가능성이 많은 값을 할당하고, 긴 코드워드에 가능성이 적거나 덜 빈번한게 발생하는 값만을 할당함으로서, 결과 비트 스트림(33)은 균일한 코드워드 길이가 사용되었던 경우보다 평균적으로 인코딩된 값 당 더 적은 비트를 초래하므로, 어떠한 추가의 정보도 폐기하지 않고 압축을 달성한다.
무손실 인코딩 스테이지(65) 이전의 인코더(40)의 대부분이 무손실 코딩 스테이지(65)를 통과하기 전에 많은 값들을 가능한 한 작게 만들려고 노력하도록 설계된다. 그들이 더 자주 발생할 때, 작은 값은 큰 값보다 인코딩된 비트 스트림(33)에 낮은 비트 레이트를 초래할 것이다. 이것은 절대 샘플이 아니라 잔차가 인코딩되는 이유이다. 많은 샘플이 변환 도메인에서 제로 또는 작은 계수로 변환하는 경향이 있기 때문에, 이것은 변환(51)을 뒷받침하는 근거이다.
유사한 고려 사항이 움직임 벡터의 인코딩에 적용될 수 있다.
예를 들어, H.264/MPEG-4 Part 10, 및 H.265/HEVC에서, 움직임 벡터는 지수 골롬 코딩으로 인코딩된다. 다음 표는 움직임 벡터 값 및 인코딩된 비트를 도시한다.
값 코드워드 발생된 비트 수
0 1 1
1 010 3
2 011 3
3 00100 5
4 00111 5
5 0001000 7
위의 표로부터, 값이 크면 클수록, 더 많은 비트가 사용된다는 것을 알 수 있다. 이것은 움직임 벡터의 해상도가 크면 클수록, 더 많은 비트가 초래한다는 것을 의미한다. 예컨대, 1/4 화소 해상도를 사용하면, 1 화소의 오프셋은 인코딩된 비트 스트림에서 5 비트를 초래하는 4의 값으로 표현되어야 한다.
비디오(카메라에서 캡처됨)를 인코딩하는데 있어서, 더 정밀한 해상도가 낮은 비용의 잔차 기준에 대한 검색에 더 많은 기회를 제공할 수 있기 때문에, 움직임 벡터의 이러한 해상도의 비용은 가치가 있을 수 있다. 그러나, 스크린에서 캡처된 움직이는 이미지의 경우, 대부분의 공간 변위는 전체 화소 변위에 있는 경향이 있고, 부화소 위치에 있는 경향은 거의 없으므로, 대부분의 움직임 벡터는 정수 화소 값을 가리키는 경향이 있고, 부화소 값을 가리키는 경향은 거의 없는 것으로 본원에서 관찰된다.
이것에 기초하여, 스크린에서 캡처된 이미지 데이터에 대한 움직임 벡터를 1 화소의 해상도로 인코딩하는 것이 바람직할 수 있다. 어떠한 비트도 이러한 콘텐츠에 대한 움직임 벡터의 분수 부분에 사용될 필요가 없다는 사실을 고려하면, 이는 이러한 콘텐츠를 인코딩하는데 초래되는 비트 레이트가 감소될 수 있다는 것을 의미한다.
예를 들어, 인코더는 일반적으로 ¼ 화소 오프셋 단위로 비트 스트림에서의 움직임 벡터를 해석하지만, 인코더는 사실 이 해상도를 포기하고 대신에 정수 화소 오프셋 단위로 스크린 코딩 애플리케이션에 대한 움직임 벡터를 인코딩하여 비트 레이트를 절약할 수 있다. 이것은 움직임 벡터의 정밀도를 4 배로 감소시킬 것이지만, 이러한 정밀도는 일반적으로 화면 공유 또는 기록 애플리케이션에 덜 가치 있으며, 이는 또한 벡터를 코딩하는데 필요한 비트 수를 감소시킨다. 타겟 블록의 1 화소 왼쪽의 기준 블록으로부터의 현재(타겟) 블록을 예측하기 위해, 움직임 벡터는 (4,0) 대신 (1,0)일 것이다. 상기 골롬 인코딩을 사용하면, 이것은 움직임 벡터를 인코딩하기 위해 초래되는 비트가 (00111, 1)에서부터 (010, 1)로 변하므로, 이 경우에 2 비트가 절약된다는 것을 의미한다.
또한, 실시예에서, 감소된 해상도의 움직임 벡터는 또한 움직임 벡터 검색을 정수 값으로 제한하여, 이에 의해 검색에 의해 초래되는 처리 자원을 감소시킴으로써, 인코더에서 수행되는 움직임 추정의 복잡성을 감소시킬 수 있다. 대안적으로, 일반 검색을 수행하고 결과의 움직임 벡터를 정수 값으로 반올림하는 것이 가능하다.
도 7은 오직 전체 화소의 해상도로 제한된 움직임 벡터의 예를 도시하고, 움직임 벡터는 오직 전체 화소 스텝으로 제한된다. 도 6과는 대조적으로, 화소(p)는 어떠한 보간 없이 오직 단일의 전체 화소로부터 예측된다. 대안적으로, 이것은 한 프레임의 타겟 블록과 다른 프레임의 기준 부분(다시 한 번, 굵은 점선으로 도시됨) 간의 오프셋에 따라 화소(b, c, d) 또는 다른 화소로부터 예측될 수 있지만, 제한으로 인해, 이것은 화소들 간의 보간으로 예측되지 않을 수 있다. 주의: 임의의 주어진 블록의 경우, 도 6의 예로서 예시된 바와 같은 1/4 화소 예측은 그것이 가장 낮은 잔차를 제공하는 경우 어떠한 보간 없이 전체 화소 오프셋을 생성하게 될 수 있다. 그러나, 이것은 그렇게 하도록 제한되지 않았고, 상당한 크기의 이미지 위에서 모든 블록에 대해 발생하는 것은 매우 가능성이 없을 것이다.
분수 움직임 벡터 값이 여전히 카메라 캡처된 콘텐츠에 매우 유용할 수 있다는 것을 고려하면, 실시예에서, 인코더(40)에는 움직임 예측 모듈(43)에 결합된 제어기(50)가 제공되고, 상기 제어기(50)는 융통성 있는 방법으로 움직임 벡터 해상도를 선택하도록 구성되고, 소스 데이터가 캡처된 스크린(17)에서 오고 어떠한 부화소 움직임도 없는 경우, 움직임 벡터는 단지 전체 화소의 단위로 인코딩되어 전송되지만; 카메라 콘텐츠 비디오의 경우, 움직임 벡터는 여전히 부화소 정밀도로 인코딩되어 전송된다.
이를 위해, 제어기(50)는 캡처되는 콘텐츠의 타입이 스크린 콘텐츠라는 사실을 나타내는 성능 휴리스틱(performance heuristic)을 측정하도록 구성될 수 있다. 이에 응답하여, 그 다음에 스크린 콘텐츠 코딩에 부화소 움직임 보상을 사용하지 않는다. 대안적으로, 제어기(50)는 어떤 타입의 데이터가 인코딩을 위해 인코더에 제공되지에 관해 운영 체제 또는 애플리케이션으로부터의 지시를 수신할 수 있고, 제어기(50)는 그것에 기초하여 모드를 선택할 수 있다. 다른 옵션은 이력 데이터에 기초하여 선택될 수 있다. 선택은 프레임 단위로 행해질 수 있거나, 모드는, 예컨대, 슬라이스 단위로, 프레임 내의 상이한 영역에 대해 개별적으로 선택될 수 있다.
따라서, 프레임 또는 슬라이스를 인코딩하기 전에, 인코더는 이력 통계 데이터, 애플리케이션 타입에 대한 지식, 멀티 패스 분석, 또는 일부 다른 이러한 기술과 같은 요인들에 기초하여 움직임 벡터 해상도를 결정할 수 있다. 인코더가 단지 전체 화소 움직임 추정을 사용하기로 결정하면, 부화소 검색은 생략된다. 스케일링된 움직임 벡터 예측이 분수 부분을 가지면, 예측은 정수 값으로 반올림될 수 있다.
다른 실시예에서, 제어는 선택적으로 벡터의 수평 또는 수직 컴포넌트에 대해 별도로 적용될 수 있다. 이것은 수평으로 또는 수직으로 스케일링되는 스크린 비디오를 인코딩하기에 유용할 수 있다. 예를 들면, 인코더가 수평으로 또는 수직으로 크기가 조정된 스크린 공유와 협력하는 경우를 고려한다. 이 경우, 움직임 벡터의 컴포넌트들 중 하나는 분수 부분을 가질 것이지만, 다른 컴포넌트는 분수 부분을 갖지 않을 것이다. 비트 레이트를 제어하기 위해, 인코더는 미리 정의된 범위에서 양자화 파라미터(quantization parameter; QP)를 조정할 수 있다. QP가 허용된 상한계에 도달하고, 비트 레이트가 여전히 너무 높은 경우, 인코더는 내부 리사이저(resizer)를 트리거할 수 있다. 그것은 수평으로 입력 픽처를 크기 조정하고, 디코더 측에서, 디코딩된 픽처를 다시 원래의 폭으로 늘인다. 따라서, 수평 및 수직 움직임 벡터를 상이하게 처리하는데 또한 유용한 상황이 발생할 수 있다.
정수 화소 단위 또는 스텝의 감소된 해상도 스케일을 통해 움직임 벡터를 나타내어, 종래의 코덱에 비해 연관된 비트 레이트 절감을 달성하기 위해서, 움직임 벡터를 시그널링하기 위한 프로토콜은 미래 코덱 표준을 위해 업데이트되어야 할 것이다. 실시예에서, 이것은 H.265 (HEVC, 고효율 비디오 코딩) 표준에 대한 업데이트로서 구현될 수 있다. 캡처된 스크린 콘텐츠를 인코딩하는 경우, 인코딩된 데이터(34)의 포맷은 각각의 움직임 벡터에 대한 감소된 크기의 움직임 벡터 필드가 제공될 것이다. 정수 화소 모드로 인코딩된 스크린 캡처 스트림의 경우, 관련 데이터(34)는 비트 스트림(33)에 정수 움직임 벡터를 포함할 것이고, 일 실시예에서는 비트 스트림(33)에 오직 정수 움직임 벡터만을 포함할 것이다.
실시예에서, 이것은 선택적일 것이고, 부화소(예컨대, ¼ 화소) 또는 정수 화소 해상도가 관련 프레임 또는 슬라이스(다시 한 번, 도 3 참조)의 인코딩에 사용되는지 여부를 나타내기 위해 헤더(36)에 또한 포함된 플래그(37)를 이용한다. 수평 및 수직 해상도가 별도로 선택될 수 있다면, 두 개의 플래그(37)가 프레임 또는 슬라이스마다 요구될 것이다.
다음은 H.265 표준에 대한 업데이트에 기초하여 예시적인 실시예를 개시한다. 수정은 움직임 벡터가 인코딩된 비트 스트림(33)에서 감소된 정수 화소 스케일로 표현되도록 할 수 있고, 수평 및 수직 컴포넌트에서 움직임 벡터 해상도를 시그널링하기 위해서, 압축된 스트림의 헤더 정보(36)에 슬라이스마다 두 개의 플래그(37)를 추가한다.
수정은 헤더 레벨이 아닌 구문 또는 파싱(parsing) 프로세스를 변경하는 것이 아니라, 움직임 벡터 차이를 정수로 해석하고 스케일링된 MV 예측을 정수 값으로 반올림함으로써 디코딩 프로세스를 수정하는 것이다. 수정은 테스트되는 스크린 콘텐츠 시퀀스에 대해 7 % 정도까지 많이, 평균적으로 대략 2% 만큼, 코딩 효율을 증가시키는 것으로 밝혀졌고, 이것은 또한 인코딩 및 디코딩 프로세스의 복잡성을 감소시킬 수 있다.
움직임 벡터의 해석에 대한 해상도를 나타내기 위해 하이-레벨 지표가 (SPS, PPS 및/또는 슬라이스 헤더 레벨에) 추가된다.
디코딩 프로세스에서, 움직임 벡터가 전체 화소 해상도에 있는 것으로 나타나고, 스케일링된 움직임 벡터 예측이 분수 부분을 갖는 경우, 이 실시예에서, 예측은 정수 값으로 반올림된다. 움직임 벡터의 차이는 ¼ 샘플 오프셋보다는 정수 오프셋으로 간단히 해석된다. 모든 다른 디코딩 프로세스는 동일하게 유지된다. 파싱 프로세스(헤더 레벨 아래)도 또한 변하지 않는다. 움직임 벡터가 전체 샘플 정밀도로 코딩되고 입력 이미지 데이터가 4:2:2 또는 4:2:0 샘플링을 사용하는 경우, 크로마 움직임 벡터는 ½ 샘플 크로마 움직임 변위를 생성할 통상의 방식으로 유도될 수 있다. 대안적으로, 크로마 움직임 벡터는 또한 정수 값으로 반올림될 수 있다.
움직임 벡터 해상도를 시그널링하기 위한 구문 변경에 관해서, 실시예에서는, 3 개의 가능한 모드가 있고, 모드 지표를 이용하여 픽처 파라미터 세트(picture parameter set; PPS)와 같은 높은 (프레임마다) 헤더 레벨에서, 또는 대안적으로 시퀀스 파라미터 세트(sequence parameter set; SPS)와 같은 더욱 높은 레벨에서 시그널링된다. 모드 지표는 3 개의 선택 가능한 값을 갖는다. 하나의 값은 움직임 벡터가 항상 ¼ 샘플 오프셋(PPS를 사용하는 픽처에서)을 나타내는 것으로 해석되고 있다는 것을 나타낸다. 제 2 값은 움직임 벡터가 항상 정수 오프셋(PPS를 사용하는 픽처에서)을 나타내는 것으로 해석되고 있다는 것을 나타낸다. 제 3 값은 낮은 레벨에서 적용될 해석을 적응적으로 선택하는 낮은 레벨의 신호가 있다는 것을 나타낸다. 이러한 낮은 레벨 표시는 이 제 3 모드에서 동작하는 경우에만 존재할 슬라이스 헤더의 플래그에 있을 수 있다.
이를 구현하기 위해, 실시예에서, 새로운 2 비트 지표가 움직임 벡터 해상도 제어 모드를 나타내기 위해 PPS 확장에 포함될 것이다. 이 지표는 motion_vector_resolution_control_idc로 지칭될 수 있다. 이 모드가 0인 경우, 움직임 벡터는 ¼ 화소 정밀도로 인코딩되고, 모든 디코딩 프로세스는 변하지 않은 상태로 유지된다. 이 모드가 1인 경우, PPS를 나타내는 슬라이스의 모든 움직임 벡터는 전체 화소 정밀도로 인코딩된다. 그리고, 이 모드가 2인 경우, 움직임 벡터 해상도는 슬라이스 헤더의 플래그에 의해 슬라이스 단위로 제어된다. motion_vector_resolution_control_idc가 존재하지 않으면, 이 값은 0으로 추정된다. motion_vector_resolution_control_idc가 2와 같으면, slice_motion_vector_resolution_flag로 불리는 추가의 플래그가 슬라이스 헤더에 시그널링된다. 이 플래그가 0이면, 이 슬라이스의 움직임 벡터는 ¼ 화소 정밀도로 인코딩되고, 이 플래그가 1이면, 움직임 벡터는 전체 화소 정밀도로 인코딩된다. 이 플래그가 존재하지 않으면, 이 값은 motion_vector_resolution_control_idc의 값과 동일한 것으로 추정된다.
수정된 PPS 구문은 다음과 같이 나타난다:
Figure 112022073549411-pat00001
Figure 112022073549411-pat00002
수정된 슬라이스 헤더 구문은 다음과 같이 나타난다:
Figure 112022073549411-pat00003
앞서 언급된 스케일링에 관해서, 이것은, 예를 들면, HEVC(H. 265)에서 발생할 수 있는 것이다. 아이디어는, 움직임 벡터가 일부 다른 프레임을 코딩하는데 사용되는 경우, 이것은 (i) 현재 픽처와 (ii) 그 기준 픽처 간의 상대 위치 변위 면에서 동등한 움직임 벡터가 무엇인지 계산될 수 있다는 것이다. 이것은 다른 픽처의 동일 위치 부분에서의 움직임 벡터에 의해 나타난 변위의 상대 위치에 기초하고, (iii) 해당 픽처와 (iv) 기준 픽처로서 참조되는 픽처 간의 상대 위치 변위에 기초한다. 즉, 움직임 벡터 자체는 예측에 기초하여 인코딩될 수 있고, 현재 타겟 프레임의 타겟 블록에 대한 움직임 벡터는 이전 프레임의 공간적으로 대응하는 블록에 대한 이전의 움직임 벡터에 관하여 인코딩된다. 그런 다음, 타겟 블록에 대한 움직임 벡터는 예측된 버전과 실제 버전 간의 차이(예컨대, 통상적으로 델타) 면에서 오직 인코딩된 비트 스트림(33)에 시그널링된다. 그런 다음, 디코더는 디코더 측에서 동일한 예측을 수행하여 상기 델타를 추가함으로써 인코딩된 움직임 벡터를 재생성할 수 있다.
그러나, 코딩된 데이터의 시간적 프레임 레이트는 항상 일정하지 않고, 또한 픽처가 비트 스트림에 코딩되는 순서와 픽처가 캡처되고 디스플레이되는 순서 간의 차이가 있을 수 있다. 이러한 시간적 관계는 계산될 수 있고, 그런 다음, 움직임 벡터가 기본적으로 동일한 방향에서 동일한 움직임 속도를 나타내도록 움직임 벡터를 스케일링하기 위해 사용될 수 있다. 즉, 움직임 벡터의 예측 버전은 기준 벡터와 정확히 동일하지 않고, 오히려 그것의 스케일링된 버전이다. 이것은 시간적 움직임 벡터 예측으로 알려져있다.
HEVC 표준에서 현재 움직임 벡터(motion vector; MV) 디코딩 프로세스는 다음과 같이 요약될 수 있다.
1. MV가 디코더에서 예측되는 방법 및 움직임 벡터 델타(motion vector delta; MVD)가 인코더로부터 인코딩된 비트 스트림(이것은 일부 구문 표시를 포함할 수 있다)에 전송되었는지의 여부를 결정한다.
2. 예측된 움직임 벡터(predicted motion vector; PMV)를 생성한다. 이것은 한 쌍의 정수(px, py)를 생성한다. 이 정수는 루마 도메인에서 1/4 샘플 위치 정밀도로 오프셋을 나타내는 것으로 가정된다.
3. 어떠한 MVD도 전송되지 않는 경우, MV 값(mx, my)를 (px, py)로 설정하고, 그렇지 않으면, 한 쌍의 정수(px, py)를 (dx, dy)로서 디코딩하고, MV 값(mx, my)를 (px + dx, py + dy)로 설정한다. MV는 루마 도메인에서 1/4 샘플 오프셋을 나타내는 것으로 해석된다. 주의: 비디오가 크로마 채널에서보다 루마 채널에서의 상이한 해상도를 이용하는 4:2:2 또는 4:2:0 와 같은 포맷인 경우, 루마 구별만 중요하고, 대신에 비디오가, 예를 들어, 4:4:4 포맷인 경우, 오프셋은 모든 샘플링 그리드에 대해 1/4 샘플 단위를 갖는 것으로 해석된다.
4. 그 다음의 PMV를 생성(그리고 디블록킹 필터링을 제어하는 것 등)하기 위한 다음의 사용을 위해 최종 값(mx, my)을 저장한다.
본 개시의 실시예에서, 정수 화소 움직임 벡터 모드가 사용되는 경우, 스케일링된 움직임 벡터는 정수 화소 해상도에 대한 제한을 수용하기 위해 디코딩 프로세스에서 반올림될 수 있다. 예를 들어, 움직임 벡터 디코딩 프로세스는 다음과 같이 수정될 수 있다.
1. MV가 디코더에서 예측되는 방법 및 움직임 벡터 델타(motion vector delta; MVD)가 인코더로부터 인코딩된 비트 스트림(이것은 일부 구문 표시를 포함할 수 있다)에 전송되었는지의 여부를 결정한다.
2. 예측된 움직임 벡터(predicted motion vector; PMV)를 생성한다. 이것은 한 쌍의 정수(px, py)를 생성한다. 이 정수는 루마 도메인에서 1/4 샘플 위치 정밀도로 오프셋을 나타내는 것으로 가정된다.
3. 정수 정밀도 모드에서 동작하는 경우, 다음을 수행한다.
a. 예측 값을 정수 오프셋에 대응하도록 만들기 위해 예측 값을 반올림한다 - 예컨대, (rx, ry) = ( round(px/4), round(py/4) ) 생성한다.
b. 어떠한 MVD도 전송되지 않는 경우, MV 값(mx, my)를 (4*rx, 4*ry)로 설정하고, 그렇지 않으면, 한 쌍의 정수(px, py)를 (dx, dy)로서 디코딩하고, MV 값(mx, my)를 (4*(rx + dx), 4*(ry + dy))로 설정한다. 그런 다음, MV는 루마 도메인에서 1/4 샘플 오프셋을 나타내는 것으로 해석된다(주의, 또다시, 비디오가 4:2:2 또는 4:2:0 와 같은 포맷인 경우, 루마 구별만 중요하다).
4. 그렇지 않으면(즉, 1/4 샘플 정밀도 모드에서 동작하는 경우), 다음을 수행한다. 어떠한 MVD도 전송되지 않는 경우, MV 값(mx, my)를 (px, py)로 설정하고, 그렇지 않으면, 한 쌍의 정수(px, py)를 (dx, dy)로서 디코딩하고, MV 값(mx, my)를 (px + dx, py + dy)로 설정한다. MV는 루마 도메인에서 1/4 샘플 오프셋을 나타내는 것으로 또다시 해석된다.
5. 그 다음의 PMV를 생성(그리고 디블록킹 필터링을 제어하는 것 등)하기 위한 다음의 사용을 위해 최종 값(mx, my)을 저장한다.
그러나, 상기 프로세스는 모든 가능한 실시예들에 필요하지 않다. 위에서 설명한 방법은 움직임 벡터 예측의 스케일링이 ¼ 화소 도메인에서 발생하도록 디코더가 처음부터 ¼ 화소 도메인에서 동작하는 것을 가정한다. 그러나, 사실, 디코더는 이 스테이지에서 단위가 무엇을 의미하는지를 반드시 알아야 할 필요는 없다. 따라서, 실제로 이미지를 생성하기 위해 사용될 나중까지 단위에 어떠한 해석도 하지 않는 대안적인 방법을 취하는 것이 가능하다.
다음은 이러한 대안적인 방법의 실시예에 따른 디코딩 프로세스를 설명한다. 위와 같이, 움직임 벡터 값 중 적어도 하나는 상이하게 인코딩될 수 있고, 움직임 예측 모듈(73)은 상기 움직임 벡터 값 중 다른 값을 스케일링함으로써 움직임 벡터 값을 예측하도록 구성된다. 움직임 벡터 값 중 적어도 하나는 델타 값의 측면으로 상이하게 인코딩될 수 있고, 움직임 예측 모듈(73)은 스케일링된 움직임 벡터 값을 생성하도록 상기 움직임 벡터 값 중 다른 값을 스케일링하고, 그런 다음 상기 스케일링된 움직임 벡터 값에 델타 값을 가산함으로써, 움직임 벡터 값을 예측하도록 구성될 수 있다. 그러나, 상기와는 달리, 움직임 예측 모듈(73)은 또한, 스케일링 이후에 정수 화소 해상도로 움직임 벡터 값을 반올림하지 않고, 상기 정수 화소 단위(정수 모드가 사용되는 경우)로 움직임 벡터 값을 해석하도록 구성된다. 이것은 스케일링의 단위에 해석을 하는 것을 삼가함으로써 가능하게 된다. 움직임 예측 모듈(73)은 정수 화소 해상도로 스케일링된 움직임 벡터 값을 반올림하지 않고 스케일링된 움직임 벡터 값에 델타 값의 가산을 수행함으로써, 상기 정수 화소 단위로 움직임 벡터 값을 해석하도록 구성될 수 있다. 결과적인 움직임 벡터 값은 이미지를 생성하기 위해 사용될 때만 오직 정수 또는 부화소 단위 측면으로 해석된다. 결과 값은 또한 저장된 값에 대한 해석을 정수 단위 또는 분수 단위 중 어느 하나의 측면으로 하지 않고, 하나 이상의 그 다음의 움직임 벡터를 예측하는데 사용하기 위해 저장된다.
예를 들어, 이와 같은 대안에 따라, 움직임 벡터 디코딩 프로세스는 다음과 같이 구현될 수 있다.
1. MV가 디코더에서 예측될 방법 및 움직임 벡터 델타(motion vector delta; MVD)가 인코더로부터 인코딩된 비트 스트림(이것은 일부 구문 표시를 포함할 수 있다)에 전송되었는지의 여부를 결정한다.
2. 예측된 움직임 벡터(predicted motion vector; PMV)를 생성한다. 이것은 한 쌍의 정수(px, py)를 생성한다. 그러나, 이것이 나타내는 것에 대해 걱정하지 않는다. 즉, 이 스테이지에서 단위에 대해 어떠한 해석도 하지 않는다.
3. 어떠한 MVD도 전송되지 않는 경우, MV 값(mx, my)를 (px, py)로 설정하고, 그렇지 않으면, 한 쌍의 정수(px, py)를 (dx, dy)로서 디코딩하고, MV 값(mx, my)를 (px + dx, py + dy)로 설정한다. 정수 정밀도 모드에서 동작하는 경우, 루마 도메인에서 전체 정수 오프셋을 나타내는 것으로서, 즉, 1/4 샘플 오프셋 단위로 값(4*mx, 4*my)을 나타내는 것으로서 MV를 해석한다. 그렇지 않으면(즉, 1/4 샘플 정밀도 모드에서 동작하는 경우), 루마 도메인에서 1/4 샘플 오프셋을 나타내는 것으로서, 즉, 1/4 샘플 오프셋 단위로 값(mx, my)을 나타내는 것으로서 MV를 해석한다(주의, 또다시, 비디오가 4:2:2 또는 4:2:0 와 같은 포맷인 경우, 루마 구별만 중요하다).
4. 그 다음의 PMV를 생성(그리고 디블록킹 필터링을 제어하는 것 등)하기 위한 다음의 사용을 위해 최종 값(mx, my)을 저장한다. 또다시, 이것이 나타내는 것에 대해 걱정하지 않는다.
따라서, 이전에 설명한 반올림 단계(3a)는 이제 제거된다. 오직 숫자의 해석만이 수정된다. 이것은 MV 예측 프로세스의 어떠한 수정도 불필요하기 때문에, 디코딩 프로세스를 덜 복잡하게 만든다.
위에서 설명한 반올림은 ¼ (또는 분수) 해상도에서 정수 해상도로의 반올림을 나타낸다. 본 표준에는, 또한 움직임 벡터 예측의 일부로서 더욱 미세한 해상도에서 ¼ 해상도로의 반올림도 있고, 위의 대안적인 실시예에서, 예비 반올림이 여전히 존재하는 것을 배제하지 않는다.
이와 같이 동작하는 것은 일부 부작용이 있을 수 있다. 하나의 부작용은 일부 픽처가 다른 것과는 상이한 모드를 사용하는 경우, 시간적 MV 예측을 위한 MV 예측 프로세스에서 사용되는 스케일링이 정확하지 않을 수 있다는 것이다. 그러나, 이것은 매우 작은 효과일 것이다. 특히, 상이한 모드에서 동작하는 이러한 상황을 갖는 것이 매우 드물기 때문에, 또한 시간적 MV 예측이 일반적으로 단지 매우 작은 장점만을 가지고 있기 때문이다. 다른 부작용은 디블록킹 필터 제어의 결과가 MV 값에 의존할 수 있다는 것이고, MV 값은 상이한 스케일 인자로 해석된다. 그러나, 이 효과도 또한 매우 작고, 특히, 디블록킹이 사용되지 않거나, 또는 스크린 콘텐츠를 코딩할 때 많은 효과를 갖지 않을 수 있기 때문이다.
또 다른 가능성은 정수 움직임만을 사용할 때마다 시간적 움직임 벡터 예측을 사용하지 않는 것이다. 인코더가 그 기능의 사용을 사용하지 않게 하는 구문이 HEVC에 이미 있다. 그것은 차이가 정수 값 또는 분수 값으로서 코딩되는지의 여부에 따라 상이하게 동작하는 특별한 프로세스를 디코더가 가져야 하는 필요성을 방지하기 위한 가능한 방법일 것이다. 그래도 이러한 사용 경우에 시간적 움직임 벡터 예측에서 얻은 이득은 작을 수 있어(또는 0일 수 있음), 그것을 사용하지 않는 것은 바람직하지 않아도 된다.
상기 실시예들은 단지 예로서 설명되었다는 것을 이해할 것이다.
예를 들어, 상기에서 블록 면에서 설명되었지만, 이것은 반드시 어떤 특정 표준에서 블록이라고 언급되는 분할로 한정되는 것은 아니다. 예를 들어, 본원에 나타난 블록은 H.26x 표준에서의 블록 또는 매크로 블록이라고 언급되는 분할일 수 있다.
본원에 개시된 일반적인 기술 및 임의의 특정 코덱 또는 표준으로 한정된 본 개시의 범위는 기존 표준의 콘텍스트 또는 기존 표준에 대한 업데이트 중 어느 하나에서 구현될 수 있고, H264 또는 H.265와 같은 H.26x 표준이든 임의의 다른 표준이든 맞춤형 코덱으로 구현될 수 있다. 또한, 본 개시의 범위는 RGB, YUV 측면으로든 또는 다른 측면으로든 비디오 샘플의 임의의 특정 표현으로 특별히 제한되지 않는다. 본 개시의 범위는 임의의 특정 양자화로도 한정되지 않고, DCT 변환으로도 한정되지 않는다. 예컨대, 카루넨 루베 변환(KLT)과 같은 대안적인 변환이 사용되거나, 어떠한 변환도 사용되지 않을 수 있다. 또한, 본 개시는 임의의 특정 종류의 네트워크를 통한 통신 또는 VoIP 통신으로 한정되는 것이 아니라, 데이터를 전달할 수 있는 임의의 네트워크 또는 매체에 사용될 수 있다.
움직임 벡터 오프셋이 화소의 정수 등으로 제한되거나 제한되지 않는 경우, 이것은 움직임 추정을 색 공간 채널 중 임의의 하나 또는 두 개로 나타내거나, 움직임 추정을 세 개의 색 채널 모두로 나타낼 수 있다.
또한, 본 발명은 정수 화소 해상도와 1/4 화소 해상도 간의 선택으로 한정되지 않는다. 일반적으로, 본원에서 설명된 기술은 정수 화소 해상도와 임의의 부화소 해상도, 예컨대, ½ 화소 해상도 간의 선택, 또는 정수 화소 해상도와 복수의 상이한 부화소 모드 간의 선택, 예컨대, 정수와, ½ 모드와, ¼ 모드 간의 선택에 적용될 수 있다.
또한, 본 개시의 범위는 인코딩된 비디오 및/또는 스크린 캡처 스트림이 네트워크를 통해 전송되는 애플리케이션으로도 한정되지 않고, 스트림이 라이브 스트림인 애플리케이션으로도 한정되지 않는다. 예를 들어, 다른 애플리케이션에서, 스트림은 광 디스크, 하드 디스크 또는 다른 자기 저장 장치, 또는 "플래시" 메모리 스틱 또는 다른 전자 메모리와 같은 저장 디바이스에 저장될 수 있다. 그러므로, 스크린 공유 스트림은 반드시 라이브 공유를 의미해야 하는 것은 아님을 주의한다(그래도 그것은 확실히 하나의 옵션이기는 하다). 대안적으로 또는 부가적으로, 그것은 하나 이상의 다른 사용자들과 나중에 공유하기 위해 저장되거나, 캡처된 이미지 데이터는 공유되는 것이 아니라, 오히려 단지 그 시점에 스크린을 이용하는 사용자에게 기록될 수 있다. 일반적으로, 스크린 캡처는 캡처된 인코더 측 스크린 콘텐츠로 구성된 임의의 움직이는 이미지 데이터일 수 있고, 한 명 이상의 다른 사용자들과 공유(라이브이든 아니든)하기 위해 또는 캡처 사용자의 이익을 위해 단순히 기록하기 위해 또는 단지 보관(아마도, 결과적으로 봤을 때 실제로 결코 다시 볼 수 없음)을 위해 임의의 적합한 수단(그것은 하나의 옵션이기는 하지만, 반드시 스크린 버퍼로부터의 팍독에 의한 것은 아니다)에 의해 캡처될 수 있다.
코덱은 반드시 단지 스크린 캡처 데이터 및 비디오를 인코딩하는 것으로 한정되는 것은 아님을 또한 주의한다. 실시예에서, 다른 타입의 움직이는 이미지 데이터, 예컨대, 애니메이션을 또한 인코딩할 수 있다. 이러한 다른 타입의 움직이는 이미지 데이터는 부화소 모드 또는 정수 화소 모드로 인코딩될 수 있다.
또한, 인터 프레임 인코딩은 반드시 항상 이전 프레임에 관하여 인코딩되어야 하는 것은 아니고, 보다 일반적인 일부 코덱들은 타겟 프레임이 아닌, 타겟 프레임 이전의 또는 타겟 프레임 앞에 있는 상이한 프레임에 관한 인코딩을 허용할 수 있다(적합한 발송 버퍼를 가정함)는 것을 주의한다.
또한, 전술한 바와 같이, 움직임 벡터 자체가 상이하게 인코딩될 수 있다는 것을 주의한다. 인코딩된 비트 스트림에서 시그널링되는 움직임 벡터가 화소의 정수 등으로 제한되는 경우, 이것은 상이하게 인코딩된 형태의 움직임 벡터가 제한(예컨대, 델타)된다는 것을 의미한다.
또한, 디코더는 반드시 최종 사용자 단말기에 구현되어야 하는 것도 아니고, 수신 단말기에서 즉각적인 소비를 위해 움직이는 이미지 데이터를 출력해야 하는 것도 아니다. 대안적인 실시예에서, 수신 단말기는, 디코딩되거나 변환된 형태의 움직이는 이미지 데이터를 다른 단말기에 출력하기 위해, 또는 나중의 소비를 위해 디코딩된 데이터를 저장하기 위해, 디코더 소프트웨어를 실행하는 서버와 같은 중간 단말기일 수 있다. 유사하게, 인코더는 최종 사용자 단말기에 구현되어야 하는 것도 아니고, 송신 단말기에서 비롯되는 움직이는 이미지 데이터를 인코딩해야 하는 것도 아니다. 다른 실시예에서, 송신 단말기는, 예를 들어, 비인코딩되거나 다르게 코딩된 형태의 움직이는 이미지 데이터를 다른 단말기로부터 수신하기 위해, 그 데이터를 서버에 저장하기 위해 인코딩하거나 트랜스코딩하기 위해, 또는 수신 단말기에 포워딩하기 위해, 인코더 소프트웨어를 실행하는 서버와 같은 중간 단말기일 수 있다.
일반적으로, 본 명세서에 기술된 기능들 중 임의의 기능들은, 소프트웨어, 펌웨어, 하드웨어(예컨대, 고정 로직 회로), 또는 이러한 구현예들의 조합을 사용하여 구현될 수 있다. 본 명세서에서 이용되는 바와 같은 용어 "모듈", "기능", "컴포넌트" 및 "로직"은 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현예의 경우에, 모듈, 기능, 또는 로직은 프로세서(예컨대, CPU 또는 CPU들) 상에서 실행될 때 명시된 작업을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능 메모리 디바이스에 저장될 수 있다. 본 명세서에 기술된 기술들의 특징은 플랫폼 독립적이고, 이것은 기술들이 다양한 프로세서를 갖는 다양한 상업용 컴퓨팅 플랫폼 상에 구현될 수 있다는 것을 의미한다.
예를 들어, 단말기는 사용자 단말기의 하드웨어로 하여금 동작들, 예컨대, 프로세서 기능 블록들 등을 수행하게 하는 엔티티(예컨대, 소프트웨어)를 포함할 수 있다. 예를 들어, 단말기는 사용자 단말기, 보다 상세하게는, 사용자 단말기의 운영 체제 및 연관된 하드웨어로 하여금 동작들을 수행하게 하는 명령어들을 유지하도록 구성될 수 있는 컴퓨터 판독 가능 매체를 포함할 수 있다. 이와 같이, 명령어들은 운영 체제 및 연관된 하드웨어를 동작들을 수행하도록 구성하는 기능을 하고, 이러한 방식으로 운영 체제 및 연관된 하드웨어를 기능들을 수행하도록 변환시킨다. 명령어들은 다양한 상이한 구성들을 통해 컴퓨터 판독 가능 매체에 의해 단말기에 제공될 수 있다.
컴퓨터 판독 가능 매체의 하나의 이러한 구성은 신호 전달 매체(signal bearing medium)이고, 따라서 네트워크를 통하는 등에 의해, 명령어들을 (예컨대, 반송파로서) 컴퓨팅 디바이스로 전송하도록 구성된다. 컴퓨터 판독 가능 매체는 또한 컴퓨터 판독 가능 저장 매체로서 구성될 수 있고, 따라서 신호 전달 매체가 아니다. 컴퓨터 판독 가능 저장 매체의 예는 랜덤 액세스 메모리(random-access memory; RAM), 읽기 전용 메모리(read-only memory; ROM), 광 디스크, 플래시 메모리, 하드 디스크 메모리, 그리고 명령어들 및 다른 데이터를 저장하기 위해 자기, 광, 및 기타 기법들을 사용할 수 있는 다른 메모리 디바이스들을 포함한다.
대상이 구조적 특징 및/또는 방법론적 행위에 특정한 언어로 설명되어 있지만, 첨부된 특허 청구 범위에 정의된 대상은 반드시 위에서 설명한 특정한 특징 또는 행위로 제한되는 것이 아님이 이해될 것이다. 오히려, 위에서 설명한 특정한 특징 및 행위는 특허 청구 범위를 구현하는 예시적인 형태로 개시된다.

Claims (20)

  1. 디코더 시스템으로서:
    인코딩된 비트스트림 내의 움직이는 이미지 데이터에 대한 인코딩된 데이터를 수신하기 위한 입력부 - 상기 움직이는 이미지 데이터는 적어도 하나의 영역이 움직임 추정을 사용하여 인코딩된 복수의 프레임을 포함하고, 상기 인코딩된 데이터는 상기 복수의 프레임 내의 각각의 적어도 하나의 영역과 연관된 각각의 움직임 벡터(motion vector; MV) 값의 세트를 포함하고, 상기 인코딩된 데이터는 또한:
    상기 복수의 프레임 중 적어도 하나의 프레임과 연관된 하이 레벨 헤더 내의 모드 지표(mode indicator) - 상기 모드 지표는 (a) 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는지 여부, 및 (b) 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않는 경우, 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 정수 샘플 정밀도인지 1/4 샘플 정밀도인지 여부를 표시함 -; 및
    상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는 경우, 상기 복수의 프레임 중 상기 적어도 하나의 프레임의 각각의 영역 각각에 대하여, 상기 영역에 대한 헤더 내의 플래그의 값 - 상기 플래그의 값은 상기 영역에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 표시함 -
    을 포함하는, 상기 인코딩된 데이터를 수신하기 위한 입력부;
    상기 복수의 프레임을 디코딩하기 위한 비디오 디코더 - 상기 복수의 프레임의 디코딩은 인트라 예측 동작과 인터 예측 동작을 포함하고, 상기 인터 예측 동작은 상기 MV 값에 적어도 부분적으로 기초하고, 상기 복수의 프레임의 디코딩은 또한:
    상기 모드 지표로부터, 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는지 여부를 결정하고;
    상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않는 경우, 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않음도 표시하는 상기 모드 지표로부터, 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 결정함으로써, 상기 복수의 프레임 중 상기 적어도 하나의 프레임의 각각의 영역의 상기 MV 값이 상기 정수 샘플 정밀도에서 해석되는지 또는 상기 1/4 샘플 정밀도에서 해석되는지 여부를 결정하고;
    상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는 경우, 상기 복수의 프레임 중 상기 적어도 하나의 프레임의 상기 각각의 영역 각각에 대하여, 상기 영역의 상기 플래그의 값에 기초하여, 상기 영역에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 결정함으로써, 상기 각각의 영역의 상기 MV 값이 상기 정수 샘플 정밀도에서 해석되는지 또는 상기 1/4 샘플 정밀도에서 해석되는지 여부를 결정하고;
    상기 1/4 샘플 정밀도에 대하여 부화소 단위로 상기 MV 값을 해석하거나 상기 정수 샘플 정밀도에 대하여 정수 화소 단위로 상기 MV 값을 해석하는 것
    을 포함하는, 비디오 디코더; 및
    디스플레이를 위하여 디코딩된 프레임들을 출력하기 위한 버퍼
    를 포함하는, 디코더 시스템.
  2. 제1항에 있어서, 상기 하이 레벨 헤더는 시퀀스 파라미터 세트 또는 픽처 파라미터 세트이고, 상기 영역은 슬라이스이고, 상기 영역에 대한 헤더는 슬라이스 헤더인 것인, 디코더 시스템.
  3. 제1항에 있어서, 상기 모드 지표 및/또는 상기 플래그의 값은 상기 MV 값의 수평 컴포넌트에 대한 상기 MV 정밀도를 나타내거나 또는 상기 MV 값의 수직 컴포넌트에 대한 상기 MV 정밀도를 나타내고, 상기 디코딩은 상기 복수의 프레임 중 상기 적어도 하나의 프레임을 수평 또는 수직으로 리사이징하는 것을 더 포함하는 것인, 디코더 시스템.
  4. 제3항에 있어서, 상기 MV 값의 수평 컴포넌트 및 상기 MV 값의 수직 컴포넌트는 상이한 MV 정밀도를 갖는 것인, 디코더 시스템.
  5. 제1항에 있어서, 상기 움직이는 이미지 데이터는 콘텐츠 유형을 갖고, 상기 콘텐츠 유형이 스크린 캡처 콘텐츠 유형인 경우 상기 MV 정밀도는 상기 정수 샘플 정밀도이고, 상기 콘텐츠 유형이 카메라 비디오 콘텐츠 유형인 경우 상기 MV 정밀도는 상기 1/4 샘플 정밀도인 것인, 디코더 시스템.
  6. 제1항에 있어서, 상기 모드 지표는 2비트 값이고, 상기 모드 지표에 대하여:
    제1 가능한 값은 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어되지 않음을 나타내고 또한 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 1/4 샘플 정밀도임을 나타내고;
    제2 가능한 값은 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어되지 않음을 나타내고 또한 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도임을 나타내고;
    제3 가능한 값은 상기 복수의 프레임 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어됨을 나타내는 것인, 디코더 시스템.
  7. 제1항에 있어서, 상기 복수의 프레임 중 상기 적어도 하나의 프레임의 상기 각각의 영역 중 주어진 영역에 대하여, 상기 주어진 영역에 대한 상기 플래그의 값이 상기 비트스트림에 존재하지 않는 경우, 상기 주어진 영역에 대한 상기 플래그의 값은 상기 모드 지표와 동일한 값을 갖는 것으로 추정(infer)되는 것인, 디코더 시스템.
  8. 하나 이상의 프로세싱 유닛과 메모리를 포함하는 컴퓨터 시스템 내의 방법으로서:
    비디오 시퀀스의 프레임들에 대하여, 비트스트림의 일부로서, 인코딩된 데이터를 수신하는 단계로서, 상기 프레임들 각각은 하나 이상의 영역을 포함하고, 상기 비트스트림은:
    상기 비디오 시퀀스의 상기 프레임들 중 적어도 하나의 프레임에 대해 적용되는 헤더 내의, (a) 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 움직임 벡터(motion vector; MV) 정밀도가 영역 단위로 제어되는지 여부, 및 (b) 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 정수 샘플 정밀도인지 1/4 샘플 정밀도인지 여부에 대한 지표의 값;
    상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임의 상기 하나 이상의 영역 중 각각의 영역에 대하여, 상기 영역에 대한 헤더 내의 플래그의 값 - 상기 플래그의 값은 상기 영역에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 표시함 -
    을 포함하는 것인, 상기 인코딩된 데이터를 수신하는 단계;
    상기 인코딩된 데이터를 사용하여 상기 프레임들을 디코딩하는 단계로서, 상기 프레임들을 디코딩하는 단계는 인트라 예측 동작과 인터 예측 동작을 포함하고, 상기 프레임들을 디코딩하는 단계는 또한:
    상기 지표의 값에 기초하여, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는지 여부를 결정하는 단계;
    상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않음도 표시하는 상기 지표의 값에 기초하여, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 결정하는 단계; 및
    상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임의 상기 하나 이상의 영역 중 각각의 영역에 대하여, 상기 영역의 상기 플래그의 값에 기초하여, 상기 영역에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 결정하는 단계를 포함하는 것인, 상기 프레임들을 디코딩하는 단계; 및
    디스플레이를 위하여 상기 디코딩된 프레임들을 출력하는 단계
    를 포함하는, 컴퓨터 시스템 내의 방법.
  9. 제8항에 있어서, 상기 프레임들 중 상기 적어도 하나의 프레임에 대해 적용되는 상기 헤더는 시퀀스 파라미터 세트 또는 픽처 파라미터 세트이고, 상기 영역은 슬라이스이고, 상기 영역에 대한 헤더는 슬라이스 헤더인 것인, 컴퓨터 시스템 내의 방법.
  10. 제8항에 있어서, 상기 지표 및/또는 상기 플래그의 값은 상기 MV 값의 수평 컴포넌트에 대한 상기 MV 정밀도를 나타내거나 또는 상기 MV 값의 수직 컴포넌트에 대한 상기 MV 정밀도를 나타내고, 상기 방법은 또한, 상기 디코딩하는 단계 중에, 상기 프레임들 중 상기 적어도 하나의 프레임을 수평 또는 수직으로 리사이징하는 단계를 더 포함하는 것인, 컴퓨터 시스템 내의 방법.
  11. 제10항에 있어서, 상기 MV 값의 수평 컴포넌트 및 상기 MV 값의 수직 컴포넌트는 상이한 MV 정밀도를 갖는 것인, 컴퓨터 시스템 내의 방법.
  12. 제8항에 있어서, 상기 비디오 시퀀스의 프레임들은 콘텐츠 유형을 갖고, 상기 콘텐츠 유형이 스크린 캡처 콘텐츠 유형인 경우 상기 MV 정밀도는 상기 정수 샘플 정밀도이고, 상기 콘텐츠 유형이 카메라 비디오 콘텐츠 유형인 경우 상기 MV 정밀도는 상기 1/4 샘플 정밀도인 것인, 컴퓨터 시스템 내의 방법.
  13. 제8항에 있어서, 상기 지표는 2비트 값이고, 상기 지표에 대하여:
    제1 가능한 값은 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어되지 않음을 나타내고 또한 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 1/4 샘플 정밀도임을 나타내고;
    제2 가능한 값은 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어되지 않음을 나타내고 또한 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도임을 나타내고;
    제3 가능한 값은 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어됨을 나타내는 것인, 컴퓨터 시스템 내의 방법.
  14. 제8항에 있어서, 상기 프레임들 중 상기 적어도 하나의 프레임의 상기 각각의 영역 중 주어진 영역에 대하여, 상기 주어진 영역에 대한 상기 플래그의 값이 상기 비트스트림에 존재하지 않는 경우, 상기 주어진 영역에 대한 상기 플래그의 값은 상기 지표와 동일한 값을 갖는 것으로 추정되는 것인, 컴퓨터 시스템 내의 방법.
  15. 컴퓨터 판독가능 메모리 디바이스에 구현된 컴퓨터 프로그램 제품으로서:
    비디오 시퀀스의 프레임들에 대하여, 비트스트림의 일부로서, 인코딩된 데이터를 수신하는 동작으로서, 상기 프레임들 각각은 하나 이상의 영역을 포함하고, 상기 비트스트림은:
    상기 비디오 시퀀스의 상기 프레임들 중 적어도 하나의 프레임에 대해 적용되는 헤더 내의, (a) 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 움직임 벡터(motion vector; MV) 정밀도가 영역 단위로 제어되는지 여부, 및 (b) 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 정수 샘플 정밀도인지 1/4 샘플 정밀도인지 여부에 대한 지표의 값;
    상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임의 상기 하나 이상의 영역 중 각각의 영역에 대하여, 상기 영역에 대한 헤더 내의 플래그의 값 - 상기 플래그의 값은 상기 영역에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 표시함 -
    을 포함하는 것인, 상기 인코딩된 데이터를 수신하는 동작;
    상기 인코딩된 데이터를 사용하여 상기 프레임들을 디코딩하는 동작으로서, 상기 프레임들을 디코딩하는 동작은 인트라 예측 동작과 인터 예측 동작을 포함하고, 상기 프레임들을 디코딩하는 동작은 또한:
    상기 지표의 값에 기초하여, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는지 여부를 결정하는 동작;
    상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되지 않음도 표시하는 상기 지표의 값에 기초하여, 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 결정하는 동작; 및
    상기 프레임들 중 상기 적어도 하나의 프레임에 대한 MV 정밀도가 영역 단위로 제어되는 경우, 상기 프레임들 중 상기 적어도 하나의 프레임의 상기 하나 이상의 영역 중 각각의 영역에 대하여, 상기 영역의 상기 플래그의 값에 기초하여, 상기 영역에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도인지 상기 1/4 샘플 정밀도인지 여부를 결정하는 동작을 포함하는 것인, 상기 프레임들을 디코딩하는 동작; 및
    디스플레이를 위하여 상기 디코딩된 프레임들을 출력하는 동작
    을 포함하는 동작들을 수행하도록 실행가능한, 컴퓨터 프로그램 제품.
  16. 제15항에 있어서, 상기 프레임들 중 상기 적어도 하나의 프레임에 대해 적용되는 상기 헤더는 시퀀스 파라미터 세트 또는 픽처 파라미터 세트이고, 상기 영역은 슬라이스이고, 상기 영역에 대한 헤더는 슬라이스 헤더인 것인, 컴퓨터 프로그램 제품.
  17. 제15항에 있어서, 상기 지표 및/또는 상기 플래그의 값은 상기 MV 값의 수평 컴포넌트에 대한 상기 MV 정밀도를 나타내거나 또는 상기 MV 값의 수직 컴포넌트에 대한 상기 MV 정밀도를 나타내고, 상기 디코딩하는 동작은 또한, 상기 프레임들 중 상기 적어도 하나의 프레임을 수평 또는 수직으로 리사이징하는 동작을 더 포함하는 것인, 컴퓨터 프로그램 제품.
  18. 제17항에 있어서, 상기 MV 값의 수평 컴포넌트 및 상기 MV 값의 수직 컴포넌트는 상이한 MV 정밀도를 갖는 것인, 컴퓨터 프로그램 제품.
  19. 제15항에 있어서, 상기 지표는 2비트 값이고, 상기 지표에 대하여:
    제1 가능한 값은 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어되지 않음을 나타내고 또한 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 1/4 샘플 정밀도임을 나타내고;
    제2 가능한 값은 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어되지 않음을 나타내고 또한 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 정수 샘플 정밀도임을 나타내고;
    제3 가능한 값은 상기 프레임들 중 상기 적어도 하나의 프레임에 대한 상기 MV 정밀도가 상기 영역 단위로 제어됨을 나타내는 것인, 컴퓨터 프로그램 제품.
  20. 제15항에 있어서, 상기 프레임들 중 상기 적어도 하나의 프레임의 상기 각각의 영역 중 주어진 영역에 대하여, 상기 주어진 영역에 대한 상기 플래그의 값이 상기 비트스트림에 존재하지 않는 경우, 상기 주어진 영역에 대한 상기 플래그의 값은 상기 지표와 동일한 값을 갖는 것으로 추정되는 것인, 컴퓨터 프로그램 제품.
KR1020227024378A 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현 KR102523311B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201461925108P 2014-01-08 2014-01-08
US61/925,108 2014-01-08
US201461934506P 2014-01-31 2014-01-31
US61/934,506 2014-01-31
US14/530,625 2014-10-31
US14/530,625 US9774881B2 (en) 2014-01-08 2014-10-31 Representing motion vectors in an encoded bitstream
KR1020217030539A KR102427065B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현
PCT/US2015/010391 WO2015105816A2 (en) 2014-01-08 2015-01-07 Representing motion vectors in an encoded bitstream

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217030539A Division KR102427065B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현

Publications (2)

Publication Number Publication Date
KR20220104075A KR20220104075A (ko) 2022-07-25
KR102523311B1 true KR102523311B1 (ko) 2023-04-18

Family

ID=53496190

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020227024378A KR102523311B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현
KR1020167021329A KR102306845B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현
KR1020217030539A KR102427065B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020167021329A KR102306845B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현
KR1020217030539A KR102427065B1 (ko) 2014-01-08 2015-01-07 인코딩된 비트 스트림에서의 움직임 벡터 표현

Country Status (11)

Country Link
US (4) US9774881B2 (ko)
EP (2) EP4192014A1 (ko)
JP (3) JP6588441B2 (ko)
KR (3) KR102523311B1 (ko)
CN (2) CN105900425B (ko)
AU (1) AU2015204953B2 (ko)
BR (1) BR112016015618A8 (ko)
CA (1) CA2935425C (ko)
MX (1) MX361790B (ko)
RU (1) RU2679979C1 (ko)
WO (1) WO2015105816A2 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
WO2016050219A1 (en) 2014-09-30 2016-04-07 Mediatek Inc. Method of adaptive motion vetor resolution for video coding
US10075712B2 (en) * 2014-11-20 2018-09-11 Hfi Innovation Inc. Method of motion vector and block vector resolution control
KR102349788B1 (ko) * 2015-01-13 2022-01-11 인텔렉추얼디스커버리 주식회사 영상의 부호화/복호화 방법 및 장치
GB2539213A (en) * 2015-06-08 2016-12-14 Canon Kk Schemes for handling an AMVP flag when implementing intra block copy coding mode
WO2017034113A1 (ko) * 2015-08-24 2017-03-02 엘지전자(주) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2017156669A1 (en) 2016-03-14 2017-09-21 Mediatek Singapore Pte. Ltd. Methods for motion vector storage in video coding
US10362307B2 (en) * 2016-09-09 2019-07-23 Hanwha Techwin Co., Ltd. Quantization parameter determination method and image capture apparatus
US10841794B2 (en) * 2017-09-18 2020-11-17 Futurewei Technologies, Inc. Adaptive motion vector resolution
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
US10638137B2 (en) * 2018-03-07 2020-04-28 Tencent America LLC Method and apparatus for video coding
WO2019194501A1 (ko) * 2018-04-01 2019-10-10 엘지전자 주식회사 움직임 벡터 리파인먼트에 기반한 영상 코딩 방법 및 그 장치
KR102516233B1 (ko) 2018-04-02 2023-03-30 엘지전자 주식회사 움직임 벡터에 기반한 영상 코딩 방법 및 그 장치
US11057617B2 (en) * 2018-08-03 2021-07-06 Tencent America LLC Method and apparatus for video coding
WO2020084473A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Multi- iteration motion vector refinement
CN109413344B (zh) * 2018-10-26 2022-04-19 北京计算机技术及应用研究所 基于视频采集及编码技术的多分辨率屏幕操作状态监视装置
JP7146086B2 (ja) * 2018-11-12 2022-10-03 北京字節跳動網絡技術有限公司 インター予測のためのバンド幅制御方法
CN113016185B (zh) 2018-11-17 2024-04-05 北京字节跳动网络技术有限公司 以运动矢量差分模式控制Merge
WO2020103852A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Difference calculation based on patial position
EP3868107A4 (en) 2018-12-21 2021-12-15 Beijing Bytedance Network Technology Co. Ltd. MOTION VECTOR ACCURACY IN INTERACTING WITH MOTION VECTOR DIFFERENCE MODE
WO2020125754A1 (en) * 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector derivation using higher bit-depth precision
CN115348449A (zh) * 2018-12-29 2022-11-15 华为技术有限公司 编码器,解码器和使用压缩mv存储的对应方法
EP3915259A4 (en) 2019-03-06 2022-03-30 Beijing Bytedance Network Technology Co., Ltd. USE OF A CONVERTED UNIVERSITY PREDICTION CANDIDATE
EP3713235B1 (en) * 2019-03-19 2023-08-02 Axis AB Methods and devices for encoding a video stream using a first and a second encoder
AU2020250609B2 (en) 2019-04-01 2023-09-07 Beijing Bytedance Network Technology Co., Ltd. Using interpolation filters for history based motion vector prediction
JP7359942B2 (ja) 2019-08-20 2023-10-11 北京字節跳動網絡技術有限公司 映像処理における代替の補間フィルタの選択的使用
JP7409802B2 (ja) * 2019-08-22 2024-01-09 シャープ株式会社 動画像復号装置および動画像符号化装置
CN110650357B (zh) * 2019-09-27 2023-02-10 腾讯科技(深圳)有限公司 视频解码方法及装置
CN110636294B (zh) * 2019-09-27 2024-04-09 腾讯科技(深圳)有限公司 视频解码方法及装置,视频编码方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009171608A (ja) * 2002-01-24 2009-07-30 Hitachi Ltd 動画像の符号化方法
WO2012042893A1 (ja) * 2010-09-30 2012-04-05 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置、プログラムおよび集積回路

Family Cites Families (228)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60158786A (ja) 1984-01-30 1985-08-20 Kokusai Denshin Denwa Co Ltd <Kdd> 画像動き量検出方式
US4661849A (en) 1985-06-03 1987-04-28 Pictel Corporation Method and apparatus for providing motion estimation signals for communicating image sequences
US4661853A (en) 1985-11-01 1987-04-28 Rca Corporation Interfield image motion detector for video signals
DE3854171T2 (de) 1987-06-09 1995-12-21 Sony Corp Bewertung von Bewegungsvektoren in Fernsehbildern.
DE3854337T2 (de) 1987-06-09 1996-02-01 Sony Corp Bewegungskompensierte Interpolation von digitalen Fernsehbildern.
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
DE69033782T2 (de) 1989-10-14 2002-06-20 Sony Corp Verfahren und Anordnung zum Kodieren/Dekodieren eines Videosignales
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
EP0484140B1 (en) 1990-10-31 1996-12-18 Victor Company Of Japan, Ltd. Compression method of interlace moving image signals
CA2087946A1 (en) 1991-05-24 1992-11-25 Michael Burl Video image processing
US5467136A (en) 1991-05-31 1995-11-14 Kabushiki Kaisha Toshiba Video decoder for determining a motion vector from a scaled vector and a difference vector
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
ATE148607T1 (de) 1991-09-30 1997-02-15 Philips Electronics Nv Bewegungsvektorschätzung, bewegungsbildkodierung- und -speicherung
JP2962012B2 (ja) 1991-11-08 1999-10-12 日本ビクター株式会社 動画像符号化装置及びその復号装置
GB2262854B (en) 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US5594813A (en) 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
US6441842B1 (en) 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US5436665A (en) * 1992-03-03 1995-07-25 Kabushiki Kaisha Toshiba Motion picture coding apparatus
US6226327B1 (en) 1992-06-29 2001-05-01 Sony Corporation Video coding method and apparatus which select between frame-based and field-based predictive modes
JPH0662386A (ja) * 1992-08-04 1994-03-04 G C Technol Kk 解像度変換復号方法と装置
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
JP3200196B2 (ja) 1992-10-15 2001-08-20 株式会社リコー 動きベクトル検出方法
CA2118118C (en) 1993-03-24 2004-02-24 Motoki Kato Method for coding and decoding motion vectors and apparatus therefor
US5442400A (en) 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH06343172A (ja) 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
US5477272A (en) 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
CN1099723A (zh) 1993-08-31 1995-03-08 张智新 硫酸铵分解法
KR970003102B1 (ko) * 1993-09-17 1997-03-14 대우전자 주식회사 영상 복호기에서의 하프 픽셀 움직임 보상 회로
TW283289B (ko) 1994-04-11 1996-08-11 Gen Instrument Corp
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US5684538A (en) 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
EP0710033A3 (en) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
US6301299B1 (en) * 1994-10-28 2001-10-09 Matsushita Electric Industrial Co., Ltd. Memory controller for an ATSC video decoder
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
US5796855A (en) 1995-10-05 1998-08-18 Microsoft Corporation Polygon block matching method
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
JP2798035B2 (ja) 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5768537A (en) * 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6130963A (en) 1996-11-22 2000-10-10 C-Cube Semiconductor Ii, Inc. Memory efficient decoding of video frame chroma
US6377628B1 (en) 1996-12-18 2002-04-23 Thomson Licensing S.A. System for maintaining datastream continuity in the presence of disrupted source data
US6330344B1 (en) * 1997-02-14 2001-12-11 Sony Corporation Image processing device and method employing motion detection to generate improved quality image from low resolution image
US6201927B1 (en) 1997-02-18 2001-03-13 Mary Lafuze Comer Trick play reproduction of MPEG encoded signals
US5991447A (en) 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5844613A (en) 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US6661470B1 (en) 1997-03-31 2003-12-09 Matsushita Electric Industrial Co., Ltd. Moving picture display method and apparatus
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
JP3129986B2 (ja) 1997-04-09 2001-01-31 日本車輌製造株式会社 杭施工機のトルク管理装置
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
EP2271116B1 (en) 1997-06-09 2013-09-11 Hitachi, Ltd. Image decoding method and image decoder
US6574371B2 (en) 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6266091B1 (en) 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
US6310918B1 (en) 1997-07-31 2001-10-30 Lsi Logic Corporation System and method for motion vector extraction and computation meeting 2-frame store and letterboxing requirements
FR2766946B1 (fr) 1997-08-04 2000-08-11 Thomson Multimedia Sa Procede et dispositif de pretraitement pour estimation de mouvement
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6339656B1 (en) 1997-12-25 2002-01-15 Matsushita Electric Industrial Co., Ltd. Moving picture encoding decoding processing apparatus
US6122017A (en) 1998-01-22 2000-09-19 Hewlett-Packard Company Method for providing motion-compensated multi-field enhancement of still images from video
JP3856262B2 (ja) 1998-03-09 2006-12-13 日本ビクター株式会社 動き補償符号化装置、動き補償符号化方法、及び動き補償符号記録媒体
US6611624B1 (en) * 1998-03-13 2003-08-26 Cisco Systems, Inc. System and method for frame accurate splicing of compressed bitstreams
US6020934A (en) * 1998-03-23 2000-02-01 International Business Machines Corporation Motion estimation architecture for area and power reduction
US6195389B1 (en) * 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods
JP3888597B2 (ja) 1998-06-24 2007-03-07 日本ビクター株式会社 動き補償符号化装置、及び動き補償符号化復号化方法
JP4026238B2 (ja) 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6219070B1 (en) 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
US6466624B1 (en) * 1998-10-28 2002-10-15 Pixonics, Llc Video decoder with bit stream based enhancements
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6584154B1 (en) * 1998-11-26 2003-06-24 Oki Electric Industry Co., Ltd. Moving-picture coding and decoding method and apparatus with reduced computational cost
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6496608B1 (en) 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6259741B1 (en) 1999-02-18 2001-07-10 General Instrument Corporation Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams
US6320593B1 (en) 1999-04-20 2001-11-20 Agilent Technologies, Inc. Method of fast bi-cubic interpolation of image information
JP2000308064A (ja) 1999-04-22 2000-11-02 Mitsubishi Electric Corp 動きベクトル検出装置
EP1050850A1 (en) * 1999-05-03 2000-11-08 THOMSON multimedia Process for estimating a dominant motion between two frames
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US6556624B1 (en) * 1999-07-27 2003-04-29 At&T Corp. Method and apparatus for accomplishing multiple description coding for video
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7206453B2 (en) 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US7266150B2 (en) * 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US20030095603A1 (en) 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Reduced-complexity video decoding using larger pixel-grid motion compensation
GB2382940A (en) * 2001-11-27 2003-06-11 Nokia Corp Encoding objects and background blocks
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
JP2003189312A (ja) * 2001-12-20 2003-07-04 Oki Electric Ind Co Ltd 動画像符号化装置及び動画像復号化装置
WO2003055224A1 (en) * 2001-12-20 2003-07-03 Koninklijke Philips Electronics N.V. Video encoding and decoding method and device
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7620109B2 (en) * 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US7116831B2 (en) 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
US7110459B2 (en) 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7305034B2 (en) 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US7277587B2 (en) 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
US6980695B2 (en) 2002-06-28 2005-12-27 Microsoft Corporation Rate allocation for mixed content video
US7224731B2 (en) * 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
MXPA05000559A (es) * 2002-07-15 2005-04-19 Nokia Corp Metodo para ocultamiento de errores en secuencias de video.
JP4724351B2 (ja) * 2002-07-15 2011-07-13 三菱電機株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置
US7072512B2 (en) 2002-07-23 2006-07-04 Microsoft Corporation Segmentation of digital video and images into continuous tone and palettized regions
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
WO2004114063A2 (en) * 2003-06-13 2004-12-29 Georgia Tech Research Corporation Data reconstruction using directional interpolation techniques
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US7609763B2 (en) * 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
EP1536647A1 (en) 2003-11-26 2005-06-01 STMicroelectronics Limited A video decoding device
KR100631777B1 (ko) 2004-03-31 2006-10-12 삼성전자주식회사 다 계층의 모션 벡터를 효율적으로 압축하는 방법 및 장치
KR100586882B1 (ko) 2004-04-13 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치
US8130825B2 (en) * 2004-05-10 2012-03-06 Nvidia Corporation Processor for video data encoding/decoding
KR100678949B1 (ko) * 2004-07-15 2007-02-06 삼성전자주식회사 비디오 코딩 및 디코딩 방법, 비디오 인코더 및 디코더
US7558428B2 (en) 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
JP4241588B2 (ja) 2004-11-30 2009-03-18 日本ビクター株式会社 動画像符号化装置、及び動画像復号化装置
JP4216796B2 (ja) 2004-12-15 2009-01-28 日本電信電話株式会社 動きベクトル探索方法,動きベクトル探索装置,動きベクトル探索プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
WO2006096612A2 (en) * 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
US8340175B2 (en) * 2005-04-13 2012-12-25 Ntt Docomo, Inc. Dynamic image encoding device, dynamic image decoding device, dynamic image encoding method, dynamic image decoding method, dynamic image encoding program, and dynamic image decoding program
KR100703778B1 (ko) * 2005-04-29 2007-04-06 삼성전자주식회사 고속 fgs를 지원하는 비디오 코딩 방법 및 장치
US20070121728A1 (en) 2005-05-12 2007-05-31 Kylintv, Inc. Codec for IPTV
US20070025442A1 (en) 2005-07-28 2007-02-01 Sanyo Electric Co., Ltd. Coding method for coding moving images
US8761259B2 (en) 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
GB0600141D0 (en) * 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
US7956930B2 (en) * 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US8155195B2 (en) 2006-04-07 2012-04-10 Microsoft Corporation Switching distortion metrics during motion estimation
US7965767B2 (en) 2006-06-30 2011-06-21 Intel Corporation Two-dimensional filtering architecture
US9014280B2 (en) * 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
US9445128B2 (en) * 2006-12-08 2016-09-13 Freescale Semiconductor, Inc. System and method of determining deblocking control flag of scalable video system for indicating presentation of deblocking parameters for multiple layers
MX2009010527A (es) * 2007-04-09 2009-10-26 Nokia Corp Vectores de movimiento de alta precision para codificacion de video con baja complejidad de codificacion y decodificacion.
US8861591B2 (en) 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
SG152082A1 (en) 2007-10-19 2009-05-29 Creative Tech Ltd A method and system for processing a composite video image
US8582652B2 (en) * 2007-10-30 2013-11-12 General Instrument Corporation Method and apparatus for selecting a coding mode
US20090141808A1 (en) * 2007-11-30 2009-06-04 Yiufai Wong System and methods for improved video decoding
US8279936B1 (en) 2007-12-11 2012-10-02 Marvell International Ltd. Method and apparatus for fractional pixel expansion and motion vector selection in a video codec
US20090168871A1 (en) * 2007-12-31 2009-07-02 Ning Lu Video motion estimation
KR20100099723A (ko) 2008-01-09 2010-09-13 미쓰비시덴키 가부시키가이샤 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법, 및 화상 복호 방법
KR101431543B1 (ko) * 2008-01-21 2014-08-21 삼성전자주식회사 영상 부호화/복호화 장치 및 방법
US9584710B2 (en) 2008-02-28 2017-02-28 Avigilon Analytics Corporation Intelligent high resolution video system
JP2009230537A (ja) 2008-03-24 2009-10-08 Olympus Corp 画像処理装置、画像処理プログラム、画像処理方法、および、電子機器
US8266665B2 (en) 2008-03-25 2012-09-11 Verizon Patent And Licensing Inc. TV screen capture
US20090245374A1 (en) 2008-03-26 2009-10-01 Mediatek Inc. Video encoder and motion estimation method
US8831086B2 (en) 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
US20090257499A1 (en) 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US20090262801A1 (en) 2008-04-17 2009-10-22 Qualcomm Incorporated Dead zone parameter selections for rate control in video coding
JP2010016453A (ja) 2008-07-01 2010-01-21 Sony Corp 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
JP5240530B2 (ja) * 2008-10-02 2013-07-17 ソニー株式会社 画像処理装置および方法
US9078007B2 (en) 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
US8295623B2 (en) 2008-10-14 2012-10-23 France Telecom Encoding and decoding with elimination of one or more predetermined predictors
TWI428022B (zh) * 2008-10-24 2014-02-21 Nat Univ Chung Cheng Video control method for instant video encoding chips
DE102008064280A1 (de) 2008-12-20 2010-06-24 Bayer Technology Services Gmbh Verfahren zur Herstellung von Bis(Para-Aminocyclohexyl)Methan
US8428145B2 (en) 2008-12-31 2013-04-23 Entropic Communications, Inc. System and method for providing fast trick modes
US9472167B2 (en) 2009-04-17 2016-10-18 International Business Machines Corporation Video capture through hardware
US8346915B2 (en) 2009-05-04 2013-01-01 Qualcomm Incorporated System and method of recording and sharing mobile application activities
US8498493B1 (en) 2009-06-02 2013-07-30 Imagination Technologies Limited Directional cross hair search system and method for determining a preferred motion vector
JPWO2010143583A1 (ja) * 2009-06-09 2012-11-22 ソニー株式会社 画像処理装置および方法
JP2010288110A (ja) * 2009-06-12 2010-12-24 Sony Corp 画像処理装置および画像処理方法
BRPI0924908B1 (pt) 2009-06-18 2021-05-11 Kabushiki Kaisha Toshiba aparelhos de codificação e decodificação de vídeo, métodos para codificação e decodificação de vídeo
JP5353532B2 (ja) 2009-07-29 2013-11-27 ソニー株式会社 画像処理装置及び画像処理方法
US20110255589A1 (en) 2009-08-03 2011-10-20 Droplet Technology, Inc. Methods of compressing data and methods of assessing the same
JP2011041037A (ja) * 2009-08-12 2011-02-24 Sony Corp 画像処理装置および方法
KR20110017302A (ko) 2009-08-13 2011-02-21 삼성전자주식회사 움직임 벡터의 정확도 조절을 이용한 영상 부호화, 복호화 방법 및 장치
EP2302588B1 (en) * 2009-08-21 2012-02-29 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for estimation of interframe motion fields
KR101678968B1 (ko) * 2009-08-21 2016-11-25 에스케이텔레콤 주식회사 참조 픽처 보간 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101356613B1 (ko) * 2009-08-21 2014-02-06 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
WO2011021915A2 (ko) 2009-08-21 2011-02-24 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
JP5922579B2 (ja) * 2009-10-14 2016-05-24 トムソン ライセンシングThomson Licensing 動き情報の適応型符号化方法及び装置
US8411750B2 (en) * 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
EP2362655B1 (en) * 2010-02-10 2013-07-17 Telefonaktiebolaget L M Ericsson (Publ) Motion-vector estimation
US20110200108A1 (en) 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
US9313526B2 (en) * 2010-02-19 2016-04-12 Skype Data compression for video
WO2011126272A2 (en) * 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation
EP2590407A4 (en) 2010-06-04 2017-05-10 Nec Corporation Communication system, method, and device
US20120008686A1 (en) 2010-07-06 2012-01-12 Apple Inc. Motion compensation using vector quantized interpolation filters
JP5563403B2 (ja) 2010-08-12 2014-07-30 日本電信電話株式会社 映像符号化方法,映像復号方法,映像符号化装置,映像復号装置およびそれらのプログラム
RU2010135495A (ru) * 2010-08-24 2012-02-27 ЭлЭсАй Корпорейшн (US) Видеотранскодер с гибким управлением качеством и сложностью
US20120051431A1 (en) * 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
US10327008B2 (en) * 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US10045046B2 (en) * 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
JP2012126040A (ja) 2010-12-16 2012-07-05 Ricoh Co Ltd 画像形成装置
US9215473B2 (en) 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
US9001883B2 (en) * 2011-02-16 2015-04-07 Mediatek Inc Method and apparatus for slice common information sharing
TWI466550B (zh) * 2011-02-23 2014-12-21 Novatek Microelectronics Corp 多媒體裝置及其移動偵測方法
US9271005B2 (en) 2011-02-24 2016-02-23 Vixs Systems, Inc. Multi-pass video encoder and methods for use therewith
WO2012120863A1 (ja) 2011-03-08 2012-09-13 パナソニック株式会社 動画像符号化方法および動画像復号方法
US20120236115A1 (en) * 2011-03-14 2012-09-20 Qualcomm Incorporated Post-filtering in full resolution frame-compatible stereoscopic video coding
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
JP2012231301A (ja) 2011-04-26 2012-11-22 Sony Corp 係数学習装置および方法、画像処理装置および方法、プログラム、並びに記録媒体
EP2727359B1 (en) 2011-06-30 2019-08-07 Telefonaktiebolaget LM Ericsson (publ) A method as well as a decoder and encoder for processing a motion vector
US10536701B2 (en) 2011-07-01 2020-01-14 Qualcomm Incorporated Video coding using adaptive motion vector resolution
US9277228B2 (en) * 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9521418B2 (en) * 2011-07-22 2016-12-13 Qualcomm Incorporated Slice header three-dimensional video extension for slice header prediction
US9288505B2 (en) * 2011-08-11 2016-03-15 Qualcomm Incorporated Three-dimensional video with asymmetric spatial resolution
IN2014CN01784A (ko) * 2011-08-30 2015-05-29 Nokia Corp
CN102946533B (zh) * 2011-09-02 2016-08-17 斯凯普公司 视频编码
CN102946534A (zh) 2011-09-02 2013-02-27 斯凯普公司 视频编码
RU2487489C2 (ru) 2011-10-18 2013-07-10 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ поиска векторов перемещений в динамических изображениях
JP5364219B1 (ja) * 2011-12-16 2013-12-11 パナソニック株式会社 動画像符号化方法、および動画像符号化装置
US9451252B2 (en) * 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9538200B2 (en) * 2012-01-19 2017-01-03 Qualcomm Incorporated Signaling of deblocking filter parameters in video coding
US20130188719A1 (en) * 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc using motion vector for intra-coded block
US9215266B2 (en) 2012-01-26 2015-12-15 Zoom International S.R.O. System and method for zero-footprint screen capture
CA2807786C (en) * 2012-03-08 2016-06-21 Research In Motion Limited Motion vector sign bit hiding
US20130287109A1 (en) * 2012-04-29 2013-10-31 Qualcomm Incorporated Inter-layer prediction through texture segmentation for video coding
US20130294513A1 (en) * 2012-05-07 2013-11-07 Qualcomm Incorporated Inter layer merge list construction for video coding
CN102740073B (zh) 2012-05-30 2015-06-17 华为技术有限公司 一种编码方法及装置
US9253487B2 (en) * 2012-05-31 2016-02-02 Qualcomm Incorporated Reference index for enhancement layer in scalable video coding
US9584805B2 (en) * 2012-06-08 2017-02-28 Qualcomm Incorporated Prediction mode information downsampling in enhanced layer coding
US9258562B2 (en) * 2012-06-13 2016-02-09 Qualcomm Incorporated Derivation of depth map estimate
US9219913B2 (en) * 2012-06-13 2015-12-22 Qualcomm Incorporated Inferred base layer block for TEXTURE—BL mode in HEVC based single loop scalable video coding
US9338452B2 (en) 2012-07-09 2016-05-10 Qualcomm Incorporated Motion vector difference coding extension for enhancement layer
US9674519B2 (en) * 2012-11-09 2017-06-06 Qualcomm Incorporated MPEG frame compatible video coding
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009171608A (ja) * 2002-01-24 2009-07-30 Hitachi Ltd 動画像の符号化方法
WO2012042893A1 (ja) * 2010-09-30 2012-04-05 パナソニック株式会社 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置、プログラムおよび集積回路

Also Published As

Publication number Publication date
KR20220104075A (ko) 2022-07-25
US11546629B2 (en) 2023-01-03
EP3075156A2 (en) 2016-10-05
CN105900425A (zh) 2016-08-24
BR112016015618A8 (pt) 2020-06-02
JP2022017234A (ja) 2022-01-25
US20200169750A1 (en) 2020-05-28
CN105900425B (zh) 2019-10-01
CN110460861B (zh) 2022-11-18
CA2935425A1 (en) 2015-07-16
MX2016008974A (es) 2016-10-04
US20180109806A1 (en) 2018-04-19
EP4192014A1 (en) 2023-06-07
BR112016015618A2 (ko) 2017-08-08
WO2015105816A3 (en) 2016-04-28
AU2015204953A1 (en) 2016-07-21
RU2679979C1 (ru) 2019-02-14
CA2935425C (en) 2021-11-23
JP6588441B2 (ja) 2019-10-09
CN110460861A (zh) 2019-11-15
JP2020022170A (ja) 2020-02-06
KR102306845B1 (ko) 2021-09-30
US9774881B2 (en) 2017-09-26
US10587891B2 (en) 2020-03-10
US20150195527A1 (en) 2015-07-09
US20230086944A1 (en) 2023-03-23
JP2017508349A (ja) 2017-03-23
KR20210118986A (ko) 2021-10-01
MX361790B (es) 2018-12-17
AU2015204953B2 (en) 2018-11-01
KR20160106127A (ko) 2016-09-09
KR102427065B1 (ko) 2022-07-28
WO2015105816A2 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
US20230086944A1 (en) Representing motion vectors in an encoded bitstream
KR102271780B1 (ko) 화면 콘텐츠 데이터의 비디오 인코딩
US10440396B2 (en) Filter information sharing among color components
JP6728039B2 (ja) ビデオコーディングのための適応色変換
US10694202B2 (en) Indication of bilateral filter usage in video coding
AU2012226301B2 (en) Quantized pulse code modulation in video coding
KR20230008896A (ko) 비디오 인코더, 비디오 디코더 및 대응하는 인코딩 및 디코딩 방법
EP3114837A1 (en) Flicker detection and mitigation in video coding
CN117546469A (zh) 用于视频编解码的残差和系数编解码
CN117378201A (zh) 用于视频编解码的残差和系数编解码

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant