KR102331529B1 - 움직임 벡터(mv) 정밀도의 선택 및 시그널링 - Google Patents

움직임 벡터(mv) 정밀도의 선택 및 시그널링 Download PDF

Info

Publication number
KR102331529B1
KR102331529B1 KR1020207000707A KR20207000707A KR102331529B1 KR 102331529 B1 KR102331529 B1 KR 102331529B1 KR 1020207000707 A KR1020207000707 A KR 1020207000707A KR 20207000707 A KR20207000707 A KR 20207000707A KR 102331529 B1 KR102331529 B1 KR 102331529B1
Authority
KR
South Korea
Prior art keywords
precision
rounding
candidate
encoder
target
Prior art date
Application number
KR1020207000707A
Other languages
English (en)
Other versions
KR20200015737A (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 KR20200015737A publication Critical patent/KR20200015737A/ko
Application granted granted Critical
Publication of KR102331529B1 publication Critical patent/KR102331529B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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
    • 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/176Methods 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 block, e.g. a macroblock
    • 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/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

장치가 메모리; 및 메모리에 연결된 프로세서를 포함한다. 프로세서는 비디오 프레임의 현재 블록을 획득하고, 비디오 프레임의 인접 블록에 대응하는 후보 MV를 획득하며 - 인접 블록은 현재 블록과 이웃하고 있음 -; 후보 MV의 정밀도를 획득하고; 반올림 방식에 기초하여 정밀도의 제1 반올림을 수행하며; 제1 반올림에 기초하여 후보 MV의 제2 반올림을 수행하고; 후보 MV의 가지치기를 수행하며; 제2 반올림과 가지치기에 기초하여 후보 목록을 생성하도록 구성된다.

Description

움직임 벡터(MV) 정밀도의 선택 및 시그널링
본 출원은 2017년 6월 12일에 '퓨처웨이 테크놀러지'에 의해 출원된 미국 임시 특허 출원 번호 제62/518,402호("Motion Vector Prediction and Merge Candidate Selection")에 대해 우선권을 주장하는, 2018년 5월 17일에 출원된 미국 정규 특허 출원 번호 제15/982,865호("Selection and Signaling of Motion Vector (MV) Precisions")에 대해 우선권을 주장하는 바이며, 그 전체 내용이 원용에 의해 본 명세서에 포함된다.
본 발명은 움직임 벡터(MV) 정밀도의 선택 및 시그널링에 관한 것이다.
비디오가 상대적으로 많은 양의 데이터를 사용하므로, 비디오 통신이 상대적으로 많은 양의 대역폭을 사용한다. 하지만, 많은 네트워크가 대역폭 용량으로 또는 그 용량 가까이에서 운용된다. 또한, 고객이 높은 비디오 품질을 요구하고, 높은 비디오 품질은 심지어 더 많은 데이터를 필요로 한다. 따라서, 데이터 비디오 사용량을 줄이면서 비디오 품질을 향상시키려는 요구가 있다. 하나의 해결책이 인코딩 과정 중에 비디오를 압축하고, 디코딩 과정 중에 비디오를 압축 해제하는 것이다. 압축과 압축 해제 기술을 개선하는 것이 연구 개발의 초점이다.
본 개시의 일 양태에 따르면, 장치가 제공된다. 상기 장치는 메모리; 및 메모리에 연결된 프로세서를 포함한다. 상기 프로세서는 비디오 프레임의 현재 블록을 획득하고, 상기 비디오 프레임의 인접 블록(neighboring block)에 대응하는 후보 MV를 획득하며 - 상기 인접 블록은 상기 현재 블록과 이웃하고 있음 -; 상기 후보 MV의 정밀도를 획득하고; 반올림 방식에 기초하여 상기 정밀도의 제1 반올림을 수행하며; 상기 제1 반올림에 기초하여 상기 후보 MV의 제2 반올림을 수행하고; 상기 후보 MV의 가지치기(pruning)를 수행하며; 상기 제2 반올림과 상기 가지치기에 기초하여 후보 목록을 생성하도록 구성된다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 다른 실시 형태가, 상기 인접 블록이 제1 인접 블록과 제2 인접 블록을 포함하고, 상기 정밀도가 상기 제1 인접 블록의 제1 정밀도와 상기 제2 인접 블록의 제2 정밀도를 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 반올림 방식이 상기 제1 정밀도를 상기 현재 블록의 목표 정밀도로 반올림하는 것; 및 상기 제2 정밀도를 상기 목표 정밀도로 반올림하는 것을 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 반올림 방식이, 상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 목표 정밀도의 임의의 조합 중에서 최저 정밀도를 결정하는 것; 및 상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 최저 정밀도로 반올림하는 것을 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 반올림 방식이, 상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 목표 정밀도의 임의의 조합 중에서 중간 정밀도를 결정하는 것; 및 상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 중간 정밀도로 반올림하는 것을 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 반올림 방식이, 상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 목표 정밀도의 임의의 조합 중에서 최고 정밀도를 결정하는 것; 및 상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 최고 정밀도로 반올림하는 것을 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 반올림 방식이, 디폴트 정밀도를 결정하는 것; 및 상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 현재 블록의 목표 정밀도 중 적어도 하나를 상기 디폴트 정밀도로 반올림하는 것을 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 가지치기가 동일한 후보 MV 또는 약간 동일한 후보 MV를 폐기하는 것을 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태가, 상기 가지치기가 제로 MV를 추가하여 상기 후보 목록을 채우는 것을 더 포함한다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 프로세서가 추가적으로, 상기 가지치기 이전에 상기 제1 반올림과 상기 제2 반올림을 더 수행하도록 구성된다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 프로세서가 추가적으로, 상기 가지치기 이후에 상기 제1 반올림과 상기 제2 반올림을 더 수행하도록 구성된다고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 후보 목록이 AMVP 후보 목록이라고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 구현예는, 상기 후보 목록이 병합 후보 목록이라고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 구현예는, 상기 프로세서가 추가적으로, 상기 후보 목록으로부터 최종 후보 MV를 선택하고; 인코딩된 비디오에서 상기 최종 후보 MV를 시그널링하도록 구성된다고 규정한다.
본 개시의 다른 양태에 따르면, 방법이 제공된다. 상기 방법은, 비디오 프레임의 현재 블록을 획득하는 단계; 상기 비디오 프레임의 인접 블록에 대응하는 후보 MV를 획득하는 단계 - 상기 인접 블록은 상기 현재 블록과 이웃하고 있음 -; 상기 후보 MV의 정밀도를 획득하는 단계; 반올림 방식에 기초하여 상기 정밀도의 제1 반올림을 수행하는 단계; 상기 제1 반올림에 기초하여 상기 후보 MV의 제2 반올림을 수행하는 단계; 상기 후보 MV의 가지치기를 수행하는 단계; 및 상기 제2 반올림과 상기 가지치기에 기초하여 후보 목록을 생성하는 단계를 포함한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 인접 블록이 제1 인접 블록과 제2 인접 블록을 포함한다고 규정한다. 여기서, 상기 정밀도는 상기 제1 인접 블록의 제1 정밀도와 상기 제2 인접 블록의 제2 정밀도를 포함하고, 상기 반올림 방식이 상기 제1 정밀도를 상기 현재 블록의 목표 정밀도로 반올림하는 것; 및 상기 제2 정밀도를 상기 목표 정밀도로 반올림하는 것을 포함한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 방법이 상기 후보 목록으로부터 최종 후보 MV를 선택하는 단계; 인코딩된 비디오에서 상기 최종 후보 MV를 시그널링하는 단계; 및 상기 인코딩된 비디오를 전송하는 단계를 더 포함한다고 규정한다.
본 개시의 또 다른 양태에 따르면, 장치가 제공된다. 상기 장치는, 상기 인코딩된 비디오의 일부에 대한 헤더를 포함하는 인코딩된 비디오를 수신하도록 구성된 수신기 - 상기 헤더는 코딩 모드의 모든 MV에 대한 정밀도를 상기 인코딩된 비디오의 일부에 포함하고 있음 -; 상기 수신기에 연결되고, 상기 정밀도에 기초하여 디코딩된 비디오를 얻기 위해 상기 인코딩된 비디오를 디코딩하도록 구성된 프로세서; 및 상기 프로세서에 연결되고, 상기 디코딩된 비디오를 표시하도록 구성된 디스플레이를 포함한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 인코딩된 비디오의 일부가 슬라이스(slice), 또는 영역, 또는 코딩 트리 유닛(coding tree unit, CTU), 또는 타일(tile)이라고 규정한다.
선택적으로, 전술한 양태 중 어느 하나의 양태에서, 상기 양태의 또 다른 실시 형태는, 상기 정밀도가 1/4 화소(quarter-pel) 정밀도, 또는 1/2 화소(half-pel) 정밀도, 또는 정수 화소(integer-pel) 정밀도, 또는 4 화소(four-pel) 정밀도라고 규정한다.
이러한 실시예 중 어떤 실시예도 다른 실시예와 결합하여 새로운 실시예를 생성할 수 있다. 이러한 특징과 다른 특징이 첨부 도면 및 청구 범위와 함께 채택된 이하의 상세한 설명으로부터 더 명확하게 이해될 것이다.
본 개시를 더 완전하게 이해하기 위해, 첨부 도면 및 상세한 설명과 함께 채택된 이하의 간략한 설명을 참조하고, 동일한 참조 번호는 유사한 부분을 나타낸다.
도 1은 코딩 시스템을 개략적으로 나타낸 도면이다.
도 2는 비디오 프레임의 일부를 나타낸 도면이다.
도 3은 본 개시의 일 실시예에 따른 후보 목록 생성 방법을 나타낸 순서도이다.
도 4는 본 개시의 일 실시예에 따른 장치를 개략적으로 나타낸 도면이다.
본 개시의 보다 완전한 이해를 위해, 이제 첨부 도면 및 상세한 설명과 관련하여 다음의 간략한 설명을 참조하며, 동일한 참조 번호는 유사한 부분을 나타낸다.
도 1은 코딩 시스템을 개략적으로 나타낸 도면이다.
도 2는 비디오 프레임의 일부를 나타낸 도면이다.
도 3은 본 개시의 일 실시예에 따른 후보 목록 생성 방법을 나타낸 순서도이다.
도 4는 본 개시의 일 실시예에 따른 장치를 개략적으로 나타낸 도면이다.
이하에서는 하나 이상의 실시예의 예시적인 실시 형태가 제공되지만, 개시된 시스템 및/또는 방법이 현재 알려져 있거나 또는 존재하는지 여부에 관계없이 어떠한 개수의 기술을 사용하여 구현될 수 있다는 것을 처음부터 이해해야 한다. 본 개시는 본 명세서에 예시되고 설명되는 예시적인 설계와 실시 형태를 포함하여 아래에 예시되는 예시적인 실시 형태, 도면, 및 기술에 한정되지 말아야 하고, 그 등가물의 전체 범위와 함께 첨부된 청구항의 범위 안에서 수정될 수 있다.
다음의 약어와 두문자어(initialism)가 적용된다.
AMVP: 고급 움직임 벡터 예측(advanced motion vector prediction)
ASIC: 주문형 반도체(application-specific integrated circuit)
CPU: 중앙처리장치(central processing unit)
CTU: 코딩 트리 유닛(coding tree unit)
DSP: 디지털 신호 처리 장치(digital signal processor)
EO: 전기-광(electrical-to-optical)
FPGA: 필드 프로그래머블 게이트 어레이(field-programmable gate array)
ITU: 국제전기통신연합(International Telecommunication Union)
ITU-T: ITU 전기통신 표준화부문(ITU Telecommunication Standardization Sector)
LCD: 액정 표시 장치(liquid crystal display)
MV: 움직임 벡터(motion vector)
OE: 광-전(optical-to-electrical)
PPS: 픽처 파라미터 세트(picture parameter set)
RAM: 랜덤 액세스 메모리(random-access memory)
RF: 무선 주파수(radio frequency)
ROM: 읽기 전용 메모리(read-only memory)
RX: 수신기 유닛(receiver unit)
SPS: 시퀀스 파라미터 세트(sequence parameter set)
SRAM: 정적 RAM(static RAM)
TCAM: 터너리 내용 주소화 메모리(ternary content-addressable memory)
TX: 송신기 유닛(transmitter unit)
도 1은 코딩 시스템(100)을 개략적으로 나타낸 도면이다. 코딩 시스템(100)은 소스 장치(110), 매체(150), 및 목적지 장치(160)를 포함한다. 소스 장치(110)와 목적지 장치(160)는 휴대폰, 또는 태블릿 컴퓨터, 또는 데스크탑 컴퓨터, 또는 노트북 컴퓨터, 또는 다른 적합한 장치이다. 매체(150)는 로컬 네트워크, 또는 무선 네트워크, 또는 인터넷, 또는 다른 적합한 매체이다.
소스 장치(110)는 비디오 생성부(120), 인코더(130), 및 출력 인터페이스(140)를 포함한다. 비디오 생성부(120)는 비디오를 생성하기에 적합한 카메라 또는 다른 장치이다. 인코더(130)를 코덱이라고도 할 수 있다. 인코더(130)는 규칙의 집합, 예를 들어 "High Efficiency Video Coding(ITU-T H.265, December 2016 ("H.265"))"에 설명된 바와 같이 규칙의 집합에 따라 인코딩을 수행하며, 그 전체 내용이 원용에 의해 포함된다. 출력 인터페이스(140)는 목적지 장치(160)에 데이터를 전송하기에 적합한 안테나 또는 다른 컴포넌트이다. 대안적으로, 비디오 생성부(120), 인코더(130), 및 출력 인터페이스(140)는 장치들의 임의의 적절한 조합이다.
목적지 장치(160)는 입력 인터페이스(170), 디코더(180), 및 디스플레이(190)를 포함한다. 입력 인터페이스(170)는 소스 장치(110)로부터 데이터를 수신하기에 적합한 안테나 또는 다른 컴포넌트이다. 디코더(180)를 코덱이라고도 할 수 있다. 디코더(180)는 H.265에서 설명된 바와 같이 규칙의 집합에 따라 디코딩을 수행한다. 디스플레이(190)는 비디오를 표시하기에 적합한 LCD 스크린 또는 다른 컴포넌트이다. 대안적으로, 입력 인터페이스(170), 디코더(180), 및 디스플레이(190)는 장치들의 임의의 적절한 조합이다.
동작시, 소스 장치(110)에서, 비디오 생성부(120)는 비디오를 캡처하고, 인코더(130)는 비디오를 인코딩하여 인코딩된 비디오를 생성하며, 출력 인터페이스(140)는 인코딩된 비디오를 매체(150)를 통해 그리고 목적지 장치(160) 쪽으로 전송한다. 소스 장치(110)는 로컬에 비디오 또는 인코딩된 비디오를 저장할 수 있거나, 또는 소스 장치(110)는 비디오 또는 인코딩된 비디오를 다른 장치에 저장하도록 지시할 수 있다. 인코딩된 비디오는 다양한 레벨에서 정의된 데이터, 슬라이스(slice)와 블록을 포함하는 데이터를 포함한다. 상기 슬라이스는, 인코더(130)가 비디오 프레임 내의 어느 다른 영역과는 별도로 인코딩하는, 비디오 프레임의 공간적으로 구별되는 영역이다. 상기 블록은 사각형, 예를 들어 8 화소 × 8 화소의 정사각형으로 배열된 화소 그룹이다. 상기 블록을 유닛 또는 코딩 유닛이라고도 할 수 있다. 다른 레벨은 영역, CTU, 및 타일(tile)을 포함한다. 목적지 장치(160)에서, 입력 인터페이스(170)는 인코딩된 비디오를 소스 장치(110)로부터 수신하고, 디코더(180)는 인코딩된 비디오를 인코딩하여 디코딩된 비디오를 얻으며, 디스플레이(190)는 디코딩된 비디오를 표시한다. 디코더(180)는 인코더(130)가 비디오를 인코딩하는 방법과 비교할 때 인코딩된 비디오를 반대 방식으로 디코딩할 수 있다. 목적지 장치(160)는 인코딩된 비디오 또는 디코딩된 비디오를 로컬에 저장하거나, 또는 목적지 장치(160)는 인코딩된 비디오 또는 디코딩된 비디오를 다른 장치에 저장하도록 지시한다.
인코딩과 디코딩을 함께 코딩이라고 한다. 코딩은 인트라 코딩(intra coding)과 인터 코(inter coding)딩을 포함하며, 이들을 각각 인트라 예측과 인터 예측이라고 할 수 있다. 인트라 예측은 비디오 프레임 내의 공간 중복성을 감소시키기 위해 공간 예측을 구현한다. 인터 예측은 연속적인 비디오 프레임 사이의 시간적 중복성을 감소시키기 위해 시간적 예측을 구현한다.
도 2는 비디오 프레임의 일부(200)를 나타낸 도면이다. 비디오 프레임의 일부(200)는 현재 블록(210)과, 인접 블록(neighboring block) A0(220), 인접 블록 A1(230), 인접 블록 B2(240), 인접 블록 B1(250), 및 인접 블록 B0(260)을 포함한다. 인코더(130)가 현재 블록을 현재 인코딩하고 있으므로, 현재 블록(210)을 현재 블록이라고 한다. 인접 블록(220-260)은 현재 블록(210)과 이웃하고 있으므로 인접 블록이라고 한다. 인접 블록 A0(220)은 좌측 하단 모서리 위치에 있고, 인접 블록 A1(230)은 좌측 하단 위치에 있으며, 인접 블록 B2(240)는 좌측 상단 모서리 위치에 있고, 인접 블록 B1(250)은 우측 상단 위치에 있으며, 이웃 블록 B0(260)은 우측 상단 모서리 위치에 있다. 인터 예측에서, 인코더(130)는 인접 블록(220-260)의 MV에 기초하여 현재 블록(210)의 MV를 결정한다. 인코더(130)가 현재 블록(210)을 인코딩할 때, 인접 블록(220-260)의 MV는 이미 알려져 있다.
AMVP 및 병합은 인코더(130)가 현재 블록(210)의 MV를 결정하는 데 사용할 수 있는 2개의 코딩 모드이다. AMVP에서, 인코더(130)는 인접 블록(220-260)을 순차적으로, 즉 A0(220), A1(230), A0(220)의 스케일링된 버전, A1(230)의 스케일링된 버전, B0(260), B1(250), B2(240), B0(260)의 스케일링된 버전, B1(250)의 스케일링된 버전, B2(240)의 스케일링된 버전, 우측 하단에 함께 배치된 시간적 후보, 중앙에 함께 배치된 시간적 후보, 및 제로 MV의 순서로 순차적으로 스캐닝하여 MV 후보 목록을 결정한다. 후보 목록 중에서, 인코더(130)는 최상의 후보를 선택하고, 신호로 목적지 장치(160)에 최상의 후보를 지시한다. 병합에서, 인코더(130)는 인접 블록을 순차적으로, 즉 A1(230), B1(250), B0(260), A0(220), B2(240), 우측 하단에 함께 배치된 시간적 후보, 중앙에 함께 배치된 시간적 후보, 및 제로 MV의 순서로 순차적으로 스캐닝하여 MV의 후보 목록을 결정한다. 후보 목록 중에서, 인코더(130)는 최상의 후보를 선택하고, 신호로 목적지 장치(160)에 최상의 후보를 지시한다. AMVP 및 병합은 인접 블록(220-260)을 스캐닝하지만, 다른 코딩 모드는 도시되지 않은 다른 인접 블록을 스캐닝할 수 있다.
AMVP와 병합은 모두 MV의 정밀도를 정의한다. 정밀도는 MV를 정의하는 승수(multiplier) 역할을 하는 화소들 간의 거리를 나타낸다. 정밀도의 관점에서, 화소를 펠(pel)이라고도 할 수 있다. 따라서, 정밀도는 1/4 화소(quarter-pel) 정밀도, 1/2 화소(half-pel precision) 정밀도, 정수 화소(integer-pel) 정밀도, 및 4 화소(four-pel) 정밀도를 포함한다. MV가 0.25, 0.5, 0.75, 1.0, 및 1.25 등일 수 있도록, 1/4 픽셀 정밀도가 화소들 간의 거리의 1/4의 관점에서 MV를 정의한다. 인코더(130)는 정밀도를 슬라이스 헤더 내의 플래그로서 인코딩한다. 슬라이스 헤더는 슬라이스 신호의 시작 부분에 있는 헤더로, 전체 슬라이스에 적용 가능한 데이터를 나타내는 헤더이다. 대안적으로, 인코더(130)는 정밀도를 블록 헤더 내의 플래그 또는 다른 데이터로서 인코딩한다.
AMVP와 병합은 모두 후보 목록에 적합한 후보를 결정하기 위한 규칙을 정의한다. 예를 들어, 2개의 후보 MV가 동일하면, 인코더(130)는 이러한 후보 MV 중 하나를 제거한다. 인코더(130)는 후보 목록이 최대 개수의 허용된 후보로 채워질 때까지 이러한 규칙을 계속 적용한다. 후보 MV가 동일한 정밀도를 가지고 있는 경우, 이러한 규칙이 잘 정의되어 있다. 하지만, 상이한 정밀도를 갖는 후보 MV에 대한 코딩 효율적 규칙을 제공하는 것이 바람직하다.
본 명세서에서는 MV 정밀도의 선택과 시그널링을 위한 실시예가 개시된다. 본 실시예는 상이한 정밀도를 갖는 MV를 획득하고, 이러한 정밀도를 균일한 방식으로 반올림하며, MV를 반올림하고, 후보 목록을 생성하는 것을 허용한다. 본 실시예는 슬라이스, 영역, CTU, 또는 타일 레벨에서 시그널링 정밀도를 추가로 제공한다. 본 실시예는 AMVP, 병합, 및 다른 적합한 코딩 모드에 적용된다.
AMVP 후보 목록 생성
AMVP 후보 목록 생성의 제1 실시예에서, 인코더(130)는 3개의 정밀도, 즉 제1 인접 블록(220-260)의 제1 정밀도, 제2 인접 블록(220-260)의 제2 정밀도, 및 현재 블록(210)의 제3 정밀도를 고려한다. 예를 들면, 인코더(130)는 인접 블록(220), 인접 블록(230), 및 현재 블록(210)의 정밀도를 고려한다. 제3 정밀도는 인코딩의 목표인 현재 블록(210)과 연관되어 있으므로, 목표 정밀도라고 할 수 있다. 3개의 정밀도를 이용하여, 인코더(130)는 다음의 의사 코드(pseudo code)를 실행한다.
i = 0
if(availableFlagLXA) {
mvpListLX[ i++] = mvLXA
if(availableFlagLXB && (
RoundMvPrecisionToTarget(mvLXA)
RoundMvPrecisionToTarget(mvLXB)
mvLXA! = mvLXB)))
mvpListLX[ i++ ] = mvLXB
} else if(availableFlagLXB)
mvpListLX[i++] = mvLXB
if( i < 2 && availableFlagLXCol)
mvpListLX[ i++] = mvLXCol
while( i < 2 ) {
mvpListLX[i][0] = 0
mvpListLX[i][1] = 0
i++
}
의사 코드는, 목표 정밀도가 최고 정밀도를 사용하면 인코더(130)가 제1 정밀도와 제2 정밀도를 목표 정밀도로 잘라 올리는(round up) 규칙을 구현한다. 목표 정밀도가 최저 정밀도를 사용하면, 인코더(130)는 제1 정밀도와 제2 정밀도를 목표 정밀도로 잘라 버린(round down)다. 그렇지 않으면, 인코더(130)는 제1 정밀도 또는 제2 정밀도(어느 것이 더 작든지) 중 하나를 목표 정밀도로 잘라 올리고, 인코더(130)는 제1 정밀도 또는 제2 정밀도(어느 것이 더 크든지) 중 하나를 목표 정밀도로 잘라 버린다. 더 낮다는 것은 수치적으로 낮다는 것을 의미하고, 더 높다는 것은 수치적으로 높다는 것을 의미한다. 따라서 0.25의 1/4 화소 정밀도가 1.0의 정수 화소 정밀도보다 낮다.
정밀도를 반올림한 후에, 인코더(130)는 이러한 정밀도에 기초하여 후보 MV를 잘라 올리거나 또는 잘라 버린다. 예를 들어, 후보 MV가 1.25이고 0.25의 고유 정밀도(native precision)를 가지고 있으면, 그리고 목표 정밀도가 0.5이면, 인코더(130)는 후보 MV를 1.5로 잘라 올린다. 고유 정밀도는 인코더(130)가 의사 코드에 따라 정밀도를 잘라 올리거나 또는 잘라 버리기 이전의 MV의 정밀도이다. 최종적으로, 각각의 후보 MV에 대해, 인코더(130)는 동일한 후보 MV 또는 약간 동일한 후보 MV가 이미 후보 목록에 있는지 여부를 판정한다. 후보 목록에 있지 않으면, 인코더(130)는 후보 목록에 후보 MV를 추가한다. 후보 목록에 있으면, 인코더(130)는 후보 MV를 폐기한다. 약간 동일하다는 것은 사전 정의된 임계값 내에서 동일하다는 것을 의미한다.
제1 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 최저 정밀도를 결정하고, 그런 다음 제1 정밀도, 또는 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 최저 정밀도로 잘라 버릴 수 있도록, RoundMvPrecisionToLow()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 제2 대안에서, 인코더(130)가 제1 정밀도와 제2 정밀도 중에서 최저 정밀도를 결정하고, 그런 다음 제1 정밀도 또는 제2 정밀도 중 하나를 최저 정밀도로 잘라 버릴 수 있도록, RoundMvPrecisionToLow()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 제3 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 최고 정밀도를 결정하고, 그런 다음 제1 정밀도, 또는 제2 정밀도, 또는 제1 정밀도와 제2 정밀도(어느 것이 남든지)를 모두 최고 정밀도로 잘라 올릴 수 있도록, RoundMvPrecisionToHigh()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 제4 대안에서, 인코더(130)가 제1 정밀도와 제2 정밀도 중에서 최고 정밀도를 결정하고, 그런 다음 제1 정밀도 또는 제2 정밀도(어느 것이 남든지)를 최고 정밀도로 잘라 올릴 수 있도록, RoundMvPrecisionToHigh()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다.
제5 대안에서, 인코더(130)가 제1 정밀도와 제2 정밀도를 디폴트 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, RoundMvPrecisionToDefault()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 인코더(130)는 먼저 다른 장치로부터의 신호에서 디폴트 정밀도를 수신할 수 있다. 제6 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 중간 정밀도를 결정하고, 그런 다음 제1 정밀도, 또는 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 중간 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, RoundMvPrecisionToMedian()이 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 인코더(130)가 짝수의 정밀도를 고려하면, 중간 정밀도는 2개의 중간 정밀도의 평균일 수 있다.
AMVP 후보리스트 생성의 제2 실시예에서, 인코더(130)는 현재 블록(210)의 목표 정밀도를 고려한다. 목표 정밀도를 이용하여, 인코더(130)는 다음의 의사 코드를 실행한다.
i = 0
if(availableFlagLXA) {
mvpListLX[i++] = mvLXA
if(availableFlagLXB && (mvLXA != mvLXB))
mvpListLX[i++] = mvLXB
} else if(availableFlagLXB)
mvpListLX[i++] = mvLXB
if(i < 2 && availableFlagLXCol)
mvpListLX[i++] = mvLXCol
if(i == 2)
if(diffMotion(mvLXM, mvLXN))
i--
while(i < 2) {
mvpListLX[i][0] = 0
mvpListLX i][1] = 0
i++
}
이 의사 코드에서, diffMotion() 내의 mvLXM과 mvLXN이 mvLXA, 또는 mvLXB, 또는 mvLXCol일 수 있다.
이 의사 코드는, diffMotion()에 대한 규칙, 즉 각각의 후보 MV에 대해, 인코더(130)가 동일한 후보 MV 또는 약간 동일한 후보 MV가 이미 후보 목록에 있는지 여부를 판정하는 규칙을 구현한다. 후보 목록에 있지 않으면, 인코더는 후보 목록에 후보 MV를 추가한다. 후보 목록에 있으면, 인코더(130)는 후보 MV를 폐기한다. 따라서, 인코더(130)는 후보 MV의 고유 정밀도로 후보 MV를 고려한다.
동일한 후보 MV 또는 약간 동일한 후보 MV를 제거한 후에, 목표 정밀도가 최고 정밀도를 사용하면, 인코더(130)는 후보 정밀도를 목표 정밀도로 잘라 올린다. 후보 정밀도는 인접 블록(220-260)의 정밀도이다. 목표 정밀도가 최저 정밀도를 사용하면, 인코더(130)는 후보 정밀도를 목표 정밀도로 잘라 버린다. 그렇지 않으면, 인코더(130)는 더 낮은 후보 정밀도를 목표 정밀도로 잘라 올리고, 인코더(130)는 더 높은 후보 정밀도를 목표 정밀도로 잘라 버린다.
정밀도를 반올림한 후에, 인코더(130)는 이러한 정밀도에 기초하여 후보 MV를 잘라 올리거나 또는 잘라 버린다. 각각의 후보 MV에 대해, 인코더(130)는 동일한 후보 MV 또는 약간 동일한 후보 MV가 이미 후보 목록에 있는지 여부를 판정한다. 후보 목록에 있지 않으면, 인코더(130)는 후보 목록에 있는 후보 MV를 유지한다. 후보 목록에 있으면, 인코더(130)는 후보 목록으로부터 후보 MV를 폐기한다. diffMotion()이 1을 반환하면, 2개의 후보 MV가 동일하지 않거나 또는 약간 동일하지 않다. diffMotion()이 0을 반환하면, 2개의 후보 MV가 동일하거나 또는 약간 동일하다. 최종적으로, 후보리스트가 가득 채워지지 않으면, 인코더(130)는 0 값의 후보 MV를 삽입하여 유실된 스폿(spot)을 채운다. 예를 들어, 후보 목록이 10개의 MV를 가지고 있어야 하지만 8개의 MV만이 후보 목록에 남아 있으면, 인코더는 값이 0인 2개의 MV를 삽입한다.
제1 대안에서, 인코더(130)가 제1 인접 블록(220-260)의 제1 정밀도, 제2 인접 블록(220-260)의 제2 정밀도, 및 목표 정밀도 중에서 최저 정밀도를 결정하고, 그런 다음 나머지 모든 후보 정밀도를 최저 정밀도로 잘라 버릴 수 있도록, diffMotion()이 작용한다. 제2 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 최고 정밀도를 결정하고, 그런 다음 나머지 모든 후보 정밀도를 최고 정밀도로 잘라 올릴 수 있도록, diffMotion( )이 작용한다. 제3 대안에서, 인코더(130)가 후보 정밀도를 기본 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, diffMotion()이 작용한다. 인코더(130)는 다른 장치로부터의 신호에서 디폴트 정밀도를 먼저 수신할 수 있다. 제4 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 중간 정밀도를 결정하고, 그런 다음 제1 정밀도, 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 중간 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, diffMotion()이 작용한다. 인코더(130)가 짝수의 정밀도를 고려하면, 중간 정밀도는 2개의 중간 정밀도의 평균일 수 있다.
전술한 실시예에서, 인코더(130)는 AMVP 후보리스트를 생성한 후에 최종 후보 MV를 선택할 수 있다. 인코더(130)는 알려진 다양한 기준에 기초하여 최종 후보 MV를 선택할 수 있다. 인코더(130)가 최종 후보 MV를 선택하면, 인코더(130)는 인코딩된 비디오에서 최종 후보 MV를 시그널링할 수 있다. 인코더(130)는 제1 정밀도와 제2 정밀도를 비교하는 대신 모든 후보 정밀도를 비교할 수 있다.
병합 후보 목록 생성
병합 후보 목록 생성의 제1 실시예에서, 인코더(130)는 3개의 정밀도, 즉 제1 인접 블록(220-260)의 제1 정밀도, 제2 인접 블록(220-260)의 제2 정밀도, 및 현재 블록(210)의 목표 정밀도를 고려한다. 병합 후보 목록 생성의 제1 실시예는 AMVP 후보 목록 생성의 제1 실시예와 유사하다. 3개의 정밀도를 이용하여, 인코더(130)는 다음의 의사 코드를 실행한다.
i = 0
if(availableFlagA1)
mergeCandList[i++] = RoundMvPrecisionToTarget(A1)
if(availableFlagB1 && diffMotions(RoundMvPrecisionToTarget(B1)))
mergeCandList[i++] = B1
if(availableFlagB0 && diffMotions(RoundMvPrecisionToTarget(B0)))
mergeCandList[i++] = B0
if(availableFlagA0 && diffMotions(RoundMvPrecisionToTarget(A0)))
mergeCandList[i++] = A0
if(availableFlagB2 && diffMotions(RoundMvPrecisionToTarget(B2)))
mergeCandList[i++] = B2
if(availableFlagCol)
mergeCandList[i++] = diffMotions(RoundMvPrecisionToTarget(Col)))
이 의사 코드는 diffMotions()에 대한 규칙, 즉 목표 정밀도가 최고 정밀도를 사용하면, 인코더(130)가 제1 정밀도와 제2 정밀도를 목표 정밀도로 잘라 올리는 규칙을 구현한다. 목표 정밀도가 최저 정밀도를 사용하면, 인코더(130)는 제1 정밀도와 제2 정밀도를 목표 정밀도로 잘라 버린다. 그렇지 않으면, 인코더(130)는 제1 정밀도 또는 제2 정밀도(어느 것이 작든)를 목표 정밀도로 잘라 올리고, 인코더(130)가 제1 정밀도 또는 제2 정밀도(어느 것이 크든)를 목표 정밀도로 잘라 버린다.
정밀도를 반올림한 후에, 인코더(130)가 이러한 정밀도에 기초하여 후보 MV를 잘라 올리거나 또는 잘라 버린다. 최종적으로, 각각의 후보 MV에 대해, 인코더(130)는 동일한 후보 MV 또는 약간 동일한 후보 MV가 이미 후보 목록에 있는지 여부를 판정한다. 후보 목록에 있지 않으면, 인코더(130)는 후보 목록에 후보 MV를 추가한다. 후보 목록에 있으면, 인코더(130)는 후보 MV를 폐기한다. diffMotion()이 1을 반환하면, 2개의 후보 MV는 동일하지 않거나 또는 약간 동일하지 않다. diffMotion()이 0을 반환하면, 2개의 후보 MV는 동일하거나 또는 약간 동일하다.
제1 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 최저 정밀도를 결정하고, 그런 다음 제1 정밀도, 또는 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 최저 정밀도로 잘라 버릴 수 있도록, RoundMvPrecisionToLow()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 제2 대안에서, 인코더(130)가 제1 정밀도와 제2 정밀도 중에서 최저 정밀도를 결정하고, 그런 다음 제1 정밀도 또는 제2 정밀도 중 하나를 최저 정밀도로 잘라 버릴 수 있도록, RoundMvPrecisionToLow()가 의사 코드 내의 RoundMvPrecisionToTarget()를 대체한다. 제3 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 최고 정밀도를 결정하고, 그런 다음 제1 정밀도, 또는 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 최고 정밀도로 잘라 올릴 수 있도록, RoundMvPrecisionToHigh( )가 의사 코드 내의 RoundMvPrecisionToTarget( )를 대체한다. 제4 대안에서, 인코더(130)가 제1 정밀도와 제2 정밀도 중에서 최고 정밀도를 결정하고, 그런 다음 제1 정밀도 또는 제2 정밀도 중 하나(어느 것이 남든지)를 최고 정밀도로 잘라 올릴 수 있도록, RoundMvPrecisionToHigh( )가 의사 코드 내의 RoundMvPrecisionToTarget( )를 대체한다.
제5 대안에서, 인코더(130)가 제1 정밀도와 제2 정밀도를 디폴트 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, RoundMvPrecisionToDefault( )가 의사 코드 내의 PrelcisionToTarget( )를 대체한다. 인코더(130)는 다른 장치로부터의 신호에서 디폴트 정밀도를 먼저 수신할 수 있다. 제6 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 중간 정밀도를 결정하고, 그런 다음 제1 정밀도, 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 중간 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, RoundMvPrecisionToMedian( )이 의사 코드 내의 RoundMvPrecisionToTarget( )를 대체한다. 인코더(130)가 짝수의 정밀도를 고려하면, 중간 정밀도는 2개의 중간 정밀도의 평균일 수 있다.
병합 후보 목록 생성의 제2 실시예에서, 인코더(130)가 현재 블록(210)의 목표 정밀도를 고려한다. 병합 후보 목록 생성의 제2 실시예는 AMVP 후보 목록 생성의 제2 실시예와 유사하다. 목표 정밀도를 이용하여, 인코더(130)는 다음의 의사 코드를 실행한다.
i = 0
if(availableFlagA1)
mergeCandList[i++] = A1
if(availableFlagB1)
mergeCandList[i++] = B1
if(availableFlagB0)
mergeCandList[i++] = B0
if(availableFlagA0)
mergeCandList[i++] = A0
if(availableFlagB2)
mergeCandList[i++] = B2
PruneList( );
if(availableFlagCol && i < max_num_candidates)
mergeCandList[i++] = Col
이 의사 코드는 PruneList()에 대한 규칙, 즉 목표 정밀도가 최고 정밀도를 사용하면 인코더(130)가 후보 정밀도를 목표 정밀도로 잘라 올리는 규칙을 구현한다. 후보 정밀도는 인접 블록(220-260)의 정밀도이다. 목표 정밀도가 최저 정밀도를 사용하면, 인코더(130)는 후보 정밀도를 목표 정밀도로 잘라 버린다. 그렇지 않으면, 인코더(130)는 더 낮은 후보 정밀도를 목표 정밀도로 잘라 올리고, 인코더(130)는 더 높은 후보 정밀도를 목표 정밀도로 잘라 버린다.
정밀도를 반올림한 후에, 인코더(130)는 이러한 정밀도에 기초하여 후보 MV를 잘라 올리거나 또는 잘라 버린다. 각각의 후보 MV에 대해, 인코더(130)는 동일한 후보 MV 또는 약간 동일한 후보 MV가 이미 후보 목록에 있는지 여부를 판정한다. 후보 목록에 있으면, 인코더(130)는 후보 MV를 폐기하고, i를 1만큼 감소시킨다. 최종적으로, 후보리스트가 가득 채워지지 않으면, 인코더(130)는 0 값의 후보 MV를 삽입하여 유실된 스폿을 채운다. 예를 들어, 후보 목록이 10개의 MV를 가지고 있어야 하지만 8개의 MV만이 후보 목록에 남아 있으면, 인코더(130)는 값이 0인 2개의 MV를 삽입한다.
제1 대안에서, 인코더(130)가 제1 인접 블록(220-260)의 제1 정밀도, 제2 인접 블록(220-260)의 제2 정밀도, 및 목표 정밀도 중에서 최저 정밀도를 결정하고, 그런 다음 나머지 모든 후보 정밀도를 최저 정밀도로 잘라 버릴 수 있도록, PruneList( )가 작용한다. 제2 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 최고 정밀도를 결정하고, 그런 다음 나머지 모든 후보 정밀도를 최고 정밀도로 잘라 올릴 수 있도록, PruneList( )가 작용한다. 제3 대안에서, 인코더(130)가 후보 정밀도를 디폴트 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, PruneList( )가 작용한다. 인코더(130)는 다른 장치로부터의 신호에서 디폴트 정밀도를 먼저 수신할 수 있다. 제4 대안에서, 인코더(130)가 제1 정밀도, 제2 정밀도, 및 목표 정밀도 중에서 중간 정밀도를 결정하고, 그런 다음 제1 정밀도, 제2 정밀도, 또는 제1 정밀도와 제2 정밀도 모두를 중간 정밀도로 잘라 올리거나 또는 잘라 버릴 수 있도록, PruneList( )가 작용한다. 인코더(130)가 짝수의 정밀도를 고려하면, 중간 정밀도는 2개의 중간 정밀도의 평균일 수 있다.
병합 후보 목록 생성의 제3 실시예에서, 인코더(130)는 현재 블록(210)의 목표 정밀도를 고려한다. 병합 후보 목록 생성의 제3 실시예는 병합 후보 목록 생성의 제2 실시예와 유사하다. 하지만, 동일한 후보 MV 또는 약간 동일한 후보 MV에 대한 후보 목록을 검사하기 전에 PruneList ()를 실행하는 병합 후보 목록 생성의 제2 실시예와는 달리, 병합 후보리스트 생성의 제3 실시예는 후보 후보 목록을 검사한 후에 PruneList ()를 실행한다. 목표 정밀도를 이용하여, 인코더(130)는 다음의 의사 코드를 실행한다.
i = 0
if(availableFlagA1)
mergeCandList[i++] = A1
if(availableFlagB1)
mergeCandList[i++] = B1
if(availableFlagB0)
mergeCandList[i++] = B0
if(availableFlagA0)
mergeCandList[i++] = A0
if(availableFlagB2)
mergeCandList[i++] = B2
if(availableFlagCol)
mergeCandList[i++] = Col
PruneList( )
전술한 실시예에서, 병합 후보 목록를 생성한 후에, 인코더(130)는 최종 후보 MV를 선택할 수 있다. 인코더(130)는 알려져 있는 다양한 기준에 기초하여 최종 후보 MV를 선택할 수 있다. 일단 인코더(130)가 최종 후보 MV를 선택하면, 인코더(130)는 인코딩된 비디오에서 최종 후보 MV를 시그널링할 수 있다.
정밀도 시그널링
정밀도 시그널링의 제1 실시예에서, 인코더(130)는 슬라이스 헤더 내의 MV에 대한 정밀도를 다음과 같이 인코딩한다.
slice_segment_header( ) {
coding_mode_idx
mv_precision[ coding_mode_idx ]
}
표시된 바와 같이, 슬라이스 헤더는 AMVP 또는 병합일 수 있는 단일 코딩 모드에 대한 모든 MV의 정밀도를 나타낸다.
정밀도 시그널링의 제2 실시예에서, 인코더(130)는 슬라이스 헤더 내의 MV에 대한 정밀도를 다음과 같이 인코딩한다.
slice_segment_header( ) {
num_coding_mode
for(i = 0; i < num_coding_mode; i++) {
coding_mode_idx
mv_precision_used_by_coding_mode[coding_mode_idx]
}
}
표시된 바와 같이, 슬라이스 헤더는 AMVP 및 병합을 포함할 수 있는 복수의 코딩 모드에 대한 모든 MV의 정밀도를 나타낸다.
정밀도 시그널링의 제3 실시예에서, 인코더(130)는 슬라이스 헤더 내의 MV에 대한 정밀도를 다음과 같이 인코딩한다.
slice_segment_header( ) {
if( motion_vector_resolution_control_idc = = 3 ) {
num_mv_precision
for( i = 0; i < num_mv_precision; i++ ) {
mv_precision_idx[i]
}
}
}
표시된 바와 같이, 슬라이스 헤더는 AMVP 및 병합을 포함할 수 있는 복수의 코딩 모드에 대한 모든 MV의 정밀도를 나타낸다. 시그널링의 제3 실시예는 시그널링의 제2 실시예와 유사하지만, 다른 구문을 사용한다.
정밀도 시그널링의 제4 실시예에서, 인코더(130)는 코딩 유닛 헤더 내의 MV에 대한 정밀도를 다음과 같이 인코딩한다.
coding_unit( x0, y0, log2CbSize ) {
if( motion_vector_resolution_control_idc = = 3 ) {
mv_precision_idx_used_by_coding_mode
}
}
표시된 바와 같이, 코딩 유닛 헤더는 AMVP 또는 병합일 수 있는 단일 코딩 모드에 대한 모든 MV의 정밀도를 나타낸다.
정밀도 시그널링의 제5 실시예에서, 인코더(130)는 코딩 유닛 헤더 내의 MV에 대한 정밀도를 다음과 같이 인코딩한다.
coding_unit( x0, y0, log2CbSize ) {
if(motion_vector_resolution_control_idc = = 3) {
num_coding_mode
for(i = 0; i < num_coding_mode; i++) {
coding_mode_idx
mv_precision_idx_used_by_coding_mode[coding_mode_idx]
}
}
}
표시된 바와 같이, 코딩 유닛 헤더는 AMVP 및 병합을 포함할 수 있는 복수의 코딩 모드에 대한 모든 MV의 정밀도를 나타낸다.
정밀도 시그널링의 제6 실시예에서, 인코더(130)는 {mvr1, mvr2, … , mvrN}과 같은 형태로 SPS 내의 모든 허용된 정밀도를 인코딩한다. 각각의 슬라이스 헤더에 대해, 인코더(130)는 또한 대응하는 슬라이스 내의 모든 블록에 적용할 정밀도 중 하나를 나타내는 슬라이스 헤더 인덱스를 인코딩한다. 예를 들어, SPS는 {quarter-pel, integer-pel, four-pel}이고, 슬라이스 헤더 인덱스는 quarter-pel을 나타내는 00, 또는 integer-pel을 나타내는 01, 또는 four-pel을 나타내는 11이다.
정밀도 시그널링의 제7 실시예에서, 인코더(130)는 {mvr1, mvr2, … , mvrN}과 같은 형태로 SPS 내의 모든 허용된 정밀도를 인코딩한다. 각각의 슬라이스 헤더에 대해, 인코더(130)는 또한 이러한 정밀도 중 어느 것이 대응하는 슬라이스 내의 블록에 적용될지를 나타내는 복수의 슬라이스 헤더 인덱스를 인코딩한다. 예를 들어, SPS는 {quarter-pel, integer-pel, four-pel}이고, 슬라이스 헤더 인덱스는 quarter-pel을 나타내는 00, integer-pel을 나타내는 01, 및 four-pel을 나타내는 11의 임의의 조합이다.
정밀도 시그널링의 제8 실시예에서, 인코더(130)는 {mvr1, mvr2, … , mvrN}과 같은 형태로 SPS 내의 모든 허용된 정밀도를 인코딩한다. 각각의 슬라이스 헤더에 대해, 인코더(130)는 또한 대응하는 슬라이스 내의 블록에 적용할 정밀도의 부분집합을 나타내는 슬라이스 헤더 인덱스를 인코딩한다. 예를 들어, SPS는 {quarter-pel, integer-pel, four-pel}이고, 슬라이스 헤더 인덱스는 {quarter-pel, integer-pel}을 나타내는 00, 또는 {quarter-pel, four-pel}을 나타내는 01, 또는 {integer-pel, four-pel}을 나타내는 10이다.
정밀도 시그널링의 제9 실시예에서, 인코더(130)는 {mvr1, mvr2, … , mvrN}과 같은 형태로 SPS에 내의 모든 허용된 정밀도를 인코딩한다. 각각의 슬라이스 헤더에 대해, 인코더(130)는 또한 직접적으로 더 미세하거나 또는 더 조잡한 정밀도뿐만 아니라 대응하는 슬라이스 내의 블록에 적용될 정밀도 중 하나를 인코딩한다. 예를 들어, SPS는 {quarter-pel, integer-pel, four-pel}이고, 슬라이스 헤더 인덱스는 {quarter-pel}을 나타내는 00, 또는 {quarter-pel, integer-pel}을 나타내는 01, 또는 슬라이스 헤더가 더 정밀한 정밀도를 나타내거나 또는 슬라이스 헤더 인덱스가 {quarter-pel, integer-pel}을 나타내는 00인 경우에 {integer-pel, four-pel}을 나타내는 10, 또는 {integer-pel, four-pel}을 나타내는 01, 또는 슬라이스 헤더가 더 조잡한 정밀도를 나타내는 경우에 {four-pel}을 나타내는 10이다.
정밀도 시그널링의 제10 실시예에서, 인코더(130)는 {mvr1, mvr2, … , mvrN}과 같은 형태로 SPS 내의 모든 허용된 정밀도를 인코딩한다. 각각의 슬라이스 헤더에 대해, 인코더(130)는 또한 이러한 정밀도 중 어느 것이 대응하는 슬라이스 내의 블록에 적용될지를 나타내는 슬라이스 헤더 인덱스를 인코딩한다. 각각의 블록 헤더에 대해, 인코더(130)는 또한 대응하는 블록에 적용할 정밀도 중 하나를 나타내는 블록 헤더 인덱스를 인코딩한다. 예를 들면, SPS는 {quarter-pel, integer-pel, four-pel}이고, 0의 제1 슬라이스 헤더 인덱스가 {quarter-pel, integer-pel}을 나타내고, 제1 슬라이스 헤더 내의 0의 제1 블록 헤더 인덱스가 quarter-pel을 나타내며, 제1 슬라이스 헤더 내의 1의 제2 블록 헤더 인덱스가 integer-pel을 나타내고, 1의 제2 슬라이스 헤더 인덱스가 {integer-pel, four-pel}을 나타내며, 제2 슬라이스 헤더 내의 0의 제3 블록 헤더 인덱스가 integer-pel을 나타내고, 제2 슬라이스 헤더 내의 1의 제4 블록 헤더 인덱스가 four-pel을 나타낸다.
전술한 실시예에서, 슬라이스 레벨에서 헤더 인덱스를 인코딩하는 대신, 인코더(130)는 영역 레벨, 또는 CTU 레벨, 또는 타일 레벨에서 헤더 인덱스를 인코딩할 수 있다. 인덱스는 특정 이진수로 표현되지만, 임의의 이진수 또는 다른 숫자가 사용될 수 있다. SPS로 모든 정밀도를 나타내는 대신, 인코더(130)는 PPS로 모든 정밀도를 나타낼 수 있다. 제1 정밀도와 제2 정밀도를 비교하는 대신, 인코더(130)는 모든 후보 정밀도를 비교할 수 있다.
도 3은 본 개시의 일 실시예에 따른 후보 목록 생성의 방법(300)을 나타낸 흐름도이다. 인코더(130)는 상기 방법(300)을 수행한다. 단계 310에서, 비디오의 현재 블록이 획득된다. 예를 들면, 인코더(130)가 현재 블록(210)을 획득한다. 단계 320에서, 비디오의 인접 블록에 대응하는 후보 MV가 획득된다. 인접 블록은 현재 블록과 이웃하고 있다. 예를 들면, 인코더(130)가 인접 블록(220-260)에 대응하는 후보 MV를 획득한다. 단계 330에서, 후보 MV의 정밀도가 획득된다.
단계 340에서, 반올림 방식에 기초하여 정밀도의 제1 반올림이 수행된다. 예를 들면, 반올림 방식은 전술한 반올림 방식 중 하나이다. 따라서, 반올림 방식은 목표 정밀도로 반올림하는 것; 또는 인접 블록(220-260)의 정밀도 중에서 최저 정밀도, 또는 중간 정밀도, 또는 최고 정밀도로 반올림하는 것; 또는 인접 블록(220-260)과 타깃 블록의 정밀도 중에서 최저 정밀도, 또는 중간 정밀도, 또는 최고 정밀도로 반올림하는 것; 또는 디폴트 정밀도로 반올림하는 것을 포함할 수 있다. 단계 350에서, 제1 반올림에 기초하여 후보 MV의 제2 반올림이 수행된다. 예를 들면, 인코더(130)는 단계 340에서부터 정밀도를 결정하고, 그 정밀도에 기초하여 후보 MV를 잘라 올리거나 또는 잘라 버린다 .
단계 360에서, 후보 MV의 가지치기(pruning)가 수행된다. 예를 들면, 전술한 바와 같이 가지치기가 완료된다. 따라서, 가지치기는 동일한 후보 MV를 폐기하는 것, 또는 약간 동일한 후보 MV를 폐기하는 것, 또는 제로 MV를 추가하여 후보 목록을 채우는 것을 포함할 수 있다. 최종적으로, 단계 370에서, 제2 반올림과 가지치기에 기초하여 후보 목록이 생성된다. 전술한 바와 같이, 후보 목록은 AMVP 후보 목록 또는 병합 후보 목록일 수 있다.
도 4는 본 개시의 일 실시예에 따른 장치(400)를 개략적으로 나타낸 도면이다. 장치(400)는 개시된 실시예를 구현할 수 있다. 장치(400)는 인그레스 포트(ingress port)(410)와 데이터를 수신하기 위한 RX(420); 데이터를 처리할 프로세서, 또는 논리 유닛, 또는 베이스밴드 유닛, 또는 CPU(430); TX(440)와 데이터를 전송하기 위한 이그레스 포트(egress port)(450); 및 데이터를 저장하기 위한 메모리(460)를 포함한다. 장치(400)는 또한 광 신호, 전기 신호, 또는 RF 신호의 인그레스 또는 이그레스를 위해 인그레스 포트(410), RX(420), TX(440), 및 이그레스 포트(450)에 연결된 OE 컴포넌트, 또는 EO 컴포넌트, 또는 RF 컴포넌트를 포함할 수 있다.
프로세서(430)는 하드웨어, 또는 미들웨어, 또는 펌웨어, 또는 소프트웨어의 임의의 조합이다. 프로세서(430)는 하나 이상의 CPU 칩, 코어, FPGA, ASIC, 또는 DSP의 임의의 조합을 포함한다. 프로세서(430)는 인그레스 포트(410), RX(420), TX(440), 이그레스 포트(450), 및 메모리(460)와 통신한다. 프로세서(430)는 개시된 실시예를 구현하는 코딩 컴포넌트(470)를 포함한다. 따라서, 코딩 컴포넌트(470)를 포함하는 것은 장치(400)의 기능에 대한 실질적 개선을 제공하고, 장치(400)를 다른 상태로 변환하는 데 영향을 미친다. 대안적으로, 메모리(460)는 코딩 컴포넌트(470)를 명령어로서 저장하고, 프로세서(430)는 이러한 명령어를 실행한다.
메모리(460)는 디스크, 또는 테이프 드라이브, 또는 솔리드 스테이트 드라이브(solid-state drive)의 임의의 조합을 포함한다. 장치(400)는 메모리(460)를 오버 플로우(over-flow) 데이터 저장 장치로 사용함으로써, 장치(400)가 실행할 프로그램을 선택하는 경우에 프로그램을 저장하고, 장치(400)가 프로그램을 실행하는 중에 판독하는 명령과 데이터를 저장한다. 메모리(460)는 휘발성이거나 또는 비휘발성일 수 있으며, ROM, 또는 RAM, 또는 TCAM, 또는 SRAM의 임의의 조합일 수 있다.
예시적인 일 실시예에서, 장치가 메모리 엘리먼트; 및 메모리 엘리먼트에 연결된 프로세서 엘리먼트를 포함한다. 프로세서 엘리먼트는 비디오 프레임의 현재 블록을 획득하고, 비디오 프레임의 인접 블록에 대응하는 후보 MV를 획득하며 - 여기서, 인접 블록은 현재 블록에 이웃하고 있음 -; 후보 MV의 정밀도를 획득하고; 반올림 방식에 기초하여 정밀도의 제1 반올림을 수행하며; 제1 반올림에 기초하여 후보 MV의 제2 반올림을 수행하고; 후보 MV의 가지치기를 수행하며; 제2 반올림과 가지치기에 기초하여 후보 목록을 생성하도록 구성된다.
본 개시에서 여러 실시예가 제공되었지만, 개시된 시스템과 방법이 본 개시의 사상이나 범위를 벗어나지 않으면서 많은 다른 구체적인 형태로 구현될 수 있다고 이해할 수 있을 것이다. 현재의 예는 예시적이고 비한정적인 것으로 간주되어야 하며, 이러한 의도가 본 명세서에서 제공된 세부사항에 한정되지 않는다. 예를 들어, 다양한 엘리먼트 또는 컴포넌트가 다른 시스템에 결합되거나 통합될 수 있거나 또는 소정의 특징이 생략되거나 구현되지 않을 수 있다.
또한, 다양한 실시예에서 분리되거나 또는 개별적인 것으로 설명되고 예시된 기술, 시스템, 서브시스템, 및 방법이 본 개시의 범위를 벗어나지 않으면서 다른 시스템, 또는 컴포넌트, 또는 기술, 또는 방법과 결합되거나 통합될 수 있다. 연결된 것으로 도시되거나 논의된 다른 항목이 전기적으로, 또는 기계적으로, 또는 다른 방식으로 일부 인터페이스, 또는 장치, 또는 중간 컴포넌트를 통해 직접 연결되거나 또는 간접적으로 연결되거나 또는 연통될 수 있다. 변경, 대체, 및 수정의 다른 예가 당업자에 의해 확인될 수 있으며, 본 명세서에서 개시된 사상과 범위를 벗어나지 않고 이루어질 수 있다.

Claims (20)

  1. 장치로서,
    메모리; 및
    메모리에 연결된 프로세서
    를 포함하고,
    상기 프로세서는,
    비디오 프레임의 현재 블록을 획득하고,
    상기 비디오 프레임의 인접 블록(neighboring block)에 대응하는 후보 움직임 벡터(motion vector, MV)를 획득하며 - 여기서, 상기 인접 블록은 상기 현재 블록과 이웃하고 있고, 상기 인접 블록은 제1 인접 블록과 제2 인접 블록을 포함함 - ,
    상기 후보 MV의 정밀도를 획득하고 - 여기서, 상기 정밀도는 상기 제1 인접 블록에 대응하는 후보 MV의 제1 정밀도와 상기 제2 인접 블록에 대응하는 후보 MV의 제2 정밀도를 포함함 - ,
    반올림 방식에 기초하여 상기 정밀도의 제1 반올림을 수행하며 - 여기서, 상기 반올림 방식은, 상기 제1 정밀도와 상기 제2 정밀도 중 하나 이상을 상기 현재 블록의 목표 정밀도로 반올림하는 것을 포함함 - ,
    상기 제1 반올림에 기초하여 상기 후보 MV의 제2 반올림을 수행하고,
    상기 제2 반올림은 잘라 올림(rounding up)과 잘라 내림(rounding down)을 포함하며,
    상기 후보 MV의 가지치기(pruning)를 수행하며,
    상기 제2 반올림과 상기 가지치기에 기초하여 후보 목록을 생성하도록 구성된, 장치.
  2. 제1항에 있어서,
    상기 반올림 방식은,
    상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 상기 목표 정밀도의 임의의 조합 중에서 최저 정밀도를 결정하는 것; 및
    상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 최저 정밀도로 반올림하는 것
    을 포함하는, 장치.
  3. 제1항에 있어서,
    상기 반올림 방식은,
    상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 상기 목표 정밀도의 임의의 조합 중에서 중간 정밀도를 결정하는 것; 및
    상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 중간 정밀도로 반올림하는 것
    을 포함하는, 장치.
  4. 제1항에 있어서,
    상기 반올림 방식은,
    상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 상기 목표 정밀도의 임의의 조합 중에서 최고 정밀도를 결정하는 것; 및
    상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 최고 정밀도로 반올림하는 것
    을 포함하는, 장치.
  5. 제1항에 있어서,
    상기 반올림 방식은,
    다른 장치로부터 수신되는 디폴트 정밀도를 결정하는 것; 및
    상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 현재 블록의 상기 목표 정밀도 중 적어도 하나를 상기 디폴트 정밀도로 반올림하는 것
    을 포함하는, 장치.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 가지치기는 동일한 후보 MV 또는 사전에 정의된 임계치 내에서의 동일한 후보 MV를 폐기하는 것을 포함하는, 장치.
  7. 제6항에 있어서,
    상기 가지치기는 제로 MV(zero MV)를 추가하여 상기 후보 목록을 채우는 것을 더 포함하는, 장치.
  8. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 프로세서는 추가적으로, 상기 가지치기 이전에 상기 제1 반올림과 상기 제2 반올림을 더 수행하도록 구성된, 장치
  9. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 프로세서는 추가적으로, 상기 가지치기 이후에 상기 제1 반올림과 상기 제2 반올림을 더 수행하도록 구성된, 장치.
  10. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 후보 목록은 고급 움직임 벡터 예측(advanced motion vector prediction, AMVP) 후보 목록이거나, 또는 상기 후보 목록은 병합 후보 목록(merge candidate list)인, 장치.
  11. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 프로세서는 추가적으로,
    상기 후보 목록으로부터 최종 후보 MV를 선택하고;
    인코딩된 비디오에서 상기 최종 후보 MV를 시그널링하도록 구성된, 장치.
  12. 방법으로서,
    비디오 프레임의 현재 블록을 획득하는 단계;
    상기 비디오 프레임의 인접 블록(neighboring block)에 대응하는 후보 움직임 벡터(motion vector, MV)를 획득하는 단계 - 여기서, 상기 인접 블록은 상기 현재 블록과 이웃하고 있고, 상기 인접 블록은 제1 인접 블록과 제2 인접 블록을 포함함 - ;
    상기 후보 MV의 정밀도를 획득하는 단계 - 여기서, 상기 정밀도는 상기 제1 인접 블록에 대응하는 후보 MV의 제1 정밀도와 상기 제2 인접 블록에 대응하는 후보 MV의 제2 정밀도를 포함함 - ;
    반올림 방식에 기초하여 상기 정밀도의 제1 반올림을 수행하는 단계 - 여기서, 상기 반올림 방식은, 상기 제1 정밀도와 상기 제2 정밀도 중 하나 이상을 상기 현재 블록의 목표 정밀도로 반올림하는 것을 포함함 - ;
    상기 제1 반올림에 기초하여 상기 후보 MV의 제2 반올림을 수행하는 단계 - 상기 제2 반올림은 잘라 올림(rounding up)과 잘라 내림(rounding down)을 포함함 - ;
    상기 후보 MV의 가지치기(pruning)를 수행하는 단계; 및
    상기 제2 반올림과 상기 가지치기에 기초하여 후보 목록을 생성하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 반올림 방식은,
    상기 제1 정밀도, 상기 제2 정밀도, 및 상기 현재 블록의 상기 목표 정밀도의 임의의 조합 중에서 제3 정밀도를 결정하고, 상기 제1 정밀도, 또는 상기 제2 정밀도, 또는 상기 목표 정밀도 중 적어도 하나를 상기 제3 정밀도로 반올림하는 것 - 상기 제3 정밀도는 최저 정밀도, 또는 중간 정밀도, 또는 최고 정밀도, 또는 디폴트 정밀도 중 적어도 하나를 포함하고 있음 -
    을 포함하는, 방법.
  14. 제12항 내지 제13항 중 어느 한 항에 있어서,
    상기 후보 목록으로부터 최종 후보 MV를 선택하는 단계;
    인코딩된 비디오에서 상기 최종 후보 MV를 시그널링하는 단계; 및
    상기 인코딩된 비디오를 전송하는 단계
    를 더 포함하는 방법.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020207000707A 2017-06-12 2018-06-07 움직임 벡터(mv) 정밀도의 선택 및 시그널링 KR102331529B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762518402P 2017-06-12 2017-06-12
US62/518,402 2017-06-12
US15/982,865 2018-05-17
US15/982,865 US11272207B2 (en) 2017-06-12 2018-05-17 Selection and signaling of motion vector (MV) precisions
PCT/CN2018/090181 WO2018228260A1 (en) 2017-06-12 2018-06-07 Selection and Signaling of Motion Vector (MV) Precisions

Publications (2)

Publication Number Publication Date
KR20200015737A KR20200015737A (ko) 2020-02-12
KR102331529B1 true KR102331529B1 (ko) 2021-12-01

Family

ID=64563841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207000707A KR102331529B1 (ko) 2017-06-12 2018-06-07 움직임 벡터(mv) 정밀도의 선택 및 시그널링

Country Status (13)

Country Link
US (3) US11272207B2 (ko)
EP (1) EP3639520B1 (ko)
JP (1) JP6915159B2 (ko)
KR (1) KR102331529B1 (ko)
CN (1) CN110710211B (ko)
AU (1) AU2018284733B2 (ko)
BR (1) BR112019026266A2 (ko)
CA (1) CA3066961C (ko)
IL (1) IL271382B2 (ko)
MX (1) MX2019014930A (ko)
SG (1) SG11201911975YA (ko)
WO (1) WO2018228260A1 (ko)
ZA (1) ZA201908548B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11272207B2 (en) 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
TWI746994B (zh) 2018-06-19 2021-11-21 大陸商北京字節跳動網絡技術有限公司 用於不同參考列表的不同精確度
TWI815967B (zh) 2018-09-19 2023-09-21 大陸商北京字節跳動網絡技術有限公司 仿射模式編解碼的模式相關自適應調整運動矢量分辨率
JP7235877B2 (ja) * 2019-01-31 2023-03-08 北京字節跳動網絡技術有限公司 アフィンモード適応型動きベクトル解像度を符号化するためのコンテキスト
US11025948B2 (en) 2019-02-28 2021-06-01 Tencent America LLC Method and apparatus for motion prediction in video coding
US20230128502A1 (en) * 2021-10-21 2023-04-27 Tencent America LLC Schemes for Adjusting Adaptive Resolution for Motion Vector Difference

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160014408A1 (en) * 2011-06-15 2016-01-14 Fujitsu Limited Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium
US20160100189A1 (en) * 2014-10-07 2016-04-07 Qualcomm Incorporated Intra bc and inter unification
US20160337661A1 (en) * 2015-05-11 2016-11-17 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1265649C (zh) 2002-01-24 2006-07-19 株式会社日立制作所 运动图像的编码方法、解码方法、编码装置及解码装置
US7116831B2 (en) 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
JP4130783B2 (ja) * 2002-04-23 2008-08-06 松下電器産業株式会社 動きベクトル符号化方法および動きベクトル復号化方法
DE10236694A1 (de) 2002-08-09 2004-02-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren
US7620106B2 (en) 2003-09-07 2009-11-17 Microsoft Corporation Joint coding and decoding of a reference field selection and differential motion vector information
US8098732B2 (en) * 2007-10-10 2012-01-17 Sony Corporation System for and method of transcoding video sequences from a first format to a second format
TW201041404A (en) 2009-03-06 2010-11-16 Sony Corp Image processing device and method
US20120300850A1 (en) * 2010-02-02 2012-11-29 Alex Chungku Yie Image encoding/decoding apparatus and method
US20120294370A1 (en) 2010-10-06 2012-11-22 Yi-Jen Chiu System and method for low complexity motion vector derivation
US8526495B2 (en) 2010-11-22 2013-09-03 Mediatek Singapore Pte. Ltd. Apparatus and method of constrained partition size for high efficiency video coding
CN102611887B (zh) 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
US9049452B2 (en) 2011-01-25 2015-06-02 Mediatek Singapore Pte. Ltd. Method and apparatus for compressing coding unit in high efficiency video coding
US9788019B2 (en) 2011-03-09 2017-10-10 Hfi Innovation Inc. Method and apparatus of transform unit partition with reduced complexity
CN106412585A (zh) 2011-06-17 2017-02-15 联发科技股份有限公司 内部预测模式编码的方法
CN103748877B (zh) 2011-08-17 2017-05-10 联发科技(新加坡)私人有限公司 帧内预测方法和装置
US9363511B2 (en) 2011-09-13 2016-06-07 Mediatek Singapore Pte. Ltd. Method and apparatus for Intra mode coding in HEVC
AU2012323631B2 (en) 2011-10-11 2015-09-17 Mediatek Inc. Method and apparatus of motion and disparity vector derivation for 3D video coding and HEVC
KR102211673B1 (ko) * 2011-12-16 2021-02-03 벨로스 미디어 인터내셔널 리미티드 동화상 부호화 방법, 동화상 부호화 장치, 동화상 복호 방법, 동화상 복호 장치, 및 동화상 부호화 복호장치
WO2013106986A1 (en) 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of intra mode coding
US9325991B2 (en) 2012-04-11 2016-04-26 Qualcomm Incorporated Motion vector rounding
CN104662910B (zh) * 2012-09-21 2018-04-10 寰发股份有限公司 3d视频编码中的虚拟深度值的方法和装置
EP2920962A4 (en) * 2012-11-13 2016-07-20 Intel Corp ADAPTIVE TRANSFORMATION ENCODING OF CONTENT FOR NEXT GENERATION VIDEO
EP2936816B1 (en) 2013-04-09 2020-04-29 MediaTek Singapore Pte Ltd. Method and apparatus for non-square intra mode coding
US9749642B2 (en) * 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US10531116B2 (en) 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US10924746B2 (en) 2014-01-29 2021-02-16 Mediatek Inc. Method and apparatus for adaptive motion vector precision
CN111741312B (zh) 2014-10-31 2024-03-19 三星电子株式会社 用于对运动矢量进行编码/解码的方法和装置
CA2965720C (en) * 2014-11-20 2020-04-14 Hfi Innovation Inc. Method of motion vector and block vector resolution control
US10856001B2 (en) 2015-02-24 2020-12-01 Lg Electronics Inc. Polygon unit-based image processing method, and device for same
CN106331703B (zh) 2015-07-03 2020-09-08 华为技术有限公司 视频编码和解码方法、视频编码和解码装置
US10812822B2 (en) * 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
US10368083B2 (en) * 2016-02-15 2019-07-30 Qualcomm Incorporated Picture order count based motion vector pruning
US10448011B2 (en) 2016-03-18 2019-10-15 Mediatek Inc. Method and apparatus of intra prediction in image and video processing
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
KR102338356B1 (ko) * 2016-05-24 2021-12-13 한국전자통신연구원 영상 부호화/복호화 방법 및 이를 위한 기록 매체
US10230961B2 (en) 2016-06-03 2019-03-12 Mediatek Inc. Method and apparatus for template-based intra prediction in image and video coding
US20170374369A1 (en) 2016-06-24 2017-12-28 Mediatek Inc. Methods and Apparatuses of Decoder Side Intra Mode Derivation
US11356693B2 (en) * 2016-09-29 2022-06-07 Qualcomm Incorporated Motion vector coding for video coding
US10778999B2 (en) * 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
US10979732B2 (en) * 2016-10-04 2021-04-13 Qualcomm Incorporated Adaptive motion vector precision for video coding
EP3586510A4 (en) 2017-02-24 2020-08-12 RealNetworks, Inc. MOTION VECTOR SELECTION AND PREDICTION IN VIDEO ENCODING SYSTEMS AND METHODS
US11272207B2 (en) 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160014408A1 (en) * 2011-06-15 2016-01-14 Fujitsu Limited Video decoding apparatus, video coding apparatus, video decoding method, video coding method, and storage medium
US20160100189A1 (en) * 2014-10-07 2016-04-07 Qualcomm Incorporated Intra bc and inter unification
US20160337661A1 (en) * 2015-05-11 2016-11-17 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data

