KR20160024960A - 심도 지향 인터-뷰 모션 벡터 예측 - Google Patents
심도 지향 인터-뷰 모션 벡터 예측 Download PDFInfo
- Publication number
- KR20160024960A KR20160024960A KR1020167001940A KR20167001940A KR20160024960A KR 20160024960 A KR20160024960 A KR 20160024960A KR 1020167001940 A KR1020167001940 A KR 1020167001940A KR 20167001940 A KR20167001940 A KR 20167001940A KR 20160024960 A KR20160024960 A KR 20160024960A
- Authority
- KR
- South Korea
- Prior art keywords
- ipmvc
- candidate
- block
- video
- view
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
Abstract
예시적인 비디오 코딩 디바이스는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하도록 구성되며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 비디오 코딩 디바이스는 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하도록 더 구성될 수도 있다.
Description
본 출원은 2013년 6월 27일자에 출원된 미국 가출원 번호 제 61/840,400호; 2013년 7월 18일자에 출원된 미국 가출원 번호 제 61/847,942호; 및 2013년 10월 11일자에 출원된 미국 가출원 번호 제 61/890,107호의 이익을 주장하며, 이들 각각의 전체 내용이 본원에 참조로 포함된다.
기술 분야
본 개시물은 비디오 코딩, 좀더 구체적으로는, 3차원 (3D) 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대정보 단말기들 (PDAs), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 리코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트폰들", 원격 화상회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 파트 10, AVC (Advanced Video Coding), 현재 개발중인 HEVC (High Efficiency Video Coding) 표준, 및 이러한 표준들의 확장판들에 의해 정의된 표준들에서 설명되는 비디오 코딩 기법들과 같은, 비디오 코딩 기법들을 구현한다. 비디오 디바이스들은 이러한 비디오 코딩 기법들을 구현함으로써, 디지털 비디오 정보를 좀더 효율적으로 송신하거나, 수신하거나, 인코딩하거나, 디코딩하거나, 및/또는 저장할 수도 있다.
비디오 코딩 기법들은 비디오 시퀀스들에 고유한 리던던시를 감소시키거나 또는 제거하기 위해, 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 포함한다. 블록-기반 비디오 코딩에 있어, 비디오 슬라이스 (예컨대, 비디오 프레임 또는 비디오 프레임의 부분) 은 비디오 블록들로 파티셔닝될 수도 있으며, 이 비디오 블록들은 또한 트리블록들, 코딩 유닛들 (CUs) 및/또는 코딩 노드들로서 지칭될 수도 있다. 픽처의 인트라-코딩된 (I) 슬라이스에서 비디오 블록들은 동일한 픽처에서 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측을 이용하여 인코딩된다. 픽처의 인터-코딩된 (P 또는 B) 슬라이스에서 비디오 블록들은 동일한 픽처에서 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측, 또는 다른 참조 픽처들에서의 참조 샘플들에 대한 시간 예측을 이용할 수도 있다. 픽처들은 프레임들로 지칭될 수 있으며, 참조 픽처들은 참조 프레임들로서 지칭될 수도 있다.
공간 또는 시간 예측은 코딩되는 블록에 대한 예측 블록을 초래한다. 잔차 데이터는 코딩되는 원래 블록과 예측 블록 사이의 픽셀 차이들을 나타낸다. 인터-코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 사이의 차이를 나타내는 잔차 데이터에 따라서 인코딩된다. 인트라-코딩된 블록은 인트라-코딩 모드 및 잔차 데이터에 따라서 인코딩된다. 추가적인 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 잔차 변환 계수들을 초래할 수도 있으며, 이 잔차 변환 계수는 그 후 양자화될 수도 있다. 처음에 2차원 어레이로 배열된, 양자화된 변환 계수들은 변환 계수들의 1차원 벡터를 생성하기 위해 스캐닝될 수도 있으며, 엔트로피 코딩이 더욱 더 많은 압축을 달성하기 위해 적용될 수도 있다.
멀티뷰 코딩 비트스트림은 뷰들을, 예컨대, 다수의 관점들로부터 인코딩함으로써 생성될 수도 있다. 멀티뷰 코딩 양태들을 이용하는 일부 3차원 (3D) 비디오 표준들이 개발되었다. 예를 들어, 상이한 뷰들은 3D 비디오를 지원하기 위해 좌측 및 우측 눈 뷰들을 송신할 수도 있다. 이의 대안으로, 일부 3D 비디오 코딩 프로세스들은 소위 멀티뷰 플러스 심도 코딩을 적용할 수도 있다. 멀티뷰 플러스 심도 코딩에서, 3D 비디오 비트스트림은 텍스쳐 뷰 성분들 뿐만 아니라, 심도 뷰 성분들도 포함할 수도 있다. 예를 들어, 각각의 뷰는 하나의 텍스쳐 뷰 성분 및 하나의 심도 뷰 성분을 포함할 수도 있다.
일반적으로, 본 개시물은 비디오 코딩 기법들을 기술한다. 본 기법들은 일반적으로 텍스쳐 뷰들 및 심도 뷰들로 이루어지는 3차원 비디오 (3DV) 콘텐츠의 코딩에 관련된다. 본 개시물의 여러 기법들은 심도 뷰들에 대한 인터-뷰 모션 벡터 예측에 관한 것이다. 여러 예들에 따르면, 본 기법들은 심도 베이스 뷰에 대한 이미-코딩된 모션 정보로부터 더 많은 개수의 모션 벡터 후보들을 레버리지함으로써 의존적인 심도 뷰들에 대한 모션 벡터 예측의 정확도를 향상시키는 것에 관한 것이다. 예를 들어, 본 기법들은 의존적인 심도 뷰에서 심도 블록의 이웃하는 심도 픽셀들로부터 디스패리티 벡터가 유도될 수 있도록 하고, 그 디스패리티 벡터를 이용하여 베이스 심도 뷰로부터 (예컨대, 병합 리스트를 팝퓰레이트할) 모션 벡터 후보들을 유도할 수도 있다.
일 예에서, 본 개시물은 비디오 데이터를 코딩하는 방법을 기술하며, 그 방법은 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하는 단계; 및 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하는 단계를 포함한다. 본 방법은 디스패리티 벡터에 기초하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하는 단계; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (inter-view predicted motion vector candidate; IPMVC) 를 생성하는 단계; 및 IDMVC 또는 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하는 단계를 더 포함할 수 있다.
또 다른 예에서, 본 개시물은 비디오 데이터를 코딩하는 디바이스를 기술하며, 그 디바이스는 메모리 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하며; 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하도록, 구성되거나 또는 아니면 동작가능할 수도 있다. 하나 이상의 프로세서들은 디스패리티 벡터를 이용하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하고; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하며;, IDMVC 및 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하도록, 더 구성되거나 또는 동작가능할 수도 있다.
또 다른 예에서, 본 개시물은 명령들로 인코딩된 컴퓨터 판독가능 저장 매체를 기술하며, 상기 명령들은, 실행될 때, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금, 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하고; 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하고; 디스패리티 벡터를 이용하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하고; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하며;, IDMVC 및 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하도록 한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 코딩하는 장치를 기술하며, 그 장치는 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하는 수단; 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하는 수단; 디스패리티 벡터를 이용하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하는 수단; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하는 수단; 및 IDMVC 및 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하는 수단을 포함한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 코딩하는 방법을 기술하며, 그 방법은 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하는 단계를 포함하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 본 방법은 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하는 단계를 더 포함할 수 있다.
또 다른 예에서, 본 개시물은 비디오 데이터를 코딩하는 디바이스를 기술하며, 그 디바이스는 메모리 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하도록 구성되거나 또는 아니면 동작가능할 수도 있으며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 하나 이상의 프로세서들은 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하도록, 더 구성되거나 또는 아니면 동작가능할 수도 있다.
또 다른 예에서, 본 개시물은 명령들로 인코딩된 컴퓨터 판독가능 저장 매체를 기술하며, 상기 명령들은, 실행될 때, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금, 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하도록 하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 그 명령들은, 실행될 때, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금, IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 추가로 수행하도록 할 수도 있다.
또 다른 예에서, 본 개시물은 비디오 데이터를 코딩하는 장치를 기술하며, 그 장치는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하는 수단을 포함하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 그 장치는 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하는 수단을 더 포함할 수 있다.
하나 이상의 예들의 세부 사항들이 첨부도면 및 아래의 상세한 설명에서 개시된다. 다른 특성들, 목적들, 및 이점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백히 알 수 있을 것이다.
도 1 은 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용하도록 구성될 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2 는 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용할 수도 있는 비디오 인코더의 일 예를 예시하는 블록도이다.
도 3 은 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용할 수도 있는 비디오 디코더의 일 예를 예시하는 블록도이다.
도 4 는 예시적인 멀티-뷰 디코딩 순서를 예시하는 개념도이다.
도 5 는 MVC, 멀티-뷰 HEVC, 및 3D-HEVC (멀티-뷰 플러스 심도) 와 함께 사용될 수도 있는 예시적인 MVC 예측 패턴을 예시하는 개념도이다.
도 6 은 시간 이웃하는 블록들을 예시하는 개념도이다.
도 7 은 비디오 코딩 디바이스가 베이스 뷰로부터 심도 블록을 로케이트하고 로케이트된 심도 블록을 BVSP 예측을 위해 사용할 수도 있는 예시적인 3 단계 프로세스를 예시한다.
도 8 은 위에서 설명된, 현재의 블록, 대응하는 블록, 및 모션 보상된 블록 사이의 관계를 예시한다.
도 9 는 심도 코딩을 위한 모션 벡터 상속 (MVI) 후보의 유도를 예시하는 개념도이다.
도 10 은 (예컨대, 비디오 코딩 디바이스에 의해) 샘플들 Px,y 을 예측하는데 사용될 수도 있는 참조 샘플들 Rx,y 을 예시한다.
도 11 은 멀티-뷰 비디오 코딩의 예시적인 예측 구조를 예시하는 개념도이다.
도 12 는 비디오 코딩 디바이스가 본원에서 설명되는 심도-지향 인터-뷰 모션 예측 기법들을 수행할 수도 있는 예시적인 프로세스를 예시하는 플로우차트이다.
도 13 은 본 개시물의 양태들에 따른, 비디오 코딩 디바이스가 하나 이상의 심도-지향 인터-뷰 모션 벡터 후보들을 이용하여 병합 리스트 구성을 구현할 수도 있는 예시적인 프로세스를 예시하는 플로우차트이다.
도 2 는 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용할 수도 있는 비디오 인코더의 일 예를 예시하는 블록도이다.
도 3 은 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용할 수도 있는 비디오 디코더의 일 예를 예시하는 블록도이다.
도 4 는 예시적인 멀티-뷰 디코딩 순서를 예시하는 개념도이다.
도 5 는 MVC, 멀티-뷰 HEVC, 및 3D-HEVC (멀티-뷰 플러스 심도) 와 함께 사용될 수도 있는 예시적인 MVC 예측 패턴을 예시하는 개념도이다.
도 6 은 시간 이웃하는 블록들을 예시하는 개념도이다.
도 7 은 비디오 코딩 디바이스가 베이스 뷰로부터 심도 블록을 로케이트하고 로케이트된 심도 블록을 BVSP 예측을 위해 사용할 수도 있는 예시적인 3 단계 프로세스를 예시한다.
도 8 은 위에서 설명된, 현재의 블록, 대응하는 블록, 및 모션 보상된 블록 사이의 관계를 예시한다.
도 9 는 심도 코딩을 위한 모션 벡터 상속 (MVI) 후보의 유도를 예시하는 개념도이다.
도 10 은 (예컨대, 비디오 코딩 디바이스에 의해) 샘플들 Px,y 을 예측하는데 사용될 수도 있는 참조 샘플들 Rx,y 을 예시한다.
도 11 은 멀티-뷰 비디오 코딩의 예시적인 예측 구조를 예시하는 개념도이다.
도 12 는 비디오 코딩 디바이스가 본원에서 설명되는 심도-지향 인터-뷰 모션 예측 기법들을 수행할 수도 있는 예시적인 프로세스를 예시하는 플로우차트이다.
도 13 은 본 개시물의 양태들에 따른, 비디오 코딩 디바이스가 하나 이상의 심도-지향 인터-뷰 모션 벡터 후보들을 이용하여 병합 리스트 구성을 구현할 수도 있는 예시적인 프로세스를 예시하는 플로우차트이다.
본 개시물은 텍스쳐 뷰들 및 심도 뷰들로 이루어지는 3D 비디오 콘텐츠의 코딩을 위한 여러 기법들을 기술한다. 이 기법들은 일부 양태들에서, 비디오 인코더에 의해 수행될 수도 있다. 다른 양태들에서, 이 기법들은 비디오 디코더에 의해 수행될 수도 있다. 베이스 뷰는 또한 본원에서 "참조 계층" 또는 "참조 뷰" 로서 지칭될 수도 있다. 게다가, 기초 계층 이외의 뷰 또는 계층은 본원에서 "의존적인 계층" 또는 "의존적인 뷰" 로서 지칭될 수도 있다. 게다가, 본원에서 설명되는 여러 기법들은 다른 디바이스들, 예컨대, 트랜스코더들, 미디어 인지 네트워크 엘리먼트들 (MANEs), 또는 프로세스 비디오 데이터를 프로세싱하는 다른 디바이스들 또는 유닛들에 의해 수행될 수도 있다. 본 개시물에서, 이 기법들은 예시의 목적을 위해, 비디오 인코더들 및 디코더들에 대해 설명된다.
비디오 코딩 표준들은 ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 의 스케일러블 비디오 코딩 (SVC) 및 멀티뷰 비디오 코딩 (MVC) 확장판들을 포함한, (또한, ISO/IEC MPEG-4 AVC 로서 알려진) ITU-T H.264 를 포함한다.
비디오 코딩 표준들은 ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 의 스케일러블 비디오 코딩 (SVC) 및 멀티뷰 비디오 코딩 (MVC) 확장판들을 포함한, (또한, ISO/IEC MPEG-4 AVC 로서 알려진) ITU-T H.264 를 포함한다.
게다가, ITU-T 비디오 코딩 전문가 그룹 (VCEG) 와 ISO/IEC 동화상 전문가 그룹 (MPEG) 의 비디오 코딩에 관한 합동 연구팀 (JCT-VC) 에 의해 개발되고 있는, 새로운 비디오 코딩 표준, 즉 고효율 비디오 코딩 (HEVC) 이 있다. 이하에서 HEVC WD8 로서 지칭되는, HEVC 의 하나의 최신 작업 초안 (WD) 은 http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v10.zip 로부터 입수가능하다. 또 다른, HEVC 의 더 최신 안은 본원에서 "HEVC 텍스트 사양 초안 10" 로서 지칭된다. HEVC WD8 (10차 회의: 2012년 7월 11-20일, 스웨덴, 스톡홀름, BROSS 등, "High Efficiency Video Coding (HEVC) Text Specification Draft 8", JCTVC-J1003_d7, 261 페이지) 및 HEVC 초안 10 (10차 회의: 2013년 1월 14-23일, 스위스, 제네바, BROSS 등, "High efficiency video coding (HEVC) text specification draft 10 (For FDIS & Last Call)", JCTVC-L1003_v34, 310 페이지) 의 전체 내용이 본원에 참고로 포함된다.
HEVC 의 하나의 사용은 고화질 및 초-고화질 (UHD) 비디오의 영역일 수도 있다. 많은 고화질 (HD) 디스플레이들은 이미 렌더링 스테레오 비디오를 렌더링가능하며, UHD 디스플레이들의 증가된 해상도 및 디스플레이 사이즈는 이러한 디스플레이들이 스테레오 비디오에 더욱 더 적합하게 만들 수도 있다. 그를 뛰어 넘어서, HEVC 의 향상된 압축 능력 (예컨대, H.264/AVC 높은 프로파일에 비해 동일한 품질을 갖는 예상된 절반 비트 레이트) 은 HEVC 를 스테레오 비디오를 코딩하기 위한 우수한 후보로 만들 수도 있다. 예를 들어, 뷰들 사이의 리던던시를 활용하는 메커니즘들을 이용하여, 비디오 코더 (예컨대, 비디오 인코더 또는 비디오 디코더) 는 풀 해상도 스테레오 비디오를 H.264/AVC 표준을 이용하여 코딩된 동일한 품질 및 해상도의 단일 뷰 (단안) 비디오보다 심지어 낮은 레이트들에서 코딩하기 위해, HEVC 를 이용할 수도 있다.
AVC-기반의 프로젝트들과 유사하게, VCEG 및 MPEG 의 3D 비디오 코딩에 관한 합동 연구팀 (JCT-3V) 은 HEVC 코딩 기술을 이용하고 있는 2개의 3DV 솔루션들의 연구를 수행하고 있다. 첫번째 솔루션은 MV-HEVC 로서 지칭되는 HEVC 의 멀티-뷰 확장판이고, 다른 솔루션은 심도 향상된 HEVC-기반 풀 3DV 코덱, 3D-HEVC 이다. 표준화 노력들의 일부는 HEVC 에 기초한 멀티-뷰/3D 비디오 코딩의 표준화를 포함한다. 최신 소프트웨어 3D-HTM 버전 5.0 은 https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-5.0/ 에서 전자적으로 입수가능하다. 아래에서 설명되는 기법들은 상기 2개의 제안된 3DV 솔루션들과 함께 구현될 수도 있다.
일부의 경우, 이 기법들은 또한 (또는, 대안적으로) HEVC 에 대한 스케일러블 확장판 또는 멀티-뷰 확장판으로 구현될 수도 있다. 스케일러블 비디오 코딩에서, 비디오 데이터의 다수의 계층들이 코딩될 수도 있다. 일부의 경우, 각각의 계층은 특정의 뷰에 대응할 수도 있다. 여기서, 뷰 스케일러빌리티 및 공간 스케일러빌리티의 애플리케이션은, 뷰 스케일러빌리티 및 공간 스케일러빌리티가 더 많은 뷰들에 대해 역방향-호환가능한 확장판들 (즉, 여러 코덱들의 이전 버전들 및/또는 릴리즈들과 동작하도록 동작가능하거나 구성된 확장판들), 및/또는 레거시 (즉, 특정의 코덱의 이전 버전 및/또는 릴리즈를 구현하는 디바이스들) 디바이스들에 의해 디코딩하는 것이 가능한 방법으로 뷰들의 해상도를 향상시키는 것을 고려하기 때문에, 3D 서비스들의 발전에서 매우 유익한 것으로 간주된다.
2차원 비디오 코딩에서, 비디오 데이터 (즉, 픽처들의 시퀀스) 는, 반드시 디스플레이 순서가 아닌, 픽처 단위로 코딩된다. 비디오 코딩 디바이스들은 각각의 픽처를 블록들로 분할하고, 각각의 블록을 개별적으로 코딩한다. 블록-기반 예측 모드들은 인트라-예측으로 또한 지칭되는 공간 예측, 및 인터-예측으로 또한 지칭되는 시간 예측을 포함한다.
멀티뷰 또는 스케일러블 코딩된 데이터와 같은 3차원 비디오 데이터에 있어, 블록들은 또한 인터-뷰 및/또는 인터-계층 예측될 수도 있다. 본원에서 설명되는 바와 같이, 비디오 "계층" 은 일반적으로 뷰, 프레임 레이트, 해상도, 또는 기타 등등과 같은, 적어도 하나의 공통 특성을 갖는 픽처들의 시퀀스를 지칭할 수도 있다. 예를 들어, 계층은 멀티뷰 비디오 데이터의 특정의 뷰 (예컨대, 관점) 과 연관되는 비디오 데이터를 포함할 수도 있다. 또 다른 예로서, 계층은 스케일러블 비디오 데이터의 특정의 계층과 연관되는 비디오 데이터를 포함할 수도 있다.
따라서, 본 개시물은 상호교환가능하게 계층 및 비디오 데이터의 뷰로서 지칭할 수도 있다. 즉, 비디오 데이터의 뷰는 비디오 데이터의 계층으로서 지칭될 수도 있으며, 반대의 경우도 마찬가지이다. 더욱이, 용어들 인터-뷰 예측 및 인터-계층 예측은 비디오 데이터의 다수의 계층들 및/또는 뷰들 사이의 예측을 상호교환가능하게 지칭할 수도 있다. 게다가, 멀티-계층 코덱 (또는, 멀티-계층 비디오 코더) 는 공통적으로 멀티뷰 코덱 또는 스케일러블 코덱을 지칭할 수도 있다.
멀티뷰 또는 스케일러블 비디오 코딩에서, 블록들은 비디오 데이터의 또 다른 뷰 또는 계층의 픽처로부터 예측될 수도 있다. 이와 같이, 상이한 뷰들로부터의 복원된 뷰 성분들에 기초한 인터-뷰 예측이 이용가능하게 될 수도 있다. 본 개시물은 특정의 뷰 또는 계층의 인코딩된 픽처를 지칭하기 위해 용어 "뷰 성분" 을 사용한다. 즉, 뷰 성분은 (디스플레이 순서, 또는 출력 순서의 관점에서) 특정의 시간에서 특정의 뷰에 대한 인코딩된 픽처를 포함할 수도 있다. 뷰 성분 (또는, 뷰 성분의 슬라이스들) 은 뷰 성분의 디스플레이 순서 (또는, 출력 순서) 를 일반적으로 표시하는 POC (picture order count) 값을 가질 수도 있다.
일반적으로, 2개의 뷰들의 동일한 또는 대응하는 오브젝트들은 동일 위치에 배치되지 않는다. 용어 "디스패리티 벡터" 는 상이한 뷰에서의 대응하는 오브젝트에 대한, 뷰의 픽처에서의 오브젝트의 변위를 나타내는 벡터를 지칭하기 위해 사용될 수도 있다. 이러한 벡터는 또한 "변위 벡터" 로서 지칭될 수도 있다. 디스패리티 벡터는 또한 픽처의 비디오 데이터의 픽셀 또는 블록에 적용가능할 수도 있다. 예를 들어, 제 1 뷰의 픽처에서의 픽셀은 제 2 뷰의 픽처에서의 대응하는 픽셀에 대해서, 제 1 뷰 및 제 2 뷰가 캡쳐되는 카메라 로케이션들을 다르게 하는 것에 관련된 특정의 디스패리티 벡터 만큼 변위될 수도 있다. 일부 예들에서, 디스패리티 벡터는 하나의 뷰로부터 또 다른 뷰까지 모션 정보 (참조 픽처 인덱스(들) 을 갖거나 또는 갖지 않는 모션 벡터(들)) 을 예측하는데 사용될 수 있다.
따라서, 코딩 효율을 추가로 향상시키기 위해, 비디오 코더는 또한 인터-뷰 모션 예측 및/또는 인터-뷰 잔차 예측을 적용할 수도 있다. 인터-뷰 모션 예측에 대해서, 비디오 코더는 상이한 제 2 뷰의 블록과 연관되는 모션 벡터에 대해, 하나의 뷰의 블록과 연관되는 모션 벡터를 코딩할 수도 있다. 그러나, 인터-뷰 모션 예측이 텍스쳐 뷰들에 사용되었지만, 인터-뷰 모션 예측이 심도 뷰들에 사용되지 않았다.
본 개시물의 기법들은 일반적으로 인터-뷰 모션 예측을 심도 뷰들에 적용하는 것에 관한 것이다. 여러 예들에서, 비디오 코딩 디바이스는 의존적인 심도 뷰에서 심도 블록의 이웃하는 심도 픽셀들로부터 디스패리티 벡터를 유도하는 본 기법들 중 하나 이상을 구현할 수도 있다. 결국, 비디오 코딩 디바이스는 베이스 심도 뷰로부터 (예컨대, 병합 리스트를 팝퓰레이트할) 모션 벡터 후보들을 유도하는데 디스패리티 벡터를 이용하는 기법들을 구현할 수도 있다. 본원에서 설명되는 기법들을 구현함으로써, 비디오 코딩 디바이스는 심도 베이스 뷰에 대한 이미-코딩된 모션 정보로부터 더 많은 개수의 모션 벡터 후보들을 레버리지함으로써, 의존적인 심도 뷰들에 대한 모션 벡터 예측의 정확도를 향상시킬 수도 있다. 다른 예들에서, 본 개시물의 기법들은 인터-뷰 모션 예측을 심도 뷰들에 적용함으로써 생성되는 모션 벡터 후보들을 이용한 병합 리스트 구성에 관한 것이다.
도 1 은 비디오 코딩에서 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 활용하도록 구성될 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1 에 나타낸 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의해 추후에 디코딩되는 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는 비디오 데이터를 목적지 디바이스 (14) 에 컴퓨터 판독가능 매체 (16) 를 통해서 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 소위 "스마트" 폰들과 같은 전화기 핸드셋들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들 중 임의의 디바이스를 포함할 수도 있다. 일부의 경우, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신용으로 탑재될 수도 있다.
목적지 디바이스 (14) 는 디코딩되는 인코딩된 비디오 데이터를 컴퓨터 판독가능 매체 (16) 를 통해서 수신할 수도 있다. 컴퓨터 판독가능 매체 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의 종류의 매체 또는 디바이스를 포함할 수도 있다. 일 예에서, 컴퓨터 판독가능 매체 (16) 는 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 로 실시간으로 송신할 수 있게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라서 변조되어 목적지 디바이스 (14) 로 송신될 수도 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적인 송신 라인들과 같은, 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 근거리 네트워크, 광역 네트워크, 또는 글로벌 네트워크, 예컨대 인터넷과 같은 패킷-기반 네트워크의 일부를 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터는 출력 인터페이스 (22) 로부터 저장 디바이스 (31) 와 같은, 저장 디바이스로 출력될 수도 있다. 이와 유사하게, 인코딩된 데이터는 입력 인터페이스 (28) 에 의해 저장 디바이스 (31) 로부터 액세스될 수도 있다. 저장 디바이스 (31) 는 하드 드라이브, Blu-ray 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비-휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 로컬 액세스되는 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수도 있다. 추가 예에서, 저장 디바이스 (31) 는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오를 유지할 수도 있는 파일 서버 또는 또 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는 저장된 비디오 데이터에 저장 디바이스로부터 스트리밍 또는 다운로드를 통해서 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로 송신하는 것이 가능한 임의 종류의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예컨대, 웹사이트용), FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해서, 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하는데 적합한, 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀 등), 또는 양쪽의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
본 개시물의 기법들은 반드시 무선 애플리케이션들 또는 설정들에 한정되지는 않는다. 이 기법들은 오버-디-에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 인터넷 스트리밍 비디오 송신들, 예컨대 HTTP 를 통한 동적 적응 스트리밍 (DASH), 데이터 저장 매체 상에 인코딩된 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은, 다양한 멀티미디어 애플리케이션들 중 임의의 애플리케이션의 지원 하에 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화 통신과 같은, 지원 애플리케이션들로의 단방향 또는 양방향 비디오 송신을 지원하도록 구성될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다.
도 1 의 예시된 시스템 (10) 은 단지 일 예이다. 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로 본 개시물의 기법들은 비디오 인코딩 디바이스에 의해 수행되지만, 그 기법들은 또한 "코덱" 으로서 일반적으로 지칭되는, 비디오 인코더/디코더에 의해 수행될 수도 있다. 더욱이, 본 개시물의 기법들은 또한 비디오 프리프로세서에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 단지 코딩 디바이스들의 예들이며, 여기서, 소스 디바이스 (12) 는 목적지 디바이스 (14) 로의 송신을 위해 코딩된 비디오 데이터를 생성한다. 일부 예들에서, 디바이스들 (12, 14) 는 디바이스들 (12, 14) 의 각각이 비디오 인코딩 및 디코딩 구성요소들을 포함하도록, 실질적으로 대칭적 방식으로 동작할 수도 있다. 그러므로, 시스템 (10) 은 예컨대, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화 통신을 위해, 비디오 디바이스들 (12, 14) 사이에 단방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡쳐 디바이스, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 비디오를 수신하는 비디오 공급 인터페이스를 포함할 수도 있다. 추가 대안적인 예로서, 비디오 소스 (18) 는 컴퓨터 그래픽스-기반의 데이터를 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합으로서 생성할 수도 있다. 어떤 경우, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 위에서 언급한 바와 같이, 본 개시물에서 설명하는 기법들은 비디오 코딩에 일반적으로 적용가능할 수도 있으며, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각 경우, 캡쳐되거나, 사전-캡쳐되거나, 또는 컴퓨터-생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 그 후 출력 인터페이스 (22) 에 의해 컴퓨터 판독가능 매체 (16) 상으로 출력될 수도 있다.
컴퓨터 판독가능 매체 (16) 는 무선 브로드캐스트 또는 유선 네트워크 송신과 같은 일시성 매체, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, Blu-ray 디스크, 또는 다른 컴퓨터 판독가능 매체들과 같은 저장 매체들 (즉, 비일시성 저장 매체들) 을 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 로, 예컨대, 네트워크 송신을 통해서 제공할 수도 있다. 이와 유사하게, 디스크 스탬핑 설비와 같은 매체 생산 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고 그 인코딩된 비디오 데이터를 포함하는 디스크를 제조할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는 여러 예들에서, 여러 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 컴퓨터 판독가능 매체 (16) 로부터 정보를 수신한다. 컴퓨터 판독가능 매체 (16) 의 정보는 블록들 및 다른 코딩된 유닛들, 예컨대, GOP들의 특성들 및/또는 프로세싱을 기술하는 신택스 엘리먼트들을 포함하는, 비디오 인코더 (20) 에 의해 정의되고 또한 비디오 디코더 (30) 에 의해 사용되는, 신택스 정보를 포함할 수도 있다. 디스플레이 디바이스 (32) 는 그 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 현재 개발중인 HEVC (High Efficiency Video Coding) 표준과 같은 비디오 코딩 표준에 따라서 동작할 수도 있으며, HEVC 테스트 모델 (HM) 을 일반적으로 따를 수도 있다. 이의 대안으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 MPEG 4, 파트 10, AVC (Advanced Video Coding) 로서 대안적으로 지칭되는 ITU-T H.264 표준, 또는 이런 표준들의 확장판들과 같은 다른 사유 (proprietary) 또는 산업 표준들에 따라서 동작할 수도 있다. 본 개시물의 기법들은, 그러나, 임의의 특정의 코딩 표준에 한정되지 않는다. 비디오 코딩 표준들의 다른 예들은 MPEG-2 및 ITU-T H.263 를 포함한다. 도 1 에 나타내지는 않지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 오디오 및 비디오 양쪽의 인코딩을 공통 데이터 스트림 또는 별개의 데이터 스트림들로 처리하기에 적합한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능한 경우, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 다른 프로토콜들, 예컨대, 사용자 데이터그램 프로토콜 (UDP) 을 따를 수도 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은 ISO/IEC 동화상 전문가 그룹 (MPEG) 과 함께, ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 조인트 비디오 팀 (JVT) 으로서 알려진 공동 파트너쉽의 성과로서, 정식화되었다. 일부 양태들에서, 본 개시물에서 설명하는 기법들은 일반적으로 H.264 표준에 따르는 디바이스들에 적용될 수도 있다. H.264 표준은 2005 년 3월, ITU-T 스터디 그룹에 의한, ITU-T 권고안 H.264, Advanced Video Coding for generic audiovisual services 에 설명되어 있으며, 본원에서 H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양으로서 지칭될 수도 있다. 조인트 비디오 팀 (JVT) 은 H.264/MPEG-4 AVC 에 대한 확장판들에 대해 계속 노력을 기울이고 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 임의의 이들의 조합들과 같은, 다양한 적합한 인코더 회로 중 임의의 회로로 구현될 수도 있다. 이 기법들이 소프트웨어로 부분적으로 구현되는 경우, 디바이스는 본 개시물의 기법들을 수행하기 위해 소프트웨어용 명령들을 적합한 비일시성 컴퓨터 판독가능 매체에 저장하고, 그 명령들을 하드웨어에서 하나 이상의 프로세서들을 이용하여 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 이들 중 어느 쪽이든 각각 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
본 개시물은 일반적으로 어떤 정보를 비디오 디코더 (30) 와 같은 또 다른 디바이스로 "시그널링하는" 비디오 인코더 (20) 를 언급할 수도 있다. 그러나, 비디오 인코더 (20) 는 어떤 신택스 엘리먼트들을 비디오 데이터의 여러 인코딩된 부분들과 연관시킴으로써 정보를 시그널링할 수도 있는 것으로 이해되어야 한다. 즉, 비디오 인코더 (20) 는 어떤 신택스 엘리먼트들을 비디오 데이터의 여러 인코딩된 부분들의 헤더들에 저장하여 데이터를 "시그널링할" 수도 있다. 일부의 경우, 이런 신택스 엘리먼트들은 비디오 디코더 (30) 에 의해 수신되어 디코딩되기 전에 인코딩되어 저장될 수도 있다 (예컨대, 저장 디바이스 (24) 에 저장될 수도 있다). 따라서, 용어 "시그널링" 은 일반적으로 압축된 비디오 데이터를 디코딩하기 위한 신택스 또는 다른 데이터의 통신을 지칭할 수도 있으며, 이런 통신이 인코딩 시에 신택스 엘리먼트들을 매체에 저장할 때에 일어날지도 모르는 것과 같이, 실시간으로 또는 거의-실시간으로 일어나든 또는 어떤 기간에 걸쳐서 일어나든, 이 신택스 엘리먼트들은 그 후 이 매체에 저장된 후 임의의 시간에 디코딩 디바이스에 의해 취출될 수도 있다.
일부의 경우, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 MPEG 4, 파트 10, AVC (Advanced Video Coding) 로서 대안적으로 지칭되는 ITU-T H.264 표준, 또는 이런 표준들의 확장판들과 같은 사유 (proprietary) 또는 산업 표준들에 따라서 동작할 수도 있다. ITU-T H.264/MPEG-4 (AVC) 표준은 ISO/IEC 동화상 전문가 그룹 (MPEG) 과 함께, ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 조인트 비디오 팀 (JVT) 으로서 알려진 공동 파트너쉽의 성과로서, 정식화되었다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 추가적으로 또는 대안적으로, HEVC WD8 와 같은, 또 다른 비디오 코딩 표준에 따라서 동작할 수도 있다. 더욱이, HEVC 에 대한 스케일러블 비디오 코딩, 멀티뷰 코딩, 및 3차원 비디오 (3DV) 확장판들을 만들려는 노력들이 진행중에 있다. 따라서, 일부 경우, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 멀티뷰 비디오 코딩을 수행할 수도 있다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 HEVC 의 멀티-뷰 확장판 (MV-HEVC 로서 지칭됨), 심도 향상된 HEVC-기반의 풀 3DV 코덱 (3D-HEVC 로서 지칭됨), 또는 HEVC 의 스케일러블 비디오 코딩 확장판 (SHEVC (스케일러블 HEVC) 로서 지칭됨)) 또는 HSVC (고효율 스케일러블 비디오 코딩) 을 구현할 수도 있다.
아래에서 설명되는 기법들은 위에서 언급한 HEVC 확장판들 중 하나 이상과 함께 구현될 수도 있다. 3D-HEVC 에 대해, 텍스쳐 및 심도 뷰들 양쪽에 대해, 코딩 유닛/예측 유닛 레벨에서의 툴들을 포함한, 새로운 코딩 툴들이 포함되고 지원될 수도 있다. 2013년 11월 21일 현재, 3D-HEVC (즉, 3D-HTM 버전 5.0) 에 대한 소프트웨어는 다음 링크로부터 다운로드될 수 있다: https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-5.0/.
2차원 비디오 데이터는 일반적으로 별개의 픽처들의 시퀀스로서 코딩되며, 그 별개의 픽처들의 시퀀스 각각은 특정의 시간 인스턴스에 대응한다. 즉, 각각의 픽처는 그 시퀀스에서의 다른 이미지들의 플레이백 시간들에 대한 연관된 플레이백 시간을 갖는다. 이들 픽처들은 텍스쳐 픽처들 또는 텍스쳐 이미지들로서 간주될 수도 있다. 심도 뷰 성분은 대응하는 텍스쳐 뷰 성분에서의 픽셀들의 상대적인 심도들을 나타낼 수도 있다. 일 예로서, 심도 뷰 성분은 오직 루마 값들을 포함하는 그레이 스케일 이미지이다. 다시 말해서, 심도 뷰 성분은 임의의 텍스쳐 이미지 콘텐츠를 전달하기 보다는, 심도 뷰 성분은 텍스쳐 뷰 성분에 정의된 상이한 픽셀들의 상대적인 심도들의 측정치를 제공할 수도 있다. 심도 뷰 성분들에서의 심도 값들은 제로 디스패리티 평면, 또는 어쩌면 일부 다른 참조에 대해 개개의 픽셀들의 심도를 정의할 수도 있다. 심도-기반 3D 비디오 코딩에서, 시퀀스에서의 각각의 텍스쳐 픽처는 또한 심도 맵에 대응할 수도 있다. 즉, 텍스쳐 픽처에 대응하는 심도 맵은 대응하는 텍스쳐 픽처에 대한 심도 데이터를 기술한다. 멀티뷰 비디오 데이터는 여러 상이한 뷰들에 대한 데이터를 포함할 수도 있으며, 여기서, 각각의 뷰는 텍스쳐 픽처들 및 대응하는 심도 픽처들의 개개의 시퀀스를 포함할 수도 있다.
심도 값들은 일반적으로 텍스쳐 데이터에 대응한다. 예를 들어, 심도 이미지는 대응하는 텍스쳐 데이터에 대한 심도 값들을 각각 기술하는 심도 픽셀들의 세트를 포함할 수도 있다. 심도 값들은 대응하는 텍스쳐 데이터에 대한 수평 디스패리티를 결정하는데 사용될 수도 있다. 따라서, 텍스쳐 데이터 및 심도 값들을 수신하는 디바이스는 하나의 뷰 (예컨대, 좌측 눈 뷰) 에 대한 제 1 텍스쳐 이미지를 디스플레이할 수도 있으며, 심도 값들을 이용하여, 심도 값들에 기초하여 결정되는 수평 디스패리티 값들 만큼 제 1 이미지의 픽셀 값들을 오프셋시킴으로써, 제 1 텍스쳐 이미지를 수정하여 다른 뷰 (예컨대, 우측 눈 뷰) 에 대한 제 2 텍스쳐 이미지를 생성할 수도 있다. 일반적으로, 수평 디스패리티 (또는, 간단히 "디스패리티") 는 우측 뷰에서의 대응하는 픽셀에 대한, 제 1 뷰에서의 픽셀의 수평 공간 오프셋을 기술하며, 여기서, 2개의 픽셀들은 2개의 뷰들에 표현되는 오브젝트와 동일한 오브젝트의 동일한 부분에 대응한다.
또한 다른 예들에서, 심도 값들은 주어진 픽셀과 연관되는 심도가 이미지에 대해 정의된 제로 디스패리티 평면 (zero disparity plane) 에 대해 정의되도록, 이미지 평면에 수직한 z-차원에서의 픽셀들에 대해 정의될 수도 있다. 이런 심도는 픽셀이 제로 디스패리티 평면에 대한 픽셀의 z-차원 심도 값에 따라서, 좌측 및 우측 눈들에 대해 상이하게 디스플레이되도록, 픽셀을 디스플레이하기 위해 수평 디스패리티를 생성하는데 사용될 수도 있다. 제로 디스패리티 평면은 비디오 시퀀스의 상이한 부분들에 대해 변할 수도 있으며, 제로-디스패리티 평면에 대한 심도의 양은 또한 변할 수도 있다. 제로 디스패리티 평면 상에 로케이트된 픽셀들은 좌측 및 우측 눈들에 대해 유사하게 정의될 수도 있다. 제로 디스패리티 평면의 전면 상에 로케이트된 픽셀들은, 픽셀이 이미지 평면에 수직한 z-방향으로 이미지로부터 나와서 나타나는 지각 (perception) 을 생성하기 위해, 좌측 및 우측 눈에 대해 상이한 로케이션들에서 (예컨대, 수평 디스패리티로) 디스플레이될 수도 있다. 제로 디스패리티 평면 뒤에 로케이트되는 픽셀들은 약간의 심도의 지각으로 약간 흐릿한 형체로 디스플레이될 수도 있거나, 또는 좌측 및 우측 눈에 대해 상이한 로케이션들에 (예컨대, 제로 디스패리티 평면의 전면에 로케이트되는 픽셀들의 수평 디스패리티와는 반대인 수평 디스패리티로) 디스플레이될 수도 있다. 여러 다른 기법들이 또한 이미지에 대한 심도 데이터를 전달하거나 또는 정의하는데 사용될 수도 있다.
개념적으로, 심도 뷰 성분에서의 순수 백색 픽셀은 대응하는 텍스쳐 뷰 성분에서의 대응하는 픽셀 또는 픽셀들이 뷰어의 관점으로부터 더 가깝다는 것을 나타내며, 심도 뷰 성분에서의 순수 블랙 픽셀은 대응하는 텍스쳐 뷰 성분에서의 대응하는 픽셀 또는 픽셀들이 뷰어의 관점으로부터 더 멀리 있다는 것을 나타낸다. 블랙과 백색 사이에서의 그레이의 여러 음영들은 상이한 심도 레벨들을 나타낸다. 예를 들어, 심도 뷰 성분에서의 순수 (very) 그레이 픽셀은 텍스쳐 뷰 성분에서의 대응하는 픽셀이 심도 뷰 성분에서의 약한 (slightly) 그레이 픽셀보다 더 멀리 있다는 것을 나타낸다. 오직 그레이 스케일이 픽셀들의 심도를 식별하는데 요구되기 때문에, 심도 뷰 성분은, 심도 뷰 성분에 대한 칼라 값들이 임의의 목적에 적합하지 않을 수도 있어, 크로마 성분들을 포함할 필요가 없다. 심도를 식별하는데 오직 루마 값들 (예컨대, 강도 값들) 을 이용하는 심도 뷰 성분은 예시 목적들을 위해 제공되며, 한정하는 것으로 간주되어서는 안된다.
좀더 일반적인 의미에서, 심도 뷰 성분들은 최소 값으로부터 최대 값까지 걸친 값들을 포함할 수도 있다. 하나의 특정의 참조의 프레임에 따라서, 최대 심도 값을 갖는 심도 뷰 성분에서의 픽셀은 텍스쳐 뷰 성분에서의 개개의 픽셀의 심도를, 낮은 값을 갖는 심도-뷰 성분에서의 픽셀에 대응하는 텍스쳐 뷰 성분에서의 픽셀에 대해 뷰어로부터 더 멀리 떨어져 있는 것으로 정의할 수도 있다. 그 결과, 최소 심도 값을 갖는 심도 뷰 성분에서의 픽셀은 텍스쳐 뷰 성분에서의 개개의 픽셀의 심도를, 더 높은 값을 갖는 심도-뷰 성분에서의 픽셀에 대응하는 텍스쳐 뷰 성분에서의 픽셀에 대해 뷰어에 더 가까운 것으로 정의할 수도 있다. 다른 예들에서, 참조의 프레임은 상이하게 정의될 수도 있다. 예를 들어, 참조의 프레임은 상대적으로 더 높은 값과 낮은 값의 의미가 뒤바뀌도록 정의될 수도 있다. 즉, 상대적으로 낮은 값들은 뷰어로부터 더 멀리 떨어져 있는 심도에 대응할 수도 있으며, 더 높은 값들은 그 뷰에 더 가까운 심도에 대응할 수도 있다. 다른 예들에서, 임의의 기법이 텍스쳐 뷰 성분에서의 픽셀들의 상대적인 심도들을 나타내는데 이용될 수도 있다.
일반적으로, HEVC 의 모션 보상 루프는 H.264/AVC 에서의 모션 보상 루프와 동일하다. 예를 들어, 모션 보상 루프에서 현재의 프레임 의 복원은 역양자화된 계수들 플러스 시간 예측 P 과 동일할 수도 있다:
상기 수식에서, P 는 P 프레임들에 대한 단방향-예측 인터 예측 또는 B 프레임들에 대한 양방향-예측 인터 예측을 나타낸다.
그러나, HEVC 에서의 모션 보상의 단위는 이전 비디오 코딩 표준들에서의 모션 보상의 단위와는 상이하다. 예를 들어, 이전 비디오 코딩 표준들에서 매크로블록의 컨셉이 HEVC 에 존재하지 않는다. 대신, 매크로블록들은 일반적인 쿼드트리 방식에 기초하여 유연한 계층적 구조로 대체된다. 이 방식에 의하면, 블록들의 3개의 유형들, 즉, 코딩 유닛들 (CUs), 예측 유닛들 (PUs), 및 변환 유닛들 (TUs) 이 정의된다. CU 는 영역 분할의 기본적인 단위이다. CU 의 컨셉은 매크로블록의 컨셉과 유사하며, 그러나 CU 는 최대 사이즈에 제한되지 않으며 CU 는 콘텐츠 적응성을 향상시키기 위해 4개의 동일-사이즈의 CU들로의 회귀적인 분할을 허용한다. PU 는 인터/인트라 예측의 기본적인 유닛이다. 일부 예들에서, PU 는 불규칙적인 이미지 패턴들을 효과적으로 코딩하기 위해 단일 PU 에 다수의 임의-형상의 파티션들을 포함할 수도 있다. TU 는 변환의 기본적인 단위이다. CU 의 TU들은 CU 의 PU들과는 따로 정의될 수 있다. 그러나, TU 의 사이즈는 TU 가 속하는 CU 에 제한된다. 이 3개의 상이한 컨셉들로의 블록 구조의 분리는 대응하는 역할에 따라서 각각 최적화될 수 있게 하여, 향상된 코딩 효율을 초래할 수도 있다.
HEVC 및 다른 비디오 코딩 사양들에서, 비디오 시퀀스는 일반적으로 일련의 픽처들을 포함한다. 픽처들은 또한 "프레임들" 로서 지칭될 수도 있다. 픽처는 SL, SCb, 및 SCr 로 표기되는, 3개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. SCb 는 Cb 색차 샘플들의 2차원 어레이이다. SCr 은 Cr 색차 샘플들의 2차원 어레이이다. 색차 샘플들은 또한 본원에서 "크로마" 샘플들로서 지칭될 수도 있다. 다른 경우, 픽처는 단색일 수도 있으며 단지 루마 샘플들의 어레이를 포함할 수도 있다.
픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 코딩 트리 유닛들 (CTUs) 의 세트를 생성할 수도 있다. CTU들의 각각은 루마 샘플들의 코딩 트리 블록, 크로마 샘플들의 2개의 대응하는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, CTU 는 단일 코딩 트리 블록 및 코딩 트리 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수도 있다. CTU 는 또한 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로서 지칭될 수도 있다. HEVC 의 CTU들은 H.264/AVC 와 같은, 다른 표준들의 매크로블록들과 대략 유사할 수도 있다. 그러나, CTU 는 특정의 사이즈에 반드시 제한되지 않으며, 하나 이상의 CU들을 포함할 수도 있다. 슬라이스는 래스터 스캔 순서로 연속적으로 순서화된 CTU들의 정수를 포함할 수도 있다.
코딩된 슬라이스는 슬라이스 헤더 및 슬라이스 데이터를 포함할 수도 있다. 슬라이스의 슬라이스 헤더는 슬라이스에 관한 정보를 제공하는 신택스 엘리먼트들을 포함하는 신택스 구조일 수도 있다. 슬라이스 데이터는 슬라이스의 코딩된 CTU들을 포함할 수도 있다
본 개시물은 하나 이상의 샘플 블록들 및 하나 이상의 샘플들의 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 지칭하기 위해, 용어 "비디오 유닛" 또는 "비디오 블록" 또는 "블록" 을 이용할 수도 있다. 비디오 유닛들 또는 블록들의 예시적인 유형들은 CTU들, CU들, PU들, 변환 유닛들 (TUs), 매크로블록들, 매크로블록 파티션들 등을 포함할 수도 있다. 일부 상황들에서, PU들의 논의는 매크로블록 파티션들의 매크로블록들의 논의와 상호교환될 수도 있다.
코딩된 CTU 를 생성하기 위해, 비디오 인코더 (20) 는 코딩 트리 블록들을 코딩 블록들, 따라서 이름 "코딩 트리 유닛들" 로 분할하기 위해 CTU 의 코딩 트리 블록들에 관해 쿼드-트리 파티셔닝을 회귀적으로 수행할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. CU 는 루마 샘플들의 코딩 블록 및 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 가지는 픽처의 크로마 샘플들의 2개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, CU 는 단일 코딩 블록 및 코딩 블록의 샘플들을 코딩하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비-정사각형) 블록이다. CU 의 PU 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2개의 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, PU 는 단일 예측 블록 및 예측 블록을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 비디오 인코더 (20) 는 CU 의 각각의 PU 의 루마, Cb, 및 Cr 예측 블록들에 대한 예측 루마, Cb, 및 Cr 블록들을 생성할 수도 있다. 그러므로, 본 개시물에서, CU 는 하나 이상의 PU들로 파티셔닝되는 것으로 말할 수도 있다. 설명의 용이성을 위해, 본 개시물은 PU 의 예측 블록의 사이즈를 간단히 PU 의 사이즈로서 지칭할 수도 있다.
비디오 인코더 (20) 는 인트라 예측 또는 인터 예측을 이용하여, PU 에 대한 예측 블록들을 생성할 수도 있다. 비디오 인코더 (20) 가 PU 의 예측 블록들을 생성하기 위해 인트라 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처의 샘플들에 기초하여 PU 의 예측 블록들을 생성할 수도 있다. 본 개시물에서, 어구 "에 기초하여" 는 "적어도 부분적으로 기초하여" 를 나타낼 수도 있다.
비디오 인코더 (20) 가 PU 의 예측 블록들을 생성하기 위해 인터 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처 이외의 하나 이상의 픽처들의 디코딩된 샘플들에 기초하여, PU 의 예측 블록들을 생성할 수도 있다. 인터 예측이 블록 (예컨대, PU) 의 예측 블록들을 생성하는데 사용되면, 본 개시물은 그 블록을 "인터-코딩되는" 또는 "인터 예측되는" 것으로 지칭할 수도 있다. 인터 예측은 단방향-예측적 (즉, 단방향-예측) 또는 양방향-예측적 (즉, 양방향-예측) 일 수도 있다. 단방향-예측 또는 양방향-예측을 수행하기 위해, 비디오 인코더 (20) 는 현재의 픽처 에 대한 제 1 참조 픽처 리스트 (RefPicList0) 및 제 2 참조 픽처 리스트 (RefPicList1) 를 생성할 수도 있다. 참조 픽처 리스트들의 각각은 하나 이상의 참조 픽처들을 포함할 수도 있다. 참조 픽처 리스트가 구성된 후 (즉, 이용가능하면, RefPicList0 및 RefPicList1), 참조 픽처 리스트로의 참조 인덱스가 참조 픽처 리스트에 포함된 임의의 참조 픽처를 식별하는데 사용될 수 있다.
단방향-예측을 이용할 때, 비디오 인코더 (20) 는 참조 픽처 내 참조 로케이션을 결정하기 위해 RefPicList0 및 RefPicList1 중 어느 하나 또는 양쪽에서 참조 픽처들을 탐색할 수도 있다. 더욱이, 단방향-예측을 이용할 때, 비디오 인코더 (20) 는 참조 로케이션에 대응하는 샘플들에 적어도 부분적으로 기초하여, PU 에 대한 예측 블록들을 생성할 수도 있다. 더욱이, 단방향-예측을 이용할 때, 비디오 인코더 (20) 는 PU 의 예측 블록과 참조 로케이션 사이의 공간 변위를 나타내는 단일 모션 벡터를 생성할 수도 있다. 모션 벡터는 PU 의 예측 블록과 참조 로케이션 사이의 수평 변위를 규정하는 수평 성분을 포함할 수도 있으며, PU 의 예측 블록과 참조 로케이션 사이의 수직 변위를 규정하는 수직 성분을 포함할 수도 있다.
PU 를 인코딩하는데 양방향-예측을 이용할 때, 비디오 인코더 (20) 는 RefPicList0 에서의 참조 픽처에서 제 1 참조 로케이션을, 그리고 RefPicList1 에서의 참조 픽처에서 제 2 참조 로케이션을 결정할 수도 있다. 비디오 인코더 (20) 는 제 1 및 제 2 참조 로케이션들에 대응하는 샘플들에 적어도 부분적으로 기초하여, PU 에 대한 예측 블록들을 생성할 수도 있다. 더욱이, PU 를 인코딩하기 위해 양방향-예측을 이용할 때, 비디오 인코더 (20) 는 PU 의 예측 블록과 제 1 참조 로케이션 사이의 공간 변위를 나타내는 제 1 모션 벡터, 및 PU 의 예측 블록과 제 2 참조 로케이션 사이의 공간 변위를 나타내는 제 2 모션 벡터를 생성할 수도 있다.
비디오 인코더 (20) 가 PU 의 예측 블록들을 생성하기 위해 인터 예측을 이용하면, 비디오 인코더 (20) 는 PU 와 연관되는 픽처 이외의 하나 이상의 픽처들의 샘플들에 기초하여 PU 의 예측 블록들을 생성할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 PU 에 관해 단방향 인터 예측 (즉, 단방향-예측) 또는 양방향 인터 예측 (즉, 양방향-예측) 을 수행할 수도 있다.
비디오 인코더 (20) 가 PU 에 관해 단방향-예측을 수행하는 경우에, 비디오 인코더 (20) 는 PU 의 모션 벡터에 기초하여, 참조 픽처에서 참조 로케이션을 결정할 수도 있다. 비디오 인코더 (20) 는 그 후 PU 에 대한 예측 블록을 결정할 수도 있다. PU 에 대한 예측 블록에서의 각각의 샘플은 참조 로케이션과 연관될 수도 있다. 일부 예들에서, PU 에 대한 예측 블록에서의 샘플은 샘플이 PU 와 동일한 사이즈를 가지는 샘플들의 블록 내에 있고 그의 좌상단 모서리가 참조 로케이션일 때 참조 로케이션과 연관될 수도 있다. 예측 블록에서의 각각의 샘플은 참조 픽처의 실제 또는 내삽된 샘플일 수도 있다.
예측 블록의 루마 샘플들이 참조 픽처의 내삽된 루마 샘플들에 기초하는 경우에, 비디오 인코더 (20) 는 8-탭 내삽 필터를 참조 픽처의 실제 루마 샘플들에 적용함으로써, 내삽된 루마 샘플들을 생성할 수도 있다. 예측 블록의 크로마 샘플들이 참조 픽처의 내삽된 크로마 샘플들에 기초하는 경우에, 비디오 인코더 (20) 는 4-탭 내삽 필터를 참조 픽처의 실제 크로마 샘플들에 적용함으로써, 내삽된 크로마 샘플들을 생성할 수도 있다. 일반적으로, 필터의 탭들 (taps) 의 개수는 필터를 수학적으로 표현하기 위해 요구되는 계수들의 개수를 나타낸다. 더 높은 탭 개수를 가진 필터는 일반적으로 낮은 탭 개수를 가진 필터보다 더 복잡하다.
비디오 인코더 (20) 가 PU 에 관해 양방향-예측을 수행하는 경우에, PU 는 2개의 모션 벡터들을 갖는다. 비디오 인코더 (20) 는 PU 의 모션 벡터들에 기초하여, 2개의 참조 픽처들에서 2개의 참조 로케이션들을 결정할 수도 있다. 비디오 인코더 (20) 는 그 후 위에서 설명된 방법으로, 2개의 참조 로케이션들과 연관되는 참조 블록들을 결정할 수도 있다. 비디오 인코더 (20) 는 그 후 PU 에 대한 예측 블록을 결정할 수도 있다. 예측 블록에서의 각각의 샘플은 참조 블록들에서의 대응하는 샘플들의 가중 평균일 수도 있다. 샘플들의 가중 (weighting) 은 PU 를 포함하는 픽처로부터의 참조 픽처들의 시간 거리들에 기초할 수도 있다.
비디오 인코더 (20) 는 CU 를 하나 이상의 PU들로 여러 파티셔닝 모드들에 따라서 파티셔닝할 수도 있다. 예를 들어, 인트라 예측이 CU 의 PU들에 대한 예측 블록들을 생성하는데 사용되면, CU 는 PART_2Nx2N 모드 또는 PART_NxN 모드에 따라서 파티셔닝될 수도 있다. PART_2Nx2N 모드에서, CU 는 단지 하나의 PU 를 갖는다. PART_NxN 모드에서, CU 는 직사각형의 예측 블록들을 가지는 4개의 동일-사이즈의 PU들을 갖는다. 인터 예측이 CU 의 PU들에 대한 예측 블록들을 생성하는데 사용되면, CU 는 PART_2Nx2N 모드, PART_NxN 모드, PART_2NxN 모드, PART_Nx2N 모드, PART_2NxnU 모드, PART_2NxuD 모드, PART_nLx2N 모드, 또는 PART_nRx2N 모드에 따라서 파티셔닝될 수도 있다. PART_2NxN 모드 및 PART_Nx2N 모드에서, CU 는 직사각형의 예측 블록들을 가지는 2개의 동일-사이즈의 PU들로 파티셔닝된다. PART_2NxnU 모드, PART_2NxuD 모드, PART_nLx2N 모드, 및 PART_nRx2N 모드의 각각에서, CU 는 직사각형의 예측 블록들을 가지는 2개의 비동일-사이즈의 PU들로 파티셔닝된다.
비디오 인코더 (20) 가 CU 의 하나 이상의 PU들에 대한 예측 루마, Cb, 및 Cr 블록들을 생성한 후, 비디오 인코더 (20) 는 CU 에 대한 루마 잔차 블록을 생성할 수도 있다. CU 의 루마 잔차 블록에서의 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에서의 루마 샘플과 CU 의 원래 루마 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낸다. 게다가, 비디오 인코더 (20) 는 CU 에 대한 Cb 잔차 블록을 생성할 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cb 블록들 중 하나에서의 Cb 샘플과 CU 의 원래 Cb 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 또한 CU 에 대한 Cr 잔차 블록을 생성할 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 원래 Cr 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다.
더욱이, 비디오 인코더 (20) 는 쿼드-트리 파티셔닝을 이용하여, CU 의 루마, Cb, 및 Cr 잔차 블록들을 하나 이상의 루마, Cb, 및 Cr 변환 블록들로 분해할 수도 있다. 변환 블록은 동일한 변환이 적용되는 샘플들의 직사각형의 (예컨대, 정사각형 또는 비-정사각형) 블록이다. CU 의 TU 는 루마 샘플들의 변환 블록, 크로마 샘플들의 2개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각각의 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록과 연관될 수도 있다. TU 와 연관되는 루마 변환 블록은 CU 의 루마 잔차 블록의 서브-블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3개의 별개의 칼라 평면들을 가지는 픽처들에서, TU 는 단일 변환 블록 및 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 루마 변환 블록에 적용하여, TU 에 대한 루마 계수 블록을 생성할 수도 있다. 계수 블록은 변환 계수들의 2차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 Cb 변환 블록에 적용하여, TU 에 대한 Cb 계수 블록을 생성할 수도 있다. 비디오 인코더 (20) 는 하나 이상의 변환들을 TU 의 Cr 변환 블록에 적용하여, TU 에 대한 Cr 계수 블록을 생성할 수도 있다.
계수 블록 (예컨대, 루마 계수 블록, Cb 계수 블록, 또는 Cr 계수 블록) 을 생성한 후, 비디오 인코더 (20) 는 계수 블록을 양자화할 수도 있다. 양자화는 일반적으로 변환 계수들을 나타내는데 사용되는 데이터의 양을 가능한 한 감축하기 위해 변환 계수들이 양자화되는 프로세스를 지칭하며, 추가적인 압축을 제공한다. 비디오 인코더 (20) 는 CU 와 연관되는 양자화 파라미터 (QP) 값에 기초하여 CU 의 TU 와 연관되는 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관되는 QP 값을 조정함으로써 CU 와 연관되는 계수 블록들에 적용되는 양자화의 정도를 조정할 수도 있다. 일부 예들에서, CU 와 연관되는 QP 값은 현재의 픽처 또는 슬라이스와 전체로서 연관될 수도 있다. 비디오 인코더 (20) 가 계수 블록을 양자화한 후, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 나타내는 신택스 엘리먼트들에 관해 컨텍스트-적응 2진 산술 코딩 (CABAC) 을 수행할 수도 있다.
비디오 인코더 (20) 는 비디오 데이터 (즉, 코딩된 픽처들 및 연관되는 데이터) 의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수도 있다. 비트스트림은 네트워크 추상화 계층 (NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 형태, 및 그 데이터를 미가공 바이트 시퀀스 페이로드 (RBSP) 의 유형으로 에뮬레이션 방지 비트들과 필요에 따라 섞어서 포함하는 바이트들의 표시를 포함하는 신택스 구조이다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함하며 RBSP 를 캡슐화한다. NAL 유닛 헤더는 NAL 유닛 유형 코드를 나타내는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 규정된 NAL 유닛 유형 코드는 NAL 유닛의 유형을 나타낸다. RBSP 는 NAL 유닛 내에 캡슐화된 정수의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부의 경우, RBSP 는 제로 비트들을 포함한다.
상이한 유형들의 NAL 유닛들이 상이한 유형들의 RBSP들을 캡슐화할 수도 있다. 예를 들어, 상이한 유형들의 NAL 유닛들은 비디오 파라미터 세트들 (VPSs), 시퀀스 파라미터 세트들 (SPSs), 픽처 파라미터 세트들 (PPSs), 코딩된 슬라이스들, SEI 등에 대해 상이한 RBSP들을 캡슐화할 수도 있다. (파라미터 세트들 및 SEI 메시지들에 대한 RBSP들과는 반대로) 비디오 코딩 데이터에 대한 RBSP들을 캡슐화하는 NAL 유닛들은 비디오 코딩 계층 (VCL) NAL 유닛들로서 지칭될 수도 있다.
HEVC 에서, SPS들은 코딩된 비디오 시퀀스 (CVS) 의 모든 슬라이스들에 적용되는 정보를 포함할 수도 있다. HEVC 에서, CVS 는 동시 디코딩 리프레시 (IDR) 픽처, 또는 깨진 링크 액세스 (BLA) 픽처, 또는 IDR 또는 BLA 픽처가 아닌 모든 후속 픽처들을 포함하여, 비트스트림에서 제 1 픽처인 깨끗한 무작위 액세스 (CRA) 픽처로부터 시작할 수도 있다. 즉, HEVC 에서, CVS 는 디코딩 순서에서, 비트스트림에서 제 1 액세스 유닛인 CRA 액세스 유닛, IDR 액세스 유닛 또는 BLA 액세스 유닛, 뒤이어서, 모든 후속 액세스 유닛들까지 포함하지만 임의의 후속 IDR 또는 BLA 액세스 유닛은 포함하지 않는 0개 이상의 비-IDR 및 비-BLA 액세스 유닛들로 이루어질 수도 있는 액세스 유닛들의 시퀀스를 포함할 수도 있다.
VPS 는 0개 이상의 전체 CVS들에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. SPS 는 SPS 가 활성일 때 활성인 VPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, VPS 의 신택스 엘리먼트들은 일반적으로 SPS 의 신택스 엘리먼트들보다 더 많이 적용가능할 수도 있다. PPS 는 0개 이상의 코딩된 픽처들에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. PPS 는 PPS 가 활성일 때 활성인 SPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 슬라이스의 슬라이스 헤더는 슬라이스가 코딩되고 있을 때 활성인 PPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성되는 비트스트림을 수신할 수도 있다. 게다가, 비디오 디코더 (30) 는 비트스트림을 파싱하여, 비트스트림으로부터 신택스 엘리먼트들을 획득할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 복원할 수도 있다. 비디오 데이터를 복원하는 프로세스는 일반적으로 비디오 인코더 (20) 에 의해 수행되는 프로세스와 반대일 수도 있다. 예를 들어, 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 블록들을 결정하기 위해 PU들의 모션 벡터들을 이용할 수도 있다. 게다가, 비디오 디코더 (30) 는 현재의 CU 의 TU들과 연관되는 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 계수 블록들에 관해 역변환들을 수행하여, 현재의 CU 의 TU들과 연관되는 변환 블록들을 복원할 수도 있다. 비디오 디코더 (30) 는 현재의 CU 의 PU들에 대한 예측 블록들의 샘플들을 현재의 CU 의 TU들의 변환 블록들의 대응하는 샘플들에 가산함으로써, 현재의 CU 의 코딩 블록들을 복원할 수도 있다. 픽처의 각각의 CU 에 대해 코딩 블록들을 복원함으로써, 비디오 디코더 (30) 는 그 픽처를 복원할 수도 있다.
일부 예들에서, 비디오 인코더 (20) 는 병합 모드 또는 진보된 모션 벡터 예측 (AMVP) 모드를 이용하여 PU 의 모션 정보를 시그널링할 수도 있다. 다시 말해서, HEVC 에서, 모션 파라미터들의 예측을 위한 2개의 모드들이 존재하며, 하나는 병합/스킵 모드이고 다른 하나는 AMVP 이다. 모션 예측은 하나 이상의 다른 비디오 유닛들의 모션 정보에 기초한 비디오 유닛 (예컨대, PU) 의 모션 정보의 결정을 포함할 수도 있다. PU 의 모션 정보 (즉, 모션 파라미터들) 는 PU 의 모션 벡터(들), PU 의 참조 인덱스(들), 및 하나 이상의 예측 방향 표시자들을 포함할 수도 있다.
비디오 인코더 (20) 가 병합 모드를 이용하여 현재의 PU 의 모션 정보를 시그널링할 때, 비디오 인코더 (20) 는 병합 후보 리스트를 생성한다. 다시 말해서, 비디오 인코더 (20) 는 모션 벡터 예측자 리스트 구성 프로세스를 수행할 수도 있다. 병합 후보 리스트는 현재의 PU 에 공간적으로 또는 시간적으로 이웃하는 PU들의 모션 정보를 나타내는 병합 후보들의 세트를 포함한다. 즉, 병합 모드에서, 모션 파라미터들 (예컨대, 참조 인덱스들, 모션 벡터들, 등) 의 후보 리스트는, 후보가 공간 및 시간 이웃하는 블록들로부터 유래할 수 있는 경우에 구성된다.
더욱이, 병합 모드에서, 비디오 인코더 (20) 는 병합 후보 리스트로부터 병합 후보를 선택할 수도 있으며 선택된 병합 후보에 의해 표시되는 모션 정보를 현재의 PU 의 모션 정보로서 이용할 수도 있다. 비디오 인코더 (20) 는 선택된 병합 후보의 병합 후보 리스트에서의 위치를 시그널링할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 그 선택된 병합 후보의 후보 리스트 내의 위치 (position) 를 나타내는 인덱스 (즉, 병합 후보 인덱스) 를 송신함으로써, 선택된 모션 벡터 파라미터들을 시그널링할 수도 있다.
비디오 디코더 (30) 는 비트스트림으로부터, 후보 리스트로의 인덱스 (즉, 병합 후보 인덱스) 를 획득할 수도 있다. 게다가, 비디오 디코더 (30) 는 동일한 병합 후보 리스트를 생성할 수도 있으며, 병합 후보 인덱스에 기초하여, 선택된 병합 후보를 결정할 수도 있다. 비디오 디코더 (30) 는 그 후 그 선택된 병합 후보의 모션 정보를 이용하여, 현재의 PU 에 대한 예측 블록들을 생성할 수도 있다. 즉, 비디오 디코더 (30) 는 후보 리스트 인덱스에 적어도 부분적으로 기초하여, 후보 리스트에서, 선택된 후보를 결정할 수도 있으며, 여기서, 선택된 후보는 현재의 PU 에 대한 모션 정보 (예컨대, 모션 벡터) 를 규정한다. 이러한 방법으로, 디코더 측에서, 일단 인덱스가 디코딩되면, 인덱스가 가리키는 대응하는 블록의 모든 모션 파라미터들은 현재의 PU 에 의해 상속될 수도 있다.
여러 예들에 따르면, 현재의 블록은 2N x 2N 의 치수들을 가질 수도 있으며, 여기서, 현재의 블록의 좌상부 모서리는 직교 좌표들 (x,y) 로 표시된다. 이들 예들에 따르면, 상부-좌측 이웃하는 샘플들의 부분은 좌표들 (x-1, y-1) 에 위치되거나 또는 아니면 기술된다. 이와 유사하게, 이들 예들에서, 좌하측 이웃하는 샘플들의 부분은 좌표들 (x-1, y+2N-1) 에 위치되거나 또는 아니면 기술된다. 게다가, 이들 예들에서, 상부-우측 이웃하는 샘플들의 부분은 좌표들 (x+2N-1, y-1) 에 의해 위치되거나 또는 아니면 기술된다.
비디오 인코더 (20) 는 식별된 이웃하는 샘플들 중 하나 이상과 연관되는 데이터를 이용하여, 의존적인 심도 뷰의 현재의 블록에 대한 심도 값을 유도할 수도 있다. 결국, 비디오 인코더 (20) 는 현재의 블록에 대한 유도된 심도 값을 이용하여, 현재의 비디오 블록에 대한 디스패리티 벡터를 획득할 수도 있다. 일부 예들에 따르면, 비디오 인코더 (20) 는 유도된 심도 값을 변환하여 현재의 비디오 블록에 대한 디스패리티 벡터를 획득할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 현재의 블록을 포함하는 픽처와 연관되는 하나 이상의 카메라 파라미터들과 같은, 여러 가용 데이터를 이용하여, 유도된 심도 값을 변환할 수도 있다. 결국, 비디오 인코더 (20) 는 획득된 디스패리티 벡터를 전체 현재의 블록과 연관시킬 수도 있다. 예를 들어, 현재의 블록이 의존적인 심도 뷰에서의 CU 를 나타내는 경우, 비디오 인코더 (20) 는 CU 의 모든 PU들에 걸쳐서 디스패리티 벡터를 공유시킬 수도 있다.
비디오 인코더 (20) 는 현재의 블록의 이웃하는 샘플들을 이용하여, 디스패리티 벡터를 여러 방법들로, 이웃하는 샘플들과 연관되는 특정의 조건들에 기초하여, 유도할 수도 있다. 예를 들어, 현재의 블록이 픽처의 좌상부 모서리에 로케이트되면, 어떤 현재의 블록의 이웃하는 샘플들도 이용불가능할 수도 있다. 현재의 블록이 픽처의 경계에 로케이트되는 예에서는, 3개의 이웃하는 샘플들 중 단지 하나 또는 2개가 이용될 수도 있다. 오직 하나의 이웃하는 샘플만이 이용가능한 경우에는, 비디오 인코더 (20) 는 하나의 이용가능한 이웃하는 샘플로부터 현재의 블록에 대한 심도 값을 상속할 (즉, 현재의 블록 전체에 대해 하나의 이용가능한 이웃하는 샘플로부터 유도된 심도 값을 활용할) 수도 있다. 어떤 이웃하는 샘플들도 이용불가능한 예들에서, 비디오 인코더 (20) 는 베이스 뷰로부터의 동일 위치에 배치된 블록을 이용하여 의존적인 심도 뷰에서 현재의 블록에 대한 모션 정보를 예측할 수도 있다. 좀더 구체적으로, 어떤 이웃하는 샘플들도 현재의 블록에 대해 이용가능한 예에서, 비디오 인코더 (20) 는 현재의 블록의 디스패리티 벡터를 제로 벡터로서 설정할 수도 있다. 이 예 및 다른 예들에서, 비디오 인코더는 현재의 블록과 연관되는 심도 값을 디폴트 심도 값으로 설정할 수도 있다. 비디오 인코더 (20) 가 이용할 수도 있는 디폴트 심도 값들의 예들은 제로 (0) 또는 백이십팔 (128) 의 값들을 포함한다.
모든 3개의 이웃하는 샘플들이 의존적인 심도 뷰에서 현재의 블록에 이용가능하다고 비디오 인코더 (20) 가 결정하는 예들에서, 비디오 인코더 (20) 는 모든 3개의 이웃하는 샘플들과 연관되는 심도 값들을 이용하여 현재의 블록에 대한 심도 값을 유도할 수도 있다. 여러 예들에서, 비디오 인코더 (20) 는 이용가능한 이웃하는 샘플들과 연관되는 심도 값들에 관해 다양한 계산들을 수행하여, 현재의 블록에 대한 심도 값을 유도할 수도 있다. 일부 예들에 따르면, 비디오 인코더 (20) 는 이웃하는 샘플들과 연관되는 심도 값들을 평균할 수도 있으며, 그 평균값을 현재의 블록에 대한 심도 값으로서 이용할 수도 있다. 일부의 경우, 비디오 인코더 (20) 는 3개의 심도 값들의 평균 값을 계산함으로써 평균값을 획득할 수도 있으며, 한편 다른 경우들에서는, 비디오 인코더 (20) 는 3개의 심도 값들의 메디안 및/또는 최빈수 (mode) 를 선택하여 평균값을 획득할 수도 있다.
논의의 목적들을 위해 모든 3개의 이웃하는 샘플들이 이용가능한 예들에 대해 위에서 설명하였지만, 비디오 인코더 (20) 가 2개의 이웃하는 샘플들이 현재의 블록에 대해 이용가능한 예들에서 본 개시물의 여러 기법들을 구현할 수도 있는 것으로 이해될 수 있을 것이다. 게다가, 논의의 목적들을 위해 이웃하는 샘플들 (즉, 상부-좌측, 상부-우측, 및 우하측 샘플들) 의 특정의 세트에 대해 위에서 설명하였지만, 비디오 인코더 (20) 는 현재의 블록에 이웃하지 않는 이웃하는 샘플들 및/또는 샘플들을 포함한, 샘플들의 여러 조합들을 이용하기 위해 본 개시물의 기법들을 구현할 수도 있다. 여러 예들에서, 비디오 인코더 (20) 는 현재의 블록에 대한 복원된 심도 값을 유도할 때에 사용될 샘플들의 특정의 세트를 선택할 때에 여러 가용 샘플들에 우선순위를 부여할 수도 있다.
여러 예들에 따르면, 비디오 인코더 (20) 는 3개의 이웃하는 샘플들과 연관되는 심도 값들로부터 현재의 블록의 심도 값을 유도하여 "가중 평균" 접근법을 구현할 수도 있다. 좀더 구체적으로, 비디오 인코더 (20) 는 각각의 이웃하는 샘플의 각각의 심도 값에 가중치를 각각 할당하고, 각각의 심도 값을 할당된 가중치로 곱하여, 3개의 가중된 결과 값들을 획득할 수도 있다. 결국, 비디오 인코더 (20) 는 3개의 결과 값들을 합산하고, 합계를 미리 결정된 상수 (예컨대, 16) 로 나누어서, 최종 값을 획득할 수도 있다. 비디오 인코더 (20) 는 최종 값을 현재의 블록에 대한 심도 값으로서 사용할 수도 있다.
가중 평균 접근법의 일부 구현예들에서, 비디오 인코더 (20) 는 각각의 이웃하는 샘플에 다음 상대적인 가중치들을 할당할 수도 있다: 상부-좌측 샘플에 대해 (5/16), 좌하측 샘플에 대해 (5/16), 그리고 상부-우측 샘플에 대해 (6/16). 이들 구현예들에 따르면, 비디오 인코더 (20) 는 다음 공식을 적용함으로써 심도 값들의 가중 평균을 계산할 수도 있다: [(P0 * 5) + (P1 * 5) + (P2 * 6)] / 16. 설명된 공식에서, P0, P1, 및 P2 는 상부-좌측, 좌하측, 및 상부-우측 샘플들의 심도 값들을 각각 표시한다. 게다가, 설명된 공식에서, 비디오 인코더 (20) 는 16 의 미리 결정된 상수를 사용하여, 가중된 결과들의 합계를 나눈다. 일부 예들에서, 비디오 인코더 (20) 는 오프셋 값을 3개의 결과 값들의 합계에 가산할 수도 있다. 예를 들어, 오프셋은 선택된 상수와 같은 미리 결정된 값, 또는 비디오 인코더 (20) 에 의해 실행되는 또 다른 공식의 출력 (output) 일 수도 있다. 일 예에서, 비디오 인코더 (20) 는 오프셋 값을 팔 (8) 의 값으로 설정할 수도 있다. 이 예에서, 비디오 인코더 (20) 는 다음 공식을 적용함으로써 심도 값들의 가중 평균을 계산할 수도 있다: [(P0 * 5) + (P1 * 5) + (P2 * 6) + 8] / 16. 가중치들, 오프셋, 및 미리 결정된 상수 (공식의 제수) 에 대해 특정의 값들이 위에서 설명되었지만, 여러 구현예들에서, 비디오 인코더 (20) 가 본 개시물의 가중 평균 계산에 사용되는 가중치들, 오프셋, 및/또는 미리 결정된 상수에 상이한 값들을 할당할 수도 있음을 명백히 알 수 있을 것이다.
비디오 인코더 (20) 는 미리 결정된 오프셋과 함께, P0, P1, 및 P2 의 특정의 값들에 적용되는 바와 같이, 최종 값을 의존적인 심도 뷰에서의 현재의 블록의 심도 값으로서 이용할 수도 있다. 결국, 비디오 인코더 (20) 는 설명된 공식으로부터 계산되는 바와 같이 그리고 옵션적으로는, 오프셋을 포함하여, 현재의 블록과 연관되는 심도 값을 변환하여, 현재의 블록에 대한 디스패리티 벡터를 유도할 수도 있다. 위에서 설명된 바와 같이, 비디오 인코더 (20) 는 카메라 파라미터들과 같은 데이터를 이용하여 유도된 심도 값을 디스패리티 벡터로 변환할 수도 있으며, 여기서 비디오 블록은 CU 를 나타내며, 비디오 인코더 (20) 는 유도된 디스패리티 벡터를 CU 의 모든 PU들에 적용할 수도 있다. 본원에서 설명되는 기법들 중 임의의 기법에 따라서 현재의 블록에 대해 유도된 심도 값은 또한 본 개시물에서 "복원된 심도 값" 으로서 지칭될 수도 있다.
본 개시물의 양태들에 따르면, 비디오 인코더 (20) 는 결국, 상기 기법들에 의해 유도되는 디스패리티 벡터를 이용하여, 현재의 픽처의 참조 계층 뷰 또는 베이스 뷰에 기초하여, 의존적인 심도 뷰에서의 현재의 블록에 대한 모션 정보를 유도할 수도 있다. 여러 예들에서, 비디오 인코더 (20) 는 참조 뷰에 기초하여, 의존적인 심도 뷰의 현재의 블록에 대한 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 유도할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 의존적인 심도 뷰의 현재의 블록과 연관되는 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 획득할 수도 있다. IDMVC 를 획득하기 위해, 비디오 인코더 (20) 는 위에서 설명된 기법들에 따라서 유도되는 디스패리티 벡터를 사용할 수도 있다. 좀더 구체적으로, 비디오 인코더 (20) 는 디스패리티 벡터를 디스패리티 모션 벡터로 변환하여, IDMVC 를 유도할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 디스패리티 벡터를 디스패리티 모션 벡터로 변환할 때에 하나 이상의 카메라 파라미터들을 적용할 수도 있다. IDMVC 는 베이스 심도 뷰에서의 비디오 데이터의 블록을 가리킬 수도 있다. IPMVC 를 획득하기 위해, 비디오 인코더 (20) 는 베이스 뷰에서의 대응하는 블록과 연관되는 모션 정보로부터 IPMVC 를 유도할 수도 있다. 일 예에서, 비디오 인코더 (20) 는 베이스 뷰에서의 대응하는 블록의 모션 정보를 복사함으로써 IPMVC 를 유도할 수도 있다. IPMVC 유도의 여러 경우들에서, 베이스 뷰로부터의 모션 정보는 공간 또는 시간일 수도 있다. IPMVC 및/또는 IDMVC 를 획득함으로써, 비디오 인코더 (20) 는 의존적인 심도 뷰의 현재의 블록에 대한 모션 벡터 후보들의 개수를 증가시키는 본 개시물의 기법들을 구현하여, 잠재적으로, 현재의 블록에 대한 모션 벡터 예측의 정확도를 향상시킬 수도 있다.
게다가, 비디오 인코더 (20) 는 IPMVC 및 IDMVC 를 의존적인 심도 뷰에서의 현재의 블록과 연관되는 병합 리스트에 삽입하는 본 개시물의 기법들을 구현할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 모션 벡터 상속 (MVI) 후보를 병합 리스트에서의 제 1 위치 (예컨대, 최고 우선순위를 갖는 위치 또는 이용의 최고 우도와 연관되는 위치 또는 최저 인덱스 값을 갖는 위치) 에 위치시킬 수도 있다. 비디오 인코더 (20) 는 IPMVC 를 MVI 후보 바로 뒤에 (즉, MVI 후보보다 더 높은 인덱스 값을 가지는 위치에), 예컨대, 병합 리스트에서의 제 2 위치에 위치시킬 수도 있다. 게다가, 비디오 인코더 (20) 는 IDMVC 를 IPMVC 바로 뒤에, 그리고, 병합 리스트에서의 제 1 공간 모션 벡터 후보 바로 이전에 위치시킬 수도 있다. 비디오 인코더 (20) 는 다수의 공간 모션 벡터 후보들을 IDMVC 뒤에 위치시킬 수도 있다. IPMVC 및 IDMVC 를 설명된 위치들에 포함시키기 위해, 병합 리스트를 위에서 설명된 순서로 구성함으로써, 비디오 인코더 (20) 는 베이스 뷰로부터의 인터-뷰 모션 벡터 후보들의 개수를 증가시키고 가능한 최대 내지 최소 (most-to-least likely) 분포를 좀더 알맞게 (more likely) 반영하기 위해 후보들을 순서정렬하여 인코딩 비트 오버헤드를 잠재적으로 감소시킴으로써, 심도-지향 모션 벡터 예측 정확도를 향상시키는 본 개시물의 기법들을 구현할 수도 있다. 기법들에 따른 병합 리스트 내 후보들의 다른 순서들 (또는, 우선순위화들) 은 본 개시물의 다른 부분들에서 설명된다.
지금까지 설명된 바와 같이, 본 개시물의 기법들은 일반적으로, 베이스 뷰를 이용하여 2개의 인터-뷰 모션 벡터 후보들 (즉, IPMVC 및 IDMVC) 을 생성하고, 양쪽의 후보들이 이용가능하면, 양쪽의 후보들을 의존적인 심도 뷰에서의 현재의 블록과 연관되는 병합 리스트에 추가하는 비디오 인코더 (20) 에 관한 것이다. 여러 본 개시물의 양태들에 따르면, 비디오 인코더 (20) 는 IPMVC 를 베이스 뷰로부터 유도할 수도 있으며, 그리고, 여러 조건들에 기초하여 베이스 뷰로부터 유도된 IPMVC 를 병합 리스트에 추가할 수도 있다. 일 예로서, 비디오 인코더 (20) 는 유도된 디스패리티 벡터를 공간적으로 (예컨대, 여러 오프셋들 만큼) 시프트하고, 그 시프트된 디스패리티 벡터를 이용하여, 시프트된 IPMVC 를 획득할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 시프트된 디스패리티 벡터를 이용하여, 베이스 뷰에서의 대응하는 블록을 로케이트할 수도 있다. 비디오 인코더 (20) 가 이와 같이 식별하여 성공적으로 로케이트하는 베이스 뷰 블록에 대해, 비디오 인코더 (20) 는 대응하는 베이스 뷰 블록과 연관되는 대응하는 시프트된 IPMVC 를 선택 풀 (pool) 에 추가할 수도 있다. 시프트된 디스패리티 벡터를 이용하여 유도된 IPMVC 는 본원에서 "시프트된 IPMVC" 로서 지칭된다.
일 예에서, 대응하는 베이스 뷰 블록들을 로케이트할 때 디스패리티 벡터를 시프트시키기 위해, 비디오 인코더 (20) 는 'M1' 으로 표시되는 수평 오프셋 및 'M2' 로 표시되는 수직 오프셋을 디스패리티 벡터에 적용할 수도 있다. 이 예에 따르면, 비디오 인코더 (20) 는 공식 (((폭/2)*4)+4) 을 적용하여 M1 의 값을, 그리고, 공식 (((높이/2)*4)+4) 을 적용하여 M2 의 값을 획득할 수도 있다. 의존적인 심도 뷰로부터의 현재의 블록이 CU 인 상기 예들에서, 값들 "폭" 및 "높이" 은 CU 의 현재의 PU 의 수평 및 수직 치수들을 각각 표시한다. M1 및 M2 를 유도하는 것에 대해 위에서 특정의 공식들이 설명되지만, 비디오 인코더 (20) 가 다른 기법들을 또한 이용하여도 M1 및 M2 를 유도할 수도 있는 것으로 이해될 것이다.
일부의 경우, 비디오 인코더 (20) 는 어떤 시프트된 IPMVC 도 이용불가능하다고 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 시프트된 디스패리티 벡터에 의해 식별된 베이스 뷰 블록이 인트라-코딩되거나 또는 인트라-예측되면, 어떤 시프트된 IPMVC 도 이용불가능하다고 결정할 수도 있다. 어떤 시프트된 IPMVC 도 이용불가능하다고 비디오 인코더 (20) 가 결정하는 이러한 예들에서, 비디오 인코더 (20) 는 하나 이상의 디스패리티 모션 벡터들 (DMVs) 을 이용하여, 본 개시물의 양태들에 따른, 병합 리스트를 팝퓰레이트할 모션 벡터 후보들을 생성할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 의존적인 심도 뷰에서의 현재의 블록의 공간 이웃하는 블록과 연관되는 DMV 를 선택하고 그 선택된 DMV 를 미리 결정된 오프셋 만큼 시프트시켜, 디스패리티 시프트된 모션 벡터 (DSMV) 후보를 획득할 수도 있다.
예를 들어, 비디오 인코더 (20) 는 공간 이웃하는 블록들과 연관되는 참조 픽처 리스트들의 세트를 조사할 수도 있다. 좀더 구체적으로, 위에서 설명된 공간 이웃하는 블록들의 각각은 RefPicList0 및 RefPicList1 을 포함할 수도 있다. 비디오 인코더 (20) 는 위에서 설명된 공간 이웃하는 블록들의 각각에 대해 개개의 RefPicList0 를 조사하여, 조사된 RefPicList0 인스턴스들 중 임의의 인스턴스가 디스패리티 모션 벡터 (DMV) 를 포함하는지 여부를 결정할 수도 있다. 비디오 인코더 (20) 가 조사된 RefPicList0 인스턴스들 중 하나에서 DMV 를 검출하면, 비디오 인코더 (20) 는 조사된 RefPicList0 인스턴스들로부터 이용가능한 DMV 를 선택할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 비디오 인코더 (20) 가 조사된 RefPicList0 인스턴스들로부터 검출하는 제 1 이용가능한 DMV 를 선택할 수도 있다. 결국, 비디오 인코더 (20) 는 선택된 DMV 의 수평 오프셋을 시프트시켜, DSMV 후보를 획득할 수도 있다. 게다가, DSMV 후보를 생성할 때에, 비디오 인코더 (20) 는 선택된 DMV 로부터 참조 인덱스들을 복사하거나 또는 "상속할" 수도 있다. 예를 들어, DSMV 후보가 MvC 로 표시되고 선택된 DMV 가 mv[0] 로 표시되는 경우, 비디오 인코더 (20) 는 다음 공식들을 이용하여 DSMV 후보를 유도할 수도 있다: MvC[0] = mv[0], MvC[1] = mv[1] 및 MvC[0][0]+= N, 여기서, 'N' 은 미리 결정된 상수 (또는, "고정된" 값) 이다. 비디오 인코더 (20) 가 이용할 수도 있는 N 의 예시적인 값들은 4, 8, 16, 32, 64, -4, -8, -16, -32, -64 를 포함한다.
일부 예들에서, 비디오 인코더 (20) 는 공간 이웃하는 블록들과 연관되는 RefPicList0 인스턴스들을 탐색하거나 또는 조사할 때 의존적인 심도 뷰의 공간 이웃하는 블록들과 연관되는 임의의 DMV들을 로케이트하지 않을 수도 있다. 이들 예들에서, 비디오 인코더 (20) 는 의존적인 심도 뷰에서의 공간 이웃하는 블록들과 연관되는 DMV들을 이용하여 DSMV 를 유도하지 않을 수도 있다. 대신, 어떤 DMV 후보도 대응하는 RefPicList0 인스턴스들 중 임의의 인스턴스 내에서 이용불가능하다고 비디오 인코더 (20) 가 결정하면, 비디오 인코더 (20) 는 병합 리스트에의 삽입을 위한 DSMV 후보를 획득하는 본 개시물의 대안 기법들을 구현할 수도 있다.
예를 들어, 비디오 인코더 (20) 가 공간 이웃하는 후보들과 연관되는 임의의 DMV들을 공간 이웃하는 후보들에 대응하는 RefPicList0 인스턴스들 중 임의의 인스턴스에 로케이트하지 않으면, 비디오 인코더 (20) 는 현재의 블록에 대해 계산된 디스패리티 벡터를 시프트시킴으로써 DSMV 후보를 유도할 수도 있다. 좀더 구체적으로, 비디오 인코더 (20) 는 오프셋을 디스패리티 벡터에 추가하고, 최종 시프트된 디스패리티 벡터를 DSMV 후보로서 이용할 수도 있다. 디스패리티 벡터가 DV 로 표시되는 경우, 비디오 인코더 (20) 는 다음 공식을 이용하여 DSMV 를 유도할 수도 있다: MvC[0] = DV 및 MvC[0][0]+= N; MvC[0][1] = 0 및 MvC[1] = DV 및 MvC[1][0]+= N; MvC[1][1]= 0. 비디오 인코더 (20) 는 4, 8, 16, 32, 64, -4, -8, -16, -32, 또는 -64 과 같은, 여러 값들을 N 에 할당할 수도 있다. 게다가, 비디오 인코더 (20) 는 MvC[X] 에 대응하는 참조 인덱스를 베이스 뷰에 속하는 RefPicListX (여기서, X 는 0 이외의 값을 표시한다) 에서의 픽처의 참조 인덱스로 설정할 수도 있다.
지금까지 설명된 여러 기법들에 따르면, 비디오 인코더 (20) 는 심도 뷰들 전체에 걸쳐서 인터-뷰 모션 예측을 적용하여, 의존적인 심도 뷰에서의 현재의 블록에 대해 3개의 추가적인 모션 벡터 후보들을 유도할 수도 있다. 즉, 비디오 인코더 (20) 는 심도 뷰들 전체에 걸쳐서 인터-뷰 모션 벡터 예측을 적용함으로써 의존적인 심도 뷰에서의 현재의 블록에 대해 IPMVC, IDMVC, 및 시프트된 IPMVC/DSMV 후보들을 유도할 수도 있다. 본원에서 설명되는 하나 이상의 기법들을 구현함으로써, 비디오 인코더 (20) 는 종래의 프로세스들에 따라서 생성된 모션 벡터 후보들의 개수보다 더 많은 개수의 모션 벡터 후보들을 생성함으로써 의존적인 심도 뷰들에 대한 모션 벡터 예측의 정확도를 향상시킬 수도 있다. 여러 예들에서, 비디오 인코더 (20) 는 심도 베이스 뷰로부터의 모션 정보를 레버지지함으로써, 코딩될 하나 이상의 의존적인 심도 뷰들 이전에 코딩될 수도 있는 더 많은 개수의 모션 벡터 후보들을 생성할 수도 있다. 이와 같이, 비디오 인코더 (20) 는 심도 베이스 뷰로부터의 이미-코딩된 모션 정보를 이용하여 증가된 개수의 모션 벡터 후보들을 생성함으로써 정확도 및/또는 강건성을 향상시키는 본 개시물의 기법들을 구현할 수도 있다.
결국, 비디오 인코더 (20) 는 위에서 설명한 바와 같이 획득된, IPMVC, IDMVC 및/또는 시프트된 IPMVC/DSMV 중 하나 이상을 잠재적으로 포함하는 병합 리스트를 구성하는 본 개시물의 기법들을 구현할 수도 있다. 병합 리스트에 포함된 모션 벡터 후보들 사이의 리던던시를 완화하거나 또는 제거하기 위해, 비디오 인코더 (20) 는 본원에서 "프루닝" 으로서 지칭되는 프로세스를 구현할 수도 있다. 본원에서 설명되는 바와 같이, 프루닝은 비디오 인코더 (20) 가 다수의 병합 리스트 후보들이 동일한지 여부를 체크할 수도 있으며, 결국, 동일한 후보들 중 하나 이상을 폐기하여 병합 리스트 내 리던던시를 제거할 수도 있는 하나 이상의 기법들을 지칭할 수도 있다. 프루닝 프로세스의 일부로서, 비디오 인코더 (20) 는 병합 리스트에의 삽입 이전에 2개의 이상의 병합 리스트 후보들의 모션 벡터들 및 참조 인덱스들을 서로에 대해 비교하고, 병합 리스트 후보들이 서로 동일하면 병합 리스트 후보들 중 하나 이상을 제거할 수도 있다. 구체적인 예들에서, 비디오 인코더 (20) 는 각각의 2개의 병합 리스트 후보들의 대응하는 특성들, 즉, 모션 벡터, 참조 인덱스 L0, 및 참조 인덱스 L1 을 비교할 수도 있다.
본 개시물의 기법들에 따르면, 비디오 인코더 (20) 는 속박된 프루닝 프로세스를 수행할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 IPMVC 를 모션 벡터 상속 (MVI) 후보와 비교하는 본 개시물의 속박된 프루닝 프로세스를 구현할 수도 있다. IPMVC 가 MVI 후보와 동일하면, 비디오 인코더 (20) 는 병합 리스트에 삽입하기 위한 선택된 것으로부터 IPMVC 를 폐기할 수도 있다. 이 예 및 다른 예들에서, 비디오 인코더 (20) 는 IDMVC 를 병합 리스트에 대해 생성된 공간 병합 후보들의 각각과 비교하는 속박된 프루닝을 구현할 수도 있다. 이와 유사하게, 비디오 인코더 (20) 는 IDMVC 가 공간 병합 후보들 중 임의의 후보와 매칭하면 (즉, 동일하면) 병합 리스트에 대한 선택된 것으로부터 IDMVC 를 폐기할 수도 있다. 게다가, 비디오 인코더 (20) 는 시프트된 IPMVC 가 생성되었으면, IPMVC 에 대해 시프트된 IPMVC 를 비교할 수도 있으며, 시프트된 IPMVC 를 폐기할 수도 있다.
대안적으로, 시프트된 IPMVC 가 생성되지 않았으면, 위에서 설명한 바와 같이, 비디오 인코더 (20) 는 DSMV 후보에 액세스할 수도 있다. 이 예에서, 비디오 인코더 (20) 는 프루닝 목적들을 위해 임의의 다른 후보들에 대해 DSMV 를 비교함이 없이 DSMV 를 병합 리스트에 삽입할 수도 있다. 시프트된 IPMVC 가 이용가능하였지만 IPMVC 에 대한 프루닝에 기초하여 폐기된 경우들에서는, 비디오 인코더 (20) 는 임의의 후보를 병합 리스트의 최종 위치에 삽입하지 않을 수도 있다. 이와 같이, 비디오 인코더 (20) 는 본원에서 설명하는 바와 같은 심도-지향 인터-뷰 모션 예측을 이용하여 생성된 추가적인 모션 벡터 후보들을 포함하는 병합 리스트를 구성하는 속박된 프루닝 프로세스를 구현할 수도 있다.
각각의 후보에 대해 인덱스 값들로 접두사로 형성된, 비디오 인코더 (20) 에 의해 구성된 바와 같은, 예시적인 병합 리스트 순서는 다음과 같다:
0. MVI 후보
1. 본원에서 설명되는 기법들에 의해 생성되는 바와 같은 IPMVC, 그리고 MVI 후보에 대한 프루닝을 통해 폐기되지 않는 경우
2. 본원에서 설명되는 기법들에 의해 생성되는 바와 같은 IDMVC, 그리고 공간 후보 A1 또는 공간 후보 B1 에 대한 프루닝을 통해 폐기되지 않는 경우
3. 공간 후보 A0
4. 공간 후보 B2
5. 본원에서 설명되는 기법들에 의해 생성되는 바와 같은 시프트된 IPMVC (이용가능하고 IPMVC 에 대한 프루닝을 통해 폐기되지 않는 경우), 또는 DSMV (시프트된 IPMVC 가 이용불가능한 경우), 또는 후보 없음 (예컨대, 시프트된 IPMVC 가 이용가능하였지만, IPMVC 에 대해 프루닝을 통해 폐기된 경우).
위에서 설명된 예시적인 병합 리스트에서, 인덱스 값들은 대응하는 후보들의 상대적인 위치들을 나타낸다. 일 예시적인 관점에 따르면, 인덱스 값 0 은 병합 리스트 내의 초기 위치에 대응하고, 인덱스 값 1 은 병합 리스트 내 제 2 위치에 대응하며, 그리고 기타 등등으로 대응하며, 인덱스 값 5 는 병합 리스트 내 최종 위치에 대응한다. 게다가, 비디오 인코더 (20) 는 가장 가능성있는 후보 (예컨대, 선택될 최고 확률을 갖는 후보) 를 인덱스 0 에 위치시키도록 병합 리스트를 구성할 수도 있다. 좀더 구체적으로, 비디오 인코더 (20) 는 후보들을 선택될 우도의 내림 차순으로, 인덱스 0 으로부터 인덱스 5 까지의 위치들에 대응하여, 위치시킬 수도 있다. 이와 같이, 비디오 인코더 (20) 는 2진수들로서 표현되도록, 단지 단일 비트만을 필요로 하는 0 및 1 값들에 기초하여, 시그널링 동안 비트 오버헤드를 감소시킬 수도 있다.
게다가, 비디오 인코더 (20) 는 현재의 블록에 대한 모션 정보를 인코딩할, 병합 리스트로부터 모션 벡터 후보들 중 하나를 선택할 수도 있다. 결국, 비디오 인코더 (20) 는 선택된 모션 벡터 후보의 인덱스를 비디오 디코더 (30) 로 시그널링할 수도 있다. 비디오 디코더 (30) 는 비디오 인코더 (20) 에 관하여 위에서 설명된 기법들 중 하나 이상을 구현하여, 하나 이상의 심도-지향 인터-뷰 모션 벡터 후보들을 생성할 수도 있다. 비디오 디코더 (30) 는 심도-지향 인터-뷰 모션 벡터 후보들 중 하나 이상을 잠재적으로 포함하는 병합 리스트 중 적어도 일부분을 재구성하는 본 개시물의 하나 이상의 기법들을 구현할 수도 있으며, 디코딩 목적들을 위해 비디오 인코더 (20) 에 의해 시그널링되는 인덱스를 이용하여 동일한 모션 벡터 후보를 선택할 수도 있다. 좀더 구체적으로, 본 개시물의 하나 이상의 양태들에 따르면, 비디오 인코더 (20) 에 의해 시그널링되는 인덱스와 연관되는 모션 벡터 후보를 선택함으로써, 비디오 디코더 (30) 는 심도-지향 인터-뷰 모션 정보를 이용하여 의존적인 심도 뷰에서의 현재의 블록을 디코딩함으로써, 현재의 블록의 모션 정보의 정확도 및 강건성을 향상시킬 수도 있다.
본원에서 설명되는 바와 같이, 비디오 인코더 (20) 또는 비디오 디코더 (30) 중 하나 또는 양자는 비디오 데이터를 코딩하는 디바이스를 나타내거나, 포함하거나, 또는 그의 일부일 수도 있으며, 그 디바이스는 메모리 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하며; 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하도록, 구성되거나 또는 아니면 동작가능할 수도 있다. 하나 이상의 프로세서들은 디스패리티 벡터를 이용하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하고; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하며;, IDMVC 및 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하도록, 더 구성되거나 또는 동작가능할 수도 있다. 여러 예들에서, IDMVC 또는 IPMVC 중 임의의 것을 병합 후보 리스트에 추가할지 여부를 결정하기 위해, 하나 이상의 프로세서들은 병합 후보 리스트에 IDMVC 또는 IPMVC 중 하나를, 양쪽을 추가할지, 또는 어느 것도 추가하지 않을지 여부를 결정하도록 구성되거나 또는 동작가능할 수도 있다. 일부 예들에서, 심도 값을 결정하기 위해, 하나 이상의 프로세서들은 하나 이상의 이웃하는 픽셀들과 연관되는 값들의 가중 평균을 계산하도록 구성된다. 일부 예들에 따르면, 하나 이상의 이웃하는 픽셀들은 비디오 데이터의 블록에 대해 상부-좌측 픽셀, 상부-우측 픽셀, 및 우하측 픽셀을 포함한다. 일부 예들에서, 가중 평균을 계산하기 위해, 하나 이상의 프로세서들은 상부-좌측 픽셀, 상부-우측 픽셀, 및 우하측 픽셀에 오 (5), 육 (6), 및 오 (5) 의 가중치들을 각각 적용하여, 복수의 가중된 값들을 획득하도록 구성된다.
여러 예들에 따르면, 가중 평균을 계산하기 위해, 하나 이상의 프로세서들은 복수의 가중된 값들에 기초하여 합계를 구하고, 그리고 오프셋 값 및 합계에 기초하여 오프셋 합계를 획득하도록 구성된다. 일부 예들에서, 가중 평균을 계산하기 위해, 하나 이상의 프로세서들은 오프셋 합계를 미리 결정된 값으로 나누도록 구성된다. 일부 예들에서, 오프셋 값은 팔 (8) 의 값을 포함하며, 미리 결정된 값은 십육 (16) 의 값을 포함한다. 일부 예들에서, 심도 값을 결정하기 위해, 하나 이상의 프로세서들은 하나 이상의 이웃하는 픽셀들과 연관되는 평균 값, 메디안 값, 또는 최빈 값 중 적어도 하나를 계산하도록 구성된다. 일부 예들에 따르면, 비디오 데이터의 블록은 코딩 유닛 (CU) 이며, 생성된 디스패리티 벡터가 CU 에 포함된 모든 예측 유닛들 (PUs) 에 적용된다.
여러 예들에서, IPMVC 를 생성하기 위해, 하나 이상의 프로세서들은 비디오 데이터의 블록의 베이스 뷰로부터 IPMVC 를 유도하도록 구성된다. 일부 예들에 따르면, 하나 이상의 프로세서들은 디스패리티 벡터를 공간적으로 시프트시켜 시프트된 디스패리티 벡터를 형성하고, 시프트된 디스패리티 벡터를 이용하여 베이스 뷰에서의 비디오 데이터의 대응하는 블록을 로케이트하도록 더 구성된다. 일부 예들에서, 하나 이상의 프로세서들은 그 시프트된 IPMVC 가 로케이트된 베이스 뷰에서의 비디오 데이터의 대응하는 블록으로부터 이용가능한지 여부를 결정하고, 시프트된 IPMVC 가 이용가능하다는 결정에 기초하여, 시프트된 IPMVC 를 병합 리스트에 추가할지 여부를 결정하도록 더 구성된다.
일부 예들에 따르면, 현재의 블록의 하나 이상의 공간 이웃하는 블록들의 각각은 개개의 참조 픽처 리스트 0 및 개개의 참조 픽처 리스트 1 과 연관된다. 이러한 일부 예들에서, 하나 이상의 프로세서들은 시프트된 IPMVC 가 베이스 뷰로부터 이용불가능하고 결정하고, 공간 이웃하는 블록들과 연관되는 적어도 하나의 개개의 참조 픽처 리스트 0 이 디스패리티 모션 벡터를 포함하는지 여부를 결정하도록 더 구성된다. 이러한 일부 예들에서, 하나 이상의 프로세서들은 공간 이웃하는 블록들과 연관되는 적어도 하나의 개개의 참조 픽처 리스트 0 이 디스패리티 모션 벡터를 포함한다는 결정에 기초하여, 개개의 참조 픽처 리스트 0 에 포함된 디스패리티 모션 벡터의 수평 성분를 시프트시켜 디스패리티 시프트된 모션 벡터 (DSMV) 후보를 형성하도록 구성된다. 하나의 이런 예에서, 하나 이상의 프로세서들은 DSMV 후보를 병합 리스트에 추가하도록 구성된다.
일부 예들에서, 하나 이상의 프로세서들은 어떤 개개의 참조 픽처 리스트들 0 도 디스패리티 모션 벡터를 포함하지 않는다고 결정하고, 오프셋 값을 디스패리티 벡터에 적용하여 DSMV 후보를 형성하고, DSMV 후보를 병합 리스트에 적용하도록 더 구성된다. 일부 예들에 따르면, 심도 값을 결정하기 위해, 하나 이상의 프로세서들은, 하나 이상의 이웃하는 픽셀들이 오직 하나의 이용가능한 이웃하는 픽셀을 포함한다고 결정하고, 그리고, 하나의 이용가능한 이웃하는 픽셀의 심도 값을 상속하여 비디오 데이터의 블록의 심도 값을 형성하도록 구성된다. 일부 예들에서, 하나 이상의 프로세서들은, 어떤 하나 이상의 이웃하는 픽셀들도 이용불가능하다고 결정하고, 그리고, 디스패리티 벡터를 생성하도록 더 구성되며, 하나 이상의 프로세서들은 디스패리티 벡터를 제로 벡터로 설정하는 것 또는 비디오 데이터의 블록과 연관되는 심도 값을 디폴트 심도 값으로 설정하는 것 중 적어도 하나를 수행하도록 구성된다.
비디오 인코더 (20) 및/또는 비디오 디코더 (30) 중 하나 또는 양자는 비디오 데이터를 코딩하는 디바이스를 나타내거나, 포함하거나, 또는 그의 일부일 수도 있으며, 그 디바이스는 메모리; 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하도록 구성되거나 또는 아니면 동작가능할 수도 있으며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 하나 이상의 프로세서들은 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하도록 더 구성되거나 또는 동작가능할 수도 있다. 일부 예들에서, IPMVC 를 병합 리스트에 추가하기 위해, 하나 이상의 프로세서들은 MVI 후보가 병합 후보 리스트에의 추가에 이용불가능한 것에 기초하여 IPMVC 를 병합 후보 리스트 내의 초기 위치에 삽입하는 것, 또는 MVI 후보가 병합 후보 리스트에의 추가에 이용가능한 것에 기초하여 IPMVC 를 병합 후보 리스트 내 MVI 후보의 위치에 뒤따르는 병합 후보 리스트 내의 위치에 삽입하는 것 중 하나를 수행하도록 더 구성된다. 여러 예들에서, 초기 위치는 제로 (0) 의 인덱스 값과 연관된다.
일부 예들에 따르면, IPMVC 를 MVI 후보와 비교하기 위해, 하나 이상의 프로세서들은 IPMVC 와 연관되는 모션 정보를 MVI 후보와 연관되는 대응하는 모션 정보와 비교하고, IPMVC 와 연관되는 적어도 하나의 참조 인덱스를 MVI 후보와 연관되는 적어도 하나의 대응하는 참조 인덱스와 비교하도록 구성된다. 일부 예들에서, 하나 이상의 프로세서들은 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 병합 후보 리스트와 연관되는 제 1 공간 후보 및 병합 후보 리스트와 연관되는 제 2 공간 후보 중 이용가능한 하나 이상과 비교하도록 더 구성되거나 또는 동작가능하며, 여기서, IDMVC, 제 1 공간 후보, 및 제 2 공간 후보의 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, IDMVC 는 비디오 데이터의 블록과 연관되는 디스패리티 벡터로부터 생성된다. 일부 이러한 예들에서, 하나 이상의 프로세서들은 IDMVC 가 제 1 공간 후보 및 제 2 공간 후보 중 이용가능한 하나 이상의 각각과는 상이한 것에 기초하여 IDMVC 를 병합 후보 리스트를 추가하는 것, 또는 IDMVC 가 제 1 공간 후보 또는 제 2 공간 후보 중 적어도 하나와 동일한 것에 기초하여 병합 후보 리스트로부터 IDMVC 를 제외시키는 것 중 하나를 수행하도록 구성되거나 또는 아니면 동작가능하다.
일부 예들에서, IDMVC 를 병합 후보 리스트에 추가하기 위해, 하나 이상의 프로세서들은 IDMVC 를 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하도록 구성되거나 동작가능하다. 이러한 일부 예들에서, IDMVC 를 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하기 위해, 하나 이상의 프로세서들은 IDMVC 를 제 1 공간 후보의 위치 또는 제 2 공간 후보의 위치 중 적어도 하나에 뒤따르는 위치에 삽입하도록 구성되거나 또는 동작가능하다. 일부 예들에 따르면, 하나 이상의 프로세서들은 시프트된 IPMVC 가 이용가능하다고 결정하도록 더 구성되거나 또는 동작가능하며, 여기서, 시프트된 IPMVC 는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 시프트된 IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 이러한 일부 예들에서, 하나 이상의 프로세서들은 시프트된 IPMVC 를 IPMVC 와 비교하도록 더 구성되거나 또는 동작가능하다.
일부 예들에 따르면, 하나 이상의 프로세서들은 시프트된 IPMVC 가 IPMVC 와는 상이한 것 및 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, 시프트된 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 와 동일한 시프트된 IPMVC 에 기초하여, 병합 후보 리스트로부터 시프트된 IPMVC 를 제거시키는 것 중 하나를 수행하도록 더 구성된다. 일부 예들에서, 하나 이상의 프로세서들은 디스패리티 시프트된 모션 벡터 (DSMV) 후보가 이용가능하다고 결정하도록 더 구성되며, 여기서, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들을 이용하여 생성된다. 일부 예들에 따르면, 하나 이상의 프로세서들은 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, DSMV 후보를 병합 후보 리스트에 추가하도록 더 구성되거나 또는 동작가능하다.
일부 예들에서, DSMV 후보를 병합 후보 리스트에 추가하기 위해, 하나 이상의 프로세서들은 DSMV 후보를, 1) 병합 후보 리스트에 포함된 공간 후보의 위치에 뒤따르는 위치, 및 2) 병합 후보 리스트에 포함된 시간 후보의 위치에 선행하는 위치에 삽입하도록 구성된다. 일부 예들에 따르면, DSMV 후보가 이용가능하다고 결정하기 위해, 하나 이상의 프로세서들은 시프트된 IPMVC 가 이용불가능하다고 결정하는 것에 응답하여 DSMV 후보가 이용가능하다고 결정하도록 구성되거나 또는 동작가능하며, 여기서, 시프트된 IPMVC 는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 시프트된 IPMVC 는 비디오 데이터의 블록의 베이스 뷰로부터 생성된다.
일부 예들에 따르면, DSMV 후보는 하나 이상의 공간 이웃하는 샘플들 중 적어도 하나의 공간 이웃하는 샘플과 연관되는 참조 픽처 리스트 0 (RefPicList0) 으로부터 선택되는 디스패리티 모션 벡터 (DMV) 를 포함한다. 일부 예들에서, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 디스패리티 벡터의 시프팅에 기초하여 생성되며, 디스패리티 벡터는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들과 연관되는 하나 이상의 심도 값들로부터 생성된다.
도 2 는 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용할 수도 있는 비디오 인코더 (20) 의 일 예를 예시하는 블록도이다. 비디오 인코더 (20) 는 비디오 슬라이스들 내 비디오 블록들의 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 인트라 코딩은 주어진 비디오 프레임 또는 픽처 내 비디오에서 공간 리던던시를 감소시키거나 또는 제거하기 위해, 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접 프레임들 또는 픽처들 내 비디오에서 시간 리던던시를 감소시키거나 또는 제거하기 위해, 시간 예측에 의존한다. 인트라-모드 (I 모드) 는 여러 공간 기반의 압축 모드들 중 임의의 코딩 모드를 지칭할 수도 있다. 단방향 예측 (P 모드) 또는 양방향-예측 (B 모드) 과 같은 인터-모드들은 여러 시간-기반의 코딩 모드들 중 임의의 모드를 지칭할 수도 있다.
도 2 에 나타낸 바와 같이, 비디오 인코더 (20) 는 인코딩되는 비디오 프레임 내 현재의 비디오 블록을 수신한다. 도 2 의 예에서, 비디오 인코더 (20) 는 모드 선택 유닛 (40), 참조 프레임 메모리 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 코딩 유닛 (56) 을 포함한다. 모드 선택 유닛 (40) 은, 결과적으로, 모션 보상 유닛 (44), 모션 추정 유닛 (42), 인트라-예측 유닛 (46), 및 파티션 유닛 (48) 을 포함한다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 또한 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 포함한다. 디블록킹 필터 (도 2 에 미도시) 가 또한 블록 경계들을 필터링하여 복원된 비디오로부터 블록킹 현상 아티팩트들을 제거하기 위해 포함될 수도 있다. 원할 경우, 디블록킹 필터는 일반적으로 합산기 (62) 의 출력을 필터링할 것이다. (인 루프 또는 사후 루프에서) 추가적인 필터들이 또한 디블록킹 필터에 추가하여 사용될 수도 있다. 이러한 필터들은 간결성을 위해 도시되지 않지만, 그러나 원할 경우, 합산기 (50) 의 출력을 (인-루프 필터로서) 필터링할 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 시간 예측을 제공하기 위해 하나 이상의 참조 프레임들에서 하나 이상의 블록들에 대해 그 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 인트라-예측 유닛 (46) 은 대안적으로, 공간 예측을 제공하기 위해, 코딩되는 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대한 수신된 비디오 블록의 인트라-예측 코딩을 수행할 수도 있다. 비디오 인코더 (20) 는 예컨대, 비디오 데이터의 각각의 블록에 대해 적합한 코딩 모드를 선택하기 위해, 다수의 코딩 패스들 (passes) 을 수행할 수도 있다.
더욱이, 파티션 유닛 (48) 은 이전 코딩 패스들에서의 이전 파티셔닝 방식들의 평가에 기초하여, 비디오 데이터의 블록들을 서브-블록들로 파티셔닝할 수도 있다. 예를 들어, 파티션 유닛 (48) 은 레이트-왜곡 분석 (예컨대, 레이트-왜곡 최적화) 에 기초하여, 처음에 프레임 또는 슬라이스를 LCU들로 파티셔닝하고, LCU들의 각각을 서브-CU들로 파티셔닝할 수도 있다. 모드 선택 유닛 (40) 은 서브-CU들로의 LCU 의 파티셔닝을 나타내는 쿼드트리 데이터 구조를 추가로 생성할 수도 있다. 쿼드트리의 리프-노드 CU들은 하나 이상의 PU들 및 하나 이상의 TU들을 포함할 수도 있다.
모드 선택 유닛 (40) 은 에러 결과들에 기초하여 코딩 모드들, 즉 인트라 또는 인터 중 하나를 선택할 수도 있으며, 그리고, 최종 인트라- 또는 인터-코딩된 블록을 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성할 수도 있으며, 그리고 합산기 (62) 에 제공하여 참조 프레임으로서 사용을 위한 인코딩된 블록을 복원할 수도 있다. 모드 선택 유닛 (40) 은 또한 모션 벡터들, 인트라-모드 표시자들, 파티션 정보, 및 다른 이러한 신택스 정보와 같은, 신택스 엘리먼트들을 엔트로피 코딩 유닛 (56) 에 제공한다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적들을 위해 별개로 예시된다. 모션 추정 유닛 (42) 에 의해 수행되는 모션 추정은 모션 벡터들을 생성하는 프로세스이며, 이 프로세스는 비디오 블록들에 대한 모션을 추정한다. 모션 벡터는, 예를 들어, 현재의 프레임 (또는, 다른 코딩된 유닛) 내 코딩중인 현재의 블록에 대한 참조 프레임 (또는, 다른 코딩된 유닛) 내 예측 블록에 상대적인, 현재의 비디오 프레임 또는 픽처 내 비디오 블록의 PU 의 변위를 나타낼 수도 있다. 예측 블록은 픽셀 차이의 관점에서 코딩되는 블록에 가깝게 매칭하는 것으로 발견되는 블록이며, SAD (sum of absolute difference), SSD (sum of square difference), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 참조 프레임 메모리 (64) 에 저장된 참조 픽처들의 서브-정수 픽셀 위치들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 픽처의 1/4 픽셀 위치들, 1/8 픽셀 위치들, 또는 다른 분수 픽셀 위치들의 값들을 내삽할 수도 있다. 따라서, 모션 추정 유닛 (42) 은 풀 픽셀 위치들 및 분수 픽셀 위치들에 대해, 모션 탐색을 수행하고, 분수 픽셀 정밀도를 가진 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은 PU 의 위치를 참조 픽처의 예측 블록의 위치와 비교함으로써 인터-코딩된 슬라이스에서의 비디오 블록의 PU 에 대한 모션 벡터를 계산한다. 참조 픽처는 제 1 참조 픽처 리스트 (List 0) 또는 제 2 참조 픽처 리스트 (List 1) 로부터 선택될 수도 있으며, 이 리스트 각각은 하나 이상의 참조 프레임 메모리 (64) 에 저장된 참조 픽처들을 식별한다. 모션 추정 유닛 (42) 은 그 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다.
모션 보상 유닛 (44) 에 의해 수행되는 모션 보상은 모션 추정 유닛 (42) 에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치하거나 또는 생성하는 것을 수반할 수도 있다. 또, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 일부 예들에서, 기능적으로 통합될 수도 있다. 현재의 비디오 블록의 PU 에 대한 모션 벡터를 수신하자 마자, 모션 보상 유닛 (44) 은 모션 벡터가 참조 픽처 리스트들 중 하나에서 가리키는 예측 블록을 로케이트할 수도 있다. 합산기 (50) 는 이하에서 설명하는 바와 같이, 코딩중인 현재의 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써, 잔차 비디오 블록을 형성한다. 일반적으로, 모션 추정 유닛 (42) 은 루마 성분들에 대해 모션 추정을 수행하고, 모션 보상 유닛 (44) 은 크로마 성분들 및 루마 성분들 양쪽에 대해 루마 성분들에 기초하여 계산된 모션 벡터들을 이용한다. 모드 선택 유닛 (40) 은 또한 비디오 슬라이스의 비디오 블록들을 디코딩할 때에 비디오 디코더 (30) 에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스와 연관되는 신택스 엘리먼트들을 생성할 수도 있다.
인트라-예측 유닛 (46) 은 위에서 설명한 바와 같이, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행되는 인터-예측에 대한 대안으로서, 현재의 블록을 인트라-예측할 수도 있다. 특히, 인트라-예측 유닛 (46) 은 현재의 블록을 인코딩하는데 사용할 인트라-예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라-예측 유닛 (46) 은 예컨대, 별개의 인코딩 과정들 동안 여러 인트라-예측 모드들을 이용하여 현재의 블록을 인코딩할 수도 있으며, 인트라-예측 유닛 (46) (또는, 일부 예들에서는, 모드 선택 유닛 (40)) 은 테스트된 모드들로부터 사용할 적합한 인트라-예측 모드를 선택할 수도 있다.
예를 들어, 인트라-예측 유닛 (46) 은 여러 테스트된 인트라-예측 모드들에 대한 레이트-왜곡 분석을 이용하여 레이트-왜곡 값들을 계산하고, 그 테스트된 모드들 중에서 최상의 레이트-왜곡 특성들을 갖는 인트라-예측 모드를 선택할 수도 있다. 레이트-왜곡 분석은 일반적으로 인코딩된 블록과 그 인코딩된 블록을 생성하기 위해 인코딩되었던 원래의 미인코딩된 블록 사이의 왜곡의 양 (또는, 에러) 뿐만 아니라, 그 인코딩된 블록을 생성하는데 사용된 비트레이트 (즉, 다수의 비트들) 를 결정한다. 인트라-예측 유닛 (46) 은 여러 인코딩된 블록들에 대한 왜곡들 및 레이트들로부터 비율들 (ratios) 을 계산하여, 어느 인트라-예측 모드가 그 블록에 대해 최상의 레이트-왜곡 값을 나타내는 지를 결정할 수도 있다.
블록에 대한 인트라-예측 모드를 선택한 후, 인트라-예측 유닛 (46) 은 블록에 대한 그 선택된 인트라-예측 모드를 나타내는 정보를 엔트로피 코딩 유닛 (56) 에 제공할 수도 있다. 엔트로피 코딩 유닛 (56) 은 그 선택된 인트라-예측 모드를 나타내는 정보를 인코딩할 수도 있다. 비디오 인코더 (20) 는 복수의 인트라-예측 모드 인덱스 테이블들 및 복수의 수정된 인트라-예측 모드 인덱스 테이블들 (또한, 코드워드 맵핑 테이블들로서 지칭됨) 을 포함할 수도 있는 그 송신되는 비트스트림 구성 데이터에, 여러 블록들에 대한 인코딩 컨텍스트들의 정의들, 및 가장 가능성있는 인트라-예측 모드, 인트라-예측 모드 인덱스 테이블 및 컨텍스트들의 각각에 사용할 수정된 인트라-예측 모드 인덱스 테이블의 표시들을 포함할 수도 있다.
비디오 인코더 (20) 는 코딩중인 원래 비디오 블록으로부터, 모드 선택 유닛 (40) 으로부터의 예측 데이터를 감산함으로써 잔차 비디오 블록을 형성한다. 합산기 (50) 는 이 감산 동작을 수행하는 구성요소 또는 구성요소들을 나타낸다. 변환 프로세싱 유닛 (52) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 잔차 블록에 적용하여, 잔차 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 프로세싱 유닛 (52) 은 DCT 와 개념적으로 유사한 다른 변환들을 수행할 수도 있다. 웨이블릿 변환들, 정수 변환들, 서브밴드 변환들 또는 다른 유형들의 변환들이 또한 이용될 수 있다. 어쨌든, 변환 프로세싱 유닛 (52) 은 그 변환을 잔차 블록에 적용하여, 잔차 변환 계수들의 블록을 생성한다. 변환은 잔차 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수도 있다. 변환 프로세싱 유닛 (52) 은 최종 변환 계수들을 양자화 유닛 (54) 로 전송할 수도 있다. 양자화 유닛 (54) 은 비트 레이트를 추가로 감소시키기 위해 변환 계수들을 양자화한다. 양자화 프로세스는 그 계수들의 일부 또는 모두와 연관되는 비트 심도를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 변경될 수도 있다. 일부 예들에서, 양자화 유닛 (54) 은 그 후 양자화된 변환 계수들을 포함하는 매트릭스의 스캐닝을 수행할 수도 있다. 이의 대안으로, 엔트로피 인코딩 유닛 (56) 이 그 스캐닝을 수행할 수도 있다.
양자화 이후, 엔트로피 코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 인코딩한다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 컨텍스트 적응 가변 길이 코딩 (CAVLC), 컨텍스트 적응 2진 산술 코딩 (CABAC), 신택스-기반 컨텍스트-적응 2진 산술 코딩 (SBAC), 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 또는 또 다른 엔트로피 코딩 기법을 수행할 수도 있다. 컨텍스트-기반 엔트로피 코딩의 경우, 컨텍스트는 이웃하는 블록들에 기초할 수도 있다. 엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩 이후, 인코딩된 비트스트림은 또 다른 디바이스 (예컨대, 비디오 디코더 (30)) 로 송신되거나 또는 추후 송신 또는 취출을 위해 아카이브될 수도 있다.
역양자화 유닛 (58) 및 역변환 유닛 (60) 은 역양자화 및 역변환을 각각 적용하여, 예컨대, 참조 블록으로 추후 사용을 위해, 픽셀 도메인에서 잔차 블록을 복원한다. 모션 보상 유닛 (44) 은 잔차 블록을 참조 프레임 메모리 (64) 의 프레임들 중 하나의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 내삽 필터들을 그 복원된 잔차 블록에 적용하여, 모션 추정에 사용하기 위한 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 복원된 잔차 블록을 모션 보상 유닛 (44) 에 의해 생성되는 모션 보상된 예측 블록에 가산하여, 참조 프레임 메모리 (64) 에의 저장을 위한 복원된 비디오 블록을 생성한다. 복원된 비디오 블록은 후속 비디오 프레임에서 블록을 인터-코딩하기 위해 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 참조 블록으로서 사용될 수도 있다.
멀티뷰 비디오 코딩
멀티뷰 비디오 코딩 (MVC) 은 H.264/AVC 의 확장판이다. MVC 사양은 아래 본 개시물의 섹션들 및 서브-섹션들에서 간단히 설명된다.
MVC 비트스트림 구조
전형적인 MVC 디코딩 순서 (즉, 비트스트림 순서) 가 도 4 에 도시된다. 디코딩 순서 배열은 시간-우선 코딩 (time-first coding) 으로서 지칭된다. 각각의 액세스 유닛 (AU) 은 하나의 출력 시간 인스턴스의 모든 뷰들의 코딩된 픽처들을 포함하도록 정의될 수도 있다. 액세스 유닛들의 디코딩 순서가 출력 또는 디스플레이 순서와 동일하지 않을 수도 있다는 점에 유의한다.
MVC 코딩 구조
멀티-뷰 비디오 코딩을 위한 (각각의 뷰 내 인터-픽처 예측 및 인터-뷰 예측 양쪽을 포함한) 전형적인 MVC 예측 구조가 도 5 에 도시되며, 여기서, 예측들은 화살표들로 표시되며, 지시도달 오브젝트는 예측 참조에 위해 지시출발 오브젝트를 이용한다.
MVC 에서, 인터-뷰 예측은, H.264/AVC 모션 보상의 신택스를 이용하지만 상이한 뷰에서의 픽처가 참조 픽처로서 사용되도록 허용하는 디스패리티 모션 보상에 의해 지원된다.
2개의 뷰들의 코딩은 또한 MVC 에 의해 지원될 수 있으며, MVC 의 이점들 중 하나는 MVC 인코더가 3D 비디오 입력으로서 2개보다 많은 뷰들을 취할 수 있으며 MVC 디코더가 이러한 멀티뷰 표현을 디코딩할 수 있다는 점이다. 따라서, MVC 디코더를 가진 임의의 렌더러는 2개보다 많은 뷰들을 가진 3D 비디오 콘텐츠를 예상할 수도 있다.
MVC 인터-뷰 예측
MVC 에서, 인터-뷰 예측은 동일한 액세스 유닛에서 (즉, 동일한 시간 인스턴스를 가진) 픽처들 사이에 허용된다. 비-베이스 뷰들 중 하나에서의 픽처를 코딩할 때, 잠재적으로 추가될 픽처가 상이한 뷰에 있지만 동일한 시간 인스턴스 내에 있으면, 픽처가 참조 픽처 리스트에 추가될 수도 있다.
인터-뷰 참조 픽처는 마치 임의의 인터-예측 참조 픽처처럼, 참조 픽처 리스트의 임의의 위치에 삽입될 수 있다. 인터-뷰 참조 픽처가 모션 보상을 위해 사용될 때, 대응하는 모션 벡터는 "디스패리티 모션 벡터" 로서 지칭된다.
HEVC 기법들
일부 관련된 HEVC 기법들이 아래에서 검토된다.
참조 픽처 리스트 구성
일반적으로, B 픽처의 제 1 또는 제 2 참조 픽처 리스트에 대한 참조 픽처 리스트 구성은 2개의 단계들, 즉, 참조 픽처 리스트 초기화 및 참조 픽처 리스트 재순서정렬 (reordering) (또는, "변경") 을 포함한다. 참조 픽처 리스트 초기화는 대응하는 픽처의 디스플레이 순서로 정렬된 POC (picture order count) 값에 기초하여, 참조 픽처 메모리 (또한, "디코딩된 픽처 버퍼" 로서 알려져 있음) 에서의 참조 픽처들을 리스트에 삽입하는 명시적인 메커니즘이다. 참조 픽처 리스트 재순서정렬 (reordering) 메커니즘은 참조 픽처 리스트 초기화 동안 리스트에 삽입된 픽처의 위치를 임의의 새로운 위치로 수정하거나, 또는 설령 픽처가 그 초기화된 리스트에 속하지 않더라도, 임의의 참조 픽처를 참조 픽처 메모리에 임의의 위치에 삽입할 수도 있다. 참조 픽처 리스트 재순서정렬 (변경) 이후의 일부 픽처들은 리스트에서 더 먼 위치에 삽입될 수도 있다. 그러나, 픽처의 위치가 리스트의 활성 참조 픽처들의 개수를 초과하면, 픽처는 최종 참조 픽처 리스트의 엔트리로서 간주되지 않는다. 활성 참조 픽처들의 개수가 각각의 리스트에 대한 슬라이스 헤더에서 시그널링될 수도 있다.
참조 픽처 리스트들이 구성된 후 (즉, 이용가능하면, RefPicList0 및 RefPicList1), 참조 픽처 리스트로의 참조 인덱스가 참조 픽처 리스트에 포함된 임의의 참조 픽처를 식별하는데 사용될 수 있다.
시간 모션 벡터 예측자 (TMVP)
시간 모션 벡터 예측자 (TMVP) 를 얻기 위해, 먼저, 동일 위치에 배치된 픽처가 식별되어야 한다. 현재의 픽처가 B 슬라이스이면, 동일 위치에 배치된 픽처가 RefPicList0 또는 RefPicList1 로부터 유래하는지 여부를 표시하기 위해, "collocated_from_l0_flag" 가 슬라이스 헤더로 시그널링된다.
참조 픽처 리스트가 식별된 후, 슬라이스 헤더에서 시그널링된, collocated_ref_idx 가 리스트에서의 픽처를 식별하는데 사용된다.
동일 위치에 배치된 예측 유닛 (PU) 이 그 후 동일 위치에 배치된 픽처를 체킹함으로써 식별된다. 현재의 PU 를 포함하는 코딩 유닛 (CU) 의 우하단 PU 의 모션, 또는 현재의 PU 를 포함하는 CU 의 중심 PU들 내 우하단 PU 의 모션이 사용된다.
상기 프로세스에 의해 식별된 모션 벡터들이 AMVP 또는 병합 모드에 대한 모션 후보를 생성하는데 사용될 때, 모션 벡터들은 (대응하는 픽처의 POC 값 만큼 반영된) 시간 로케이션에 기초하여 스케일링되어야 할 수도 있다.
TMVP 로부터 유도된 시간 병합 후보에 대한 모든 가능한 참조 픽처 리스트들의 목표 참조 인덱스가 항상 0 으로 설정되는 한편, AMVP 에 대해, 목표 참조 인덱스가 디코딩된 참조 인덱스와 동일하게 설정된다는 점에 유의한다.
HEVC 에서, SPS 는 플래그 sps_temporal_mvp_enable_flag 를 포함하며, 슬라이스 헤더는 sps_temporal_mvp_enable_flag가 1 과 동일할 때 플래그 pic_temporal_mvp_enable_flag 를 포함한다. pic_temporal_mvp_enable_flag 및 temporal_id 양쪽이 특정의 픽처에 대해 0 과 동일할 때, 디코딩 순서에서 그 특정의 픽처 이전 픽처들로부터의 어떤 모션 벡터도 디코딩 순서에서 특정의 픽처 이후 특정의 픽처 또는 픽처의 디코딩에서 시간 모션 벡터 예측자로서 사용되지 않을 것이다.
HEVC 기반의 3DV
현재, VCEG 및 MPEG 의 3D 비디오 코딩 (JCT-3C) 에 관한 합동 연구팀은 HEVC 에 기초한 3DV 표준을 개발하고 있으며, 표준화 노력들의 부분은 HEVC (MV-HEVC) 에 기초한 멀티뷰 비디오 코덱의 표준화 및 HEVC (3D-HEVC) 에 기초한 3D 비디오 코딩을 위한 또 다른 부분을 포함한다. MV-HEVC 에 대해, 그에서의 CU/PU 레벨에서 어떤 모듈도 재설계될 필요가 없고 MV-HEVC 에 충분히 재사용될 수 있도록, 단지 하이-레벨 신택스 (HLS) 이 HEVC 에 대해 변경되는 것이 보장되어야 한다. 3D-HEVC 에 있어, 텍스쳐 및 심도 뷰들 양쪽에 대해, 코딩 유닛/예측 유닛 레벨에서의 툴들을 포함한, 새로운 코딩 툴들이 포함되고 지원될 수도 있다. 3D-HEVC 에 대한 최신 소프트웨어 3D-HTM 은 다음 링크로부터 다운될 수 있다: [3D-HTM 버전 7.0]: https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-7.0/. 3D-HEVC 의 최근의 참조 소프트웨어 설명 뿐만 아니라 작업 초안은 다음과 같이 입수가능하다: ITU-T SG 16 WP 3 와 ISO/IEC JTC 1/SC 29/WG 11 의 3D 비디오 코딩 확장판 개발에 관한 합동 작업팀, 4차 회의: 2013년 4월 20-26일, 대한민국, 인천, Gerhard Tech, Krzysztof Wegner, Ying Chen, Sehoon Yea, "3D-HEVC Test Model 4", JCT3V-D1005_spec_v1. 작업 초안은 다음 링크: http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V-D1005-v1.zip 로부터 다운로드로 입수가능하다.
코딩 효율을 더욱 향상시키기 위해, 2개의 새로운 기술들, 즉, "인터-뷰 모션 예측" 및 "인터-뷰 잔차 예측" 이 최근의 참조 소프트웨어에서 채택되었다. 이들 2개의 코딩 툴들을 이용가능하게 하기 위해, 제 1 단계는 디스패리티 벡터를 유도하는 것이다. 비디오 코딩 디바이스는 디스패리티 벡터를 사용하여 인터-뷰 모션/잔차 예측을 위해 다른 뷰에서의 대응하는 블록을 로케이트할 수도 있거나, 또는 인터-뷰 모션 예측을 위해 디스패리티 벡터를 디스패리티 모션 벡터로 변환할 수도 있다.
암시적인 디스패리티 벡터
비디오 코딩 디바이스는 PU 가 인터-뷰 모션 벡터 예측, 즉, AMVP 에 대한 후보를 채용하거나 또는 병합 모드들이 디스패리티 벡터의 도움으로 다른 뷰에서의 대응하는 블록으로부터 유도될 때, 암시적인 디스패리티 벡터 (IDV) 를, 생성할 수도 있다. 이러한 디스패리티 벡터는 IDV 로 지칭된다. IDV 는 디스패리티 벡터 유도의 목적을 위해 PU 에 저장된다.
디스패리티 벡터 유도 프로세스
디스패리티 벡터를 유도하기 위해, 비디오 코딩 디바이스는 현재의 3D-HTM 에서 설명된 바와 같이, 이웃하는 블록들 기반 디스패리티 벡터 (NBDV) 로 지칭되는 기법을 사용할 수도 있다. NBDV 는 공간 및 시간 이웃하는 블록들로부터의 디스패리티 모션 벡터들을 이용한다. NBDV 에 따르면, 비디오 코딩 디바이스는 공간 또는 시간 이웃하는 블록들의 모션 벡터들을 고정된 체킹 순서로 체킹할 수도 있다. 일단 디스패리티 모션 벡터 또는 IDV 가 식별되면, 체킹 프로세스가 종료되며 식별된 디스패리티 모션 벡터가 반환되고 인터-뷰 모션 예측 및 인터-뷰 잔차 예측에서 사용될 디스패리티 벡터로 변환된다. 어떤 그런 디스패리티 벡터도 모든 사전-정의된 이웃하는 블록들을 체킹한 후에 발견되지 않으면, 비디오 코딩 디바이스는 인터-뷰 모션 예측에 제로 디스패리티 벡터를 이용할 수도 있지만 인터-뷰 잔차 예측은 대응하는 예측 유닛 (PU) 에 대해 사용불능될 것이다.
NBDV 에 사용되는 공간 및 시간 이웃하는 블록들이 본 개시물의 다음 부분에서 도입되며, 뒤이어서 체킹 순서가 뒤따른다.
공간 이웃하는 블록들
5개의 공간 이웃하는 블록들이 디스패리티 벡터 유도에 사용된다. 사용되는 5개의 공간 이웃하는 블록들은, HEVC 사양의 도 8-3 에 정의된 바와 같이, A0, A1, B0, B1 또는 B2 로 표기되는, 현재의 예측 유닛 (PU) 의 좌하측, 좌측, 우상측, 상측 및 좌상측 블록들이다.
시간 이웃하는 블록들
현재의 뷰로부터의 최고 2개의 참조 픽처들, 동일 위치에 배치된 픽처, 및 가장 작은 POC 차이 및 가장 작은 시간 ID 를 갖는 랜덤-액세스 픽처 또는 참조 픽처가 시간 블록 체크들을 위해 고려된다. 랜덤-액세스가 먼저 체크되며, 뒤이어서, 동일 위치에 배치된 픽처가 체크된다. 각각의 후보 픽처에 대해, 2개의 후보 블록들이 아래에 나열되는 바와 같이 체크된다:
a) 중심 블록 (CR): 현재의 PU 의 동일 위치에 배치된 영역의 중심 4x4 블록, 도 6 에서 'Pos. A' (102) 참조.
b) 우하측 블록 (BR): 현재의 PU 의 동일 위치에 배치된 영역의 우하측 4x4 블록, 도 6 에서 'Pos. B' (104) 참조.
체킹 순서
DMV들이 사용되는지 여부가 모든 공간/시간 이웃하는 블록들에 대해 먼저 체킹되고, 뒤이어서 IDV들이 체킹된다. 공간 이웃하는 블록들이 먼저 체킹되고, 뒤이어서 시간 이웃하는 블록들이 체킹된다.
5개의 공간 이웃하는 블록들이 A1, B1, B0, A0 및 B2 의 순서로 체킹된다. 5개의 체크된 공간 이웃하는 블록들 중 하나가 DMV 를 사용하면, 비디오 인코더 (20) 는 체킹 프로세스를 종료할 수도 있으며 대응하는 DMV 를 최종 디스패리티 벡터로서 사용할 수도 있다.
각각의 후보 픽처에 대해, 2개의 블록들이 제 1 비-베이스 뷰에 대해 CR 및 BR, 또는 제 2 비-베이스 뷰에 대해 BR, CR 순서로 체킹된다. 2개의 체크된 블록들 중 하나가 DMV 를 사용하면, 비디오 인코더 (20) 는 체킹 프로세스를 종료할 수도 있으며, 대응하는 DMV 를 최종 디스패리티 벡터로서 사용할 수도 있다.
5개의 공간 이웃하는 블록들이 A0, A1, B0, B1 및 B2 의 순서로 체킹된다. 5개의 체크된 공간 이웃하는 블록들 중 하나가 IDV 를 사용하고 스킵/병합 모드로서 코딩되면, 체킹 프로세스가 종료되며 대응하는 IDV 는 최종 디스패리티 벡터로서 사용될 것이다.
디스패리티 벡터를 개선하기
NBDV 방식으로부터 생성된, 디스패리티 벡터는 코딩된 심도 맵에서의 정보를 이용하여 추가로 개선될 수 있다. 즉, 디스패리티 벡터의 정확도가 코딩된 베이스 뷰 심도 맵에서의 정보의 이점을 취함으로써 향상될 수 있다. 개선 단계들이 다음과 같이 설명될 수도 있다:
1. 베이스 뷰와 같은 이전에 코딩된 참조 심도 뷰에서의 유도된 디스패리티 벡터에 의해 대응하는 심도 블록을 로케이트시킨다; 대응하는 심도 블록의 사이즈는 현재의 PU 의 사이즈와 동일하다.
2. 디스패리티 벡터는 4개의 모서리 심도 값들의 최대 값으로부터, 동일 위치에 배치된 심도 블록으로부터 계산된다. 이것은 디스패리티 벡터의 수평 성분과 동일하게 설정되는 한편, 디스패리티 벡터의 수직 성분은 0 으로 설정된다.
이 새로운 디스패리티 벡터는 "심도 지향 이웃하는 블록 기반의 디스패리티 벡터" (DoNBDV) 로 지칭된다. NBDV 방식으로부터의 디스패리티 벡터는 그 후 AMVP 및 병합 모드들에 대한 인터-뷰 후보 유도를 위해 DoNBDV 방식으로부터의 이 새로 유도된 디스패리티 벡터로 대체된다. 미개선된 디스패리티 벡터가 인터-뷰 잔차 예측에 사용된다는 점에 유의한다. 게다가, 개선된 디스패리티 벡터가 역방향 VSP 모드로 코딩되면, 개선된 디스패리티 벡터는 하나의 PU 의 모션 벡터로서 저장된다.
3D-HEVC 에서 이웃하는 블록들을 이용한 블록-기반 뷰 합성 예측
JCT3V-C0152 에서 제안된 바와 같은 역방향-와핑 VSP 접근법은 3차 JCT-3V 회의에서 채택되었다. 이 역방향-와핑 VSP 의 기본적인 아이디어는 3D-AVC 에서의 블록-기반 VSP 와 동일하다. 이들 2개의 기법들의 양쪽은 역방향-와핑 및 블록-기반 VSP 를 이용하여 모션 벡터 차이들을 송신하는 것을 회피하며 더 정확한 모션 벡터들을 사용한다. 구현 세부 사항들은 상이한 플랫폼들로 인해, 상이하다.
다음 단락들에서, 용어 "BVSP" 는 3D-HEVC 에서의 역방향-와핑 VSP 접근법을 나타내기 위해 사용된다.
3D-HTM 에서, 텍스쳐 우선 코딩은 공통 테스트 조건들에서 적용된다. 따라서, 대응하는 비-베이스 심도 뷰는 하나의 비-베이스 텍스쳐 뷰를 디코딩할 때 이용불가능하다. 따라서, 심도 정보가 추정되어 BVSP 를 수행하는데 사용된다.
블록에 대한 심도 정보를 추정하기 위해, 이웃하는 블록들로부터 디스패리티 벡터를 먼저 유도하고, 그 후 유도된 디스패리티 벡터를 이용하여 참조 뷰로부터 심도 블록을 획득하는 것이 제안된다.
HTM 5.1 테스트 모델에서는, NBDV (이웃하는 블록 디스패리티 벡터) 으로서 알려진, 디스패리티 벡터 예측자를 유도하는 프로세스가 존재한다. (dvx, dvy) 가 NBDV 함수로부터 식별된 디스패리티 벡터를 표시한다고 하고, 현재의 블록 위치는 (blockx, blocky) 이다. 참조 뷰의 심도 이미지에서 (blockx+dvx, blocky+dvy) 에서의 심도 블록을 페치하는 것이 제안된다. 페치된 심도 블록은 현재의 예측 유닛 (PU) 의 동일한 사이즈를 가질 것이며, 페치된 심도 블록이 그 후 현재의 PU 에 대한 역방향 와핑 (warping) 을 행하는데 사용될 것이다. 도 4 는 참조 뷰로부터의 심도 블록이 로케이트되고 그 후 BVSP 예측에 사용되는 방법의 3개의 단계들을 예시한다.
NBDV 에 대한 변경들
BVSP 가 시퀀스에서 이용가능하면, 인터-뷰 모션 예측을 위한 NBDV 프로세스는 다음 단락들 및 불릿들 (bullets) 에서 설명된 바와 같이 변경된다:
시간 이웃하는 블록들의 각각에 대해, 시간 이웃하는 블록이 디스패리티 모션 벡터를 사용하면, 디스패리티 모션 벡터는 디스패리티 벡터로서 반환되며 디스패리티 벡터는 위에서 "디스패리티 벡터를 개선하기" 에 있어서 설명된 방법으로 추가로 개선된다.
o 각각의 참조 픽처 리스트 0 또는 참조 픽처 리스트 1 에 대해, 다음이 적용된다:
참조 픽처 리스트 (예컨대, 0 또는 1) 가 디스패리티 모션 벡터를 사용하면, 디스패리티 모션 벡터는 디스패리티 벡터로서 반환되며 디스패리티 모션 벡터는 위에서 "디스패리티 벡터를 개선하기" 에 있어서 설명된 방법으로 추가로 개선된다.
그렇지 않으면, 참조 픽처 리스트 (예컨대, 0 또는 1) 가 BVSP 모드를 사용하면, 연관된 모션 벡터는 디스패리티 벡터로서 반환된다. 디스패리티 벡터는 위에서 "디스패리티 벡터를 개선하기" 에 있어서 설명한 방법과 유사한 방법으로 추가로 개선된다. 그러나, 최대 심도 값은 4개의 모서리 픽셀들보다는, 대응하는 심도 블록의 모든 픽셀들로부터 선택된다.
BVSP 코딩된 PU들의 표시
도입된 BVSP 모드는 특수한 인터-코딩된 모드로서 처리되며, BVSP 모드의 사용을 나타내는 플래그가 각각의 PU 에 대해 유지되어야 한다. 플래그를 비트스트림으로 시그널링하는 대신, 새로운 병합 후보 (BVSP 병합 후보) 가 병합 후보 리스트에 추가되며, 플래그는 디코딩된 병합 후보 인덱스가 BVSP 병합 후보에 대응하는지 여부에 의존한다. BVSP 병합 후보는 다음과 같이 정의된다:
BVSP 병합 후보의 삽입된 위치는 공간 이웃하는 블록들에 의존한다:
5개의 공간 이웃하는 블록들 (A0, A1, B0, B1, 또는 B2) 중 임의의 블록이 BVSP 모드로 코딩되면, 즉, 이웃하는 블록의 유지된 플래그가 1 과 동일하면, BVSP 병합 후보는 대응하는 공간 병합 후보로서 처리되며, 병합 후보 리스트에 삽입된다. BVSP 병합 후보가 단지 병합 후보 리스트에 한번 삽입될 것이라는 점에 유의한다.
결합된 양방향-예측 병합 후보 유도 프로세스 동안, 추가적인 조건들이 BVSP 병합 후보를 포함하는 것을 회피하기 위해 체크되어야 한다는 점에 유의한다.
예측 유도 프로세스
N x M 로 표시되는 대응하는 사이즈를 갖는, 각각의 BVSP 코딩된 PU 에 대해, BVSP 코딩된 PU 는 K x K 와 동일한 사이즈를 갖는 여러 서브-영역들로 추가로 파티셔닝된다 (여기서, K 는 4 또는 2 일 수도 있다). 각각의 서브-영역에 대해, 별개의 디스패리티 모션 벡터가 유도되며, 각각의 서브-영역이 유도된 디스패리티 모션 벡터에 의해 인터-뷰 참조 픽처에 로케이트된 하나의 블록으로부터 예측된다. 다시 말해서, BVSP 코딩된 PU들에 대한 모션-보상 유닛들의 사이즈는 K x K 로 설정된다. 일부 공통 테스트 조건들에서, K 는 4 로 설정된다.
디스패리티 모션 벡터 유도 프로세스
BVSP 모드로 코딩된 하나의 PU 내 각각의 서브-영역 (예컨대, 4x4 블록) 에 대해, 대응하는 4x4 심도 블록은 위에서 설명된 개선된 디스패리티 벡터를 갖는 참조 심도 뷰에서 먼저 로케이트된다. 둘째로, 대응하는 심도 블록에서 16개의 심도 픽셀들의 최대 값이 선택된다. 세번째로, 최대 값이 디스패리티 모션 벡터의 수평 성분으로 변환된다. 디스패리티 모션 벡터의 수직 성분은 0 으로 설정된다.
스킵/병합 모드에 대한 인터-뷰 후보 유도 프로세스
DoNBDV 방식으로부터 유도된 디스패리티 벡터에 기초하여, 새로운 모션 벡터 후보, 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 가, 이용가능하면, AMVP 및 스킵/병합 모드들에 추가될 수도 있다. 인터-뷰 예측된 모션 벡터는, 이용가능하면, 시간 모션 벡터이다.
스킵 모드가 병합 모드와 동일한 모션 벡터 유도 프로세스를 가지기 때문에, 본원에서 설명되는 임의의 또는 모든 기법들이 병합 및 스킵 모드들 양쪽에 적용될 수도 있다.
병합/스킵 모드에 대해, 인터-뷰 예측된 모션 벡터는 다음 단계들에 의해 유도된다:
대응하는 블록이 인트라-코딩되지 않고 인터-뷰 예측되지 않으면, 그리고 대응하는 블록의 참조 픽처가 현재의 PU/CU 의 동일한 참조 픽처 리스트에서의 하나의 엔트리의 POC 값과 동일한 POC 값을 가지면, 대응하는 블록의 모션 정보 (예측 방향, 참조 픽처들, 및 모션 벡터들) 는, POC 에 기초하여 참조 인덱스를 변환한 후, 인터-뷰 예측된 모션 벡터가 되도록 유도된다.
게다가, 디스패리티 벡터는 인터-뷰 디스패리티 모션 벡터가 이용가능할 때 병합 후보 리스트에 IPMVC 와는 상이한 위치에 추가되거나, 또는 AMVP 후보 리스트에 IPMVC 와 동일한 위치에 추가되는 인터-뷰 디스패리티 모션 벡터로 변환된다. IPMVC 또는 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 는 이 상황에서 '인터-뷰 후보' 로서 지칭된다.
I병합/스킵 모드에서, IPMVC 는, 이용가능하면, 병합 후보 리스트에 모든 공간 및 시간 병합 후보들 앞에 항상 삽입된다. IDMVC 는 A0 으로부터 유도된 공간 병합 후보 앞에 삽입된다.
3D-HEVC 에서 텍스쳐 코딩을 위한 병합 후보 리스트 구성
디스패리티 벡터는 DoNBDV 의 방법으로 먼저 유도된다. 디스패리티 벡터에 의해, 3D-HEVC 에서의 병합 후보 리스트 구성 프로세스는 다음과 같이 정의될 수 있다:
1. IPMVC 삽입
IPMVC 는 위에서 설명된 프로시저에 의해 유도된다. IPMVC 가 이용가능하면, IPMVC 가 (예컨대, 비디오 인코더 (20) 에 의해) 병합 리스트에 삽입된다.
2. 3D-HEVC 에서 공간 병합 후보들에 대한 유도 프로세스 및 IDMVC 삽입
공간 이웃하는 PU들의 모션 정보를 다음 순서로 체킹한다: A1, B1, B0, A0, 또는 B2. 속박된 프루닝은 다음 프로시저들에 의해 수행된다:
- A1 및 IPMVC 가 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지면, A1 은 후보 리스트에 삽입되지 않으며; 그렇지 않으면 A1 은 리스트에 삽입된다.
- B1 및 A1/IPMVC 가 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지면, B1 은 후보 리스트에 삽입되지 않으며; 그렇지 않으면 B1 이 리스트에 삽입된다.
- B0 가 이용가능하면, 후보 리스트에 추가된다. IDMVC 는 위에서 (예컨대, 단락들 [0103], [0231], 및 본 개시물의 여러 다른 부분들에서) 설명된 프로시저에 의해 유도된다. IDMVC 가 이용가능하고 A1 및 B1 로부터 유도된 후보들과 상이하면, IDMVC 가 후보 리스트에 (예컨대, 비디오 인코더 (20) 에 의해) 삽입된다.
- BVSP 가 전체 픽처에 대해 또는 현재의 슬라이스에 대해 이용가능하게 되면, BVSP 병합 후보가 병합 후보 리스트에 삽입된다.
- A0 가 이용가능하면, A0 는 후보 리스트에 추가된다.
- B2 가 이용가능하면, B2 는 후보 리스트에 추가된다.
3. 시간 병합 후보에 대한 유도 프로세스
HEVC 에서의 시간 병합 후보 유도 프로세스와 유사하게, 동일 위치에 배치된 PU 의 모션 정보가 이용된다. 그러나, 시간 병합 후보의 목표 참조 픽처 인덱스는 목표 참조 픽처 인덱스를 0 으로 고정하는 대신, 변경된다. 0 과 동일한 목표 참조 인덱스가 (동일한 뷰에서의) 시간 참조 픽처에 대응하는 한편 동일 위치에 배치된 예측 유닛 (PU) 의 모션 벡터가 인터-뷰 참조 픽처를 가리킬 때, 목표 참조 픽처 인덱스는 참조 픽처 리스트에서의 인터-뷰 참조 픽처의 제 1 엔트리에 대응하는 또 다른 인덱스로 변경된다. 반대로, 0 과 동일한 목표 참조 인덱스가 인터-뷰 참조 픽처에 대응하는 한편 동일 위치에 배치된 예측 유닛 (PU) 의 모션 벡터가 시간 참조 픽처를 가리킬 때, 목표 참조 픽처 인덱스는 참조 픽처 리스트에서의 시간 참조 픽처의 제 1 엔트리에 대응하는 또 다른 인덱스로 변경된다.
4. 3D-HEVC 에서의 결합된 양방향-예측 병합 후보들에 대한 유도 프로세스
상기 2개의 단계들로부터 유도된 후보들의 총 개수가 후보들의 최대 개수 미만이면, HEVC 에서 정의된 것과 동일한 프로세스가 l0CandIdx 및 l1CandIdx 의 사양을 제외하고 수행된다. combIdx, l0CandIdx 및 l1CandIdx 사이의 관계는 다음의 테이블에 정의된다:
테이블 1 - 3D-HEVC 에서 l0CandIdx 및 l1CandIdx 의 사양
5. 제로 모션 벡터 병합 후보들에 대한 유도 프로세스
- HEVC 에서 정의된 것과 동일한 프로시저가 수행된다.
최신 소프트웨어에서, MRG 리스트에서의 후보들의 총 개수는 최고 6 이며, five_minus_max_num_merge_cand 가 슬라이스 헤더에서 6 에서 감산된 MRG 후보들의 최대 개수를 규정하기 위해 시그널링된다. five_minus_max_num_merge_cand 는 0 내지 5 의 범위 내인 점에 유의해야 한다.
심도 코딩을 위한 모션 벡터 상속
모션 벡터 상속 (MVI) 에 숨겨진 아이디어는 텍스쳐 이미지들과, 연관된 심도 이미지들 사이의 모션 특성들의 유사성을 이용하는 것이다.
심도 이미지에서의 주어진 PU 에 대해, 모션 벡터들 및/또는 참조 인덱스들이 이용가능하면, MVI 후보는 이미 코딩된 대응하는 텍스쳐 블록의 모션 벡터들 및 참조 인덱스들을 재사용한다. 도 9 는 대응하는 텍스쳐 블록이 현재의 PU 의 중심의 우측 저부에 로케이트된 4 x 4 블록으로서 선택되는 MVI 후보의 유도 프로세스의 일 예를 나타낸다.
정수 정밀도를 갖는 모션 벡터들이 심도 코딩에 사용되고, 동시에 모션 벡터들의 1/4 정밀도가 텍스쳐 코딩에 이용된다는 점에 유의해야 한다. 따라서, 대응하는 텍스쳐 블록의 모션 벡터는 MVI 후보 로서 사용하기 전에 스케일링되어야 한다.
MVI 후보 생성에 의해, 심도 뷰들에 대한 병합 후보 리스트는 다음과 같이 구성된다:
1. MVI 삽입
MVI 는 위에서 (예컨대, "심도 코딩을 위한 모션 벡터 상속"에서) 설명된 프로시저에 의해 유도된다. MVI 가 이용가능하면, MVI 는 병합 리스트에 (예컨대, 비디오 인코더 (20) 에 의해) 삽입된다.
2. 3D-HEVC 에서 공간 병합 후보들에 대한 유도 프로세스 및 IDMVC 삽입
공간 이웃하는 PU들의 모션 정보를 다음 순서로 체크한다: A1, B1, B0, A0, 또는 B2. 속박된 프루닝은 다음 프로시저들에 의해 수행된다:
- A1 및 MVI 가 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지면, A1 은 후보 리스트에 삽입되지 않는다.
- B1 및 A1/MVI 가 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지면, B1 은 후보 리스트에 삽입되지 않는다.
- B0 가 이용가능하면, B0 는 후보 리스트에 추가된다.
- A0 가 이용가능하면, A0 는 후보 리스트에 추가된다.
- B2 가 이용가능하면, B2 는 후보 리스트에 추가된다.
3. 시간 병합 후보에 대한 유도 프로세스
HEVC 에서의 시간 병합 후보 유도 프로세스와 유사하게, 동일 위치에 배치된 PU 의 모션 정보가 이용된다. 그러나, 시간 병합 후보의 목표 참조 픽처 인덱스는 목표 참조 픽처 인덱스를 0 으로 고정하는 대신, "3D-HEVC 에서 텍스쳐 코딩을 위한 병합 후보 리스트 구성" 에서 설명되는 바와 같이 변경될 수도 있다.
4. 3D-HEVC 에서의 결합된 양방향-예측 병합 후보들에 대한 유도 프로세스
상기 2개의 단계들로부터 유도된 후보들의 총 개수가 후보들의 최대 개수 미만이면, HEVC 에 정의된 것과 동일한 프로세스가 l0CandIdx 및 l1CandIdx 의 사양을 제외하고, 수행된다. combIdx, l0CandIdx 및 l1CandIdx 사이의 관계는 본 개시물의 테이블 1 에 정의된다.
5. 제로 모션 벡터 병합 후보들에 대한 유도 프로세스
- HEVC 에서 정의된 것과 동일한 프로시저가 수행된다.
인터-뷰 잔차 예측
현재의 3D-HEVC 에서는, 2개의 뷰들의 잔차 신호 사이의 상관을 좀더 효율적으로 활용하기 위해, 인터-뷰 잔차 예측이 소위 진보된 잔차 예측 (ARP) 에 의해 실현되었으며, 여기서, 디스패리티 벡터로 식별된 참조 블록의 잔차는, 참조 뷰에 대한 잔차 픽처를 유지하고 잔차 픽처에서의 참조 블록 내에서 잔차를 직접 예측하는 대신, 도 7 에 도시된 바와 같이, 온-더-플라이 방식으로 (on-the-fly) 생성되었다.
도 7 에 나타낸 바와 같이, Dc 로 표시되는, 비-베이스 뷰에서의 현재의 블록의 잔차를 더 잘 예측하기 위해, 참조 블록 Bc 이 디스패리티 벡터에 의해 먼저 식별되고, 참조 블록의 모션 보상이 참조 블록 Bc 의 예측 신호 Br 와 복원된 신호 사이의 잔차를 유도하기 위해 호출된다. ARP 모드가 호출될 때, 예측된 잔차가 예컨대, 모션 보상에 의해, 비-베이스 뷰의 참조 픽처에서의 블록 Dr 로부터 생성된 비-베이스 뷰의 예측 신호의 상부 상에 추가된다. ARP 모드의 잠재적인 이점은 (ARP 에 대한 잔차를 생성할 때) 참조 블록에 의해 사용되는 모션 벡터가 현재의 블록의 모션 벡터와 정렬되고, 따라서 현재의 블록의 잔차 신호가 더 정확하게 예측될 수 있다는 점이다. 따라서, 잔차의 에너지가 현저하게 감소될 수 있다. 도 8 은 도 7 의 여러 구성요소들을, 그러나 상이한 이미지들의 텍스쳐 세부 사항들 설명 없이, 예시한다. 단지 예시의 용이를 목적들을 위해, 도 8 은 도 7 에 대해 일정한 축척으로 도시되지 않는다는 것을 알 수 있을 것이다.
베이스 (참조) 뷰와 비-베이스 뷰 사이의 양자화 차이(들) 이 더 적은 예측 정확도를 초래할 수도 있기 때문에, 2개의 가중 인자들, 즉, 0.5 및 1 이 참조 뷰로부터 생성된 잔차에 적응적으로 적용된다.
베이스 (참조) 뷰에서의 추가적인 모션 보상이 메모리 액세스 및 계산들의 상당한 증가를 필요로 할 수도 있기 때문에, 사소한 코딩 효율의 희생으로 설계를 더 실현가능하게 하는 여러 방법들이 채택되었다. 첫째로, 계산들을, 특히, 인코더에서 감소시키기 위해, ARP 모드가 단지 예측 유닛 (PU) 이 2N x 2N 로 코딩될 때, 이용가능하게 된다. 둘째로, ARP 모드로 코딩된 블록들에 대한 메모리 액세스를 현저하게 감소시키기 위해, 양방향-선형 필터들이 참조 블록 및 현재의 블록 양쪽의 모션 보상을 위해 채택된다. 세번째로, 캐시 효율을 향상시키기 위해, 모션 벡터들이 비-베이스 뷰에서의 상이한 픽처들을 가리킬 수도 있지만, 베이스 뷰에서의 참조 픽처는 고정된다. 이 경우, 현재의 블록의 모션 벡터는 픽처 거리들에 기초하여 스케일링될 필요가 있을 수도 있다.
잠재적인 이슈들
HEVC 기반의 멀티뷰/3DV 코더들에서의 심도 코딩을 위한 모션 관련된 기술들의 현재의 설계는 다음 잠재적인 이슈를 갖는다: 비-베이스 심도 뷰들의 모션 벡터 예측 코딩은 병합/스킵 모드들에 대해 이미 코딩된 참조 (베이스) 심도 뷰들의 모션 정보를 고려하지 않는다. 다시 말해서, 하나의 비-베이스 심도 뷰에서의 비디오 블록과 참조 심도 뷰에서의 대응하는 블록의 (참조 인덱스 및 모션 벡터들을 포함하는) 모션 정보 사이의 상관이 이용되지 않는다.
기법들
본 개시물은 참조 심도 뷰들의 이미 코딩된 모션 벡터들로부터 더 많은 후보들을 유도함으로써 의존적인 심도 뷰들의 모션 벡터 예측 정확도를 향상시키는 하나 이상의 기법들에 관한 것이다. 이 기법들은 본원에서 설명되는 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 를 포함하지만 이에 한정되지 않는 다양한 디바이스들에 의해 수행될 수도 있다. 논의의 목적들을 위해, 본 기법들은 비디오 인코더 (20) 및/또는 그의 여러 구성요소들, 예컨대 모션 추정 유닛 (42) 및/또는 모션 보상 유닛 (44) 에 대해 설명된다. 병합 후보들을 유도하기 위해, 비디오 인코더 (20) 는 이웃하는 복원된 심도 값들로부터 디스패리티 벡터를 먼저 유도할 수도 있다. 그 후, 비디오 인코더 (20) 는 이 유도된 디스패리티 벡터에 기초하여 추가적인 병합 후보들을 생성하여 병합 후보 리스트에 추가할 수도 있다.
본 개시물의 양태들은 다음과 같이 추가로 요약된다:
(x, y) 가 관련된 블록의 상부 좌측 모서리라 하자.
I.
비디오 인코더 (20) 는 심도 값을 획득하기 위해 평균, 최대 또는 메디안과 같은 수학적 연산을 이웃하는 샘플들에 적용함으로써, 현재의 블록의 모서리들에 인접한 이웃하는 픽셀들에 기초하여, 각각의 블록에 대해 단일 디스패리티 벡터를 유도할 수도 있다. 비디오 인코더 (20) 는 심도 값을 디스패리티 벡터로 직접 변환할 수도 있다.
1)
이웃하는 샘플들은 로케이션들 {(x-1, y-1), (x-1, y+폭-1) 및 (x+높이-1, y-1)} 에서 블록의 상부-좌측, 상부-우측 및 좌하단 복원된 심도 샘플들, 예컨대, 이웃하는 복원된 심도 샘플들에 인접할 수 있다. (예컨대, 비디오 인코더 (20) 에 의해) 각각의 CU 에 대해 유도되는 디스패리티 벡터는 그 안의 모든 PU들에 대해 공유된다. 여기서, 비디오 블록의 사이즈는 폭 x 높이이다.
2)
대안적으로, 비디오 인코더 (20) 는 로케이션들 {(x-1, y-1), (x-1, y+2N), (x-1, y+2N-1), (x+2N, y-1)} 및 (x+2N-1, y-1)} 에서의 5개의 이웃하는 복원된 심도 샘플들을 이용하여, 심도 값을 유도할 수도 있다.
3)
일 예에서, CU 에서의 모든 PU들에 대해, 프로세스가 CU 인 블록에 적용되며 모든 PU들은 그 블록에 대해 비디오 인코더 (20) 에 의해 유도된 동일한 디스패리티 벡터를 공유한다.
4)
일 예에서, 각각의 PU 는 독립적인 블록일 수 있으며, 비디오 인코더 (20) 는 현재의 PU 에 대해 그 블록에 대해 유도된 디스패리티 벡터를 이용할 수도 있다.
II.
IPMVC 및 IDMVC 후보들을 포함하는 텍스쳐 PU 와 유사하게, 현재의 심도 PU 에 대해, 비디오 인코더 (20) 는 PU 에 대해 유도된 디스패리티 벡터를 이용하여, 생성된 참조 뷰에서의 대응하는 블록의 모션 정보로부터 (예컨대, 비디오 인코더 (20) 에 의해) 생성되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 유도하거나 및/또는 디스패리티 벡터를 디스패리티 모션 벡터로 변환함으로써 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 유도할 수도 있다. 비디오 인코더 (20) 는 추가적인 후보들이 이용가능하면, 심도 코딩을 위해, 생성된 추가적인 후보들 IPMVC 및 IDMVC 를 병합 후보 리스트에 추가할 수도 있다.
1)
하나의 대안예에서, 비디오 인코더 (20) 는 오직 IPMVC 가 이용불가능할 때에만 IDMVC 를 생성할 수도 있다.
2)
또 다른 대안적인 예에서, 비디오 인코더 (20) 는 오직 IPMVC 가 이용가능할 때에만 IDMVC 를 생성할 수도 있다. 그러나, 이 대안의 일부 예들에서, 비디오 인코더 (20) 는 프루닝 이후 IDMVC 및 IPMVC 중 하나 또는 양자를 병합 리스트에 포함시키지 않을 수도 있다.
3)
일 예에서, 비디오 인코더 (20) 는 모션 벡터들의 사사오입 (rounding) 을 적용하는 동시에 디스패리티 벡터를 디스패리티 모션 벡터로 변환할 수도 있다. 예컨대, 디스패리티 벡터가 1/4 정밀도라고 하고, (mvX, 0) 로 표현된다고 하자. 이 예에서, 비디오 인코더 (20) 는 디스패리티 벡터를 디스패리티 모션 벡터로 정수 정밀도로 (mvX >> 2, 0) 로서 또는 ((mvX+2)>>2, 0) 로서 변환할 수도 있다.
III.
비디오 인코더 (20) 는 추가적인 병합 후보들을, 원래 생성된 공간, 시간 및 MVI 병합 후보들에 대한 위치들과 함께, 병합 후보 리스트에 삽입할 수도 있다.
1)
대안적으로, 비디오 인코더 (20) 는 추가적인 병합 후보들을 이들 후보들의 상대적인 위치들에서 공간 및 시간 병합 후보들 뒤의 첫번째에 삽입할 수도 있다. 그 뒤에, 비디오 인코더 (20) 는 MVI 후보를 공간, 시간 및 IPMVC 및/또는 IDMVC 병합 후보들을 포함하는 병합 후보 리스트에 삽입할 수도 있다.
2)
일 예에서, 결정되는 IPMVC 및/또는 IDMVC 의 상대적인 위치들은, 텍스쳐 블록에 대해 사용되는 상대적인 위치들과 동일하다. 즉, 비디오 인코더 (20) 는 IPMVC 를 모든 공간 병합 후보들 바로 앞에; 따라서, (동일 위치에 배치된 텍스쳐 블록으로부터 유도된) MVI 후보 뒤에 추가할 수도 있다. 게다가, 비디오 인코더 (20) 는 IDMVC 를 B0 로부터 유도된 병합 후보 바로 전에 (바로 앞에) 추가할 수도 있다.
3)
또 다른 예에서, IPMVC 및/또는 IDMVC 의 상대적인 위치들은 3D-HEVC 텍스쳐 코딩에서 사용되는 상대적인 위치들과는 상이할 수도 있다.
- 하나의 대안예에서, 비디오 인코더 (20) 는 IPMVC 를 MVI 후보 바로 뒤에 추가할 수도 있으며, IDMVC 후보를 공간 후보 B1 에 바로 다음에 (바로 뒤에) 그리고 공간 후보 B0 에 바로 전에 (직전에) 삽입할 수도 있다.
- 또 다른 대안적인 예에서, 비디오 인코더 (20) 는 IPMVC 후보를 공간 후보 A1 바로 다음에 (직후에) 삽입할 수도 있으며, IDMVC 후보는 후보 B0 이후에 삽입될 수도 있다.
- 또 다른 대안적인 예에서, 비디오 인코더 (20) 는 IPMVC 후보를 MVI 후보 이전에 삽입할 수도 있으며 IDMVC 후보를 후보 B1 이후에 삽입할 수도 있다.
III-A.
비디오 인코더 (20) 는 현재의 PU/CU 의 시프트된 디스패리티 벡터들로부터의 참조 뷰로부터 더 많은 IPMVC들을 유도하여, 병합 후보 리스트를 생성할 수도 있다. 이러한 IPMVC들은 본원에서 "시프트된 IPMVC들" 로서 지칭된다.
1) 비디오 인코더 (20) 는 디스패리티 벡터 DV 를 수평으로 DV[0]+M1 만큼 그리고 수직으로 DV[1]+M2 만큼 시프트시킬 수도 있다. 게다가, 비디오 인코더 (20) 는 시프트된 디스패리티 벡터 (DV[0]+M1, DV[1]+M2) 를 이용하여, IPMVC 를 생성하기 위해 참조 뷰에서의 대응하는 블록을 로케이트할 수도 있다. IPMVC 가 이용가능하면, 비디오 인코더 (20) 는 이용가능한 IPMVC 를 병합 후보 리스트에 대한 추가적인 후보로서 사용할 수도 있다.
III-B.
상기 섹션 III-A, 불릿 # 1 (단락 [0231]) 에서와 같은, 시프트된 디스패리티 벡터로부터의 IPMVC 가 이용불가능하면, 비디오 인코더 (20) 는 추가적인 모션 벡터 후보 MvC 를 생성하기 위해 (이용가능한 디스패리티 모션 벡터인) mv[0] 의 수평 성분을 시프트시킴으로써, 공간 이웃하는 블록들 A1, B1, B0, A0 또는 B2 의 RefPicList0 에 대응하는 제 1 이용가능한 디스패리티 모션 벡터 (DMV) 를 이용하여 추가적인 후보를 유도할 수도 있다. 이 후보는 디스패리티 시프트된 모션 벡터 (DSMV) 로서 표시된다.
1) DMV 가 이용가능하고, MvC[0] = mv[0], MvC[1] = mv[1] 및 MvC[0][0]+= N 이면, 비디오 인코더 (20) 는 (DMV 를 포함하는) 제 1 이용가능한 후보로부터 참조 인덱스들을 상속할 수도 있다.
2) DMV 가 이용불가능하면, 비디오 인코더 (20) 는 고정된 N에 대해 어떤 추가적인 후보들도 생성하지 않을 수도 있다.
III-C. 비디오 인코더 (20) 는 DSMV 위에서 (예컨대, III-B 에서) 설명한 바와 같이 먼저 생성할 수도 있다. DSMV 가 상기 III-B 에서 설명된 유도를 통해서 이용불가능하면, 비디오 인코더 (20) 는 모션 벡터들을 디스패리티 벡터로부터 시프트된 벡터들로, 좀더 구체적으로는 다음과 같이 설정함으로써 (MvC 로 표시되는) DSMV 를 유도할 수도 있다:
1) MvC[0] = DV 및 MvC[0][0]+= N; MvC[0][1] = 0 및 MvC[1] = DV 및 MvC[1][0]+= N; MvC[1][1]= 0 및 MvC[X] 에 대응하는 참조 인덱스는 디스패리티 벡터와 함께 NBDV 프로세스 동안 식별되는 바와 같은 참조 뷰에 속하는 RefPicListX 에서의 픽처의 참조 인덱스로 설정된다. 대안적으로, 비디오 인코더 (20) 는 RefPicListX 와 연관되는 참조 인덱스를 -1 로 설정할 수도 있다. 비디오 인코더 (20) 는 N 을 값들 4, 8, 16, 32, 64, -4, -8, -16, -32, -64 중 임의의 것으로 설정할 수도 있다.
III-D. 비디오 인코더 (20) 는 동일하거나 동일하지 않을 수도 있는 시프트된 IPMVC 를 생성하는데 사용되는 시프트 값들 M1 및 M2 를 이용할 수도 있다.
1) 비디오 인코더 (20) 는 M1 및 M2 를 값들 4, 8, 16, 32, 64, -4, -8, -16, -32, -64 중 임의의 것으로 설정할 수도 있다.
2) 하나의 대안예에서, M1 은 (((폭/2)*4)+4) 과 동일할 수도 있으며, M2 는 (((높이/2)*4)+4) 과 동일할 수도 있으며, 여기서, 현재의 PU 사이즈는 폭 x 높이 이다.
IV. 비디오 인코더 (20) 는 IPMVC 및 IDMVC 를 포함하는 추가적인 병합 후보들의 각각에 대해 속박된 프루닝을 적용할 수도 있다.
1)
일 예에서, 비디오 인코더 (20) 는 MVI 후보와 비교함으로써 단지 IPMVC 를 프루닝할 수도 있다.
2)
일 예에서, 비디오 인코더 (20) 는 A1 및/또는 B1 로부터 유도된 공간 병합 후보들과 비교함으로써 단지 IDMVC 를 프로닝할 수도 있다.
3)
일 예에서, IPMVC 를 MVI 로 프루닝하는 것에 더해서, 비디오 인코더 (20) 는 또한 공간 후보들 A1 및 B1 을 IPMVC 및 MVI 양쪽으로 프루닝할 수도 있다.
예시적인 구현예들
아래 섹션들에서, 병합 후보 리스트에 대한 추가적인 후보들을 생성하는, (예컨대, 비디오 인코더 (20) 및/또는 그의 여러 구성요소들에 의해 구현될 수도 있는 것과 같은) 제안된 방법들의 하나의 예시적인 방법의 구현예가 설명된다.
예 #1
비디오 인코더 (20) 가 각각의 CU 에 대해 단일 디스패리티 벡터 (DV) 를 유도할 수도 있으며 단일 DV 가 그 안의 모든 PU들에 대해 적용된다.
비디오 인코더 (20) 는 로케이션들 {(x-1, y-1), (x-1, y+2N-1) 및 (x+2N-1, y-1)} 에서 이웃하는 복원된 심도 샘플들의 평균 심도 값들로부터, 이용가능하면, 디스패리티 벡터를 유도할 수도 있다. 그렇지 않으면, 비디오 인코더 (20) 는 디스패리티 벡터를 제로 벡터로 설정할 수도 있다.
비디오 인코더 (20) 는 IPMVC 후보를, 이용가능하면, MVI 후보 바로 뒤에 (즉시 뒤에) 그리고 공간 후보 A1 바로 전에 (바로 앞에) 추가할 수도 있다.
비디오 인코더 (20) 는 디스패리티 벡터 DV = (mvX, 0) 를 디스패리티 모션 벡터로 ((mvX+2)>>2, 0) 로서 변환함으로써 IDMVC 를 생성할 수도 있다.
비디오 인코더 (20) 는 IDMVC 후보를 공간 후보 B1 바로 다음에 (예컨대, 그에 인접하게) 삽입할 수도 있다.
추가적인 후보들을 가진 심도 뷰들에 대한 병합 후보 리스트 구성
비디오 인코더 (20) 는 추가적인 후보들 IPMVC 및 IDMVC 를 병합 후보 리스트에 삽입할 수도 있다. (예컨대, 비디오 인코더 (20) 및/또는 그의 여러 구성요소들에 의해 구현될 수도 있는 바와 같이) 추가적인 후보들 IPMVC 및 IDMVC 을 삽입하는 단계가 아래에 설명된다.
1. MVI 삽입
비디오 인코더 (20) 는 MVI 를 위에서 설명된 프로시저에 의해 유도할 수도 있다. MVI 가 이용가능하면, 비디오 인코더 (20) 는 MVI 를 병합 리스트에 삽입할 수도 있다.
2. IPMVC 삽입
비디오 인코더 (20) 는 IPMVC 를 상기 (단락 [0231] 에서) 불릿 II 에서 설명된 프로시저에 의해 유도할 수도 있다. IPMVC 가 이용가능하고 MVI 후보와 상이하면, 비디오 인코더 (20) 는 IPMVC 를 병합 후보 리스트에 삽입할 수도 있으며; 그렇지 않으면 IPMVC 는 리스트에 삽입되지 않는다.
3. 3D-HEVC 에서 공간 병합 후보들에 대한 유도 프로세스 및 IDMVC 삽입
비디오 인코더 (20) 는 공간 이웃하는 PU들의 모션 정보를 다음 순서로 체킹할 수도 있다: A1, B1, B0, A0, 또는 B2. 비디오 인코더 (20) 는 다음 프로시저들에 따라서 속박된 프루닝을 수행할 수도 있다:
- A1 및 MVI 가 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지면, 비디오 인코더 (20) 는 A1 을 후보 리스트에 삽입하지 않을 수도 있다.
- B1 및 A1/MVI 가 동일한 모션 벡터들 및 동일한 참조 인덱스들을 가지면, 비디오 인코더 (20) 는 B1 을 후보 리스트에 삽입하지 않을 수도 있다.
- 비디오 인코더 (20) 는 IDMVC 를 상기 불릿 II (단락 [0231]) 에서 설명된 프로시저에 의해 유도할 수도 있다. IDMVC 가 이용가능하고 A1 및 B1 로부터 유도된 후보들과 상이하면, 비디오 인코더 (20) 는 IDMVC 를 후보 리스트에 삽입할 수도 있다. 그렇지 않으면, 비디오 인코더 (20) 는 IDMVC 를 리스트에 삽입하지 않을 수도 있다.
- B0 가 이용가능하면, 비디오 인코더 (20) 는 B0 를 후보 리스트에 추가할 수도 있다.
- A0 가 이용가능하면, 비디오 인코더 (20) 는 A0 를 후보 리스트에 추가할 수도 있다.
- B2 가 이용가능하면, 비디오 인코더 (20) 는 B2 를 후보 리스트에 추가할 수도 있다.
4. 시간 병합 후보에 대한 유도 프로세스
HEVC 에서의 시간 병합 후보 유도 프로세스와 유사하게, 동일 위치에 배치된 PU 의 모션 정보가 이용된다. 그러나, 비디오 인코더 (20) 는 목표 참조 픽처 인덱스를 0 으로 고정하는 대신, 상기 "3D-HEVC 에서 텍스쳐 코딩을 위한 병합 후보 리스트 구성" 에서 설명된 바와 같이, 시간 병합 후보의 목표 참조 픽처 인덱스를 변경할 수도 있다.
5. 3D-HEVC 에서의 결합된 양방향-예측 병합 후보들에 대한 유도 프로세스
상기 2개의 단계들로부터 유도된 후보들의 총 개수가 후보들의 최대 개수 미만이면, 비디오 인코더 (20) 는 l0CandIdx 및 l1CandIdx 의 사양을 제외하고, HEVC 에 정의된 것과 동일한 프로세스를 수행할 수도 있다. combIdx, l0CandIdx 및 l1CandIdx 사이의 관계는 본 개시물의 테이블 1 에서 정의된다.
6. 제로 모션 벡터 병합 후보들에 대한 유도 프로세스
- 비디오 인코더 (20) 는 HEVC 에서 정의된 것과 동일한 프로시저를 수행할 수도 있다.
대안적으로, 게다가, 비디오 인코더 (20) 는 단계 #4 ("시간 병합 후보에 대한 유도 프로세스") 를 호출하기 직전에 추가된 (새로운) 단계를 수행할 수도 있다. 다시 말해서, 비디오 인코더 (20) 는 위에서 설명된 단계 #3 ("3D-HEVC 에서 공간 병합 후보들에 대한 유도 프로세스 및 IDMVC 삽입") 을 수행한 후 추가된 단계를 수행할 수도 있다. 비디오 인코더 (20) 에 의해 수행되는 새로운 단계가 다음과 같이 설명된다:
- 첫째, 비디오 인코더 (20) 는 시프팅 벡터 (M1, M2) 를 가진 DV 와 동일한 입력 디스패리티 벡터를 이용하여 추가적인 IPMVC 를 생성할 수도 있다.
- 추가적인 IPMVC 가 이용가능하고 (상기 단계 #2 ("IPMVC 삽입") 을 이용하여 유도된) IPMVC 와 상이하면, 비디오 인코더 (20) 는 추가적인 IPMVC 를 병합 후보 리스트에 추가할 수도 있다.
- 그렇지 않고, 추가적인 IPMVC 가 이용불가능하면, 비디오 인코더 (20) 는 다음이 적용될 수도 있다:
비디오 인코더 (20) 는 공간 이웃들로부터 후보들을 먼저 체킹할 수도 있으며, 비디오 인코더 (20) 는 디스패리티 모션 벡터를 포함하는 체크된 후보들 중 하나를 먼저 식별할 수도 있다.
이러한 후보가 이용가능하면, 비디오 인코더 (20) 는 (어쩌면 시간 모션 벡터를 포함한) 미변경된 후보의 다른 부분을 유지할 수도 있으며, 그러나 디스패리티 모션 벡터의 수평 성분을 L 만큼 시프트시킬 수도 있다. 비디오 인코더 (20) 는 시프트된 후보를 병합 후보 리스트에 추가할 수도 있다. 그렇지 않으면, 비디오 인코더는 새로운 후보를, 수평 성분을 N 만큼 시프트시킨 DV 와 동일한 입력 디스패리티 벡터를 갖는 디스패리티 모션 벡터 후보로 설정할 수도 있다. 비디오 인코더 (20) 는 그 후 시프트된 디스패리티 벡터를 정수 정밀도까지 사사오입할 수도 있으며, 사사오입된 시프트된 디스패리티 벡터를 병합 후보 리스트에 추가할 수도 있다.
일 예에서, 비디오 인코더 (20) 는 M1 및 M2 를 현재의 PU 의 폭 및 높이로 각각 설정할 수도 있다.
일 예에서, 비디오 인코더 (20) 는 L 을 1, -1, 4 또는 -4 로 설정할 수도 있으며, N 은 1, -1, 4 또는 -4 로 설정된다.
예 #2
비디오 인코더 (20) 는 각각의 CU 에 대해 단일 디스패리티 벡터 (DV) 를 유도할 수도 있으며, 그 안의 모든 PU들에 대해 유도된 DV 를 적용할 수도 있다. 비디오 인코더 (20) 는 비디오 인코더 (20) 가 가중치들 (5,5,6) 을 가진 3개의 이웃하는 복원된 심도 샘플들의 가중 평균을 이용하여 계산할 수도 있는 단일 심도 값으로부터 디스패리티 벡터를 유도할 수도 있다. 좀더 구체적으로, 비디오 인코더는 다음과 같이 단일 심도 값을 계산할 수도 있다:
여기서, (xC, yC) 는 사이즈 2Nx2N 의 현재의 CU 의 좌상부 모서리를 나타낸다. 비디오 인코더 (20) 는 계산된 심도 값 (Depth) 를, 이용가능하면, 디스패리티 벡터 DV 로 변환할 수도 있다. 그렇지 않으면, 비디오 인코더 (20) 는 디스패리티 벡터 DV 를 제로 벡터 (0, 0) 로 설정할 수도 있다.
비디오 인코더 (20) 는 유도된 디스패리티 벡터를 이용하여, IPMVC 후보를 유도할 수도 있다. IPMVC 가 이용가능하면, 비디오 인코더 (20) 는 IPMVC 를 병합 리스트에서 MVI 후보 바로 뒤에 그리고 공간 후보 A1 바로 앞에 추가할 수도 있다. 비디오 인코더 (20) 는 디스패리티 벡터 DV = (mvX, 0) 를 디스패리티 모션 벡터로 ((mvX+2)>>2, 0) 로서 변환함으로써, IDMVC 를 생성할 수도 있다.
비디오 인코더 (20) 는 IDMVC 후보를 공간 후보 B1 바로 다음에 삽입할 수도 있다. 예 #2 에 따르면, 병합 후보 리스트 구성 프로세스는 예 #1 에 대해 설명된 바와 동일하며, 여기서, 추가적인 삽입된 후보들은 밑줄로써 식별된다.
도 2 의 비디오 인코더 (20) 는 본 개시물에서 설명되는 여러 방법들을 수행하도록 구성된 비디오 인코더의 일 예를 나타낸다. 본원에서 설명되는 여러 예들에 따르면, 비디오 인코더 (20) 는 비디오 데이터를 코딩하는 방법을 수행하도록 구성되거나 또는 아니면 동작가능할 수도 있으며, 상기 방법은 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하는 단계; 및 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하는 단계를 포함한다. 본 방법은 디스패리티 벡터에 기초하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하는 단계; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하는 단계; 및 IDMVC 또는 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하는 단계를 더 포함할 수 있다. 여러 예들에서, IDMVC 또는 IPMVC 중 임의의 것을 병합 후보 리스트에 추가할지 여부를 결정하는 단계는 병합 후보 리스트에 IDMVC 또는 IPMVC 중 하나, 양쪽 모두를 추가할지, 어느 것도 추가하지 않을지 여부를 결정하는 단계를 포함할 수도 있다. 일부 예들에서, 심도 값을 결정하는 단계는 하나 이상의 이웃하는 픽셀들과 연관되는 값들의 가중 평균을 계산하는 단계를 포함할 수도 있다. 일부 예들에서, 하나 이상의 이웃하는 픽셀들은 비디오 데이터의 블록에 대한, 상부-좌측 픽셀, 상부-우측 픽셀, 및 우하측 픽셀을 포함한다. 일부 예들에서, 가중 평균을 계산하는 단계는 복수의 가중된 값들을 획득하기 위해, 오 (5), 육 (6), 및 오 (5) 의 가중치들을 상부-좌측 픽셀, 상부-우측 픽셀, 및 우하측 픽셀에 각각 적용하는 단계를 포함한다.
일부 예들에서, 가중 평균을 계산하는 단계는 복수의 가중된 값들에 기초하여 합계를 획득하는 단계; 및 오프셋 값 및 합계에 기초하여 오프셋 합계를 획득하는 단계를 더 포함한다. 일부 예들에 따르면, 가중 평균을 계산하는 단계는 오프셋 합계를 미리 결정된 값으로 나누는 단계를 더 포함한다. 하나의 이런 예에서, 오프셋 값은 팔 (8) 의 값을 포함하며, 미리 결정된 값은 십육 (16) 의 값을 포함한다. 일부 예들에 따르면, 심도 값을 결정하는 단계는 하나 이상의 이웃하는 픽셀들과 연관되는 평균 값, 메디안 값, 또는 최빈 값 중 적어도 하나를 계산하는 단계를 포함한다. 일부 예들에 따르면, 비디오 데이터의 블록은 코딩 유닛 (CU) 이며, 생성된 디스패리티 벡터가 CU 에 포함된 모든 예측 유닛들 (PUs) 에 적용된다. 일부 예들에서, IPMVC 를 생성하는 단계는 베이스 뷰에서의 비디오 데이터의 대응하는 블록으로부터 IPMVC 를 유도하는 단계를 포함한다.
여러 예들에 따르면, 본 방법은 시프트된 디스패리티 벡터를 형성하기 위해 디스패리티 벡터를 공간적으로 시프트시키는 단계; 및 베이스 뷰에서의 비디오 데이터의 대응하는 블록을 로케이트시키기 위해 시프트된 디스패리티 벡터를 이용하는 단계를 더 포함한다. 이러한 일부 예들에서, 본 방법은 시프트된 IPMVC 가 로케이트된 베이스 뷰에서의 비디오 데이터의 대응하는 블록으로부터 이용가능한지 여부를 결정하는 단계; 및 시프트된 IPMVC 가 이용가능하다고 결정하는 것에 기초하여, 시프트된 IPMVC 를 병합 리스트에 추가할지 여부를 결정하는 단계를 더 포함한다. 일부 예들에서, 현재의 블록의 하나 이상의 공간 이웃하는 블록들의 각각은 개개의 참조 픽처 리스트 0 및 개개의 참조 픽처 리스트 1 과 연관된다. 이러한 일부 예들에서, 본 방법은 시프트된 IPMVC 가 베이스 뷰로부터 이용불가능하다고 결정하는 단계; 공간 이웃하는 블록들과 연관되는 적어도 하나의 개개의 참조 픽처 리스트 0 이 디스패리티 모션 벡터를 포함하는지 여부를 결정하는 단계; 공간 이웃하는 블록들과 연관되는 적어도 하나의 개개의 참조 픽처 리스트 0 이 디스패리티 모션 벡터를 포함한다고 결정하는 것에 기초하여, 디스패리티 시프트된 모션 벡터 (DSMV) 후보를 형성하기 위해 개개의 참조 픽처 리스트 0 에 포함된 디스패리티 모션 벡터의 수평 성분을 시프트시키는 단계; 및 DSMV 후보를 병합 리스트에 추가하는 단계를 더 포함한다.
일부 예들에서, 본 방법은 어떤 개개의 참조 픽처 리스트들 0 도 디스패리티 모션 벡터에 포함되지 않는다고 결정하는 단계; DSMV 후보를 형성하기 위해 오프셋 값을 디스패리티 벡터에 적용하는 단계; 및 DSMV 후보를 병합 리스트에 적용하는 단계를 더 포함한다. 일부 예들에 따르면, 심도 값을 결정하는 단계는 하나 이상의 이웃하는 픽셀들이 오직 하나의 이용가능한 이웃하는 픽셀을 포함한다고 결정하는 단계; 및 비디오 데이터의 블록의 심도 값을 형성하기 위해 하나의 이용가능한 이웃하는 픽셀의 심도 값을 상속하는 단계를 포함한다. 일부 예들에서, 본 방법은 어떤 하나 이상의 이웃하는 픽셀들도 이용불가능하다고 결정하는 단계를 더 포함하며, 여기서, 디스패리티 벡터를 생성하는 단계는 디스패리티 벡터를 제로 벡터로 설정하는 단계 또는 비디오 데이터의 블록과 연관되는 심도 값을 디폴트 심도 값으로 설정하는 단계 중 적어도 하나를 포함한다.
본 개시물의 여러 양태들에 따르면, 비디오 인코더 (20) 는 비디오 데이터를 코딩하는 방법을 수행할 수도 있으며, 상기 방법은 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하는 단계를 포함하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 본 방법은 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하는 단계를 더 포함할 수 있다. 일부 예들에서, IPMVC 를 병합 리스트에 추가하는 단계는 MVI 후보가 병합 후보 리스트에의 추가에 이용불가능한 것에 기초하여 IPMVC 를 병합 후보 리스트 내의 초기 위치에 삽입하는 것, 또는 MVI 후보가 병합 후보 리스트에의 추가에 이용가능한 것에 기초하여 IPMVC 를 병합 후보 리스트 내 MVI 후보의 위치에 뒤따르는 병합 후보 리스트 내의 위치에 삽입하는 것 중 하나를 수행하는 단계를 포함한다. 여러 예들에서, 초기 위치는 제로 (0) 의 인덱스 값과 연관된다. 일부 예들에 따르면, IPMVC 를 MVI 후보와 비교하는 단계는 IPMVC 와 연관되는 모션 정보를 MVI 후보와 연관되는 대응하는 모션 정보와 비교하는 단계; 및 IPMVC 와 연관되는 적어도 하나의 참조 인덱스를 MVI 후보와 연관되는 적어도 하나의 대응하는 참조 인덱스와 비교하는 단계를 포함한다.
일부 예들에서, 본 방법은 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 병합 후보 리스트와 연관되는 제 1 공간 후보 및 병합 후보 리스트와 연관되는 제 2 공간 후보 중 이용가능한 하나 이상과 비교하는 단계를 더 포함하며, 여기서, IDMVC, 제 1 공간 후보, 및 제 2 공간 후보의 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, IDMVC 는 비디오 데이터의 블록과 연관되는 디스패리티 벡터로부터 생성된다. 일부 예들에서, 본 방법은 IDMVC 가 제 1 공간 후보 및 제 2 공간 후보 중 이용가능한 하나 이상의 각각과는 상이한 것하여 IDMVC 를 병합 후보 리스트를 추가하는 것, 또는 IDMVC 가 제 1 공간 후보 또는 제 2 공간 후보 중 적어도 하나와 동일한 것에 기초하여 병합 후보 리스트로부터 IDMVC 를 제외시키는 것 중 하나를 수행하는 단계를 더 포함한다.
일부 예들에서, IDMVC 를 병합 후보 리스트에 추가하는 단계는 IDMVC 를 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하는 단계를 포함한다. 일부 예들에 따르면, IDMVC 를 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하는 단계는 IDMVC 를 제 1 공간 후보의 위치 또는 제 2 공간 후보의 위치 중 적어도 하나에 뒤따르는 위치에 삽입하는 단계를 포함한다.
여러 예들에 따르면, 본 방법은 시프트된 IPMVC 가 이용가능하다고 결정하는 단계를 더 포함하며, 여기서, 시프트된 IPMVC 는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 시프트된 IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 이러한 일부 예들에서, 본 방법은 시프트된 IPMVC 를 IPMVC 와 비교하는 단계를 더 포함한다. 일부 예들에서, 본 방법은 시프트된 IPMVC 가 IPMVC 와는 상이한 것 및 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, 시프트된 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 와 동일한 시프트된 IPMVC 에 기초하여, 병합 후보 리스트로부터 시프트된 IPMVC 를 제거시키는 것 중 하나를 수행하는 단계를 더 포함한다.
일부 예들에서, 본 방법은 디스패리티 시프트된 모션 벡터 (DSMV) 후보가 이용가능하다고 결정하는 단계를 더 포함하며, 여기서, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들을 이용하여 생성된다. 일부 이러한 예들에서, 본 방법은 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, DSMV 후보를 병합 후보 리스트에 추가하는 단계를 더 포함한다. 일부 예들에서, DSMV 후보를 병합 후보 리스트에 추가하는 단계는 DSMV 후보를, 1) 병합 후보 리스트에 포함된 공간 후보의 위치에 뒤따르는 위치, 및 2) 병합 후보 리스트에 포함된 시간 후보의 위치에 선행하는 위치에 삽입하는 단계를 포함한다.
일부 예들에 따르면, DSMV 후보가 이용가능하다고 결정하는 단계는 시프트된 IPMVC 가 이용불가능하다고 결정하는 것에 응답하며, 여기서, 시프트된 IPMVC 는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 시프트된 IPMVC 는 비디오 데이터의 블록의 베이스 뷰로부터 생성된다. 일부 예들에서, DSMV 후보는 하나 이상의 공간 이웃하는 샘플들 중 적어도 하나의 공간 이웃하는 샘플과 연관되는 참조 픽처 리스트 0 (RefPicList0) 으로부터 선택되는 디스패리티 모션 벡터 (DMV) 를 포함한다. 일부 예들에 따르면, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 시프트시킴으로써 생성되며, 디스패리티 벡터는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들과 연관되는 하나 이상의 심도 값들로부터 생성된다.
도 3 은 비디오 코딩에서의 심도 지향 인터-뷰 모션 벡터 예측을 위한 기법들을 구현하거나 또는 아니면 이용할 수도 있는 비디오 디코더 (30) 의 일 예를 예시하는 블록도이다. 도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라-예측 유닛 (74), 역양자화 유닛 (76), 역변환 유닛 (78), 참조 프레임 메모리 (82) 및 합산기 (80) 를 포함한다. 비디오 디코더 (30) 는 일부 예들에서, 비디오 인코더 (20) 에 대해 설명된 인코딩 과정과는 일반적으로 반대인 디코딩 과정을 수행할 수도 있다 (도 2). 모션 보상 유닛 (44) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있는 반면, 인트라 예측 유닛 (74) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 인트라-예측 모드 표시자들에 기초하여 예측 데이터를 생성할 수도 있다.
디코딩 프로세스 동안, 비디오 디코더 (30) 는 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관되는 신택스 엘리먼트들을 나타내는 인코딩된 비디오 비트스트림을 비디오 인코더 (20) 로부터 수신한다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (70) 은 그 비트스트림을 엔트로피 인코딩하여, 양자화된 계수들, 모션 벡터들 또는 인트라-예측 모드 표시자들, 및 다른 신택스 엘리먼트들을 생성한다. 엔트로피 디코딩 유닛 (70) 은 모션 벡터들, 및 다른 신택스 엘리먼트들을 모션 보상 유닛 (81) 으로 포워딩한다. 비디오 디코더 (30) 는 신택스 엘리먼트들을 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 수신할 수도 있다.
비디오 슬라이스가 인트라-코딩된 (I) 슬라이스로서 코딩될 때, 인트라 예측 유닛 (74) 은 시그널링된 인트라 예측 모드 및 현재의 프레임 또는 픽처의 이전에 디코딩된 블록들로부터의 데이터에 기초하여, 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 생성할 수도 있다. 비디오 프레임이 인터-코딩된 (즉, B, P 또는 GPB) 슬라이스로서 코딩될 때, 모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 참조 픽처 리스트들 중 하나 내 참조 픽처들 중 하나로부터 생성될 수도 있다. 비디오 디코더 (30) 는 디폴트 구성 기법들을 이용하여, 참조 프레임 메모리 (82) 에 저장된 참조 픽처들에 기초하여, 참조 프레임 리스트들, 즉, List 0 및 List 1 을 구성할 수도 있다. 모션 보상 유닛 (44) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 그리고, 그 예측 정보를 이용하여, 디코딩중인 현재의 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (44) 은 그 수신된 신택스 엘리먼트들 중 일부를 이용하여, 비디오 슬라이스의 비디오 블록들을 코딩하는 사용되는 예측 모드 (예컨대, 인트라- 또는 인터-예측), 인터-예측 슬라이스 유형 (예컨대, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 리스트들 중 하나 이상에 대한 구성 정보, 슬라이스의 각각의 인터-인코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터-코딩된 비디오 블록에 대한 인터-예측 상태, 및 다른 정보를 결정하여, 현재의 비디오 슬라이스에서의 비디오 블록들을 디코딩한다.
모션 보상 유닛 (44) 은 또한 내삽 필터들에 기초하여 내삽을 수행할 수도 있다. 모션 보상 유닛 (44) 은 비디오 블록들의 인코딩 동안 비디오 인코더 (20) 에 의해 사용되는 것과 같은 내삽 필터들을 이용하여, 참조 블록들의 서브-정수 픽셀들에 대해 내삽된 값들을 계산할 수도 있다. 이 경우, 모션 보상 유닛 (44) 은 수신된 신택스 엘리먼트들로부터 비디오 인코더 (20) 에 의해 사용되는 내삽 필터들을 결정하고 그 내삽 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
역양자화 유닛 (76) 은 비트스트림으로 제공되어 엔트로피 디코딩 유닛 (70) 에 의해 디코딩되는 양자화된 변환 계수들을 역양자화한다, 즉 양자화 해제한다. 역양자화 프로세스는 양자화의 정도를 결정하기 위해, 그리고, 이와 유사하게, 적용되어야 하는 역양자화의 정도를 결정하기 위해, 비디오 슬라이스에서의 각각의 비디오 블록에 대한, 비디오 디코더 (30) 에 의해 계산된 양자화 파라미터 QPY 의 사용을 포함할 수도 있다.
역변환 유닛 (78) 은 픽셀 도메인에서 잔차 블록들을 생성하기 위해, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스와 같은 역변환을 변환 계수들에 적용한다.
모션 보상 유닛 (72) 이 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재의 비디오 블록에 대한 예측 블록을 생성한 후, 비디오 디코더 (30) 는 역변환 유닛 (78) 으로부터의 잔차 블록들을 모션 보상 유닛 (72) 에 의해 생성된 대응하는 예측 블록들과 합산함으로써, 디코딩된 비디오 블록을 형성한다. 합산기 (80) 은 이 합산 동작을 수행하는 구성요소 또는 구성요소들을 나타낸다. 원할 경우, 블록킹 현상 아티팩트들 (blockiness artifacts) 를 제거하기 위해 디블록킹 필터가 또한 그 디코딩된 블록들을 필터링하는데 적용될 수도 있다. (코딩 루프 중에 또는 코딩 루프 이후에) 다른 루프 필터들이 또한 픽셀 전환들 (pixel transitions) 을 평활화하거나 또는 아니면 비디오 품질을 향상시키기 위해 사용될 수도 있다. 주어진 프레임 또는 픽처에서 디코딩된 비디오 블록들은 그 후 참조 픽처 메모리 (82) 에 저장되며, 이 메모리는 후속 모션 보상을 위해 사용되는 참조 픽처들을 저장한다. 참조 프레임 메모리 (82) 는 또한 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상에의 추후 프리젠테이션을 위해, 디코딩된 비디오를 저장한다.
여러 예들에서, 비디오 디코더 (30) 또는 비디오 인코더 (20) (및/또는 그의 여러 구성요소(들)) 중 하나 또는 양자는 비디오 데이터를 코딩하는 장치를 나타내거나, 포함하거나, 그 장치이거나 또는 그 장치의 일부일 수도 있으며, 본 장치는 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하는 수단; 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하는 수단; 디스패리티 벡터를 이용하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하는 수단; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하는 수단; 및 IDMVC 및 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하는 수단을 포함한다.
여러 예들에서, 비디오 디코더 (30) 또는 비디오 인코더 (20) (및/또는 그의 여러 구성요소(들)) 중 하나 또는 양자는 명령들로 인코딩된 컴퓨터 판독가능 저장 매체를 나타내거나, 포함하거나, 그 장치이거나 또는 그 장치의 일부일 수도 있으며, 상기 명령들은 실행되는 경우, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금, 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하고; 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하고; 디스패리티 벡터를 이용하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하고; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하며;, IDMVC 및 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하도록 한다.
여러 예들에서, 비디오 디코더 (30) 또는 비디오 인코더 (20) (및/또는 그의 여러 구성요소(들)) 중 하나 또는 양자는 비디오 데이터를 코딩하는 장치를 나타내거나, 포함하거나, 그 장치이거나 또는 그 장치의 일부일 수도 있으며, 상기 장치는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하는 수단을 포함하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 상기 장치는 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하는 수단을 더 포함할 수도 있다.
여러 예들에서, 비디오 디코더 (30) 또는 비디오 인코더 (20) (및/또는 그의 여러 구성요소(들)) 중 하나 또는 양자는 명령들로 인코딩된 컴퓨터 판독가능 저장 매체를 나타내거나, 포함하거나, 그 장치이거나 또는 그 장치의 일부일 수도 있으며, 상기 명령들은 실행되는 경우, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금, 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하도록 하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 명령들은, 실행될 때, 추가로, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금, IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하도록 한다.
도 4 는 예시적인 멀티-뷰 디코딩 순서를 예시하는 개념도이다. 멀티-뷰 디코딩 순서는 비트스트림 순서일 수도 있다. 도 4 의 예에서, 각각의 정사각형은 뷰 성분에 대응한다. 정사각형들의 칼럼들은 액세스 유닛들에 대응한다. 각각의 액세스 유닛은 시간 인스턴스의 모든 뷰들의 코딩된 픽처들을 포함하도록 정의될 수도 있다. 정사각형들의 로우들은 뷰들에 대응한다. 도 4 의 예에서, 액세스 유닛들은 T0…T11 로 라벨링되며, 뷰들은 S0…S7 로 라벨링된다. 액세스 유닛의 각각의 뷰 성분이 다음 액세스 유닛의 임의의 뷰 성분 이전에 디코딩되기 때문에, 도 4 의 디코딩 순서는 시간-우선 코딩으로서 지칭될 수도 있다. 액세스 유닛들의 디코딩 순서는 출력 또는 디스플레이 순서와 동일하지 않을 수도 있다.
멀티-뷰 코딩은 인터-뷰 예측을 지원할 수도 있다. 인터-뷰 예측은 H.264/AVC, HEVC, 또는 다른 비디오 코딩 사양들에 사용되는 인터 예측과 유사하며, 동일한 신택스 엘리먼트들을 이용할 수도 있다. 그러나, 비디오 코더가 (매크로블록 또는 PU 와 같은) 현재의 비디오 유닛에 관해 인터-뷰 예측을 수행할 때, 비디오 코더는 참조 픽처로서, 현재의 비디오 유닛과 동일한 액세스 유닛에 있지만 상이한 뷰에 있는 픽처를 이용할 수도 있다. 이에 반해, 종래의 인터 예측은 단지 상이한 액세스 유닛들에서의 픽처들을 참조 픽처들로서 이용한다.
도 5 는 MVC, 멀티-뷰 HEVC, 및 3D-HEVC (멀티-뷰 플러스 심도) 와 함께 사용될 수도 있는 예시적인 MVC 예측 패턴을 예시하는 개념도이다. 아래에서 MVC 에 대한 참조들은 MVC 에 일반적으로 적용되며, H.264/MVC 에 한정되지 않는다.
도 5 의 예에서, 8개의 뷰들 (S0-S7) 이 예시되며, 12개의 시간 로케이션들 (T0-T11) 이 각각의 뷰에 대해 예시된다. 일반적으로, 도 5 에서 각각의 로우는 뷰에 대응하지만, 각각의 칼럼은 시간 로케이션을 나타낸다. 뷰들 각각은 뷰 식별자 ("view_id") 를 이용하여 식별될 수도 있으며, 이 식별자는 다른 뷰들에 대해 상대적인 카메라 로케이션을 나타내는데 사용될 수도 있다. 도 5 에 나타낸 예에서, 뷰 ID들이 "S0" 내지 "S7" 로서 표시되지만, 숫자 뷰 ID들이 또한 사용될 수도 있다. 게다가, 시간 로케이션들 각각은 픽처들의 디스플레이 순서를 나타내는 POC (picture order count) 값을 이용하여 식별될 수도 있다. 도 5 에 나타낸 예에서, POC 값들은 "T0" 내지 "T11" 로서 표시된다.
멀티-뷰 코딩된 비트스트림이 소위 특정의 디코더들에 의해 디코딩가능한 베이스 뷰를 가질 수도 있고 스테레오 뷰 쌍이 지원될 수도 있지만, 일부 멀티-뷰 비트스트림들은 2개보다 많은 뷰들을 3D 비디오 입력으로서 지원할 수도 있다. 따라서, 특정의 디코더를 가지는 클라이언트의 렌더러는 다수의 뷰들을 갖는 3D 비디오 콘텐츠를 예상할 수도 있다.
도 5 에서의 픽처들은 대응하는 픽처가 인트라-코딩되거나 (즉, I-프레임), 또는 하나의 방향으로 (즉, P-프레임으로서) 또는 다수의 방향들로 (즉, B-프레임으로서) 인터-코딩되는지 여부를 지시하는 문자를 포함하는 음영진 블록을 이용하여 표시된다. 일반적으로, 예측들은 화살표들로 표시되며, 여기서, 지시도달 픽처는 예측 참조를 위해 지시출발 대상 (오브젝트) 을 이용한다. 예를 들어, 시간 로케이션 T0 에서 뷰 S2 의 P-프레임은 시간 로케이션 T0 에서 뷰 S0 의 I-프레임으로부터 예측된다.
단일 뷰 비디오 인코딩에서와 같이, 멀티-뷰 비디오 시퀀스의 픽처들은 상이한 시간 로케이션들에서의 픽처들에 대해 예측 인코딩될 수도 있다. 예를 들어, 시간 로케이션 T1 에서 뷰 S0 의 b-프레임은 시간 로케이션 T0 에서의 뷰 S0 의 I-프레임으로부터 지시되는 화살표로 지시되며, 이 화살표는 b-프레임이 I-프레임으로부터 예측된다는 것을 나타낸다. 게다가, 그러나, 멀티-뷰 비디오 인코딩의 상황에서, 픽처들은 인터-뷰 예측될 수도 있다. 즉, 뷰 성분은 참조를 위해 다른 뷰들에서의 뷰 성분들을 이용할 수 있다. 예를 들어, 인터-뷰 예측은 마치 또 다른 뷰에서의 뷰 성분이 인터-예측 참조인 것처럼 실현될 수도 있다. 잠재적인 인터-뷰 참조들은 시퀀스 파라미터 세트 (SPS) MVC 확장판으로 시그널링될 수도 있으며, 인터-예측 또는 인터-뷰 예측 참조들의 유연한 순서정렬을 가능하게 하는 참조 픽처 리스트 구성 프로세스에 의해 수정될 수도 있다.
도 5 는 인터-뷰 예측의 여러 예들을 제공한다. 뷰 S1 의 픽처들은, 도 5 의 예에서, 뷰 S1 의 상이한 시간 로케이션들에서 픽처들로부터 예측될 뿐만 아니라, 동일한 시간 로케이션들에서 뷰들 S0 및 S2 의 픽처들의 픽처들로부터 인터-뷰 예측되는 것으로 예시된다. 예를 들어, 시간 로케이션 T1 에서 뷰 S1 의 b-프레임은 시간 로케이션들 T0 및 T2 에서의 뷰 S1 의 B-프레임들의 각각 뿐만아니라, 시간 로케이션 T1 에서의 뷰들 S0 및 S2 의 b-프레임들로부터 예측된다.
도 5 의 예에서, 대문자 "B" 및 소문자 "b" 는 상이한 인코딩 방법론들보다는, 픽처들 사이의 상이한 계층적 관계들을 나타내도록 의도된다. 일반적으로, 대문자 "B" 프레임들은 소문자 "b" 프레임들보다 예측 계층에서 상대적으로 더 높다. 도 5 는 또한 상이한 레벨들의 음영을 이용한 예측 계층에서의 변형예들을 예시하며, 여기서, 더 많은 양의 음영진 (즉, 상대적으로 더 어두운) 픽처들이 예측 계층에서 더 적은 음영을 갖는 그들 픽처들보다 더 높다 (즉, 상대적으로 더 밝다). 예를 들어, 도 5 에서의 모든 I-프레임들은 풀 음영으로 예시되며, P-프레임들은 다소 밝은 음영을 가지며, B-프레임들 (및 소문자 b-프레임들) 은 서로에 대해 여러 레벨들의 음영을 가지나, P-프레임들 및 I-프레임들의 음영보다 항상 더 밝다.
일반적으로, 예측 계층은, 등급에서 상대적으로 더 높은 그들 픽처들이 등급에서 상대적으로 낮은 픽처들의 디코딩 동안 참조 픽처들로서 사용될 수 있도록, 예측 등급에서 상대적으로 더 높은 픽처들이 등급에서 상대적으로 낮은 픽처들을 디코딩하기 전에 디코딩되어야 한다는 점에서, 뷰 순서 인덱스들에 관련된다. 뷰 순서 인덱스는 액세스 유닛에서의 뷰 성분들의 디코딩 순서를 나타내는 인덱스이다. 뷰 순서 인덱스들은 SPS 와 같은 파라미터 세트에 암시될 수도 있다.
이러한 방법으로, 참조 픽처들로서 사용되는 픽처들은 그 참조 픽처들과 관련하여 인코딩되는 픽처들을 디코딩하기 전에 디코딩될 수도 있다. 뷰 순서 인덱스는 액세스 유닛에서의 뷰 성분들의 디코딩 순서를 나타내는 인덱스이다. 각각의 뷰 순서 인덱스 i 에 대해, 대응하는 view_id 가 시그널링된다. 뷰 성분들의 디코딩은 뷰 순서 인덱스들의 오름 차순을 따른다. 모든 뷰들이 제시되면, 뷰 순서 인덱스들의 세트는 제로로부터 뷰들의 전체 개수 하나 미만까지의 연속적으로 순서화된 세트를 포함한다.
부합하는 서브-비트스트림을 형성하기 위해 전체 비트스트림의 서브세트가 추출될 수 있다. 예를 들어, 서버에 의해 제공되는 서비스, 하나 이상의 클라이언트들의 디코더들의 용량, 지원 및 능력들, 및/또는 하나 이상의 클라이언트들의 선호사항에 기초하여, 특정의 애플리케이션들이 요구할 수도 있는 많은 가능한 서브-비트스트림들이 존재한다. 예를 들어, 클라이언트는 단지 3개의 뷰들을 필요로 할지도 모르며, 거기에는 2개의 시나리오들이 존재할지도 모른다. 일 예에서, 하나의 클라이언트는 매끄러운 뷰잉 경험을 필요로 할 수도 있으며 view_id 값들 S0, S1, 및 S2 를 갖는 뷰들을 선호할지도 모르며, 한편, 또 다른 클라이언트는 뷰 스케일러빌리티를 필요로 할 수도 있으며 view_id 값들 S0, S2, 및 S4 를 갖는 뷰들을 선호할 수도 있다. 이들 서브-비트스트림들 양쪽이 독립적인 비트스트림들으로서 디코딩될 수 있으며 동시에 지원될 수 있다는 점에 유의한다.
인터-뷰 예측에 있어, 인터-뷰 예측은 동일한 액세스 유닛에서 (즉, 동일한 시간 인스턴스를 가진) 픽처들 사이에 허용된다. 비-베이스 뷰들 중 하나에서의 픽처를 코딩할 때, 픽처가 상이한 뷰에 있지만 동일한 시간 인스턴스 내에 있으면, 픽처가 참조 픽처 리스트에 추가될 수도 있다. 인터-뷰 예측 참조 픽처는 임의의 인터 예측 참조 픽처와 유사하게, 참조 픽처 리스트의 임의의 위치에 삽입될 수 있다.
따라서, 멀티-뷰 비디오 코딩의 상황에서, 2종류의 모션 벡터들이 존재한다. 모션 벡터의 한 종류는 시간 참조 픽처를 가리키는 법선 (normal) 모션 벡터이다. 법선, 시간 모션 벡터에 대응하는 인터 예측의 유형은 모션-보상된 예측 (MCP) 으로서 지칭될 수도 있다. 인터-뷰 예측 참조 픽처가 모션 보상을 위해 사용될 때, 대응하는 모션 벡터는 "디스패리티 모션 벡터" 로서 지칭된다. 다시 말해서, 디스패리티 모션 벡터는 상이한 뷰에서의 픽처 (즉, 디스패리티 참조 픽처 또는 인터-뷰 참조 픽처) 를 가리킨다. 디스패리티 모션 벡터에 대응하는 인터 예측의 유형은 "디스패리티-보상된 예측" 또는 "DCP" 로서 지칭될 수도 있다.
위에서 언급한 바와 같이, HEVC 의 멀티-뷰 확장판 (즉, MV-HEVC) 및 HEVC 의 3DV 확장판 (즉, 3D-HEVC) 이 개발되고 있다. MV-HEVC 및 3D-HEVC 는 인터-뷰 모션 예측 및 인터-뷰 잔차 예측을 이용하여 코딩 효율을 향상시킬 수도 있다. 인터-뷰 모션 예측에서, 비디오 코더는 현재의 PU 와는 상이한 뷰에서의 PU 의 모션 정보에 기초하여 현재의 PU 의 모션 정보를 결정할 (즉, 예측할) 수도 있다. 인터-뷰 잔차 예측에서, 비디오 코더는 도 5 에 나타낸 예측 구조를 이용하여 현재의 CU 와는 상이한 뷰에서의 잔차 데이터에 기초하여 현재의 CU 의 잔차 블록들을 결정할 수도 있다.
인터-뷰 모션 예측 및 인터-뷰 잔차 예측을 이용가능하게 하기 위해, 비디오 코더는 블록들 (예컨대, PU들, CU들, 등) 에 대한 디스패리티 벡터들을 결정할 수도 있다. 일반적으로, 디스패리티 벡터는 2개의 뷰들 사이의 변위의 추정자로서 사용된다. 비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은, 비디오 코더는 블록에 대한 디스패리티 벡터를 이용하여, 인터-뷰 모션 또는 잔차 예측을 위해 또 다른 뷰에서의 (본원에서 디스패리티 참조 블록으로서 지칭될 수도 있는) 참조 블록을 로케이트할 수도 있거나, 또는 비디오 코더는 인터-뷰 모션 예측을 위해 디스패리티 벡터를 디스패리티 모션 벡터로 변환할 수도 있다.
도 6 은 시간 이웃하는 블록들을 예시하는 개념도이다. 도 6 에 예시된 시간 이웃하는 블록들은 이웃하는 블록-기반 디스패리티 벡터 (NBDV) 코딩에 따라서 사용될 수도 있다. 게다가, 도 6 에 예시된 시간 이웃하는 블록들은 본 개시물의 심도-지향 인터-뷰 모션 예측 기법들 중 하나 이상을 구현하기 위해, 비디오 인코더 (20) 및/또는 그의 구성요소들과 같은, 비디오 코딩 디바이스에 의해 사용될 수도 있다. 도 6 은 CU (100) 를 예시한다. 예를 들어, CU (100) 는 의존적인 심도 뷰에 포함될 수도 있다.
도 6 에 나타낸 바와 같이, CU (100) 는 4 x 4 포맷으로 파티셔닝되며, 총 4개의 PU들을 예시한다. 폭 (106) 및 높이 (108) 는 CU (100) 의 단일 PU 의 폭 및 높이를 예시하며, CU (100) 의 절반 폭 및 절반 높이를 각각 나타낸다. 예를 들어, 폭 (106) 및 높이 (108) 는 오프셋 값들 M1 및 M2 를 계산할 때에 비디오 인코더 (20) 에 의해 사용되는 "폭/2" 및 "높이/2" 값들을 나타낼 수도 있다. 게다가, 중심 위치 (102) 는 베이스 뷰에 나타낸 동일 위치에 배치된 영역과 같은, CU 의 현재의 PU 의 동일 위치에 배치된 영역의 중심 블록을 나타낼 수도 있다. 이와 유사하게, 우하측 위치 (106) 는 베이스 뷰에 나타낸 동일 위치에 배치된 영역과 같은, CU 의 현재의 PU 의 동일 위치에 배치된 영역의 우하측 블록을 나타낼 수도 있다.
도 7 은 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 베이스 뷰로부터 심도 블록을 로케이트하고 BVSP 예측을 위해 로케이트된 심도 블록을 이용할 수도 있는 예시적인 3 단계 프로세스를 예시한다. 양방향-예측 VSP 에 따르면, RefPicList0 및 RefPicList1 에서의 상이한 뷰들로부터의 다수의 인터뷰 참조 픽처들이 있을 때, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 양방향-예측 VSP 를 적용할 수도 있다. 즉, 비디오 인코더 (20) 는 본원에서 설명하는 바와 같이, 각각의 참조 리스트로부터 2개의 VSP 예측자들을 생성할 수도 있다. 결국, 비디오 인코더 (20) 는 2개의 VSP 예측자들을 평균하여, 최종 VSP 예측자를 획득할 수도 있다.
도 8 은 위에서 설명된 현재의 블록, 대응하는 블록, 및 모션 보상된 블록 사이의 관계를 예시한다. 다시 말해서, 도 8 은 ARP 에서 현재의 블록, 참조 블록, 및 모션 보상된 블록 사이의 예시적인 관계를 예시하는 개념도이다. 도 8 의 예에서, 비디오 코더는 현재의 픽처 (131) 에서의 현재의 PU (130) 를 현재 코딩하고 있다. 현재의 픽처 (131) 는 뷰 V1 및 시간 인스턴스 T1 과 연관된다.
더욱이, 도 8 의 예에서, 비디오 코더는 현재의 PU (130) 의 디스패리티 벡터에 의해 표시되는 로케이션과 연관되는 참조 픽처 (133) 의 실제 또는 내삽된 샘플들을 포함하는 참조 블록 (132) (즉, 대응하는 블록) 을 결정할 수도 있다. 예를 들어, 참조 블록 (132) 의 좌상부 모서리는 현재의 PU (130) 의 디스패리티 벡터에 의해 표시되는 로케이션일 수도 있다. 시간-디스패리티 참조 블록 (145) 은 현재의 PU (130) 의 예측 블록과 동일한 사이즈를 가질 수도 있다.
도 8 의 예에서, 현재의 PU (130) 는 제 1 모션 벡터 (134) 및 제 2 모션 벡터 (136) 를 갖는다. 모션 벡터 (134) 는 시간 참조 픽처 (138) 에서의 로케이션을 표시한다. 시간 참조 픽처 (138) 는 뷰 V1 (즉, 현재의 픽처 (131) 와 동일한 뷰) 및 시간 인스턴스 T0 와 연관된다. 모션 벡터 (136) 는 시간 참조 픽처 (140) 에서의 로케이션을 표시한다. 시간 참조 픽처 (140) 는 뷰 V1 및 시간 인스턴스 T3 와 연관된다.
위에서 설명된 ARP 방식에 따르면, 비디오 코더는 참조 픽처 (133) 와 동일한 뷰와 연관되고 시간 참조 픽처 (138) 와 동일한 시간 인스턴스와 연관되는 참조 픽처 (즉, 참조 픽처 (142)) 를 결정할 수도 있다. 게다가, 비디오 코더는 모션 벡터 (134) 를 참조 블록 (132) 의 좌상부 모서리의 좌표들에 가산하여 시간-디스패리티 참조 로케이션을 유도할 수도 있다. 비디오 코더는 시간-디스패리티 참조 블록 (143) (즉, 모션 보상된 블록) 을 결정할 수도 있다. 시간-디스패리티 참조 블록 (143) 에서의 샘플들은 모션 벡터 (134) 로부터 유도된 시간-디스패리티 참조 로케이션과 연관되는 참조 픽처 (142) 의 실제 또는 내삽된 샘플들일 수도 있다. 시간-디스패리티 참조 블록 (143) 은 현재의 PU (130) 의 예측 블록과 동일한 사이즈를 가질 수도 있다.
이와 유사하게, 비디오 코더는 참조 픽처 (133) 와 동일한 뷰와 연관되고 시간 참조 픽처 (140) 와 동일한 시간 인스턴스와 연관되는 참조 픽처 (즉, 참조 픽처 (144)) 를 결정할 수도 있다. 게다가, 비디오 코더는 모션 벡터 (136) 를 참조 블록 (132) 의 좌상부 모서리의 좌표들에 가산하여, 시간-디스패리티 참조 로케이션을 유도할 수도 있다. 비디오 코더는 그 후 시간-디스패리티 참조 블록 (145) (즉, 모션 보상된 블록) 을 결정할 수도 있다. 시간-디스패리티 참조 블록 (145) 에서의 샘플들은 모션 벡터 (136) 로부터 유도된 시간-디스패리티 참조 로케이션과 연관되는 참조 픽처 (144) 의 실제 또는 내삽된 샘플들일 수도 있다. 시간-디스패리티 참조 블록 (145) 은 현재의 PU (130) 의 예측 블록과 동일한 사이즈를 가질 수도 있다.
더욱이, 도 8 의 예에서, 비디오 코더는 시간-디스패리티 참조 블록 (143) 및 시간-디스패리티 참조 블록 (145) 에 기초하여, 디스패리티 예측 블록을 결정할 수도 있다. 비디오 코더는 그 후 잔차 예측자를 결정할 수도 있다. 잔차 예측자에서의 각각의 샘플은 참조 블록 (132) 에서의 샘플과 디스패리티 예측 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다.
도 9 는 심도 코딩을 위한 모션 벡터 상속 (MVI) 후보의 유도를 예시하는 개념도이다. 도 9 는 텍스쳐 픽처 (150) 및 심도 픽처 (152) 를 예시한다. 예를 들어, 텍스쳐 픽처 (150) 및 심도 픽처 (152) 는 3D HEVC 에 따라서 서로 대응할 수도 있다. 게다가, 도 9 는 심도 픽처 (152) 에 포함되는 현재의 PU (154) 를 예시한다. 나타낸 바와 같이, 현재의 PU (154) 는 텍스쳐 블록 (또는, "대응하는 텍스쳐 블록") (156) 에 대응한다. 여러 예들에서, 비디오 인코더 (20) 는 현재의 PU (154) 및 대응하는 텍스쳐 블록 (156) 에 기초하여, 병합 리스트의 MVI 후보를 유도할 수도 있다.
도 10 은 샘플들 Px,y 을 예측하기 위해 (예컨대, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 에 의해) 사용될 수도 있는 참조 샘플들 Rx,y 을 예시한다.
도 11 은 멀티-뷰 비디오 코딩의 예시적인 예측 구조를 예시하는 개념도이다. 일 예로서, (비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은) 비디오 코더는 시간 T0 에서 뷰 V1 에서의 블록 Pe 을 이용하여 비디오 블록을 예측함으로써 시간 T8 에서 뷰 V1 에서의 블록을 코딩할 수도 있다. 비디오 코더는 Pe 로부터 현재의 블록의 원래 픽셀 값들을 감산함으로써, 현재의 블록의 잔차 샘플들을 획득할 수도 있다.
게다가, 비디오 코더는 디스패리티 벡터 (104) 에 의해 참조 뷰 (뷰 V0) 에서의 참조 블록을 로케이트시킬 수도 있다. 참조 블록의 원래 샘플 값들 Ib 과 대응하는 예측된 샘플들 Pb 사이의 차이들은 아래 방정식에서 rb 로 표시된 바와 같이, 참조 블록의 잔차 샘플들로 지칭된다. 일부 예들에서, 비디오 코더는 현재의 잔차로부터 rb 를 감산하여 단지 최종 차이 신호를 변환 코딩할 수도 있다. 따라서, 인터-뷰 잔차 예측이 이용될 때, 모션 보상 루프는 다음 방정식으로 표현될 수 있다:
여기서, 현재의 블록 의 복원은 역양자화된 계수들 re 플러스 예측 Pe 및 양자화 정규화된 잔차 계수들 rb 와 동일하다. 비디오 코더들은 rb 를 잔차 예측자로서 취급할 수도 있다. 따라서, 모션 보상과 유사하게, rb 는 현재의 잔차로부터 감산될 수도 있으며, 단지 최종 차이 신호만이 변환 코딩된다.
비디오 코더는 인터-뷰 잔차 예측의 사용을 CU 단위로 표시하는 플래그를 조건부로 시그널링할 수도 있다. 예를 들어, 비디오 코더는 잔차 참조 영역에 의해 커버되거나 또는 부분적으로 커버되는 모든 변환 유닛들 (TU) 을 횡단할 수도 있다. 이들 TU들 중 임의의 TU 가 인터-코딩되고 비-제로 코딩된 블록 플래그 (CBF) 값 (루마 CBF 또는 크로마 CBF) 를 포함하면, 비디오 코더는 관련된 잔차 참조를 이용가능한 것으로 마크할 수도 있으며, 비디오 코더는 잔차 예측을 적용할 수도 있다. 이 경우, 비디오 코더는 CU 신택스의 부분으로서 인터-뷰 잔차 예측의 사용을 나타내는 플래그를 시그널링할 수도 있다. 이 플래그가 1 과 동일하면, 현재의 잔차 신호는 잠재적으로 내삽된 참조 잔차 신호를 이용하여 예측되며 단지 그 차이가 변환 코딩을 이용하여 송신된다. 그렇지 않으면, 현재의 블록의 잔차는 HEVC 변환 코딩을 이용하여 통상적으로 (conventionally) 코딩된다.
2013년 7월 2일자에 출원된, 미국 특허출원 번호 제 13/933,588호는 스케일러블 비디오 코딩을 위한 일반화된 잔차 예측 (GRP) 을 기술한다. 미국 특허출원 번호 제 13/933,588호가 스케일러블 비디오 코딩에 집중하지만, 미국 특허출원 번호 제 13/933,588호에서 설명된 GRP 기법들은 멀티-뷰 비디오 코딩 (예컨대, MV-HEVC 및 3D-HEVC) 에 적용가능할 수도 있다.
GRP 의 일반적인 아이디어는 단방향-예측의 상황에서, 다음과 같이 수식으로 나타내어질 수 있다:
상기 수식에서, Ic 는 현재의 계층 (또는, 뷰) 에서의 현재의 프레임의 복원을 표시하며, Pc 는 동일한 계층 (또는, 뷰) 로부터의 시간 예측을 나타내며, rc 는 시그널링된 잔차를 나타내고, rr 은 참조 계층으로부터의 잔차 예측을 표시하며, w 는 가중 인자이다. 일부 예들에서, 가중 인자는 비트스트림으로 코딩되거나 또는 이전에-코딩된 정보에 기초하여 유도될 필요가 있을 수도 있다. GRP 에 대한 이 프레임워크는 단일-루프 디코딩 및 멀티-루프 디코딩 양쪽의 경우들에 적용될 수 있다. 다중-루프 디코딩은 복원된 및 업-샘플링된 낮은 해상도 신호를 이용하는 비제한된 블록 예측의 버전을 수반한다. 향상 계층에서의 하나의 블록을 디코딩하기 위해, 이전 계층들에서의 다수의 블록들은 액세스될 필요가 있다.
예를 들어, 비디오 디코더 (30) 가 멀티-루프 디코딩을 이용할 때, GRP 는 다음과 같이 추가로 수식으로 나타내어질 수 있다:
상기 수식에서, Pr 은 참조 계층에서의 현재의 픽처에 대한 시간 예측을 표시하며, Pc 는 동일한 계층 (또는, 뷰) 로부터의 시간 예측을 나타내며, rc 는 시그널링된 잔차를 표시하며, w 는 가중 인자이고, Ir 은 참조 계층에서의 현재의 픽처의 풀 복원을 표시한다. 상기 공식들은 비트스트림으로 시그널링되거나 또는 이전에-코딩된 정보에 기초하여 유도될 수도 있는 가중 인자를 포함한다. 일부 예들에서, 비디오 인코더 (20) 는 비트스트림으로, CU 단위로, GRP 에서 사용되는 가중 인덱스들을 시그널링할 수도 있다. 각각의 가중 인덱스는 0 보다 크거나 또는 동일한 하나의 가중 인자에 대응할 수도 있다. 현재의 CU 에 대한 가중 인자가 0 과 동일할 때, 현재의 CU 의 잔차 블록은 종래의 HEVC 변환 코딩을 이용하여 코딩된다. 그렇지 않으면, 현재의 CU 에 대한 가중 인자가 0 보다 클 때, 현재의 잔차 신호 (즉, 현재의 CU 에 대한 잔차 블록) 은 가중 인자로 곱한 참조 잔차 신호를 이용하여 예측될 수도 있으며 단지 그 차이만이 변환 코딩을 이용하여 송신된다. 일부 예들에서, 참조 잔차 신호가 내삽된다.
도 12 는 비디오 코딩 디바이스가 본원에서 설명되는 심도-지향 인터-뷰 모션 예측 기법들을 수행할 수도 있는 예시적인 프로세스 (200) 를 예시하는 플로우차트이다. 프로세스 (200) 가 본 개시물에 따라서 다양한 디바이스들에 의해 수행될 수도 있지만, 단지 논의 목적들의 용이성을 위해, 프로세스 (200) 는 도 1 및 도 3 의 비디오 디코더 (30) 에 대해 본원에서 설명된다. 게다가, 비디오 디코더 (30) 에 대해 설명하였지만, 비디오 디코더 (30) 의 여러 구성요소들, 예컨대 예측 유닛 (81) 이 프로세스 (200) 의 하나 이상의 단계들을 수행할 수도 있다. 여러 예들에서, 모션 벡터 예측 유닛 (83) 이 프로세스 (200) 의 하나 이상의 단계들을 수행할 수도 있다.
프로세스 (200) 는 비디오 디코더 (30) (예컨대, 예측 유닛 (81)) 가 의존적인 심도 뷰에서의 현재의 비디오 블록에 대해 심도 값을 계산하는 것에서 시작할 수도 있다 (202). 예들에서, 비디오 디코더 (30) 는 현재의 블록의 이웃하는 픽셀들 (또는, "이웃하는 샘플들") 에 기초하여 심도 값을 계산할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 이웃하는 샘플들의 개개의 심도 값들의 가중 평균을 계산함으로써 심도 값 (또는, "복원된 심도 값") 을 계산할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 오/십육 (5/16), 육/십육 (6/16), 및 오/십육 (5/16) 의 가중치들을 상부-좌측, 상부-우측, 및 좌하측 이웃하는 샘플들의 각각에 각각 할당할 수도 있다. 일 예에서, 비디오 디코더 (30) (예컨대, 예측 유닛 (81)) 은 현재의 블록에 대한 복원된 심도 값에 도달하기 위해 가중 평균을 계산하는 동안 오프셋 값을 가산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 이웃하는 샘플들과 연관되는 심도 값들의 각각을 대응하는 가중치의 분자 (예컨대, 각각, 5, 6, 및 5) 로 곱하여, 복수의 결과들을 획득할 수도 있다. 결국, 비디오 인코더 (20) 는 그 결과들을 합산하여, (8 의 값과 같은) 오프셋 값을 가산할 수도 있다. 게다가, 비디오 인코더 (20) 는 최종 합계를 16 의 값으로 나눌 수도 있다.
비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 복원된 심도 값으로부터 현재의 블록에 대한 디스패리티 벡터를 유도할 수도 있다 (204). 예를 들어, 비디오 디코더 (30) 는 복원된 심도 값을 디스패리티 벡터로 직접 변환할 수도 있다. 결국, 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 현재의 블록에 대한 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 및 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 획득할 수도 있다 (206). 좀더 구체적으로, 비디오 디코더 (30) 는 현재의 블록의 베이스 심도 뷰로부터 IDMVC 및 IPMVC 를 획득할 수도 있다. IDMVC 의 경우, 비디오 디코더 (30) 는 디스패리티 벡터를 IDMVC 로 변환할 수도 있다. IPMVC 의 경우, 비디오 디코더 (30) 는 베이스 심도 뷰에서의 동일 위치에 배치된 블록으로부터 이미-코딩된 모션 정보를 유도하거나, 또는, 일부의 경우, 복사할 수도 있다. 결국, 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 IDMVC 및 IPMVC 중 하나, 양쪽 모두다 포함시킬지, 또는 어느 것도 포함시키지 않는지 여부를 결정하는 것에 기초하여, 병합 리스트를 구성할 수도 있다 (220).
비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 디스패리티 벡터를 공간적으로 시프트시킬 수도 있다 (208). 도 12 에 나타낸 바와 같이, 일부 예들에서, 비디오 디코더 (30) 는 IPMVC 및 IDMVC 를 획득하는 것 (206) 과 적어도 부분적으로 병렬로, 디스패리티 벡터를 공간적으로 시프트시킬 수도 있다 (208). 예를 들어, 비디오 디코더 (30) 는 디스패리티 벡터를 수평으로 값 M1 만큼, 그리고 수직으로 값 M2 만큼 시프트시킬 수도 있다. 오프셋 값들 M1 및 M2 의 계산은 도 1 에 대해 위에서 설명되어 있다. 결국, 시프트된 디스패리티 벡터에 기초하여, 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 대응하는 시프트된 IPMVC 가 베이스 심도 뷰로부터 이용가능한지 여부를 결정할 수도 있다 (210). 시프트된 IPMVC 가 이용가능하다고 비디오 디코더 (30) 가 결정하면 (210 의 예 분기), 비디오 디코더 (30) 는 베이스 심도 뷰로부터 시프트된 IPMVC 를 획득할 수도 있다 (212). 예를 들어, 비디오 디코더 (30) 는 현재의 블록과 연관되는 시프트된 디스패리티 벡터를 이용하여 베이스 심도 뷰에서의 블록을 로케이트할 수도 있으며, 이미-코딩된 로케이트된 블록의 모션 정보를 이용하여, 시프트된 IPMVC 를 유도할 수도 있다.
그러나, 시프트된 IPMVC 가 이용불가능하다고 비디오 디코더 (30) 가 결정하면 (210 의 아니오 분기), 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 디스패리티 시프트된 모션 벡터 (DSMV) 후보가 이웃하는 블록들과 연관되는 RefPicList0 로부터 이용가능한지 여부를 결정할 수도 있다 (214). DSMV 후보가 RefPicList0 로부터 이용가능하다고 비디오 디코더 (30) 가 결정하면 (214 의 예 분기), 비디오 디코더는 RefPicList0 으로부터 DSMV 후보를 직접 획득할 수도 있다 (216). 한편, DSMV 후보가 RefPicList0 로부터 이용불가능하다고 비디오 디코더 (30) 가 결정하면 (214 의 아니오 분기), 비디오 디코더 (30) 는 디스패리티 벡터를 시프트시킴으로써 DSMV 후보를 획득할 수도 있다 (218). 예를 들어, 비디오 디코더 (30) 는 오프셋 값을 디스패리티 벡터에 가산하여 DSMV 후보를 획득할 수도 있다. (212, 216, 또는 218 중 하나에서) 시프트된 IPMVC 후보 또는 DSMV 후보를 획득하자 마자, 비디오 디코더 (30) 는 심도-지향 모션 벡터 후보들 및 추가적인 모션 벡터 후보들을 이용하여 병합 리스트를 복원할 수도 있다 (220).
프로세스 (200) 에 대해 설명된 바와 같이, 비디오 디코더 (30) 는 본 개시물에서 설명되는 여러 방법들을 수행하도록 구성된 비디오 디코더의 일 예를 나타낸다. 본원에서 설명되는 여러 예들에 따르면, 비디오 디코더 (30) 는 비디오 데이터를 코딩하는 방법을 수행하도록 구성되거나 또는 아니면 동작가능할 수도 있으며, 상기 방법은 의존적인 심도 뷰에서의 비디오 데이터의 블록에 인접하게 위치된 하나 이상의 이웃하는 픽셀들에 기초하여 의존적인 심도 뷰에 포함된 비디오 데이터의 블록과 연관되는 심도 값을 결정하는 단계; 및 비디오 데이터의 블록과 연관되는 결정된 심도 값에 적어도 부분적으로 기초하여 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 생성하는 단계를 포함한다. 본 방법은 디스패리티 벡터에 기초하여 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 생성하는 단계; 베이스 뷰에서의 비디오 데이터의 대응하는 블록에 기초하여 비디오 데이터의 블록과 연관되는 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 생성하는 단계; 및 IDMVC 또는 IPMVC 중 임의의 것을 비디오 데이터의 블록과 연관되는 병합 후보 리스트에 추가할지 여부를 결정하는 단계를 더 포함할 수 있다. 여러 예들에서, IDMVC 또는 IPMVC 중 임의의 것을 병합 후보 리스트에 추가할지 여부를 결정하는 단계는 병합 후보 리스트에 IDMVC 또는 IPMVC 중 하나, 양쪽 모두를 추가할지, 어느 것도 추가하지 않을지 여부를 결정하는 단계를 포함할 수도 있다. 일부 예들에서, 심도 값을 결정하는 단계는 하나 이상의 이웃하는 픽셀들과 연관되는 값들의 가중 평균을 계산하는 단계를 포함할 수도 있다. 일부 예들에서, 하나 이상의 이웃하는 픽셀들은 비디오 데이터의 블록에 대한, 상부-좌측 픽셀, 상부-우측 픽셀, 및 우하측 픽셀을 포함한다. 일부 예들에서, 가중 평균을 계산하는 단계는 복수의 가중된 값들을 획득하기 위해, 오 (5), 육 (6), 및 오 (5) 의 가중치들을 상부-좌측 픽셀, 상부-우측 픽셀, 및 우하측 픽셀에 각각 적용하는 단계를 포함한다.
일부 예들에서, 가중 평균을 계산하는 단계는 복수의 가중된 값들에 기초하여 합계를 획득하는 단계; 및 오프셋 값 및 합계에 기초하여 오프셋 합계를 획득하는 단계를 더 포함한다. 일부 예들에 따르면, 가중 평균을 계산하는 단계는 오프셋 합계를 미리 결정된 값으로 나누는 단계를 더 포함한다. 하나의 이런 예에서, 오프셋 값은 팔 (8) 의 값을 포함하며, 미리 결정된 값은 십육 (16) 의 값을 포함한다. 일부 예들에 따르면, 심도 값을 결정하는 단계는 하나 이상의 이웃하는 픽셀들과 연관되는 평균 값, 메디안 값, 또는 최빈 값 중 적어도 하나를 계산하는 단계를 포함한다. 일부 예들에 따르면, 비디오 데이터의 블록은 코딩 유닛 (CU) 이며, 생성된 디스패리티 벡터가 CU 에 포함된 모든 예측 유닛들 (PUs) 에 적용된다. 일부 예들에서, IPMVC 를 생성하는 단계는 베이스 뷰에서의 비디오 데이터의 대응하는 블록으로부터 IPMVC 를 유도하는 단계를 포함한다.
여러 예들에 따르면, 본 방법은 시프트된 디스패리티 벡터를 형성하기 위해 디스패리티 벡터를 공간적으로 시프트시키는 단계; 및 베이스 뷰에서의 비디오 데이터의 대응하는 블록을 로케이트시키기 위해 시프트된 디스패리티 벡터를 이용하는 단계를 더 포함한다. 이러한 일부 예들에서, 본 방법은 시프트된 IPMVC 가 로케이트된 베이스 뷰에서의 비디오 데이터의 대응하는 블록으로부터 이용가능한지 여부를 결정하는 단계; 및 시프트된 IPMVC 가 이용가능하다고 결정하는 것에 기초하여, 시프트된 IPMVC 를 병합 리스트에 추가할지 여부를 결정하는 단계를 더 포함한다. 일부 예들에서, 현재의 블록의 하나 이상의 공간 이웃하는 블록들의 각각은 개개의 참조 픽처 리스트 0 및 개개의 참조 픽처 리스트 1 과 연관된다. 이러한 일부 예들에서, 본 방법은 시프트된 IPMVC 가 베이스 뷰로부터 이용불가능하다고 결정하는 단계; 공간 이웃하는 블록들과 연관되는 적어도 하나의 개개의 참조 픽처 리스트 0 이 디스패리티 모션 벡터를 포함하는지 여부를 결정하는 단계; 공간 이웃하는 블록들과 연관되는 적어도 하나의 개개의 참조 픽처 리스트 0 이 디스패리티 모션 벡터를 포함한다고 결정하는 것에 기초하여, 디스패리티 시프트된 모션 벡터 (DSMV) 후보를 형성하기 위해 개개의 참조 픽처 리스트 0 에 포함된 디스패리티 모션 벡터의 수평 성분을 시프트시키는 단계; 및 DSMV 후보를 병합 리스트에 추가하는 단계를 더 포함한다.
일부 예들에서, 본 방법은 어떤 개개의 참조 픽처 리스트들 0 도 디스패리티 모션 벡터에 포함되지 않는다고 결정하는 단계; DSMV 후보를 형성하기 위해 오프셋 값을 디스패리티 벡터에 적용하는 단계; 및 DSMV 후보를 병합 리스트에 적용하는 단계를 더 포함한다. 일부 예들에 따르면, 심도 값을 결정하는 단계는 하나 이상의 이웃하는 픽셀들이 오직 하나의 이용가능한 이웃하는 픽셀을 포함한다고 결정하는 단계; 및 비디오 데이터의 블록의 심도 값을 형성하기 위해 하나의 이용가능한 이웃하는 픽셀의 심도 값을 상속하는 단계를 포함한다. 일부 예들에서, 본 방법은 어떤 하나 이상의 이웃하는 픽셀들도 이용불가능하다고 결정하는 단계를 더 포함하며, 여기서, 디스패리티 벡터를 생성하는 단계는 디스패리티 벡터를 제로 벡터로 설정하는 단계 또는 비디오 데이터의 블록과 연관되는 심도 값을 디폴트 심도 값으로 설정하는 단계 중 적어도 하나를 포함한다.
도 13 은 본 개시물의 양태들에 따른, 비디오 코딩 디바이스가 하나 이상의 심도-지향 인터-뷰 모션 벡터 후보들을 이용하여 병합 리스트 구성을 구현할 수도 있는 예시적인 프로세스 (230) 를 예시하는 플로우차트이다. 프로세스 (230) 가 본 개시물에 따라서 다양한 디바이스들에 의해 수행될 수도 있지만, 단지 논의 목적들의 용이성을 위해, 프로세스 (230) 는 도 1 및 도 3 의 비디오 디코더 (30) 에 대해 본원에서 설명된다. 게다가, 비디오 디코더 (30) 의 여러 구성요소들은 프로세스 (230) 의 하나 이상의 단계들을 수행할 수도 있는 것으로 이해될 것이다. 프로세스 (230) 의 하나 이상의 일부들을 수행할 수도 있는 비디오 디코더 (30) 의 구성요소의 일 예는 (모션 벡터 예측 유닛 (83) 과 같은) 예측 유닛 (81) 을 포함한다.
프로세스 (230) 는 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 가 모션 벡터 상속 (MVI) 후보를 병합 리스트의 제 1 위치에 추가하는 것에서 시작할 수도 있다 (232). 결국, 비디오 디코더 (30) 는 (도 1, 도 2 및 도 12 에 대해 위에서 설명한 바와 같이 유도된) IPMVC 가 MVI 후보와 동일한지 여부를 결정할 수도 있다 (234). IPMVC 가 MVI 후보와 동일하다고 비디오 디코더 (30) 가 결정하면 (234 의 예 분기), 비디오 디코더 (30) 는 프루닝에 의해 IPMVC 를 폐기할 수도 있다 (236). 또 다른 방법을 말하면, 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 는 MVI 후보에 대해 IPMVC 를 프루닝할 수도 있다.
그러나, IPMVC 가 MVI 후보와 상이하다고 비디오 디코더 (30) 가 결정하면 (234 의 아니오 분기), 비디오 디코더 (30) 는 IPMVC 를 병합 리스트의 제 2 위치에 추가할 수도 있다 (238). 다시 말해서, 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 IPMVC 를 MVI 후보 직후에 삽입할 수도 있다. 게다가, (236 또는 238 에서 각각) 비디오 디코더 (30) 가 IPMVC 를 프루닝하거나 또는 IPMVC 를 병합 리스트에 추가하였는지 여부에 관계없이, 비디오 디코더 (30) 는 A1 및 B1 로 표시되는, 2개의 공간 모션 벡터 후보들 중 임의의 이용가능한 후보(들) 을 병합 리스트에 추가할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 A1 및 B1 을 (IPMVC 가 프루닝 아웃되었으면) MVI 후보에 바로 뒤따르거나, 또는 (IPMVC 가 병합 리스트에 추가되었으면) IPMVC 에 바로 뒤따르는 병합 리스트의 2개의 위치들에 추가할 수도 있다.
게다가, 비디오 디코더 (30) 는 (도 1, 도 2 및 도 12 에 대해 위에서 설명한 바와 같이 생성된) IDMVC 가 A1 또는 B1 과 동일한지 여부를 결정할 수도 있다 (242). IDMVC 가 A1 또는 B1 중 적어도 하나와 매칭한다고 비디오 디코더 (30) 가 결정하면 (242 의 예 분기), 비디오 디코더 (30) 는 프루닝에 의해 IDMVC 를 폐기할 수도 있다 (244). 그러나, IDMVC 가 A1 또는 B1 양쪽과 상이하다고 비디오 디코더 (30) 가 결정하면 (242 의 아니오 분기), 비디오 디코더 (30) 는 IDMVC 를 병합 리스트에, A1 및 B1 중 이용가능한 것(들) 직후의 위치에 추가할 수도 있다 (246). 결국, 비디오 인코더는 A0, B0, 및 B2 로 표시되는 3개의 공간 모션 벡터 후보들 중 임의의 이용가능한 후보(들) 을 병합 리스트에 추가할 수도 있다 (247).
비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 시프트된 IPMVC 가 이용가능한지 여부를 결정할 수도 있다 (248). 예를 들어, 비디오 디코더는 도 1, 도 2 및 도 12 에 대해 위에서 설명한 바와 같이, 시프트된 디스패리티 벡터를 이용함으로써, 시프트된 IPMVC 가 이용가능한지 여부를 결정할 수도 있다. 시프트된 IPMVC 가 이용불가능하다고 비디오 디코더 (30) 가 결정하면 (248 의 아니오 분기), 비디오 디코더 (30) 는 디스패리티 시프트된 모션 벡터 (DSMV) 후보를 병합 리스트에 추가할 수도 있다 (250). 예를 들어, 비디오 인코더는 DSMV 를 A0, B0, 및 B2 중 최종 이용가능한 것(들) 직후의 위치에 추가할 수도 있다. 비디오 디코더 (30) (예컨대, 모션 벡터 예측 유닛 (83) 과 같은 예측 유닛 (81)) 은 도 1, 도 2 및 도 12 에 대해 위에서 설명한 바와 같이 DSMV 후보를 유도할 수도 있다.
그러나, 시프트된 IPMVC 가 이용가능하다고 비디오 디코더 (30) 가 결정하면 (248 의 예 분기), 비디오 디코더 (30) 는 시프트된 IPMVC 가 위에서 설명된 IPMVC 와 동일한지 여부를 결정할 수도 있다 (252). 시프트된 IPMVC 가 IPMVC 와 상이하다고 비디오 디코더 (30) 가 결정하면 (252 의 아니오 분기), 비디오 디코더 (30) 는 시프트된 IPMVC 를 병합 리스트에 추가할 수도 있다 (254). 예를 들어, 비디오 인코더는 시프트된 IPMVC 를 A0, B0, 및 B2 중 최종 이용가능한 것(들) 직후의 위치에 추가할 수도 있다. 한편, 시프트된 IPMVC 가 IPMVC 와 동일하다고 비디오 디코더 (30) 가 결정하면 (252 의 예 분기), 비디오 디코더 (30) 는 프루닝에 의해 시프트된 IPMVC 를 폐기할 수도 있다 (256).
230 에 대해 설명된 바와 같이, 본 개시물의 여러 양태들에 따르면, 비디오 디코더 (30) 는 비디오 데이터를 코딩하는 방법을 수행할 수도 있으며, 상기 방법은 인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하는 단계를 포함하며, 여기서, IPMVC 및 MVI 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 각각 연관되며, IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 본 방법은 IPMVC 가 MVI 후보와는 상이한 것에 기초하여 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 가 MVI 후보와 동일한 것에 기초하여 병합 후보 리스트로부터 IPMVC 를 제외시키는 것 중 하나를 수행하는 단계를 더 포함할 수 있다. 일부 예들에서, IPMVC 를 병합 리스트에 추가하는 단계는 MVI 후보가 병합 후보 리스트에의 추가에 이용불가능한 것에 기초하여 IPMVC 를 병합 후보 리스트 내의 초기 위치에 삽입하는 것, 또는 MVI 후보가 병합 후보 리스트에의 추가에 이용가능한 것에 기초하여 IPMVC 를 병합 후보 리스트 내 MVI 후보의 위치에 뒤따르는 병합 후보 리스트 내의 위치에 삽입하는 것 중 하나를 수행하는 단계를 포함한다. 여러 예들에서, 초기 위치는 제로 (0) 의 인덱스 값과 연관된다. 일부 예들에 따르면, IPMVC 를 MVI 후보와 비교하는 단계는 IPMVC 와 연관되는 모션 정보를 MVI 후보와 연관되는 대응하는 모션 정보와 비교하는 단계; 및 IPMVC 와 연관되는 적어도 하나의 참조 인덱스를 MVI 후보와 연관되는 적어도 하나의 대응하는 참조 인덱스와 비교하는 단계를 포함한다.
일부 예들에서, 본 방법은 인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 를 병합 후보 리스트와 연관되는 제 1 공간 후보 및 병합 후보 리스트와 연관되는 제 2 공간 후보 중 이용가능한 하나 이상과 비교하는 단계를 더 포함하며, 여기서, IDMVC, 제 1 공간 후보, 및 제 2 공간 후보의 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, IDMVC 는 비디오 데이터의 블록과 연관되는 디스패리티 벡터로부터 생성된다. 일부 예들에서, 본 방법은 IDMVC 가 제 1 공간 후보 및 제 2 공간 후보 중 이용가능한 하나 이상의 각각과는 상이한 것하여 IDMVC 를 병합 후보 리스트를 추가하는 것, 또는 IDMVC 가 제 1 공간 후보 또는 제 2 공간 후보 중 적어도 하나와 동일한 것에 기초하여 병합 후보 리스트로부터 IDMVC 를 제외시키는 것 중 하나를 수행하는 단계를 더 포함한다.
일부 예들에서, IDMVC 를 병합 후보 리스트에 추가하는 단계는 IDMVC 를 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하는 단계를 포함한다. 일부 예들에 따르면, IDMVC 를 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하는 단계는 IDMVC 를 제 1 공간 후보의 위치 또는 제 2 공간 후보의 위치 중 적어도 하나에 뒤따르는 위치에 삽입하는 단계를 포함한다.
여러 예들에 따르면, 본 방법은 시프트된 IPMVC 가 이용가능하다고 결정하는 단계를 더 포함하며, 여기서, 시프트된 IPMVC 는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 시프트된 IPMVC 는 베이스 심도 뷰에서 비디오 데이터의 대응하는 블록으로부터 생성된다. 이러한 일부 예들에서, 본 방법은 시프트된 IPMVC 를 IPMVC 와 비교하는 단계를 더 포함한다. 일부 예들에서, 본 방법은 시프트된 IPMVC 가 IPMVC 와는 상이한 것 및 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, 시프트된 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 IPMVC 와 동일한 시프트된 IPMVC 에 기초하여, 병합 후보 리스트로부터 시프트된 IPMVC 를 제거시키는 것 중 하나를 수행하는 단계를 더 포함한다.
일부 예들에서, 본 방법은 디스패리티 시프트된 모션 벡터 (DSMV) 후보가 이용가능하다고 결정하는 단계를 더 포함하며, 여기서, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들을 이용하여 생성된다. 일부 이러한 예들에서, 본 방법은 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, DSMV 후보를 병합 후보 리스트에 추가하는 단계를 더 포함한다. 일부 예들에서, DSMV 후보를 병합 후보 리스트에 추가하는 단계는 DSMV 후보를, 1) 병합 후보 리스트에 포함된 공간 후보의 위치에 뒤따르는 위치, 및 2) 병합 후보 리스트에 포함된 시간 후보의 위치에 선행하는 위치에 삽입하는 단계를 포함한다.
일부 예들에 따르면, DSMV 후보가 이용가능하다고 결정하는 단계는 시프트된 IPMVC 가 이용불가능하다고 결정하는 것에 응답하며, 여기서, 시프트된 IPMVC 는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 시프트된 IPMVC 는 비디오 데이터의 블록의 베이스 뷰로부터 생성된다. 일부 예들에서, DSMV 후보는 하나 이상의 공간 이웃하는 샘플들 중 적어도 하나의 공간 이웃하는 샘플과 연관되는 참조 픽처 리스트 0 (RefPicList0) 으로부터 선택되는 디스패리티 모션 벡터 (DMV) 를 포함한다. 일부 예들에 따르면, DSMV 후보는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 시프트시킴으로써 생성되며, 디스패리티 벡터는 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들과 연관되는 하나 이상의 심도 값들로부터 생성된다.
그 예에 따라서, 본원에서 설명되는 기법들 중 임의의 기법의 어떤 행위들 또는 이벤트들이 상이한 시퀀스로 수행될 수 있으며, 추가되거나, 병합되거나, 또는 모두 제외시킬 수도 있는 (예컨대, 모든 설명되는 행위들 또는 이벤트들이 기법들의 실시에 필수적인 것은 아닌) 것으로 인식되어야 한다. 더욱이, 어떤 예들에서, 행위들 또는 이벤트들은 순차적으로 보다는, 동시에, 예컨대, 멀티-쓰레드된 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통해서 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 하나 이상의 명령들 또는 코드로서, 컴퓨터 판독가능 매체 상에 저장되거나 또는 컴퓨터 판독가능 매체를 통해서 송신될 수도 있으며, 하드웨어-기반의 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체들을 포함할 수도 있으며, 이 컴퓨터 판독가능 저장 매체들은 데이터 저장 매체와 같은 유형의 매체, 또는 예컨대, 통신 프로토콜에 따라서 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함한 통신 매체들에 대응한다. 이런 방법으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시성 유형의 컴퓨터 판독가능 저장 매체, 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에서 설명하는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
일 예로서, 이에 한정하지 않고, 이런 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 지칭된다. 예를 들어, 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 무선 기술들, 예컨대 적외선, 라디오, 및 마이크로파를 이용하여 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 무선 기술들 예컨대 적외선, 라디오, 및 마이크로파가 그 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속부들, 캐리어 파들, 신호들, 또는 다른 일시성 매체를 포함하지 않고, 그 대신, 비-일시성 유형의 저장 매체로 송신되는 것으로 해석되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용할 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 Blu-ray 디스크를 포함하며, 디스크들 (디스크들) 는 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 는 레이저로 데이터를 광학적으로 재생한다. 앞에서 언급한 것들의 결합들이 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 로직 어레이들 (FPGAs), 또는 다른 등가의 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 본원에서 사용될 때 전술한 구조 중 임의의 구조 또는 본원에서 설명하는 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 게다가, 일부 양태들에서, 본원에서 설명하는 기능은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나, 또는 결합된 코덱에 포함될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 전적으로 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함한, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 개시한 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해서 여러 구성요소들, 모듈들, 또는 유닛들이 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 대신, 위에서 설명한 바와 같이, 여러 유닛들이 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함한, 상호작용하는 하드웨어 유닛들의 컬렉션으로 제공될 수도 있다.
여러 예들이 설명되었다. 이들 및 다른 예들은 다음 청구항들의 범위 이내이다.
Claims (30)
- 비디오 데이터를 코딩하는 방법으로서,
인터-뷰 예측된 모션 벡터 후보 (inter-view predicted motion vector candidate; IPMVC) 를 모션 벡터 상속 (motion vector inheritance; MVI) 후보와 비교하는 단계; 및
상기 IPMVC 가 상기 MVI 후보와 상이한 것에 기초하여 상기 IPMVC 를 병합 후보 리스트에 추가하는 단계, 또는 상기 IPMVC 가 상기 MVI 후보와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 IPMVC 를 제외시키는 단계 중 하나를 수행하는 단계를 포함하고,
상기 IPMVC 와 상기 MVI 후보 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며,
상기 IPMVC 는 베이스 심도 뷰에서의 비디오 데이터의 대응하는 블록으로부터 생성되는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 IPMVC 를 상기 병합 후보 리스트에 추가하는 단계는,
상기 MVI 후보가 상기 병합 후보 리스트에의 추가에 이용불가능한 것에 기초하여 상기 IPMVC 를 상기 병합 후보 리스트 내의 초기 위치에 삽입하는 단계, 또는 상기 MVI 후보가 상기 병합 후보 리스트에의 추가에 이용가능한 것에 기초하여 상기 IPMVC 를 상기 병합 후보 리스트 내의 상기 MVI 후보의 위치에 뒤따르는 상기 병합 후보 리스트 내의 위치에 삽입하는 단계 중 하나를 수행하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
상기 IPMVC 를 상기 MVI 후보와 비교하는 단계는,
상기 IPMVC 와 연관되는 모션 정보를 상기 MVI 후보와 연관되는 대응하는 모션 정보와 비교하는 단계; 및
상기 IPMVC 와 연관되는 적어도 하나의 참조 인덱스를 상기 MVI 후보와 연관되는 적어도 하나의 대응하는 참조 인덱스와 비교하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
인터-뷰 디스패리티 모션 벡터 후보 (inter-view disparity motion vector candidate; IDMVC) 를 상기 병합 후보 리스트와 연관되는 제 1 공간 후보 및 상기 병합 후보 리스트와 연관되는 제 2 공간 후보 중 이용가능한 하나 이상과 비교하는 단계로서, 상기 IDMVC, 상기 제 1 공간 후보, 및 상기 제 2 공간 후보의 각각은 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며, 상기 IDMVC 는 상기 비디오 데이터의 블록과 연관되는 디스패리티 벡터로부터 생성되는, 상기 IDMVC 를 비교하는 단계; 및
상기 IDMVC 가 상기 제 1 공간 후보 및 상기 제 2 공간 후보 중 상기 이용가능한 하나 이상의 각각과는 상이한 것에 기초하여 상기 IDMVC 를 상기 병합 후보 리스트에 추가하는 단계, 또는 상기 IDMVC 가 상기 제 1 공간 후보 또는 상기 제 2 공간 후보 중 적어도 하나와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 IDMVC 를 제외시키는 단계 중 하나를 수행하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 4 항에 있어서,
상기 IDMVC 를 상기 병합 후보 리스트에 추가하는 단계는, 상기 IDMVC 를 상기 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 5 항에 있어서,
상기 IDMVC 를 상기 상기 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하는 단계는, 상기 IDMVC 를 상기 제 1 공간 후보의 위치 또는 상기 제 2 공간 후보의 위치 중 적어도 하나의 위치에 뒤따르는 위치에 삽입하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
시프트된 IPMVC 가 이용가능하다고 결정하는 단계로서, 상기 시프트된 IPMVC 는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며, 상기 시프트된 IPMVC 는 상기 베이스 심도 뷰에서의 비디오 데이터의 대응하는 블록으로부터 생성되는, 상기 결정하는 단계; 및
상기 시프트된 IPMVC 를 상기 IPMVC 와 비교하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 7 항에 있어서,
상기 시프트된 IPMVC 가 상기 IPMVC 와는 상이한 것 및 상기 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여 상기 시프트된 IPMVC 를 상기 병합 후보 리스트에 추가하는 단계, 또는 상기 시프트된 IPMVC 가 상기 IPMVC 와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 시프트된 IPMVC 를 제외시키는 단계 중 하나를 수행하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 1 항에 있어서,
디스패리티 시프트된 모션 벡터 (disparity shifted motion vector; DSMV) 후보가 이용가능하다고 결정하는 단계를 더 포함하며,
상기 DSMV 후보는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며, 상기 DSMV 후보는 상기 의존적인 심도 뷰에서 상기 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들을 이용하여 생성되는, 비디오 데이터를 코딩하는 방법. - 제 9 항에 있어서,
상기 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, 상기 DSMV 후보를 상기 병합 후보 리스트에 추가하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법. - 제 10 항에 있어서,
상기 DSMV 후보를 상기 병합 후보 리스트에 추가하는 단계는, 상기 DSMV 후보를 1) 상기 병합 후보 리스트에 포함된 공간 후보의 위치에 뒤따르는 위치, 및 2) 상기 병합 후보 리스트에 포함된 시간 후보의 위치에 선행하는 위치에 삽입하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 9 항에 있어서,
상기 DSMV 후보가 이용가능하다고 결정하는 단계는 시프트된 IPMVC 가 이용불가능하다고 결정하는 것에 응답하고,
상기 시프트된 IPMVC 는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며,
상기 시프트된 IPMVC 는 상기 비디오 데이터의 블록의 상기 베이스 뷰로부터 생성되는, 비디오 데이터를 코딩하는 방법. - 제 9 항에 있어서,
상기 DSMV 후보는 하나 이상의 공간 이웃하는 샘플들의 적어도 하나의 공간 이웃하는 샘플과 연관되는 참조 픽처 리스트 0 (RefPicList0) 으로부터 선택되는 디스패리티 모션 벡터 (DMV) 를 포함하는, 비디오 데이터를 코딩하는 방법. - 제 9 항에 있어서,
상기 DSMV 후보는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되는 디스패리티 벡터를 시프트함으로써 생성되며,
상기 디스패리티 벡터는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되는 상기 하나 이상의 공간 이웃하는 블록들과 연관되는 하나 이상의 심도 값들로부터 생성되는, 비디오 데이터를 코딩하는 방법. - 비디오 데이터를 코딩하는 디바이스로서,
메모리; 및
하나 이상의 프로세서들을 포함하며, 상기 프로세서들은,
인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하며;
상기 IPMVC 가 상기 MVI 후보와 상이한 것에 기초하여 상기 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 상기 IPMVC 가 상기 MVI 후보와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 IPMVC 를 제외시키는 것 중 하나를 수행하도록 구성되며,
상기 IPMVC 와 상기 MVI 후보 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 상기 IPMVC 는 베이스 심도 뷰에서의 비디오 데이터의 대응하는 블록으로부터 생성되는, 비디오 데이터를 코딩하는 디바이스. - 제 15 항에 있어서,
상기 IPMVC 를 상기 병합 리스트에 추가하기 위해, 상기 하나 이상의 프로세서들은 또한,
상기 병합 후보 리스트에의 추가에 이용불가능한 상기 MVI 후보에 기초하여 상기 IPMVC 를 상기 병합 후보 리스트 내의 초기 위치에 삽입하는 것, 또는 상기 MVI 후보가 상기 병합 후보 리스트에의 추가에 이용가능한 것에 기초하여 상기 IPMVC 를 상기 병합 후보 리스트 내의 상기 MVI 후보의 위치에 뒤따르는 상기 병합 후보 리스트 내의 위치에 삽입하는 것 중 하나를 수행하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 15 항에 있어서,
상기 IPMVC 를 상기 MVI 후보와 비교하기 위해, 상기 하나 이상의 프로세서들은,
상기 IPMVC 와 연관되는 모션 정보를 상기 MVI 후보와 연관되는 대응하는 모션 정보와 비교하며;
상기 IPMVC 와 연관되는 적어도 하나의 참조 인덱스를 상기 MVI 후보와 연관되는 적어도 하나의 참조 인덱스와 비교하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 15 항에 있어서,
상기 하나 이상의 프로세서들은 또한,
인터-뷰 디스패리티 모션 벡터 후보 (IDMVC) 을, 상기 병합 후보 리스트와 연관되는 제 1 공간 후보 및 상기 병합 후보 리스트와 연관되는 제 2 공간 후보 중 이용가능한 하나 이상과 비교하며;
상기 IDMVC 가 상기 제 1 공간 후보 및 상기 제 2 공간 후보 중 상기 이용가능한 하나 이상의 각각과는 상이한 것에 기초하여 상기 IDMVC 를 상기 병합 후보 리스트에 삽입하는 것, 또는 상기 IDMVC 가 상기 제 1 공간 후보 또는 상기 제 2 공간 후보 중 적어도 하나와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 IDMVC 를 제외시키는 것 중 하나를 수행하도록 구성되며,
상기 IDMVC, 상기 제 1 공간 후보, 및 상기 제 2 공간 후보의 각각은 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며, 상기 IDMVC 는 상기 비디오 데이터의 블록과 연관되는 디스패리티 벡터로부터 생성되는, 비디오 데이터를 코딩하는 디바이스. - 제 18 항에 있어서,
상기 IDMVC 를 상기 병합 후보 리스트에 추가하기 위해, 상기 하나 이상의 프로세서들은, 상기 IDMVC 를 상기 병합 후보 리스트 내의 다음 이용가능한 위치에 삽입하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 19 항에 있어서,
상기 IDMVC 를 상기 병합 후보 리스트 내의 상기 다음 이용가능한 위치에 삽입하기 위해, 상기 하나 이상의 프로세서들은, 상기 IDMVC 를 상기 제 1 공간 후보의 위치 또는 상기 제 2 공간 후보의 위치 중 적어도 하나의 위치에 뒤따르는 위치에 삽입하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 15 항에 있어서,
상기 하나 이상의 프로세서들은 또한,
시프트된 IPMVC 가 이용가능하다고 결정하며;
상기 시프트된 IPMVC 를 상기 IPMVC 와 비교하도록 구성되며,
상기 시프트된 IPMVC 는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며, 상기 시프트된 IPMVC 는 상기 베이스 심도 뷰에서의 비디오 데이터의 대응하는 블록으로부터 생성되는, 비디오 데이터를 코딩하는 디바이스. - 제 21 항에 있어서,
상기 하나 이상의 프로세서들은 또한,
상기 시프트된 IPMVC 가 상기 IPMVC 와는 상이한 것 및 상기 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여 상기 시프트된 IPMVC 를 상기 병합 후보 리스트에 추가하는 것, 또는 상기 시프트된 IPMVC 가 상기 IPMVC 와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 시프트된 IPMVC 를 제외시키는 것 중 하나를 수행하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 15 항에 있어서,
상기 하나 이상의 프로세서들은 또한,
디스패리티 시프트된 모션 벡터 (DSMV) 후보가 이용가능하다고 결정하도록 구성되며,
상기 DSMV 후보는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며,
상기 DSMV 후보는 상기 의존적인 심도 뷰에서 상기 비디오 데이터의 블록과 연관되는 하나 이상의 공간 이웃하는 블록들을 이용하여 생성되는, 비디오 데이터를 코딩하는 디바이스. - 제 23 항에 있어서,
상기 하나 이상의 프로세서들은 또한, 상기 병합 후보 리스트가 육 (6) 미만의 후보들을 포함하는 것에 기초하여, 상기 DSMV 후보를 상기 병합 후보 리스트에 추가하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 23 항에 있어서,
상기 DSMV 후보를 상기 병합 후보 리스트에 추가하기 위해, 상기 하나 이상의 프로세서들은, 상기 DSMV 후보를, 1) 상기 병합 후보 리스트에 포함된 공간 후보의 위치에 뒤따르는 위치, 및 2) 상기 병합 후보 리스트에 포함된 시간 후보의 위치에 선행하는 위치에 삽입하도록 구성되는, 비디오 데이터를 코딩하는 디바이스. - 제 23 항에 있어서,
상기 DSMV 후보가 이용가능하다고 결정하기 위해, 상기 하나 이상의 프로세서들은, 시프트된 IPMVC 가 이용불가능하다고 결정하는 것에 응답하여 상기 DSMV 후보가 이용가능하다고 결정하도록 구성되며,
상기 시프트된 IPMVC 는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되며,
상기 시프트된 IPMVC 는 상기 비디오 데이터의 블록의 상기 베이스 뷰로부터 생성되는, 비디오 데이터를 코딩하는 디바이스. - 제 23 항에 있어서,
상기 DSMV 후보는 하나 이상의 공간 이웃하는 샘플들의 적어도 하나의 공간 이웃하는 샘플과 연관되는 참조 픽처 리스트 0 (RefPicList0) 으로부터 선택되는 디스패리티 모션 벡터 (DMV) 를 포함하는, 비디오 데이터를 코딩하는 디바이스. - 제 23 항에 있어서,
상기 DSMV 후보는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되는 디스패리티 벡터의 시프팅에 기초하여 발생되며,
상기 디스패리티 벡터는 상기 의존적인 심도 뷰에서의 상기 비디오 데이터의 블록과 연관되는 상기 하나 이상의 공간 이웃하는 블록들과 연관되는 하나 이상의 심도 값들로부터 생성되는, 비디오 데이터를 코딩하는 디바이스. - 명령들로 인코딩된 컴퓨터 판독가능 저장 매체로서,
상기 명령들은 실행되는 경우, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금,
인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하도록 하며;
상기 IPMVC 가 상기 MVI 후보와 상이한 것에 기초하여 상기 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 상기 IPMVC 가 상기 MVI 후보와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 IPMVC 를 제외시키는 것 중 하나를 수행하도록 하며,
상기 IPMVC 와 상기 MVI 후보 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 상기 IPMVC 는 베이스 심도 뷰에서의 비디오 데이터의 대응하는 블록으로부터 생성되는, 컴퓨터 판독가능 저장 매체. - 비디오 데이터를 코딩하는 장치로서,
인터-뷰 예측된 모션 벡터 후보 (IPMVC) 를 모션 벡터 상속 (MVI) 후보와 비교하는 수단수단; 및
상기 IPMVC 가 상기 MVI 후보와 상이한 것에 기초하여 상기 IPMVC 를 병합 후보 리스트에 추가하는 것, 또는 상기 IPMVC 가 상기 MVI 후보와 동일한 것에 기초하여 상기 병합 후보 리스트로부터 상기 IPMVC 를 제외시키는 것 중 하나를 수행하는 수단을 포함하고,
상기 IPMVC 와 상기 MVI 후보 각각은 의존적인 심도 뷰에서의 비디오 데이터의 블록과 연관되며, 상기 IPMVC 는 베이스 심도 뷰에서의 비디오 데이터의 대응하는 블록으로부터 생성되는, 비디오 데이터를 코딩하는 장치.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361840400P | 2013-06-27 | 2013-06-27 | |
US61/840,400 | 2013-06-27 | ||
US201361847942P | 2013-07-18 | 2013-07-18 | |
US61/847,942 | 2013-07-18 | ||
US201361890107P | 2013-10-11 | 2013-10-11 | |
US61/890,107 | 2013-10-11 | ||
US14/316,145 | 2014-06-26 | ||
US14/316,145 US9800895B2 (en) | 2013-06-27 | 2014-06-26 | Depth oriented inter-view motion vector prediction |
PCT/US2014/044600 WO2014210473A1 (en) | 2013-06-27 | 2014-06-27 | Depth oriented inter-view motion vector prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160024960A true KR20160024960A (ko) | 2016-03-07 |
KR102112900B1 KR102112900B1 (ko) | 2020-06-04 |
Family
ID=52115575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167001940A KR102112900B1 (ko) | 2013-06-27 | 2014-06-27 | 심도 지향 인터-뷰 모션 벡터 예측 |
Country Status (8)
Country | Link |
---|---|
US (2) | US9800895B2 (ko) |
EP (2) | EP3014883A1 (ko) |
JP (1) | JP6356236B2 (ko) |
KR (1) | KR102112900B1 (ko) |
CN (2) | CN105359530B (ko) |
CA (1) | CA2912469C (ko) |
HK (1) | HK1215772A1 (ko) |
WO (2) | WO2014210468A1 (ko) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10075728B2 (en) * | 2012-10-01 | 2018-09-11 | Inria Institut National De Recherche En Informatique Et En Automatique | Method and device for motion information prediction refinement |
US9800895B2 (en) * | 2013-06-27 | 2017-10-24 | Qualcomm Incorporated | Depth oriented inter-view motion vector prediction |
US9628795B2 (en) | 2013-07-17 | 2017-04-18 | Qualcomm Incorporated | Block identification using disparity vector in video coding |
US9948915B2 (en) | 2013-07-24 | 2018-04-17 | Qualcomm Incorporated | Sub-PU motion prediction for texture and depth coding |
JP6434012B2 (ja) | 2013-07-24 | 2018-12-05 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | 3d−hevcのための簡素化された高度動き予測 |
US10244253B2 (en) | 2013-09-13 | 2019-03-26 | Qualcomm Incorporated | Video coding techniques using asymmetric motion partitioning |
US9693077B2 (en) | 2013-12-13 | 2017-06-27 | Qualcomm Incorporated | Controlling sub prediction unit (sub-PU) motion parameter inheritance (MPI) in three dimensional (3D) HEVC or other 3D coding |
US10567799B2 (en) | 2014-03-07 | 2020-02-18 | Qualcomm Incorporated | Simplified sub-prediction unit (sub-PU) motion parameter inheritance (MPI) |
KR102260146B1 (ko) * | 2014-03-31 | 2021-06-03 | 인텔렉추얼디스커버리 주식회사 | 시점 간 움직임 병합 후보 유도 방법 및 장치 |
US10567789B2 (en) | 2014-06-16 | 2020-02-18 | Qualcomm Incorporated | Simplified shifting merge candidate and merge list derivation in 3D-HEVC |
KR102378459B1 (ko) * | 2014-06-30 | 2022-03-24 | 한국전자통신연구원 | 움직임 병합 모드에서 시점 합성 예측 후보의 중복성 제거 장치 및 방법 |
WO2016061132A1 (en) * | 2014-10-13 | 2016-04-21 | Huawei Technologies Co., Ltd. | System and method for depth map coding for smooth depth map area |
US20160112724A1 (en) | 2014-10-15 | 2016-04-21 | Qualcomm Incorporated | Hrd descriptor and buffer model of data streams for carriage of hevc extensions |
EP3099072A1 (en) * | 2015-05-28 | 2016-11-30 | Parabola Research Limited | Method, system and device for image and video coding |
CN107925760A (zh) * | 2015-08-23 | 2018-04-17 | Lg 电子株式会社 | 基于间预测模式的图像处理方法及其装置 |
US10560718B2 (en) * | 2016-05-13 | 2020-02-11 | Qualcomm Incorporated | Merge candidates for motion vector prediction for video coding |
CN109479141B (zh) | 2016-07-12 | 2023-07-14 | 韩国电子通信研究院 | 图像编码/解码方法和用于所述方法的记录介质 |
GB2556319A (en) * | 2016-07-14 | 2018-05-30 | Nokia Technologies Oy | Method for temporal inter-view prediction and technical equipment for the same |
EP3525460A4 (en) * | 2016-10-06 | 2020-06-17 | LG Electronics Inc. -1- | METHOD FOR PROCESSING A VIDEO BASED ON AN INTRAPREDICATION MODE AND DEVICE THEREFOR |
US11496747B2 (en) | 2017-03-22 | 2022-11-08 | Qualcomm Incorporated | Intra-prediction mode propagation |
CN107220648B (zh) * | 2017-04-11 | 2018-06-22 | 平安科技(深圳)有限公司 | 理赔单据的字符识别方法及服务器 |
US10528366B2 (en) * | 2017-06-05 | 2020-01-07 | International Business Machines Corporation | Facilitating multi-inheritance within a single inheritance container-based environment |
WO2019165343A1 (en) * | 2018-02-26 | 2019-08-29 | Interdigital Vc Holdings, Inc. | Gradient based boundary filtering in intra prediction |
US10861215B2 (en) * | 2018-04-30 | 2020-12-08 | Qualcomm Incorporated | Asynchronous time and space warp with determination of region of interest |
CN111010571B (zh) | 2018-10-08 | 2023-05-16 | 北京字节跳动网络技术有限公司 | 组合仿射Merge候选的生成和使用 |
KR102581186B1 (ko) | 2018-10-12 | 2023-09-21 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 제어 방법 |
CN113039780B (zh) * | 2018-11-17 | 2023-07-28 | 北京字节跳动网络技术有限公司 | 视频处理中用运动矢量差的Merge |
JP7288964B2 (ja) | 2018-12-28 | 2023-06-08 | テレフオンアクチーボラゲット エルエム エリクソン(パブル) | 動きベクトル予測因子リストを生成すること |
CN109889853A (zh) * | 2019-02-26 | 2019-06-14 | 北京大学深圳研究生院 | 一种去块效应滤波方法、系统、设备及计算机可读介质 |
WO2020244571A1 (en) | 2019-06-04 | 2020-12-10 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate list construction using neighboring block information |
CN113994698B (zh) | 2019-06-04 | 2023-11-24 | 北京字节跳动网络技术有限公司 | 有条件地实施运动候选列表构建过程 |
CN117354507A (zh) | 2019-06-06 | 2024-01-05 | 北京字节跳动网络技术有限公司 | 视频编解码的运动候选列表构建 |
US11115658B2 (en) * | 2019-06-25 | 2021-09-07 | Qualcomm Incorporated | Matrix intra prediction and cross-component linear model prediction harmonization for video coding |
CN114128258B (zh) | 2019-07-14 | 2023-12-22 | 北京字节跳动网络技术有限公司 | 视频编解码中的变换块尺寸的限制 |
WO2021057996A1 (en) | 2019-09-28 | 2021-04-01 | Beijing Bytedance Network Technology Co., Ltd. | Geometric partitioning mode in video coding |
US11356698B2 (en) * | 2019-12-30 | 2022-06-07 | Tencent America LLC | Method for parameter set reference constraints in coded video stream |
CN116996661B (zh) * | 2023-09-27 | 2024-01-05 | 中国科学技术大学 | 三维视频展示方法、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012171442A1 (en) * | 2011-06-15 | 2012-12-20 | Mediatek Inc. | Method and apparatus of motion and disparity vector prediction and compensation for 3d video coding |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1757103A1 (en) * | 2004-06-04 | 2007-02-28 | Koninklijke Philips Electronics N.V. | Method of searching for a global motion vector. |
CN106162170B (zh) * | 2010-04-13 | 2019-07-02 | Ge视频压缩有限责任公司 | 解码器、编码器、解码方法和编码方法 |
DK2559240T3 (da) | 2010-04-13 | 2019-10-07 | Ge Video Compression Llc | Interplansprædiktion |
US8933927B2 (en) * | 2010-09-02 | 2015-01-13 | Samsung Electronics Co., Ltd. | Display system with image conversion mechanism and method of operation thereof |
CN107454420B (zh) * | 2010-12-13 | 2020-08-07 | 韩国电子通信研究院 | 基于帧间预测对视频信号进行解码的方法 |
JP5664762B2 (ja) * | 2011-03-17 | 2015-02-04 | 富士通株式会社 | 動画像復号方法、動画像符号化方法、動画像復号装置及び動画像復号プログラム |
US9485517B2 (en) * | 2011-04-20 | 2016-11-01 | Qualcomm Incorporated | Motion vector prediction with motion vectors from multiple views in multi-view video coding |
CN105915914B (zh) | 2011-06-24 | 2018-12-11 | 寰发股份有限公司 | 移除运动向量预测子中冗余的方法与装置 |
WO2013001749A1 (ja) | 2011-06-29 | 2013-01-03 | パナソニック株式会社 | 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置および画像符号化復号装置 |
CN102868889A (zh) * | 2011-07-06 | 2013-01-09 | 乐金电子(中国)研究开发中心有限公司 | 帧间图像视频编解码的运动矢量预测方法及视频编解码器 |
US9635355B2 (en) * | 2011-07-28 | 2017-04-25 | Qualcomm Incorporated | Multiview video coding |
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 |
FR2982448A1 (fr) * | 2011-11-07 | 2013-05-10 | Thomson Licensing | Procede de traitement d'image stereoscopique comprenant un objet incruste et dispositif correspondant |
FR2986395A1 (fr) * | 2012-01-30 | 2013-08-02 | France Telecom | Codage et decodage par heritage progressif |
US9602831B2 (en) * | 2012-03-07 | 2017-03-21 | Lg Electronics Inc. | Method and apparatus for processing video signals |
EP2648414B1 (en) | 2012-04-03 | 2016-03-23 | Samsung Electronics Co., Ltd | 3d display apparatus and method for processing image using the same |
KR20150020175A (ko) | 2012-04-24 | 2015-02-25 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
US20130287289A1 (en) * | 2012-04-25 | 2013-10-31 | Dong Tian | Synthetic Reference Picture Generation |
US10341677B2 (en) * | 2012-05-10 | 2019-07-02 | Lg Electronics Inc. | Method and apparatus for processing video signals using inter-view inter-prediction |
US9860555B2 (en) * | 2012-05-22 | 2018-01-02 | Lg Electronics Inc. | Method and apparatus for processing video signal |
WO2014005548A1 (en) * | 2012-07-05 | 2014-01-09 | Mediatek Inc. | Method and apparatus of unified disparity vector derivation for 3d video coding |
AU2013287481B2 (en) * | 2012-07-11 | 2015-12-10 | Lg Electronics Inc. | Method and apparatus for processing video signal |
US20140071235A1 (en) * | 2012-09-13 | 2014-03-13 | Qualcomm Incorporated | Inter-view motion prediction for 3d video |
US9264691B2 (en) * | 2012-09-28 | 2016-02-16 | Mitsubishi Electric Research Laboratories, Inc. | Method and system for backward 3D-view synthesis prediction using neighboring blocks |
US9253486B2 (en) | 2012-09-28 | 2016-02-02 | Mitsubishi Electric Research Laboratories, Inc. | Method and system for motion field backward warping using neighboring blocks in videos |
US10075728B2 (en) | 2012-10-01 | 2018-09-11 | Inria Institut National De Recherche En Informatique Et En Automatique | Method and device for motion information prediction refinement |
CN104704819B (zh) | 2012-10-03 | 2016-12-21 | 联发科技股份有限公司 | 3d视频编码的视差矢量推导和视图间运动矢量预测的方法及装置 |
KR20150079905A (ko) * | 2012-12-27 | 2015-07-08 | 니폰 덴신 덴와 가부시끼가이샤 | 화상 부호화 방법, 화상 복호 방법, 화상 부호화 장치, 화상 복호 장치, 화상 부호화 프로그램, 화상 복호 프로그램 및 기록 매체 |
WO2014166068A1 (en) * | 2013-04-09 | 2014-10-16 | Mediatek Inc. | Refinement of view synthesis prediction for 3-d video coding |
US9800895B2 (en) | 2013-06-27 | 2017-10-24 | Qualcomm Incorporated | Depth oriented inter-view motion vector prediction |
US10110925B2 (en) * | 2014-01-03 | 2018-10-23 | Hfi Innovation Inc. | Method of reference picture selection and signaling in 3D and multi-view video coding |
-
2014
- 2014-06-26 US US14/316,145 patent/US9800895B2/en active Active
- 2014-06-26 US US14/316,088 patent/US9716899B2/en active Active
- 2014-06-27 CA CA2912469A patent/CA2912469C/en active Active
- 2014-06-27 KR KR1020167001940A patent/KR102112900B1/ko active IP Right Grant
- 2014-06-27 EP EP14744231.3A patent/EP3014883A1/en not_active Ceased
- 2014-06-27 JP JP2016524245A patent/JP6356236B2/ja active Active
- 2014-06-27 WO PCT/US2014/044589 patent/WO2014210468A1/en active Application Filing
- 2014-06-27 CN CN201480035594.8A patent/CN105359530B/zh active Active
- 2014-06-27 CN CN201480035669.2A patent/CN105325001B/zh active Active
- 2014-06-27 EP EP14747173.4A patent/EP3014884A1/en not_active Withdrawn
- 2014-06-27 WO PCT/US2014/044600 patent/WO2014210473A1/en active Application Filing
-
2016
- 2016-03-30 HK HK16103664.1A patent/HK1215772A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012171442A1 (en) * | 2011-06-15 | 2012-12-20 | Mediatek Inc. | Method and apparatus of motion and disparity vector prediction and compensation for 3d video coding |
Non-Patent Citations (1)
Title |
---|
Vijayaraghavan Thirumalai et al., CE5.h: Merge candidates derivation from vector shifting, Joint Collaborative Team on 3D Video Coding Extensions of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 4th Meeting: Incheon, KR, 2013.04.13., JCT3V-D0178* * |
Also Published As
Publication number | Publication date |
---|---|
CN105325001B (zh) | 2018-06-12 |
HK1215772A1 (zh) | 2016-09-09 |
JP6356236B2 (ja) | 2018-07-11 |
US9800895B2 (en) | 2017-10-24 |
CA2912469C (en) | 2021-03-09 |
KR102112900B1 (ko) | 2020-06-04 |
EP3014884A1 (en) | 2016-05-04 |
CA2912469A1 (en) | 2014-12-31 |
WO2014210473A1 (en) | 2014-12-31 |
US20150003521A1 (en) | 2015-01-01 |
CN105359530B (zh) | 2018-09-18 |
US20150003529A1 (en) | 2015-01-01 |
CN105359530A (zh) | 2016-02-24 |
CN105325001A (zh) | 2016-02-10 |
WO2014210468A1 (en) | 2014-12-31 |
US9716899B2 (en) | 2017-07-25 |
EP3014883A1 (en) | 2016-05-04 |
JP2016527784A (ja) | 2016-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102112900B1 (ko) | 심도 지향 인터-뷰 모션 벡터 예측 | |
JP6535673B2 (ja) | 非対称動き分割を使用するビデオコーディング技法 | |
US9826244B2 (en) | Device and method for scalable coding of video information based on high efficiency video coding | |
KR101722890B1 (ko) | 텍스처 코딩을 위한 더욱 정확한 어드밴스드 잔차 예측 (arp) | |
JP6185143B2 (ja) | スキップおよびダイレクトモード用の3dビデオコーディングにおける視差ベクトル導出 | |
US9549180B2 (en) | Disparity vector generation for inter-view prediction for video coding | |
KR102264104B1 (ko) | 백워드 뷰 합성 예측 | |
JP2022504073A (ja) | 履歴ベースの動きベクトル予測子の改善 | |
KR102140359B1 (ko) | 비디오 정보의 스케일러블 코딩을 위한 디바이스 및 방법 | |
US9491458B2 (en) | Scalable video coding prediction with non-causal information | |
EP3308544A1 (en) | Systems and methods of determining illumination compensation status for video coding | |
EP2932718B1 (en) | Device and method for scalable coding of video information based on high efficiency video coding | |
US20140098881A1 (en) | Motion field upsampling for scalable coding based on high efficiency video coding | |
US10194146B2 (en) | Device and method for scalable coding of video information | |
CN109547800B (zh) | 用于3d-hevc的简化高级残余预测 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |