[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102609632B1 - 비디오 신호 처리 방법 및 장치 - Google Patents

비디오 신호 처리 방법 및 장치 Download PDF

Info

Publication number
KR102609632B1
KR102609632B1 KR1020160022481A KR20160022481A KR102609632B1 KR 102609632 B1 KR102609632 B1 KR 102609632B1 KR 1020160022481 A KR1020160022481 A KR 1020160022481A KR 20160022481 A KR20160022481 A KR 20160022481A KR 102609632 B1 KR102609632 B1 KR 102609632B1
Authority
KR
South Korea
Prior art keywords
prediction
block
intra
sample
mode
Prior art date
Application number
KR1020160022481A
Other languages
English (en)
Other versions
KR20170100214A (ko
Inventor
이배근
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to KR1020160022481A priority Critical patent/KR102609632B1/ko
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to CN202311295092.6A priority patent/CN117376554A/zh
Priority to EP17756864.9A priority patent/EP3422719A4/en
Priority to US16/080,005 priority patent/US20190068989A1/en
Priority to ES202030908A priority patent/ES2800509B1/es
Priority to PCT/KR2017/002072 priority patent/WO2017146526A1/ko
Priority to CN201780012734.3A priority patent/CN108702509B/zh
Priority to CN202311295084.1A priority patent/CN117376553A/zh
Priority to ES201900064A priority patent/ES2737841B1/es
Priority to CN202311294163.0A priority patent/CN117354536A/zh
Priority to ES201890055A priority patent/ES2692864B1/es
Priority to ES202130694A priority patent/ES2917099B1/es
Publication of KR20170100214A publication Critical patent/KR20170100214A/ko
Application granted granted Critical
Publication of KR102609632B1 publication Critical patent/KR102609632B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

레퍼런스 샘플 스무딩을 통한 인트라 예측 방법 및 장치를 제공한다.

Description

비디오 신호 처리 방법 및 장치{METHDO AND APPARATUS FOR PROCESSING A VIDEO SIGNAL}
본 발명은 비디오 신호 처리 방법 및 장치에 관한 것이다.
비디오 영상은 시공간적 중복성 및 시점 간 중복성을 제거하여 압축부호화되며, 이는 통신 회선을 통해 전송되거나 저장 매체에 적합한 형태로 저장될 수 있다.
본 발명은 비디오 신호의 코딩 효율을 향상시키고자 함에 있다.
상기 과제를 해결하기 위하여 본 발명은 레퍼런스 샘플 스무딩을 통한 인트라 예측 방법 및 장치를 제공한다.
본 발명에 따른 비디오 신호 처리 방법 및 장치는 레퍼런스 샘플 스무딩을 통해 비디오 신호 코딩 효율을 향상시킬 수 있다.
비디오 부호화에서 현재 픽쳐의 화면 내 예측 (intra prediction)을 사용하거나 화면 간 예측 (inter prediction)을 사용하여 예측 영상을 생성한다. 원본 영상에서 예측 영상을 차분한 잔차 영상(residual)을 부호화 한다. 예측 영상의 화질이 원본에 가까울수록 잔차 영상은 작은 샘플 값을 가지게 되어 부호화 효율이 높아진다.
입력 영상 신호를 여러 개의 블록으로 나누는데, 그 중 예측 모드(화면 내 예측 (Intra Mode), 화면 간 예측 (Inter Mode), 또는 스킵 모드(skip mode))를 공유하는 블록을 결정하고 이를 코딩 유닛 (Coding Unit(CU))라고 부른다. Coding unit의 크기는 64x64부터 8x8 사이의 정방형 블록일 수도 있고, 128x128, 256x256 또는 그 이상의 크기를 가지는 정방형 블록 또는 임의의 크기의 직사각형 블록일 수 있다. 256x256 크기부터 8x8 크기 사이의 정방형 블록 중에서 임의의 개수의 CU 크기를 선택적으로 사용할 수도 있다. 예를 들어, 어떤 시퀀스에서는 256x256 크기의 CU, 128x128 크기의 CU 그리고 32x32 크기의 CU만 사용할 수도 있으며, 현재 픽쳐 또는 시퀀스에서 사용할 CU의 크기를 시퀀스 헤더 또는 픽쳐 헤더에 시그날링 할 수도 있다.
픽쳐는 정방형 또는 비정방형 형태의 기본 블록으로 나누어 부호화 프로세스를 진행하게 되는데, 이를 Coding Tree Unit(CTU)라고 부른다. 시퀀스 파라미터 세트(sequence parameter set, SPS)에서 정방형 CTU인지 비정방형 CTU인지 시그날링할 수 있고, CTU사이즈를 시그날링할 수 있다. 비정방형 CTU인 경우 CTU 넓이와 CTU의 높이를 모두 시그날링할 수도 있다. 또는 픽쳐를 분할하는 vertical/horizontal boundary의 개수에 기초하여 정방향 및/또는 비정방형 CTU의 크기 또는 형태를 유도할 수도 있다.
CTU는 쿼드 트리/바이너리 트리 구조로 분할하여 코딩 유닛(coding unit)을 구성하여 부호화 하거나 계층 구조로 분할하여 부호화 할 수도 있다.
코딩 유닛은 스킵 모드, 화면 내 예측 (Intra mode), 화면 간 예측(Inter mode) 중 어느 하나의 예측 타입을 이용하여 부호화 된다. 코딩 유닛이 결정이 되고 나면, 예측 유닛(Prediction Unit(PU))을 결정하게 된다. 예측 유닛의 크기는 코딩 유닛의크기와 같거나 작다. 예측 유닛은 코딩 유닛의 예측 분할(PU splitting)과정을 통해 결정된다. 그리고 코딩 유닛의 예측 분할은 코딩 유닛의 파티션 모드(Part_mode)에 따라 수행된다. 즉, 코딩 유닛의 파티션 모드에 따라 예측 유닛의 크기 또는 형태가 결정된다. 화면 간 예측(Inter Mode)의 경우 총 8개의 예측 블록으로 나누어 지는데, 다음 그림1 과 같다.
그림1 화면 간 예측에 사용하는 파티션 종류
화면 내 예측(Intra mode)의 경우는 PART_2Nx2N, PART_NxN를 사용한다. 파티션 종류 PART_NxN의 경우, CU의 크기가 슬라이스에서 정의된 가장 작은 CU의 크기와 같을 때만 사용한다. 일반적으로 PU의 크기는 64x64부터 4x4까지로 정의되고, 화면 간 예측(Inter mode)인 경우에는 움직임 보상(Motion Compensation (MC))를 수행할 때 메모리 밴드위드스(memory bandwidth)를 줄이기 위해서 4x4 크기의 PU는 사용하지 않는다.
1. 인트라 예측 샘플 생성 방법
화면 내 예측의 경우 이미 부호화 된 주변 블록의 경계 샘플 (boundary sample)을 화면 내 예측을 위한 참조 픽셀로 사용한다. HEVC(High Efficient Video Codec) version1이 참조 픽셀을 이용하여 화면 내 예측 영상을 생성하는 35개 모드가 존재한다. 35개 모드는 DC 모드, 플래너(planar) 모드 그리고 33개의 방향성 예측 모드(directional prediction mode)로 구성된다. 그림 2는 33개의 방향성 예측 모드를 나타내고 있다.
그림2 화면 내 예측모드
크로마(Chroma) 성분의 화면 내 예측 모드는 루마(Luma) 성분에서 사용한 화면 내 예측 모드에 기초하여 아래 표 1과 같이 결정된다. 즉, DC 모드, 플래너 모드(Planar mode), 수평 예측 모드(Horizontal), 수직 예측 모드(Vertical), 대각 예측 모드(Diagonal) 그리고 루마(Luma) 성분에서 사용한 모드를 재사용하는 모드를 사용 할 수 있다.
또는 HEVC version 1에 정의된 33개의 방향성 예측 모드보다 더 많은 개수의 방향성 예측 모드가 이용될 수 있다. 즉, 방향성 예측 모드의 각도(angle)를 더 세분화하여 확장된 방향성 예측 모드를 정의할 수도 있고, 기-정의된 소정의 개수의 방향성 예측 모드들 중 적어도 하나를 이용하여 소정의 각도를 가진 방향성 예측 모드를 복호화 장치에서 유도하여 사용할 수도 있다.
예를 들어, 그림 3은 확장된 인트라 예측 모드를 도시한 것으로서, 인트라 예측 모드의 개수가 총 67개로 구성할 수도 있다. DC 모드와 플래너 모드 그리고 65개 방향성 예측 모드로 구성할 수도 있다.
그림 3 65개 방향성 인트라 예측 모드
확장된 인트라 예측 모드는 Luma 성분과 chroma 성분 모두에서 사용할 수도 있다. Luma 성분과 chroma 성분에 대해서 서로 상이한 개수의 인트라 예측 모드를 사용할 수도 있다. 예를 들어,Luma 성분에서는 67개 인트라 예측 모드를 사용하고, chroma 성분에서는 35개 인트라 예측 모드를 사용할 수도 있다. 또는 chroma format에 따라 서로 다른 개수의 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 예를 들어, 4:2:0 format인 경우에는 luma에서는 67개 인트라 예측 모드를 이용해 인트라 예측을 수행하고 chroma에서는 35개 인트라 예측 모드를 사용할 수 있고, 4:4:4 format인 경우에는 luma 와 chroma 성분 모두에서 67개 인트라 예측 모드를 이용해 인트라 예측을 사용할 수도 있다.
또는 블록의 크기 (PU 또는 CU의 크기 또는 형태)에 따라 서로 다른 개수의 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 즉 PU 또는 CU의 크기 또는 형태에 따라 35개 인트라 예측 모드 또는 67개 인트라 예측 모드를 이용하여 인트라 예측을 수행할 수도 있다. 예를 들어, CU 또는 PU의 크기가 64x64보다 작거나 asymmetric partition인 경우 (인터 예측 모드의 PART_nLx2N과 같은 파티션 모드)에는 35개 인트라 예측 모드를 이용하여 인트라 예측을 수행할 수 있고, CU 또는 PU의 크기가 64x64보다 같거나 큰 경우에는 67개 인트라 예측 모드를 이용하여 인트라 예측을 수행할 수도 있다.
또 다른 예를 들어, Intra_2Nx2N에서는 65개 방향 인트라 예측 모드를 허용할 수도 있으며, Intra_NxN에서는 35개 방향 인트라 예측 모드만 허용할 수도 있다.
상술한 바와 같이, 성분 타입(Luma 성분 또는 chroma 성분), chroma format, 블록 크기, 파티션 모드 중 적어도 하나를 고려하여 확장된 인트라 예측 모드의 개수가 선택적으로 결정될 수 있다. 다만, 이에 한정되지 아니하며, 인트라 예측 모드 중 복호화 대상 블록의 인트라 예측 위해 사용되는 인트라 예측 모드 후보자의 개수도 성분 타입(Luma 성분 또는 chroma 성분), chroma format, 블록 크기, 파티션 모드 중 적어도 하나를 고려하여 선택적으로 결정될 수 있다.
시퀀스나 슬라이스 단위 별로, 인트라 예측 모드의 개수를 다르게 적용하는 블록의 크기를 다르게 적용할 수 있다. 예를 들어, 하나의 슬라이스에서는 64x64 보다 큰 PU 또는 CU에서 67개의 인트라 예측 모드를 사용하여 인트라 예측을 수행하고, 다른 슬라이스에서는 32x32보다 큰 PU 또는 CU에서 67개의 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수도 있다. 이를 나타내는 정보 log2_extended_intra_mode_size_minus4 를 시퀀스 파라미터 세트 또는 슬라이스 헤더 등에 시그날링할 수 있다.
log2_extended_intra_mode_size_minus4 가 0 이면 16x16 보다 크기가 큰 CU 또는 PU에서 67개 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수 있음을 나타내고, log2_extended_intra_mode_size_minus4가 1이면 32x32보다 크기가 큰 CU 또는 PU에서 67개 인트라 예측 모드를 사용하여 인트라 예측을 수행할 수 있음을 나타낸다.
확장된 인트라 예측 모드를 사용하여 인트라 예측을 수행하는 경우에는 확장된 인트라 예측 모드 중에서 복수의 인트라 예측 모드 후보자(mpm)를 결정하고, 복수의 인트라 예측 모드 후보자 중 어느 하나를 선택적으로 이용하여(예를 들어, 시그날링되는 mpm_idx에 기반하여 선택) 현재 블록의 인트라 예측 모드를 유도할 수 있다. 이때 상기 복수의 인트라 예측 모드의 개수는 3개, 4개, 5개, 6개 또는 그 이상의 Most probable mode가 고정적으로 또는 적응적으로 이용될 수 있다.
확장된 인트라 예측 모드와 HEVC version1에서 정의된 35개의 인트라 예측 모드가 선택적으로 사용되는 경우, 주변 블록의 인트라 모드를 확장된 예측 모드의 인덱스로 변환하거나 HEVC version1에서 정의된 35개 인트라 예측 모드의 인덱스로 변환한 후, most probable mode를 유도할 수도 있다. 인덱스 변환을 위해 기-정의된 테이블이 이용될 수도 있고, 소정의 값에 기반한 스케일링 연산이 이용될 수도 있다. 여기서, 기-정의된 테이블은 서로 상이한 인트라 예측 모드 그룹 (예를 들어, 확장된 인트라 예측 모드와 HEVC version 1에 정의된 인트라 예측 모드) 간의 매핑 관계를 정의한 것일 수 있다.
예를 들어, 좌측 예측 유닛이 HEVC version 1과 같은 35개의 인트라 예측 모드를 사용하고, 인트라 예측 모드 인덱스가 10(horizontal mode)인 경우, 모드 인덱스를 확장된 인트라 예측 모드의 horizontal mode 인덱스인 16로 변환한 후, most probable mode 등을 유도할 때 사용할 수도 있다.
또 다른 예를 들어, 상측 예측 유닛이 확장된 인트라 예측 모드를 사용하고, 인트라 예측 모드 인덱스가 50 (vertical mode)인 경우, 모드 인덱스를 HEVC version1의 vertical mode 인덱스인 26으로 변환한 후, most probable mode등을 유도할 때 사용할 수도 있다.
Luma 성분에서는 화면 내 예측에 사용되는 참조 픽셀(reference pixel)을 필터링 한 후에 화면 내 예측을 수행한다. 필터링은 화면 내 예측 모드 및 변환 유닛(TU)의 크기에 따라 적용 여부가 결정된다. DC 모드이거나 TU의 크기가 4x4인 경우에는 필터링을 수행하지 않는다. 그 외의 경우에는 화면 내 예측 모드와 수직 예측(또는 수평 예측) 모드와의 차이가 기-정의된 임계치(Threshold) 보다 큰 경우에는 필터링을 수행한다. 그 임계치는 다음 표 2와 같다.
8x8 transform 16x16 transform 32x32 transform
Threshold 7 1 0
필터링에는 bilinear 보간 필터, 3 탭 필터 또는 그 이상의 탭수를 가진 필터가 선택적으로 이용될 수 있다. Bilinear 보간 필터는 소정의 가중치(예를 들어, [1/2, 1/2], [1/3, 2/3], [1/4, 3/4])를 이용할 수 있고, 3 탭 필터는 [1,2,1]의 필터 계수를 가진 필터가 이용될 수 있다.
화면 내 예측을 사용할 경우 주변 블록의 경계 샘플을 이용하여 예측 영상을 만들기 때문에, 화면 간 예측에 비해 예측 영상의 화질이 낮아지게 된다.
인트라 예측 모드를 수행하여 예측 샘플을 생성한 후에 주변 블록과 현재 블록의 샘플 값의 차이가 실제 블록의 샘플 간의 차이보다 커지는 경우가 발생하게 된다. 이를 보상해 주기 위해서 주변 블록의 샘플 및/또는 현재 블록 경계에 있는 샘플에 필터링을 수행하여 최종 예측 신호를 생성하여, 블록 간의 샘플 값의 차이를 줄이고 부호화 효율을 높일 수도 있다.
예를 들어, vertical mode에서는 현재 샘플과 가장 가까운 좌측 주변 샘플 p(-1,y)와 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있으며, 다음 식 (1)과 같이 예측 신호를 얻을 수 있다.
P'(0,y) = P(0,y) + (( p(-1,y) -p(-1,-1)) >> 1 for y=0… N-1 (1)
Horizontal mode에서는 현재 샘플과 가장 가까운 상측 주변 샘플 p(x,-1)과 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있으며, 다음 식 (2)와 같이 예측 신호를 얻을 수 있다.
P'(x,0) = p (x,0) + ((p(x,-1) -p(-1,-1))>>1 for x= 0 .. N-1 (2)
그림 4 인트라 예측 모드에서 현재 샘플과 주변 샘플 예시
현재 수직 예측 모드이거나 수평 예측 모드인 경우에 블록 경계에 있는 하나의 라인에서만 주변 블록의 차분 정보를 이용하여 최종 예측 샘플을 생성하는데, 블록 경계에 있는 복수의 라인(예를 들어, 복수의 열, 복수의 행)에서 주변 블록의 차분 정보를 이용하여 최종 예측 샘플을 생성할 수도 있다.
구체적으로 예를 들어, vertical mode에서는 현재 샘플과 가장 가까운 좌측 주변 샘플 p(-1,y)와 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있다. 이때, 상기 차분을 현재 샘플의 예측값에 가산할 수도 있고, 상기 차분을 소정의 값으로 스케일링한 후, 이를 현재 샘플의 예측값에 가산할 수도 있다. 스케일링에 이용되는 소정의 값은 열(row) 및/또는 행(column)에 따라 상이하게 결정될 수 있다. 일예로, 다음 식 (3), (4)와 같이 예측 신호를 얻을 수 있다.
P'(0,y) = P(0,y) + (( p(-1,y) -p(-1,-1)) >> 1 for y=0… N-1 (3)
P'(1,y) = P(1,y) + (( p(-1,y) -p(-1,-1)) >>2 for y=0… N-1 (4)
Horizontal mode에서는 현재 샘플과 가장 가까운 상측 주변 샘플 p(x,-1)과 좌상단 주변 샘플 p(-1,-1)의 차분을 이용하여 최종 예측 샘플을 얻을 수 있으며, 이는 vertical mode에서 상술한 바와 같다. 일예로, 다음 식 (5), (6)과 같이 예측 신호를 얻을 수 있다.
P'(x,0) = p (x,0) + ((p(x,-1) -p(-1,-1))>>1 for x= 0 .. N-1 (5)
P'(x,1) = p (x,1) + ((p(x,-1) -p(-1,-1))>>2 for x= 0 .. N-1 (6)
또는 방향성 예측 모드 중 예측 모드 인덱스가 2 또는 34 인 경우에는 다음 그림 5와 같이 주변 샘플과 방향성 인트라 예측 모드에 기반한 인트라 예측을 수행한 후 얻은 현재 예측 샘플을 현재 예측 샘플과 좌하단에 위치한 적어도 하나의 예측/복원 샘플에 기반한 필터링을 통해 최종 예측 샘플을 얻을 수 있다. 여기서, 좌하단 예측/복원 샘플은 현재 예측 샘플이 속한 라인의 이전 라인에 속한 것일 수 있고, 이는 현재 샘플과 동일한 블록에 속한 것일 수도 있고, 현재 블록에 인접한 이웃 블록에 속한 것일 수도 있다.
필터링을 하는 샘플은 블록 경계에 위치한 라인에서만 수행할 수도 있고, 그림과 같이 여러 개의 라인에서 수행할 수도 있다. 각 라인마다 서로 다른 필터 계수를 사용할 수도 있다. 예를 들어 블록 경계와 가장 가까운 왼쪽 첫번째 라인의 경우 (1/2,1/2) 필터를 사용할 수 있고, 두번째 라인의 경우 (12/16, 4/16) 필터를 사용할 수 있고, 세번째 라인의 경우 (14/16, 2/16) 필터를 사용하며, 네번째 라인의 경우 (15/16, 1/16) 필터를 사용할 수도 있다.
그림 5 예측 샘플 필터링 방법
또는 방향성 예측 모드 중 예측 모드 인덱스가 3에서 6사이 또는 30 내지 33 사이의 값일 경우에는 그림 6처럼 블록 경계에서만 필터링을 수행할 수 있으며, 3 tap 필터링을 사용하여 예측 샘플을 생성할 수 있다. 현재 샘플의 좌하단 샘플 및 좌하단 샘플의 하단 샘플, 그리고 현재 샘플을 3-tap 필터를 사용하여 필터링을 수행하여 최종 예측 샘플을 생성할 수 있다. 필터링에 이용되는 이웃 샘플 또는 참조 샘플의 위치는 예측 모드마다 서로 다르게 적용할 수 있다.
인트라 예측 모드에 따라 3-tap필터의 필터 계수를 다르게 적용할 수도 있다.
그림 6 예측 샘플 필터링 방법
주변 블록이 inter 모드인지 intra 모드인지에 따라 서로 다른 필터링을 적용할 수 있다. 예를 들어, 주변 블록이 intra 모드로 부호화 된 경우에는 inter 모드로 부호화 된 경우보다 현재 픽셀에 가중치를 더 주는 필터링 방법을 사용할 수 있다. 예를 들어, 인트라 예측 모드가 34번인 경우 블록 경계에 있는 첫번째 라인에서 주변 블록이 인터 예측 모드로 부호화 된 경우에는 (1/2,1/2) 필터를 사용하고, 주변 블록이 인트라 예측 모드로 부호화 된 경우에는 (4/16, 12/16) 필터를 사용하여 부호화 할 수도 있다.
예측 유닛 또는 코딩 유닛의 크기에 따라 예측 샘플 필터링을 수행하는 라인의 수를 다르게 적용할 수도 있다. 예를 들어, 그림 7의 좌측 그림처럼 PU 크기가 32x32보다 작거나 같은 경우에는 블록 경계에 있는 하나의 라인만 필터링을 수행하고, 그림 7의 우측 그림처럼 PU 크기가 32x32 보다 큰 경우에는 블록 경계에 있는 복수의 라인에 필터링을 수행할 수도 있다.
그림 7 PU 크기에 기초한 필터링 영역
2. 인트라 블록 카피
이미 복원된 화면 내 영상에서 현재 블록과 유사한 블록(이하, 참조 블록이라 함)영상을 예측 영상으로 사용할 수도 있다. 이러한 방법을 인트라 블록 카피(intra block copy, IBC)라고 부른다. 인트라 블록 카피에서는 참조 블록의 위치를 특정하기 위해서 현재 블록에서 참조 블록의 위치 차이를 모션 벡터처럼 벡터로 표현할 수 있고, 이를 블록 벡터 (block vector)라고 부른다. 그림 8은 인트라 블록 카피 방법을 나타내고 있다. 블록 벡터는 예측 부호화를 통해 예측 블록 벡터를 생성하고, 블록 벡터와 예측 블록 벡터 간의 차분 벡터만을 부호화할 수도 있고, 예측 부호화 없이 현재 블록의 블록 벡터를 부호화할 수도 있다. 여기서, 예측 블록 벡터는 현재 블록에 인접한 이웃 블록의 블록 벡터로부터 유도될 수 있다. 또는, 현재 블록이 포함된 LCU 내의 블록 벡터로부터 유도될 수도 있고, 현재 블록이 포함된 LCU 열(row) 내의 블록 벡터로부터 유도될 수도 있다.
특히 영상에 한글 또는 알파벳 등과 같은 문자가 많이 포함되어 있는 경우에, 이전 블록에서 현재 블록에서 부호화하려는 문자를 포함하고 있으면, 인트라 블록 카피를 사용하여 부호화 성능을 향상시킬 수 있다.
그림 8 인트라 블록 카피
3. 주변 샘플을 이용한 가중 예측 방법
현재 블록과 이전 프레임의 대응 블록이 유사함에도 불구하고, 이전 프레임과 현재 프레임의 밝기의 변화가 발생하여 인트라 예측 또는 인터 예측으로 부호화되지 않거나, 인트라 예측 또는 인터 예측으로 부호화된 예측 영상의 화질이 상대적으로 낮은 경우가 발생할 수 있다. 프레임 전체에서 밝기 변화가 발생한 경우에는 다음 식 (7)처럼 인트라 예측 또는 인터 예측으로 부호화/복호화된 영상 P 에 가중치 w 와오프셋 f 을 더하여 가중된 영상 P'을 얻을 수 있다. 여기서, 가중치 w와 오프셋 f는 인트라 예측 또는 인터 예측을 통해 생성된 예측 샘플에 적용될 수도 있고, 최종 복원 샘플에 적용될 수도 있다.
P'=w x P + f (7)
가중치 w 또는 오프셋 f 중 적어도 하나는 sequence header 또는 슬라이스 헤더에서 시그날링될 수도 있다.
슬라이스 또는 시퀀스 전체가 이전 슬라이스 또는 시퀀스와 비교해서 조명 변화가 발생하기도 하지만, 슬라이스 또는 시퀀스의 일부 영역에서만 이전 슬라이스 또는 시퀀스와 비교해서 조명 변화가 나타나기도 한다. 이런 경우에 부호화 단계에서 블록 별(예를 들어, 코딩 유닛 또는 예측 유닛과 같은 블록)로 가중치 w 또는 오프셋 f 중 적어도 하나를 시그날링할 수 있다. 가중치 w 또는 오프셋 f 중 적어도 하나는 블록의 부호화 모드와 관계없이 시그날링될 수도 있고, 블록의 부호화 모드를 고려하여 선택적으로 시그날링될 수도 있다. 예를 들어, 블록의 부호화 모드가 인터 모드인 경우, 가중치 w 또는 오프셋 f을 시그날링하고, 그렇지 않은 경우에는 시그날링하지 않을 수 있다. 여기서, 인터 모드는 스킵 모드, 머지 모드 또는 인트라 블록 카피 모드 중 적어도 하나를 포함할 수 있다. 다만, 인트라 블록 카피는 인터 모드에 포함되는 것으로 한정되지 아니하며, 인트라 모드로 분류될 수도 있다.
현재 블록에 이웃한 특정 형태의 제1 템플릿과 이에 대응하는 이전 블록에 이웃한 제2 템플릿 사이의 조명 변화를 이용해서 가중치를 유도할 수도 있다. 상기 제2 템플릿에 비가용 샘플이 포함될 수 있으며, 이 경우 비가용 샘플의 위치에 가용 샘플을 복사하여 이용할 수도 있고, 복수의 가용 샘플 간의 보간을 통해 가용 샘플을 유도하여 이용할 수도 있다. 이때 이용되는 가용 샘플은 제2 템플릿에 속한 것일 수도 있고, 이웃 블록에 속한 것일 수도 있다. 보간에 이용되는 필터의 계수, 형태 또는 탭수 중 적어도 하나는 템플릿의 크기 및/또는 형태에 기반하여 가변적으로 결정될수있다.
예를 들어, 현재 블록의 이웃 샘플을 yi (i는 0 부터 N-1)과 참조 블록의 이웃 샘플을xi( i 는 0 부터 N-1)라고 할 때,가중치 w와 오프셋 f는 다음과 같이 유도될 수 있다.
현재 블록에 이웃한 특정 형태의 템플릿을 이용하여 가중치 w와 오프셋 f는 다음 식 (8)의 E(w,f)의 최소값을 구하여 유도할 수 있다.
(8)
식 (8)의 최소값을 구하는 방법은 식 (9)와 같이 변형될 수 있다.
(9)
식 (9)로부터 가중치 w를 유도하는 식 (10)과 오프셋 f를 유도하는 식 (11)을 얻을 수 있다.
(10)
(11)
4. 템플릿 구성 방법
그림 9는 현재 블록의 이웃 샘플로 구성된 템플릿을 구성하는 일 실시예 이다.
그림9 템플릿 실시예
그림 9의 좌측 그림처럼 현재 CU와 인접한 모든 이웃 샘플을 템플릿으로 구성할 수도 있고, 중앙 그림처럼 현재 CU와 인접한 모든 이웃 샘플 중에서 sub-sampling된 일부 샘플로 템플릿을 구성할 수 있다. 중앙 그림은 1/2 sub-sampling한 예시로서 회색 부분 샘플로만 템플릿을 구성할 수 있다. 1/2 sub-sampling 대신에 1/4 sub-sampling, 1/8 sub-sampling을 이용하여 템플릿을 구성할 수도 있다. 그림 9의 우측 그림처럼 현재 CU와 인접한 모든 이웃 샘플에서 좌상단에 위치한 샘플을 제외하고 템플릿을 구성할 수도 있다. 그림 8에 도시되어 있지는 아니하나, 픽쳐 또는 코딩 트리 블록(Largest Coding Unit) 내 현재 CU의 위치를 고려하여 좌측에 위치한 샘플만으로 구성된 템플릿을 이용하거나, 상단에 위치한 샘플만으로 구성된 템플릿을 이용할 수도 있다.
또는 그림 10처럼 인접한 이웃 샘플의 개수를 확장하여 템플릿을 구성할 수도 있다. 그림 9의 템플릿은 예측 유닛 또는 코딩 유닛의 경계와 인접한 이웃 샘플만 사용하였지만, 그림 10의 일 실시예와 같이 코딩 유닛 경계와 인접한 이웃 샘플과 그와 인접한 이웃 샘플들로 구성할 수도 있다.
그림 10 템플릿 실시예
그림 10의 좌측 그림처럼 예측 유닛 또는 코딩 유닛 경계로부터 인접한 2개 라인에 속하는 이웃 샘플 모두를 템플릿으로 사용할 수도 있고, 가운데 그림처럼 좌측 그림의 템플릿에서 sub-sampling하여 템플릿을 구성할 수 있다. 그림 10의 우측 그림처럼 좌측 그림에 나타난 템플릿에서 좌상단에 속하는 4개의 샘플을 제외하고 템플릿을 구성할 수도 있다. 그림 10에 도시되어 있지는 아니하나, 픽쳐 또는 코딩 트리 블록(Largest Coding Unit) 내 현재 CU의 위치를 고려하여 좌측에 위치한 샘플만으로 구성된 템플릿을 이용하거나, 상단에 위치한 샘플만으로 구성된 템플릿을 이용할 수도 있다.
예측 유닛 또는 코딩 유닛의 크기 또는 형태(정방형 인지, 정방형이 아닌지 또는asymmetric 예측 유닛 파티션인지)에 따라 서로 다른 템플릿을 구성할 수도 있다.
예를 들어 그림 11처럼 코딩 유닛의 크기에 따라 템플릿의 sub-sampling rate을 다르게 적용할 수도 있다. 예를 들어, 크기가 64x64 보다 작거나 같은 CU에서는 그림 11의 좌측 그림처럼 1/2 sub-sampling한 템플릿을 구성하고, 크기가 128x128 보다 크거나 같은 CU에서는 그림 11의 우측 그림처럼 1/4 sub-sampling한 템플릿을 구성할 수 있다.
그림11 CU 크기에 기초한 템플릿 선택 방법
또 다른 일 실시예로서 그림 12처럼 CU의 크기에 따라 인접한 이웃 샘플의 개수를 확장한 템플릿을 사용할 수도 있다.
그림12 CU 크기에 기초한 템플릿 선택 방법
시퀀스 또는 슬라이스에서 사용 가능한 복수의 템플릿 후보자를 결정하고, 이 중 어느 하나를 선택적으로 이용할 수도 있다. 상기 복수의 템플릿 후보자는 서로 상이한 형태 및/또는 크기를 템플릿으로 구성될 수 있다. 템플릿의 모양이나 형태 및/또는 크기를 시퀀스 헤더 또는 슬라이스 헤더에서 시그날링할 수도 있다. 부호화기 또는 복호화기에서는 템플릿 후보자마다 index 값을 할당할 수 있다. 그리고, 복수의 템플릿 후보자 중에서 현재 시퀀스, 픽쳐 또는 슬라이스에서 사용되는 템플릿 후보자를 식별하기 위해 신택스 type_weight_pred_template_idx를 부호화 할 수 있다.복호화기는 신택스 type_weight_pred_template_idx에 기반하여 템플릿 후보자를 선택적으로 이용할 수 있다.
예를 들어, 그림 13과 같이, 그림 9의 가운데 그림에 나타난 템플릿을 0으로 할당하고, 그림 9의 우측 그림에 나타난 템플릿을 1로 할당하고, 그림 10의 가운데 그림에 나타난 템플릿을 2로 할당하고, 그림 10의 우측에 나타난 템플릿을 3으로 할당할 수 있으며, 그 중에서 시퀀스에서 사용한 템플릿을 시그날링 할 수 있다.
그림13 템플릿
5. 비정방형 블록에서 템플릿 구성 방법
코딩 유닛이 비정방형 블록의 형태이거나 비정방형 블록을 허용하는 예측 유닛을 이용하여 가중 예측을 수행하는 경우 템플릿의 총 개수가 2^N이 될수 있도록, 길이가 긴 쪽과 짧은 쪽의 sub-sampling rate를 다르게 적용하여 템플릿을 구성할 수도 있다. 예를 들어, 그림 14처럼 길이가 짧은 쪽에서는 1/2 sub-sampling을 길이가 긴 쪽에서는 1/4 sub-sampling을 수행하여 템플릿을 구성할 수 있다.
그림 14 비 정방형 블록의 템플릿 실시예
6. 서브 블록(Sub-block) 단위 인트라 예측 신호 생성 방법
방향성 인트라 예측 방법을 사용하여 인트라 예측 신호 생성을 하여도 현재 블록의 주변 픽셀만을 이용하여 예측 신호를 생성하기 때문에 예측 영상이 원본 영상의 특징을 반영하지 못하는 경우가 발생하고, 이 경우 잔차 신호(레지듀얼)의 값이 상대적으로 커져서, 부호화 할 때 비트양이 많아지는 단점이 발생할 수 있다.
예를 들어, 예측 유닛 내에 엣지(edge)가 존재하거나 현재 블록의 경계 주변에는 없었던 객체가 나타나는 경우에는 방향성 인트라 예측 영상과 원본 영상 사이의 차이가 현재 블록 내 위치에 따라 상대적으로 커지는 부분이 존재한다. 이 경우에는 고주파 성분이 많은 레지듀얼이 발생을 하기 때문에 부호화 효율이 나빠지게 된다
특히 블록의 경계에서 상대적으로 멀리 떨어진 영역의 잔차 신호는 고주파 성분을 많이 포함하게 된다. 상대적으로 블록 경계에서 멀리 떨어진 영역의 예측 신호의 화질을 향상시키기 위해서 서브 블록 단위에 기초하여 예측 신호를 업데이트 하는 방법을 사용할 수도 있다.
예를 들어, 방향성 인트라 예측이나 인트라 블록 카피를 수행하여 생성한 제1 예측 신호에 서브 블록 별로 소정의 오프셋을 적용하여 제2 예측 신호를 얻을 수 있다. 만일, 현재 블록(예를 들어, 코딩 블록)이 복수의 서브 블록 단위로 분할되어 부호화된 경우, 각 서브 블록에 대해서 소정의 오프셋을 선택적으로 적용할 수도 있다. 이를 위해 각 서브 블록 별로 소정의 오프셋이 적용되는지 여부를 시그날링할 수도 있고, 또는 현재 블록 내에서 해당 서브 블록의 위치에 따라 오프셋의 적용 여부가 결정될 수도 있다. 그림 15와 같이 블록 경계와 가까운 서브 블록에서는 제1 예측 신호를 최종 예측 신호로 사용하고, 블록 경계와 먼 서브 블록에서는 제1 예측 신호에 소정의 오프셋을 적용하여 제2 예측 신호를 생성하고, 이를 최종 예측 신호로 사용할 수 있다. 이때 제2 예측 신호는 제1 예측 신호에 소정의 오프셋을 가산하거나, 또는 감산하여 유도될 수 있다.
그림 15 서브 블록 단위 인트라 예측 신호 생성 방법 일 실시 예
또 다른 예를 들어, 그림 16와 같이 제1 예측 신호에 서브 블록 단위로 서로 다른 오프셋을 적용하여 제2 예측 신호를 생성 할 수도 있다.
그림 16 서브 블록 단위 인트라 예측 신호 생성 패턴 일 실시 예
예측 유닛 또는 코딩 유닛 별로 서브 블록 단위 인트라 예측 신호 생성 방법을 적용할 지 여부를 나타내는 신택스 is_sub_block_refinement_flag을 시그날링 할 수 있으며, is_sub_block_refiement_flag의 값이 1이면 서브 블록 단위 인트라 예측 신호 생성 방법을 적용 할 수 있다.
서브 블록 단위 인트라 예측 신호 생성 방법을 사용하는 경우, 어떤 패턴의 서브 블록 인트라 예측 신호 생성 방법을 사용할 지를 시그날링 할 수 있다. 디코더에서는 기 정의된 패턴에 따라 서브 블록 단위로 적어도 하나의 서브 블록의 제1 예측 신호에 오프셋을 적용하여 제2 예측 신호를 생성할 수 있다. 구체적으로 예를 들어, 인덱스 0를 사용하는 경우에는 그림 15의 첫번째 그림처럼 상측 서브 블록은 제1 예측 신호를 그대로 사용하고 하측 서브 블록에서는 제1 예측 신호에 소정의 오프셋 f를 적용하여 제2 예측 신호를 생성할 수 있다. 또는 그림 16의 첫번째 그림처럼 상측 서브 블록은 제 1 예측 신호에 소정의 오프셋 h를 적용하여 제2 예측 신호를 생성할 수 있고, 하측 서브 블록은 제1 예측 신호에 소정의 오프셋 f를 적용하여 제2 예측 신호를 생성할 수 있다.
또는 제 1 예측 신호를 생성하기 위해 사용한 인트라 예측 모드에 기초하여 서브 블록 단위 예측 신호 생성을 위해 특정 패턴을 선택적으로 사용할 수도 있다. 예를 들어, 수평 방향 인트라 예측 모드 또는 수평 방향 인트라 예측 모드와 유사한 방향성을 갖는 인트라 예측 모드(예를 들어, 인트라 예측 모드 인덱스가 6 내지 14)인 경우 그림 16의 index2 또는 index3를 사용할 수 있고, 수직 방향 인트라 예측 모드 또는 수평 방향 인트라 예측 모드와 유사한 방향성을 갖는 인트라 예측 모드(예를 들어, 인트라 예측 모드 인덱스가 6 내지 14인 경우)인 경우 그림 16의 index0 또는 index1을 사용할 수 있다.
다음 그림 17과 같이 인트라 예측 유닛 또는 코딩 유닛 내 서브 블록들이 서로 다른 크기로 구성되거나, 인트라 블록을 3개의 서브 블록으로 구성하여 제2 예측 신호를 생성할 수도 있다.
그림 15 내지 그림 17의 서브 블록 단위 인트라 예측 패턴을 몇 개의 카테고리로 그룹핑 한 후 그 카테고리 식별 정보와 해당 카테고리에 속한 패턴을 가리키는 인덱스를 시그날링할 수도 있다. 예를 들어, 그림 17의 인덱스 0 내지 인덱스 3을 카테고리 1으로 설정하고, 그림 17의 인덱스 4 내지 인덱스 7을 카테고리 2로 설정하고, 인덱스 8 내지 인덱스 12를 카테고리 3으로 설정할 수도 있다. 이 중에서 어떤 카테고리를 사용할지를 시그날링 한 후, 인트라 예측 유닛 또는 코딩 유닛 내에서 사용한 패턴의 인덱스를 시그날링할 수도 있다. 또는, 별도의 카테고리 그룹핑 없이, 패턴을 특정하는 인덱스만을 시그날링할 수도 있고, 예측 유닛 또는 코딩 유닛의 파티션 모드로부터 패턴을 유도할 수도 있다. 기-정의된 패턴을 특정하는 인덱스를 시그날링할지 아니면 파티션 모드로부터 유도할지를 픽쳐, 슬라이스 또는 블록 레벨에서 결정할 수 있으며, 이를 위한 별도의 플래그가 시그날링될 수도 있다.
그림 17 서브 블록 단위 예측 신호 패턴 일 실시예
그림 15 내지 그림 17은 서브 블록 단위 인트라 예측 패턴의 한 실시 예에 불과하며, 당업자에게 자명한 범위 내에서 상이하게 결정될 수 있다.
서브 블록 단위 인트라 예측 패턴의 개수는 시퀀스 또는 슬라이스 단위로 결정 될 수 있으며, 시퀀스 헤더 또는 슬라이스 헤더에 그 개수를 시그날링 할 수 있다.
코딩 유닛의 크기 또는 예측 유닛의 크기에 기초하여 서브 블록 단위 인트라 예측 패턴의 개수를 다르게 적용하거나 서브 블록의 개수를 다르게 적용할 수 있다.
예를 들어, CU의 크기가 64x64 이상이면, 그림 18의 패턴을 사용하여 서브 블록 단위 인트라 예측 신호를 생성하고, CU의 크기가 64x64 보다 작으면, 그림 15 내지 그림 17의 패턴을 사용하여 서브 블록 단위 인트라 예측 신호를 생성 할 수도 있다.
그림 18 서브 블록 단위 예측 신호 패턴 일 실시예
또 다른 예를 들어, 그림 19와 같이 서브 블록간의 크기 및/또는 형태가 서로 다른 패턴을 사용하여 서브 블록 단위 인트라 예측 신호를 생성할 수도 있다. 다음 그림 19의 패턴 중 적어도 하나를 이용하여 서브 블록 단위 인트라 예측 신호를 생성할 수도 있다.
그림 19 서브 블록 단위 예측 신호 패턴 일 실시예
서브 블록 단위 별로 제 2 예측 신호 생성에 사용되는 오프셋 h 또는 f 또는 g 또는 i는 슬라이스 단위 또는 CU 단위로 시그날링 할 수도 있고, 현재 블록 주변의 이웃 샘플로부터 유도할 수도 있다. 예를 들어, 서브 블록 별 오프셋은 현재 블록 내 소정의 위치(좌측, 상단의 경계, 좌상단 코너 샘플 등)에서 현재 샘플 사이의 거리를 고려하여 유도될 수 있다. 예를 들어, 상기 오프셋은 현재 블록 내 소정의 위치와 현재 샘플 간의 거리를 나타내는 값에 비례하여 결정될 수 있다.
7. 비디오 부호화에서 심볼의 컨텍스트 확률 인덱스 초기화 방법
변환 계수(Transform coefficients), 모션 벡터 차분 (Motion vector difference), 슬라이스 내 신택스 등의 심볼을 이진화 하여 산술 부호화(arithmetic coding)을 수행하여 비트스트림을 생성할 수 있다. 각 심볼은 주변 블록에 있는 같은 심볼의 값이나 주변 블록의 정보 또는 현재 블록 내에서의 위치 등을 고려하여 결정되는 context에 기초하여 각 symbol에 대한 확률 인덱스를 선택하고, 내부적인 심볼의 누적 통계와 부호화된 심볼의 값에 따라 확률을 재 계산하고, 산술 부호화를 사용하여 압축 성능을 향상시킬 수 있으며, HEVC에서 사용하고 있는 산술 부호화 방법을 CABAC(Context Adaptive Binary arithmetic Coding)이라고 부른다.
심볼을 부호화하기 위해서는 다음 과정을 수행할 수 있다.
(1) 이진화 (binarization)
부호화할 대상 심볼이 바이너리 심볼(심볼의 값이 0과 1로만 구성된 심볼)이 아닌 경우(예를 들어, 변환 계수와 모션 벡터 차분)에는 대상 심볼을 바이너리 심볼로 변환한다. HEVC 에서는 unary, Truncated unary binarization(이진화) 방법 등을 사용하여 심볼을 이진화 할 수 있다. 심볼을 이진화하였을 때 매핑된 코드워드 중 0 또는 1을 갖는 비트를 bin이라고 부른다.
다음 표 3은 unary binarization 방법을 나타내고 있다.
Symbol binarization
0 0
1 10
2 110
3 1110
다음 표 4는 Truncated unary binarization with cMax = 6 방법을 나타내고 있다.
Symbol binarization
0 0
1 10
2 110
3 1110
4 11110
5 111110
6 111111
(2) Context model 선택
Context model은 각 심볼에 대한 확률 모델을 의미한다. Context 모델 별로 bin에서 0 또는 1이 발생할 확률이 서로 다를 수 있다. HEVC에서는 다양한 심볼에 대해 약 400개의 독립적인 context가 존재한다.
슬라이스가 시작할 때 각 심볼이 가지고 있는 context 별로 context 확률 인덱스 pStateIdx를 양자화 파라미터 Qp 값 또는 슬라이스 타입(I slice, P slice 또는 B slice)에 기초하여 초기화 할 수 있다.
Tile(타일)을 사용할 경우 각 타일의 앞부분에서 각 심볼이 가지고 있는 context 별로 context 확률 인덱스 pStateIdx를 양자화 파라미터 Qp 값 또는 슬라이스 타입(I slice, P slice 또는 B slice)에 기초하여 초기화 할 수 있다.
(3) 산술 부호화 (Arithmetic coding)
각 심볼은 context 모델 단위로 산술 부호화 과정을 수행한다. 같은 심볼이어도 서로 다른 context를 사용하는 경우에는 확률 업데이트, 비트스트림 부호화에 서로 영향을 주지 않는다. 각 symbol의 확률이 높은 경우에는 적은 비트를 사용하고 확률이 낮은 경우에는 낮은 비트를 사용하는 방법이다. 예를 들어 확률 값이 높으면 10개 보다 작은 비트로 10개의 bin을 갖는 심볼을 부호화할 수도 있다.
산술 부호화 방법은 부호화할 심볼을 심볼의 확률값에 기초하여 [0,1) 사이의 구간을 서브 구간으로 나눈 후, 그 서브 구간에 속하는 실수 중 가장 작은 비트로 표현 가능한 수를 선택하여 그 계수를 부호화하는 방법이다. [0.1) 사이의 구간을 서브 구간으로 나눌 때, 심볼의 확률이 크면 긴 서브 구간을 할당하고 심볼의 확률이 작으면 작은 서브 구간을 할당할 수 있다.
예를 들어, 그림 20처럼 1의 발생확률 0.2, 0의 발생확률 0.8 이라 가정할 때, symbol 010을 arithmetic coding하는 절차는 다음과 같다.
a) Symbol 010에서 첫번째 0을 부호화. 0의 발생확률이 0.8 임으로 구간 [0,1)에서 [0-0.8)으로 구간이 갱신됨
b)Symbol 010에서 두번째 1을 부호화. 1의 발생확률이 0.2 임으로 구간 [0-0.8)에서 [0.64-0.8)으로 구간이 갱신됨
c)Symbol 010에서 세번째 0을 부호화. 0의 발생확률이 0.8 임으로 구간 [0.64-0.8) 에서 [0.64-0.768) 으로 구간이 갱신됨
d)[0.64-0.768)에 속하는 가장 작은 실수 표현이 0.75 = (1/2)x1 +(1/2)^2 ×1 이므로, 0을 제외한 이진표현 11이 부호화 됨
그림 20 산술 부호화 예시
(4) 심볼의 확률 업데이트 (Probability update)
Context에 기초하여 각 bin의 MPS(Most Probable symbol, 0과 1 중 발생 빈도가 많은 심볼)과 LPS(Least Probable Symbol, 두 이진수 0과 1 중 발생 빈도가 적은 symbol)이 Qp 값에 기초하여 초기값이 설정되어 있다. 현재 부호한 bin이 MPS인지 LPS인지에 따라 그 심볼의 MPS 발생 확률과 LPS 발생 확률 값이 변할 수 있다.
예를 들어, 현재 부호화할 심볼의 bin의 이진화 값이 MPS와 같다면 이 심볼의 MPS 확률 값이 커지고 LPS 확률 값은 작아지고, LPS와 같다면 이 심볼의 MPS 확률 값이 작아지고, LPS 확률 값은 커질 수 있다. CABAC에서는 총 64개의 MPS 발생 확률과 총 64개의 LPS 발생 확률로 구성할 수 있다. 심볼의 발생 확률을 나타내는 인덱스 pStateIdx로 정의할 수 있으며, pStateIdx 값이 커질수록 MPS 발생 확률이 높아지도록 할 수 있다.
표 5와 같이 현재 context의 확률 값을 나타내는 context 확률 인덱스 pStateIdx에서 MPS 심볼을 부호화하면 pStateIdx는 transIdxMPS에 해당하는 인덱스로 업데이트 할 수 있다. 예를 들어, pStateIdx 값이 16일 때 MPS 심볼을 부호화하면 pStateIdx는 transIdxMPS가 가리키는 인덱스 17로 업데이트 할 수 있고, LPS 심볼을 부호화하면 pStateIdx 는 transIdxLPS가 가리키는 인덱스 13으로 업데이트 할 수 있다. pStatIdx값이 0이면서 LPS 심볼을 부호화는 경우에는 MPS와 LPS 심볼을 서로 바꾸게 된다. (pStateIdx가 0일 때 MPS 발생 확률은 0.5로 설정되어 있는데, LPS 심볼을 부호화하게 되면 MPS 보다 LPS의 빈도수가 많아지기 때문에 MPS와 LPS 심볼 값을 바꾸게 된다).
7.1 복수개의 컨텍스트 확률 인덱스에 기초한 컨텍스트 모델 초기화 방법
HEVC에서는 슬라이스 단위 또는 타일 단위로 각 context의 초기 context 확률 인덱스 값으로 초기화 하여 사용하고 있다. 슬라이스 초기에 이미 설정된 초기값으로 심볼을 부호화하는 경우, 실제 심볼의 확률을 제대로 반영하지 못하기 때문에 부호화 성능이 떨어질 수 있다. 하지만 슬라이스 단위로 컨텍스트 확률 인덱스를 초기화하기 때문에 이전 슬라이스 또는 프레임이 전송되지 않았더라도 현재 슬라이스를 복호화할 수 있는 장점도 존재한다.
이전 슬라이스를 복호화 하는 중에 어느 일정 시점(예를 들어, 스캔 순서상 중간에 위치한 블록을 부호화 할 때)에 누적된 컨텍스트 확률 인덱스 이용하여 현재 슬라이스의 context 확률 인덱스 초기값으로 사용할 수도 있다. 이전 슬라이스에서 누적된 컨텍스트 확률 값 또는 context 확률 인덱스 값은 슬라이스 헤더 등에 직접 부호화할 수도 있다.
또는 적어도 하나의 컨텍스트에 복수개의 컨텍스트 확률 인덱스를 사용하여 초기화 할수 있다. 예를 들어 임의의 컨텍스트 ctx는 슬라이스 마다 서로 다른 컨텍스트 확률 인덱스 초기 값을 가질 수 있다. 슬라이스 별로 복수개의 컨텍스트 확률 인덱스 중 어떤 확률 인덱스를 선택할 지 슬라이스 헤더에서 전송할 수 있으며, 복호화 단계에서는 슬라이스 헤더에서 전송된 컨텍스트 확률 인덱스 정보에 기초하여 복호화를 수행할 수도 있다. 슬라이스 타입에 관계없이 복수개의 컨텍스트 초기 값(InitValue) 또는 컨텍스트 확률 인덱스(pSateIdx)를 사용할 수 있다.
각 심볼의 컨텍스트 마다 서로 다른 확률 인덱스를 유도하기 위한 컨텍스트 초기 값(InitValue)이 설정되어 있다. InitValue를 이용하여 변수 m, n을 유도할 수 이있고, 여기서 변수 m, n은 이전 컨텍스트 상태를 나타내는 변수 preCtxState를 유도하기 위해 이용되는 값으로 정의될 수 있다. 상기 유도되는 변수 preCtxState에 기반하여 MPS 값과 컨텍스트 확률 인덱스 초기값 pStateIdx를 유도할 수 있다. 예를 들어, 다음 식(12), (13), (14)와 같이 해당 컨텍스트의 컨텍스트 확률 인덱스 초기값 pStateIdx를 유도할 수 있다.
slopeIdx = initValue >> 4
offsetIdx = initValue & 15 (12)
m = slopeIdx * 5 - 45
n=(offsetIdx << 3)-16 (13)
preCtxState=Clip3(1,126,((m*Clip3(0,51,SliceQpY )) >> 4)+n)
valMps=(preCtxState <= 63)? 0:1
pStateIdx = valMps ?( preCtxState - 64 ) : ( 63 - preCtxState ) (14)
InitValue는 슬라이스 타입 별로 서로 다르게 설정할 수도 있으며, 슬라이스 또는 시퀀스 헤더 또는 픽쳐 헤더 등에서 몇 개의 컨텍스트 초기화 값을 가지고 있는지를 나타내는 신택스 num_cabac_init_idx_minus1을 시그날링할 수 있다예들 들어, num_cabac_init_minus1값에 기초하여 표 6 내지 표 7 중 적어도 어느 하나를 선택적으로 사용할 수도 있다.
슬라이스헤더에 슬라이스에서 사용한 컨텍스트 초기값(InitValue)를 특정하는 인덱스 cabac_init_idx를 시그날링할 수도 있다. cabac_init_idx, ctxIdx 또는 initValue 중 적어도 2개의 매핑 관계를 정의한 테이블에 기초하여 cabac_init_idx에 대응하는 컨텍스트 초기값(InitValue)을 결정할 수 있다.
예를 들어, 표 6 내지 표 7과 같이 luma 성분의 transform block 내에 non-zero coefficient가 존재하는지 여부를 나타내는 신택스 cbf_luma의 컨텍스트들은 cabac_init_idx값이 다르면 서로 다른 초기 값, 즉 서로 다른 컨텍스트 확률 인덱스 pStateIdx를 가질 수도 있다.
cabac_init_idx 0 1 2 3 4
ctxIdx 0 1 0 1 0 1 0 1 0 1
initValue 111 141 153 111 153 111 168 224 95 79
cabac_init_idx 0 1 2 3 4 5
ctxIdx 0 1 0 1 0 1 0 1 0 1 0 1
initValue 111 141 153 111 153 111 168 224 95 79 63 31
복수 개의 컨텍스트 모델은 슬라이스 Qp가 같은 경우에도 복 수개의 컨텍스트 확률 인덱스 (즉, 복수 개의 pStateIdx 초기값)를 가질 수 있다. 예를 들어, 어떤 슬라이스의 슬라이스 Qp 값이 sliceQpY라고 할 때, 컨텍스트 별로 결정된 initValue로부터 컨텍스트 확률 인덱스 pStateIdx를 얻을 수 있는데, 이 때 cabac_init_idx 값에 따라 pSateIdx에 특정 오프셋을 적용하여 pStateIdx를 다시 계산하거나 컨텍스트 별로 결정된 initValue에 특정 오프셋을 적용하여 pSateIdx를 유도할 수도 있다.
전체 심볼에 대해 적용하지 않고, transform coefficient나 Motion vector difference 또는 reference index 등과 같은 특정 심볼에 대해서만 복수 개의 컨텍스트 확률 인덱스를 사용할 수도 있다. 구체적으로 예를 들어, transform coefficient 또는 Motion vector difference 또는 reference index 등과 같은 특정 심볼에서는 복수개의 pStateIdx 초기 값을 가질 수 있다.
또는 부호화할 블록의 공간적 영역의 위치에 따라 서로 다른 컨텍스트 확률 인덱스를 사용할 수도 있다. 예를 들어, 그림 21과 같이 슬라이스의 스캔 순서에 따라 서로 다른 컨텍스트 확률 인덱스 pStateIdx를 설정할 수도 있다. 이 때 설정하는 pStateIdx값은 이전 슬라이스의 해당 영역 (collocated region)의 확률 인덱스 prevPstateIdx와 가장 값이 비슷한 값을 선택할 수도 있다.
그림 21 영역별 복수의 컨텍스트 모델 선택 방법
컨텍스트 확률 인덱스를 초기화할 공간적 영역을 컨텍스트 초기화 영역이라고 부른다. 컨텍스트 초기화 영역은 직사각형 형태일 수도 있고, 임의 형태의 크기일 수도 있다. 컨텍스트 초기화 영역 또는 컨텍스트 초기화 영역을 지시하는 정보를 슬라이스 헤더 등에 시그날링할 수 있다.
예를 들어, 컨텍스트 초기화 영역이 직사각형 형태일 때, 컨텍스트 초기화 영역에 포함되는 CTU (Coding Tree Unit) 열의 개수를 나타내는 신택스 num_row_ctu_minus1에 기초하여 컨텍스트 확률 인덱스를 초기화할 단위를 나타낼 수 있다. 구체적으로 그림 21에서는 num_row_ctu_minus1을 1로 설정할 수 있고, 실제 2개 열의 CTU를 포함하고 있는 영역을 컨텍스트 초기화 영역으로 설정할 수 있다.
7.2 타일 단위 컨텍스트 모델 초기화 방법
HEVC에서는 슬라이스(slice)는 엔트로피 디코딩을 독립적으로 수행할 수 있는 기본 단위가 된다. 슬라이스는 여러 개의 슬라이스 세그먼트로 나뉠 수 있으며, 슬라이스 형태가 꼭 사각형(rectangular) 형태가 아니어도 된다. 슬라이스 세그먼트의 경우 여러 개의 코딩 트리 유닛(Coding Tree Unit(CTU))로 구성될 수 있다.
타일(tile)의 경우 여러 개의 CTU를 가지고 있는 사각형 형태의 영역으로, 타일 단위로 엔트로피 디코딩을 수행할 수 있으며, 구현 시에 여러 타일을 동시에 디코딩하는 병렬화가 가능한 장점이 있다.
그림 22처럼 타일은 여러 개의 슬라이스 세그먼트를 가질 수 있으며, 한 슬라이스 세그먼트는 같은 타일 안에 존재할 수있다. 또는, 슬라이스 안에 여러 개의 타일이 존재할 수도 있다.
독립적 슬라이스 세그먼트(Independent slice segment)와 종속 슬라이스 세그먼트(들)가 합쳐져서 하나의 슬라이스를 이루며, 그림 23처럼 타일 내에 여러 개의 슬라이스를 가질 수 있다. 또는 슬라이스 안에 여러 개의 타일이 존재할 수도 있다.
그림 22타일과 슬라이스 세그먼트 예시
그림 23 2개 이상의 슬라이스를 갖는 타일 예시
Tile을 사용할 경우, tile 단위로 컨텍스트 모델을 초기화하게 되는데, tile의 위치에 따라 서로 다른 컨텍스트 초기값 (InitValue) 또는 서로 다른 컨텍스트 확률 인덱스 pStateIdx를 사용할 수도 있다. 즉, 같은 컨텍스트의 확률 인덱스 pStateIdx는 타일에 따라 서로 다른 값을 가질 수도 있다. 각 타일 별로 사용한 컨텍스트 초기값(InitValue)를 특정하는 인덱스 tile_cabac_init_idx를 슬라이스 세그먼트 헤더 등에 시그날링할 수도 있다. 각 타일에서 사용된 tile_cabac_init_idx로부터 특정된 initValue로부터 컨텍스트 확률 인덱스 pStateIdx를 유도할 수 있다.
각 타일의 컨텍스트 별 확률 인덱스 pStateIdx는 이전 프레임의 해당 타일 (collocated tile)의 해당 컨텍스트의 InitValue 또는 context 확률 인덱스 pStateIdx에 기초하여 유도할 수도 있고, 컨텍스트 별로 정의된 복수의 InitValue 또는 복수의 pSateIdx에서 선택하여 사용할 수 있다. 컨텍스트 별로 정의된 복수의 pStateIdx에서 선택하여 사용하는 경우에는 각 타일에 사용한 pSateIdx 값 또는 컨텍스트 초기값 (InitValue)를 시그날링할 수도 있다.
그림 24 타일에서 심볼 확률 인덱스 초기화 방법
8. 비디오 부호화에서 affine motion model( 어파인 모션 모델)을 이용한 인터 예측 부호화 방법
대표적인 모션 모델로는 translation, rotation, affine motion model 등을 들수 있다. Translation motion model(이동 움직임 모델)은 그림 25-a와 같이 선형적인 이동을 나타낼 수 있으며, 물체(object)의 움직임을 2D 좌표 또는 움직임 벡터( MvX, MvY)로 표현 가능하다. 그림 25-b 처럼 물체의 움직임이 각도 변환 형태로 표현 가능한 움직임 모델을 rotation motion model(회전 움직임 모델)이라고 부른다. 그림 25-c처럼 물체의 움직임이 비 선형적으로 변하여 물체의 부분에 따라 서로 다른 translation과 rotation을 갖는 경우를 affine motion model(어파인 움직임 모델)이라고 부른다. Affine motion model은 이동, 회전, 크기 조절 등을 표현할 수 있으며 다음 식 (14)과 같이 6개의 파라미터를 이용하여 affine motion model을 표현 할 수 있다.
그림 25 모션 모델 예시
x'= ax + by + e
y'= cx + dy + f (14)
여기서 x는 현재 블록에 속하는 픽셀을 나타내고, x'은 참조 블록(참조 픽쳐의 해당 블록)에 속하는 픽셀을 나타내며, 현재 블록의 픽셀과 참조 블록의 픽셀의 차분을 식 (15)와 같이 (Vx, Vy)로 표현할 수 있다.
Vx = x - x'
Vy = y - y' (15)
식 (14)와 식 (15)를 이용하면 어파인 모션 벡터 (Vx, Vy)다음과 같이 표현할 수도 있다.
Vx = (1-a)x-by-e
Vy = (1-d)y-cx-f (16)
8.1 간략화된 affine motion model 부호화 방법
Affine motion model이 복잡한 모션 모델을 표현할 수 있는 반면, translation motion model이나 rotation motion model에 비해 부호화해야 할 파라미터의 개수가 많아져 부호화 효율이 떨어지는 단점이 있다.
그림 26의 왼쪽 그림처럼 블록의 좌상단, 우상단, 좌하단 코너에서의 움직임 벡터(v0, v1, v2)를 이용하여 affine motion model을 이용할 수 있다.이 경우 다음 식 (17)과 같은 어파인 모션 벡터를 생성할 수 있다.
이를 극복하기 위해서 블록의 코너 위치에 대응하는 움직임 벡터를 이용하여 affine motion model을 모델링할 수도 있다. 여기서, 블록의 코너 위치는 좌상단 코너, 우상단 코너, 좌하단 코너 또는 우하단 코너 중 적어도 하나를 포함할 수 있다. 예를 들어, 그림 26 처럼 블록 내의 좌상단 코너와 우상단 코너에서의 움직임 벡터를 이용하여 affine motion model을 모델링할 수도 있다.
그림 26과 같이 좌상단 움직임 벡터가 가리키는 픽셀과 우상단 움직임 벡터가 가리키는 픽셀을 하나의 선분으로 하는 직사각형 형태의 블록으로 변형된 것으로 표현할 수 있다.
(17)
그림 26 Simplified affine motion model
블록의 좌상단, 우상단, 좌하단 코너 3개를 이용하여 affine motion model 대신에 블록의 좌상단과 우상단 코너에서의 움직임 벡터를 이용하여 affine motion model을 근사 시킬수 있다.
이 때 v2x = v0x + v0y - v1y, v2y = -v0x + v0y + v1x 을 이용하여 식 (17)을 식 (18)로 근사시킬 수 있다. 어파인 모션벡터 (Vx, Vy)는 다음과 같이 표현 할 수 있다.
(18)
블록(예측 유닛 또는 코딩 유닛)의 크기나 형태 (정방/ 비정방)에 따라 affine motion model을 유도하는 코너의 위치를 서로 다르게 설정할 수도 있다. 예를 들어, 그림 27과 같이 예측 유닛의 Nx2N인 형태인 경우에는 예측 유닛의 좌상단과 좌하단 코너를 이용하여 어파인 모션 벡터를 유도할 수 있다. 어파인 모션 벡터는 식 (18)을 이용해 유도할 수도 있다.
그림 27 비정방 형태의 예측 유닛에서 affine motion model 유도 방법 예시
블록의 좌상단 코너의 움직임 벡터를 제1 어파인 벡터라고 부르고, 블록의 좌하단 또는 우상단 코너의 움직임 벡터를 제2 어파인 벡터라고 부른다.
8.2 어파인 움직임 보상 ( Affine motion compensation)
그림 28과 같이 현재 블록을 여러 개의 서브 블록(sub-block)으로 나눈 후, 각 sub-block의 특정 위치(센터 위치, 좌상단 위치 또는 좌하단 위치 중 적어도 어느 하나의 위치)에서 어파인 모션 벡터를 이용하여 sub-block 단위 움직임 보상을 수행하여 인터 예측 신호를 생성할 수 있다. 여기서, 어파인 모션 벡터는 식 (17)을 이용하여 획득된 것일 수 있다.
그림 28 sub-block 단위 affine motion field
블록 내 sub-block의 개수는 예측 유닛 또는 코딩 유닛의 크기 또는 형태에 따라 서로 다르게 설정할 수도 있다. 예를 들어, 예측 유닛의 크기가 16x16인 경우에는 8x8 단위 sub-block 4개를 이용하여 affine motion compensation을 수행할 수도 있고, 예측 유닛의 크기가 64x64 또는 32x32인 경우에는 16x16 단위 sub-block을 이용하여 affine motion compensation을 수행할 수도 있다.
또는 예측 유닛의 크기에 상관 없이 소정의 크기를 가진 sub-block을 사용하여 affine motion compensation을 사용할 수도 있으며, 슬라이스 헤더에 sub-block의 크기를 가리키는 신택스를 시그날링할 수도 있다.
8.3 어파인 인터 모드 ( affine inter mode)
예측 유닛/코딩 유닛이 affine motion vector를 이용하여 affine motion compensation을 수행하는 경우를 어파인 인터 모드(Affine inter mode)라고 정의 한다. 코딩 유닛/예측 유닛의 크기 또는 형태에 따라 어파인 인터 모드를 선택적으로 적용할 수 있다. 예를 들어, 코딩 유닛/예측 유닛이 정방 형태이고, 그 크기가 16x16 이상일 때만 affine inter mode를 수행할 수도 있다.
현재 블록의 주변 블록으로부터 제1 어파인 벡터와 제2 어파인 벡터를 예측하여 사용할 수도 있다. 예를 들어 그림 29의 왼쪽 그림과 같이 제1 어파인 벡터는 주변 블록에 위치한 A,B,C 중에서 적어도 어느 하나(제1 어파인 모션 벡터 예측자)를 이용하여 예측 할 수 있고, 제2 어파인 벡터는 주변 블록에 위치한 D,E 중 적어도 어느 하나(제2 어파인 모션 벡터 예측자)를 이용하여 예측할 수 있다.
제1 어파인 벡터와 상기 제1 어파인 모션 벡터 예측자 간의 차분 값인 제1 어파인 차분 벡터가 부호화될 수 있고, 마찬가지로 제2 어파인 벡터와 상기 제2 어파인 모션 벡터 예측자 간의 차분 값인 제2 어파인 차분 벡터가 부호화될 수 있다.
또 다른 예를 들어, 제1 어파인 벡터는 주변 블록에 위치한 B,C,F 중 적어도 어느 하나를 이용하여 예측할 수 있고, 제2 어파인 벡터는 주변 블록에 위치한 A,D,E 중 적어도 어느 하나를 이용하여 예측할 수도 있다.
그림 29 어파인 모션 벡터 예측 예시
제1 어파인 벡터와 제2 어파인 벡터의 값이 서로 같거나, 서로 같은 블록으로부터예측을 수행하는 경우에는 제2 어파인 벡터를 다른 위치의 벡터로부터 예측해 오거나, 제1 어파인 벡터에 소정의 오프셋을 가산 또는 감산하거나, 소정의 스케일링 팩터를 적용하여 제2 어파인 벡터를 유도할 수도 있다. 예를 들어, 그림 29의 왼쪽 그림처럼 제1 어파인 벡터는 A,B,C 로 부터 어파인 벡터를 유도하고,제2 어파인 벡터는 D,E로부터 어파인 벡터를 유도하였는데, 그 값이 서로 같은 경우에는 F로부터 어파인 벡터를 유도할 수도 있다. 어파인 벡터들 간의 동일 여부를 나타내는 플래그 또는 인덱스 정보가 시그날링될 수 있고, 동일한 어파인 벡터를 가진 코너 위치를 특정하는 정보가 시그날링될 수도 있다. 또는, 제2 어파인 벡터는 제1 어파인 벡터에 기반한 차분 코딩에 기초하여 부호화될 수도 있다. 즉, 제2 어파인 벡터는 그대로 부호화되지 않고, 제1 어파인 벡터와의 차분 벡터만이 부호화될 수도 있다. 이 경우, 복호화 장치는 제1 어파인 벡터와 상기 차분 벡터를 이용하여 제2 어파인 벡터를 복원할 수도 있다. 설명의 편의를 위해 제1 어파인 벡터와 제2 어파인 벡터만을 언급하였으나, 이에 한정되지 아니한다. 즉, 제3 어파인 벡터, 제4 어파인 벡터가 이용될 수도 있으며, 상술한 부호화/복호화 방법이 동일하게 적용될 수 있다.
예측 유닛의 형태 (예를 들어, 정방형인지, 대칭형인지 등)에 따라 서로 다른 어파인 예측 후보 리스트를 구성할 수 있다. 예를 들어, 그림 29의 오른쪽 그림처럼 비정방형인 경우에는 제1 어파인 벡터는 주변 블록에 위치한 C,B,F로부터 어파인 벡터를 유도할 수 있고, 제2 어파인 벡터는 주변 블록에 위치한 A,D,E로부터 어파인 벡터를 유도할 수 있다.
9. 인트라 예측에서 레퍼런스 샘플 스무딩 방법
그림 30과 같이 인트라 예측을 수행하기 위해서는 예측 블록 경계에 위치한 레퍼런스 샘플 P(-1,-1), P(-1,y) (0<= y <= 2N-2) , P(x,-1) (0 <= x <= 2N-2)을 사용하게 되는데, 1장에서 상술한 바와 같이 인트라 예측 모드나 TU 크기에 따라 선택적으로 필터링을 수행할 수 있으며, 이를 레퍼런스 샘플 스무딩이라고 부른다.
그림 30인트라 예측을 위한 레퍼런스 샘플 예시
(1,2,1) 필터를 적용하여 레퍼런스 샘플을 스무딩하는 경우에는 다음 식 (19)내지 (21)을 사용하여 인트라 예측에 사용할 최종 레퍼런스 샘플을 유도할 수 있다.
P(-1,-1) = ( P(-1,0) + 2P(-1,-1) + P(0,-1) + 2) >> 2(19)
P(-1,y) = ( P(-1,y+1) + 2P(-1, y) + P(-1,y-1) + 2) >> 2 (20)
P(x,-1) = ( P(x+1,-1) + 2P(x,-1) + P(x-1,-1) + 2) >> 2 (21)
식 (20)에서 y는 0과 2N-2 사이이 정수이고, 식 (21)에서 x는 0과 2N-2 사이의 정수이다.
또는 코딩 유닛 단위에서 복수 개의 필터 중에 적어도 하나를 선택적으로 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다. 구체적으로 예를 들어, 코딩 유닛 내에서 (1,2,1) 3-tap 필터 또는 (2,3,6,3,2) 5-tap 필터 중 적어도 어느 하나를 선택적으로 사용할 수도 있다.
다음 식 (22) 내지 (24)는 (2,3,6,3,2) 필터를 이용하여 레퍼런스 샘플 스무딩을 나타내고 있다.
P(-1,-1)=( 2P(-2,0)+3P(-1,0)+6P(-1,-1)+3P(0,-1)+2P(0,-2)+8) >>4 (22)
P(-1,y)=(2P(-1,y+2)+3P(-1,y+1)+6P(-1,y)+3P(-1,y-1)+2P(-1,y-2)+8)>>4(23)
P(x,-1)=(2P(x+2,-1)+3P(x+1,-1)+6P(x,-1)+3P(x-1,-1)+2P(x-2,-1)+8)>>4(24)
식 (23)에서 y는 0과 2N-2 사이이 정수이고,식 (24)에서 x는 0과 2N-2 사이의 정수이다.
또는 레퍼런스 샘플의 위치에 따라 선택적으로 서로 다른 스무딩 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다. 예를 들어, 인트라 블록의 경계에 있는 레퍼런스 샘플의 경우 (1,2,1) 필터를 적용하고, 그 외의 레퍼런스 샘플의 경우 (2,3,6,3,2)를 적용할 수도 있다.
예를 들어, 레퍼런스 샘플 P(-1,-1) , P(-1,0) , P(-1,1), … , P(-1,N-1) 그리고 P(0,-1), P(1,-1), …, P(N-1,-1)은 (1,2,1) 필터를 이용하여 식 (19) 내지 (21) 처럼 레퍼런스 샘플 스무딩을 수행하고, 그 외의 레퍼런스 샘플은 식 (23) 내지 (24)처럼 레퍼런스 샘플 스무딩을 수행할 수 있다.
레퍼런스 샘플 스무딩에 사용하는 필터는 위에서 상술한 (1,2,1) 또는 (2,3,6,3,2) 필터에 한정되지 아니하며, 다른 종류의 스무딩 필터를 사용할 수도 있다.
또는 인트라 블록에서 사용된 transform type(transform 종류)에 기초하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 픽쳐 스무딩을 수행할 수도 있다.
예를 들어, 그림 31처럼 인트라 블록이 DCT를 사용하여 부호화된 경우에는 (1,2,1)필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고, DST를 사용하여 부호화된 경우에는 (2,3,6,3,2) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.
그림 31 레퍼런스 샘플 위치에 기초한 레퍼런스 샘플 스무딩 방법
또 다른 예를 들어, 인트라 블록이 DCT 또는 DST을 사용하여 부호화된 경우에는 (1,2,1) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고, 인트라 블록이 KLT 변환을 사용하여 부호화된 경우에는 (2,3,6,3,2) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.
또는 인트라 블록에서 사용된 transform type(transform 종류)와 레퍼런스 샘플의 위치 중 적어도 어느 하나 또는 둘 모두를 고려하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 픽쳐 스무딩을 수행할 수도 있다.
예를 들어, 인트라 블록이 DCT을 사용하여 부호화된 경우에는 레퍼런스 샘플 P(-1,-1) , P(-1,0) , P(-1,1), … , P(-1,N-1) 그리고 P(0,-1), P(1,-1), …, P(N-1,-1)은 (1,2,1) 필터를 이용하여 식 (19) 내지 (21) 처럼 레퍼런스 샘플 스무딩을 수행하고, 그 외의 레퍼런스 샘플은 식 (23) 내지 (24)처럼 레퍼런스 샘플 스무딩을 수행할 수 있다. DST를 사용하여 부호화된 경우에는 레퍼런스 샘플 P(-1,-1) , P(-1,0) , P(-1,1), … , P(-1,N-1) 그리고 P(0,-1), P(1,-1), …, P(N-1,-1)은 (2,3,6,3,2) 필터를 이용하여 식 (22) 내지 (24)처럼 레퍼런스 샘플 스무딩을 수행할 수 있으며, 그 외의 레퍼런스 샘플은 식 (20) 내지 (21)처럼 레퍼런스 샘플 스무딩을 수행할 수도 있다.
또는 레퍼런스 샘플을 포함하는 블록의 transform type과 현재 인트라 블록의 transform type을 비교하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 픽쳐 스무딩을 수행할 수도 있다. 예를 들어, 현재 블록과 주변 블록이 모두 같은 transform type을 사용하는 경우에는 (1,2,1)필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고, 현재 블록과 주변 블록이 서로 다른 transform type을 사용하는 경우(현재 블록은 DCT를 사용하고, 레퍼런스 샘플을 포함하는 블록은 DST를 사용하는 경우)에는 (2,3,6,3,2)필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.
그림 32 주변 블록의 transform type
또는 주변 블록의 transform type에 기초하여 선택적으로 서로 다른 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.즉, 레퍼런스 샘플이 속한 블록의 transform type에 따라 서로 다른 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.
예를 들어, 그림 31과 같이 현재 인트라 블록과 좌측/좌하단에 인접한 블록은 DCT를 이용하여 부호화된 블록이고, 상측/우상단에 인접한 블록은 DST를 이용하여 부호화된 블록인 경우에는 좌측/좌하단에 인접한 레퍼런스 샘플에는 (1,2,1)필터를 사용하여 레퍼런스 샘플 스무딩을 수행하고 상측/우상단에 인접한 레퍼런스 샘플에는 (2,3,6,3,2) 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.
Coding Tree Unit(CTU) 단위에 기초하여 레퍼런스 샘플 스무딩을 선택적으로 적용할 수도 있다. 예를 들어,그림 33 처럼 CTU 단위로 서로 다른 필터를 사용하여 레퍼런스 샘플 스무딩을 수행할 수도 있다.
그림 33 CTU 단위에 기초한 레퍼런스 샘플 스무딩 예시
이 경우에 SPS 또는 픽쳐 파라미터 세트(picture parameter set, PPS)에서 각 CTU 별로 사용한 필터의 종류(사용 가능한 필터 중 해당 CTU가 사용한 필터의 인덱스)를 시그날링할 수 있으며, 해당 픽쳐가 모두 같은 필터를 사용하는지 여부를 시그날링할 수도 있다.

Claims (12)

  1. 현재 블록의 화면 내 예측 모드를 결정하는 단계;
    상기 현재 블록의 참조 샘플들을 유도하는 단계;
    상기 참조 샘플들을 이용하여, 상기 현재 블록에 대한 예측 샘플들을 획득하는 단계;
    상기 예측 샘플들에 대한 보정을 수행할 것인지 여부를 결정하는 단계; 및
    상기 보정을 수행하기로 결정된 경우, 보정된 예측 샘플을 획득하는 단계를 포함하되,
    상기 화면 내 예측 모드가 수직 방향의 방향성 예측 모드인 경우, 상기 보정된 예측 샘플은, 상기 예측 샘플과 동일한 수평선상에 위치하는 좌측 참조 샘플과 좌상단 참조 샘플 간의 차분값을 가중한 값에 기반하여 획득되고,
    상기 차분값에 대한 가중치는, 상기 예측 샘플이 속하는 열에 따라 상이하게 설정되는 것을 특징으로 하는, 영상 복호화 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 예측 샘플이 상기 현재 블록의 2번째 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치는, 상기 예측 샘플이 상기 현재 블록의 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치에 비해 1/2 인 것을 특징으로 하는, 영상 복호화 방법.
  4. 삭제
  5. 삭제
  6. 제1 항에 있어서,
    상기 화면 내 예측 모드가 수직 방향성 예측 모드인 경우, 상기 보정은, 상기 현재 블록 내 복수 열들에 대해 수행되는 것을 특징으로 하는, 영상 복호화 방법.
  7. 현재 블록의 화면 내 예측 모드를 결정하는 단계;
    상기 현재 블록의 참조 샘플들을 유도하는 단계;
    상기 참조 샘플들을 이용하여, 상기 현재 블록에 대한 예측 샘플들을 획득하는 단계;
    상기 예측 샘플들에 대한 보정을 수행할 것인지 여부를 결정하는 단계; 및
    상기 보정을 수행하기로 결정된 경우, 보정된 예측 샘플을 획득하는 단계를 포함하되,
    상기 화면 내 예측 모드가 수직 방향의 방향성 예측 모드인 경우, 상기 보정된 예측 샘플은, 상기 예측 샘플과 동일한 수평선상에 위치하는 좌측 참조 샘플과 좌상단 참조 샘플 간의 차분값을 가중한 값에 기반하여 획득되고,
    상기 차분값에 대한 가중치는, 상기 예측 샘플이 속하는 열에 따라 상이하게 설정되는 것을 특징으로 하는,
    영상 부호화 방법.
  8. 삭제
  9. 제7 항에 있어서,
    상기 예측 샘플이 상기 현재 블록의 2번째 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치는, 상기 예측 샘플이 상기 현재 블록의 최좌측 열에 속하는 경우 상기 차분값에 대한 가중치에 비해 1/2 인 것을 특징으로 하는, 영상 부호화 방법.
  10. 삭제
  11. 삭제
  12. 제7 항에 있어서,
    상기 화면 내 예측 모드가 수직 방향성 예측 모드인 경우, 상기 보정은, 상기 현재 블록 내 복수 열들에 대해 수행되는 것을 특징으로 하는, 영상 부호화 방법.
KR1020160022481A 2016-02-25 2016-02-25 비디오 신호 처리 방법 및 장치 KR102609632B1 (ko)

Priority Applications (12)

Application Number Priority Date Filing Date Title
KR1020160022481A KR102609632B1 (ko) 2016-02-25 2016-02-25 비디오 신호 처리 방법 및 장치
ES201900064A ES2737841B1 (es) 2016-02-25 2017-02-24 Método y aparato para procesar señales de vídeo
US16/080,005 US20190068989A1 (en) 2016-02-25 2017-02-24 Video signal processing method and device
ES202030908A ES2800509B1 (es) 2016-02-25 2017-02-24 Metodo y aparato para procesar senales de video
PCT/KR2017/002072 WO2017146526A1 (ko) 2016-02-25 2017-02-24 비디오 신호 처리 방법 및 장치
CN201780012734.3A CN108702509B (zh) 2016-02-25 2017-02-24 用于处理视频信号的方法和设备
CN202311295092.6A CN117376554A (zh) 2016-02-25 2017-02-24 用于处理视频信号的方法和设备
EP17756864.9A EP3422719A4 (en) 2016-02-25 2017-02-24 METHOD AND DEVICE FOR PROCESSING VIDEO SIGNAL
CN202311294163.0A CN117354536A (zh) 2016-02-25 2017-02-24 用于处理视频信号的方法和设备
ES201890055A ES2692864B1 (es) 2016-02-25 2017-02-24 Metodo y aparato para procesar senales de video
ES202130694A ES2917099B1 (es) 2016-02-25 2017-02-24 Método y aparato para procesar señales de video
CN202311295084.1A CN117376553A (zh) 2016-02-25 2017-02-24 用于处理视频信号的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160022481A KR102609632B1 (ko) 2016-02-25 2016-02-25 비디오 신호 처리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170100214A KR20170100214A (ko) 2017-09-04
KR102609632B1 true KR102609632B1 (ko) 2023-12-01

Family

ID=59924388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160022481A KR102609632B1 (ko) 2016-02-25 2016-02-25 비디오 신호 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102609632B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020058956A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Non-affine blocks predicted from affine motion

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014518031A (ja) 2011-04-25 2014-07-24 エルジー エレクトロニクス インコーポレイティド イントラ予測方法とそれを利用した符号化器及び復号化器
US20160044337A1 (en) 2010-04-09 2016-02-11 Electronics And Telecommunications Research Institute Method and apparatus for performing intra-prediction using adaptive filter

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530758B1 (ko) * 2012-07-04 2015-07-20 한양대학교 산학협력단 적응적 필터링을 이용하는 인트라 예측 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160044337A1 (en) 2010-04-09 2016-02-11 Electronics And Telecommunications Research Institute Method and apparatus for performing intra-prediction using adaptive filter
JP2014518031A (ja) 2011-04-25 2014-07-24 エルジー エレクトロニクス インコーポレイティド イントラ予測方法とそれを利用した符号化器及び復号化器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
High Efficiency Video coding, H.265(04/2013), ITU-T, 2013-06-07, pp. 1-300
Jianle Chen, et al. Algorithm Description of Joint Exploration Test Model 3, Joint Video exploration Team(JVET), JVET-a1001_v1, 2016-02-24, pp. 1-25

Also Published As

Publication number Publication date
KR20170100214A (ko) 2017-09-04

Similar Documents

Publication Publication Date Title
US11343499B2 (en) Method and apparatus for processing video signal
CN108702509B (zh) 用于处理视频信号的方法和设备
CA2998098C (en) Method and device for processing video signal
CN109716773B (zh) 用于处理视频信号的方法和设备
US20230362369A1 (en) Image encoding/decoding method and apparatus, and recording medium storing bitstream
KR20240132433A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN112930685A (zh) 视频信号的编码方法和解码方法及其装置
KR20180123674A (ko) 비디오 신호 처리 방법 및 장치
KR20170026276A (ko) 비디오 신호 처리 방법 및 장치
EP3989548A1 (en) Intra prediction mode, and entropy encoding/decoding method and device
KR20170100211A (ko) 비디오 신호 처리 방법 및 장치
KR20200084306A (ko) 영상 신호 부호화/복호화 방법 및 이를 위한 장치
KR102609632B1 (ko) 비디오 신호 처리 방법 및 장치
CN118985126A (zh) 用于视频译码的ccsao、双边滤波器和自适应环路滤波器的虚拟边界处理

Legal Events

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