Also Published As

Publication number Publication date
IL271382B1 (en) 2023-10-01
CA3066961C (en) 2023-10-03
US20220103861A1 (en) 2022-03-31
US20180359485A1 (en) 2018-12-13
EP3639520B1 (en) 2024-02-14
CN110710211A (zh) 2020-01-17
EP3639520A1 (en) 2020-04-22
KR20200015737A (ko) 2020-02-12
IL271382B2 (en) 2024-02-01
JP2020523954A (ja) 2020-08-06
CA3066961A1 (en) 2018-12-20
US20200120356A1 (en) 2020-04-16
CN110710211B (zh) 2022-06-10
AU2018284733B2 (en) 2022-07-28
US11272207B2 (en) 2022-03-08
JP6915159B2 (ja) 2021-08-04
EP3639520A4 (en) 2020-05-27
IL271382A (en) 2020-01-30
WO2018228260A1 (en) 2018-12-20
US20220021901A9 (en) 2022-01-20
BR112019026266A2 (pt) 2020-06-30
US11843800B2 (en) 2023-12-12
MX2019014930A (es) 2020-08-06
US11223847B2 (en) 2022-01-11
AU2018284733A1 (en) 2020-01-23
ZA201908548B (en) 2021-06-30
SG11201911975YA (en) 2020-01-30

Similar Documents

Publication Publication Date Title
KR102331529B1 (ko) 움직임 벡터(mv) 정밀도의 선택 및 시그널링
US10652571B2 (en) Advanced motion vector prediction speedups for video coding
US20220345716A1 (en) Method and apparatus for predicting motion information of picture block, encoder, and decoder
US11528503B2 (en) Picture prediction method and apparatus, and codec
EP3357247B1 (en) Improved video intra-prediction using position-dependent prediction combination for video coding
CN107534766B (zh) 于视频译码中针对子块推导运动信息方法、装置
US9699456B2 (en) Buffering prediction data in video coding
CN110291790B (zh) 视频编码中的运动矢量(mv)约束和变换约束
KR20200006099A (ko) 비디오 압축에서의 양방향 예측
KR20220024028A (ko) 비디오 코딩에서 매트릭스 인트라 예측 파라미터들의 시그널링
CN112789858B (zh) 帧内预测方法及设备
US20210321127A1 (en) Video decoding method and apparatus, and decoding device
KR20210036411A (ko) 후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더
US11516470B2 (en) Video coder and corresponding method
KR20210096282A (ko) 인터 예측 방법 및 장치
WO2023200907A1 (en) Methods and devices for geometric partitioning mode with adaptive blending

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant