KR20220019288A - 비디오 코딩에서 필터링을 위한 장치 및 방법 - Google Patents
비디오 코딩에서 필터링을 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20220019288A KR20220019288A KR1020227001069A KR20227001069A KR20220019288A KR 20220019288 A KR20220019288 A KR 20220019288A KR 1020227001069 A KR1020227001069 A KR 1020227001069A KR 20227001069 A KR20227001069 A KR 20227001069A KR 20220019288 A KR20220019288 A KR 20220019288A
- Authority
- KR
- South Korea
- Prior art keywords
- reconstructed block
- block
- current
- samples
- neighboring
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 161
- 238000001914 filtration Methods 0.000 title claims abstract description 103
- 239000000872 buffer Substances 0.000 claims abstract description 61
- 239000000523 sample Substances 0.000 claims description 108
- 230000003595 spectral effect Effects 0.000 claims description 85
- 230000008569 process Effects 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 50
- 238000009795 derivation Methods 0.000 claims description 44
- 239000013074 reference sample Substances 0.000 claims description 31
- 238000013139 quantization Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims 1
- 241000023320 Luma <angiosperm> Species 0.000 description 31
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 31
- 238000009825 accumulation Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 10
- 241001125929 Trisopterus luscus Species 0.000 description 9
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 101150052795 cbh-1 gene Proteins 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/182—Methods 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 pixel
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods 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
-
- 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/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- 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/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 개시내용은, 필터, 필터를 이용한 인코더 및 디코더, 필터링 방법 및 대응하는 프로그램뿐만 아니라, 이 필터링 방법 또는 필터를 이용한 인코딩 및 디코딩에 관한 것이다. 필터링은, 적어도 현재의 복원된 블록으로부터의 패딩 샘플들을 포함하도록 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하는 것을 포함한다. 패딩 후, 확장된 복원된 블록의 현재 픽셀과 그 이웃 픽셀들은 선형 버퍼에 로딩되고 1D 변환으로 변환된다. 필터링은 조회 테이블을 이용하여 주파수 영역에서 수행되고 필터링된 픽셀들은 다시 변환된다.
Description
관련 출원의 상호참조
본 출원은, 참조에 의해 모두가 본 명세서에 포함되는, 2019년 6월 18일 출원된 발명의 명칭이 "Apparatus and Method for Filtering in Video Coding"인 PCT/RU2019/050091호와, 2019년 6월 18일 출원된 발명의 명칭이 "Apparatus and Method for Filtering in Video Coding"인 PCT/RU2019/050090호의 우선권을 주장한다.
기술 분야
대체로, 본 발명은 비디오 코딩 분야에 관한 것이다. 더 구체적으로, 본 발명은, 비디오 코딩을 위한 필터 및 복원된 비디오 프레임들을 필터링하기 위한 방법, 이러한 방법을 구현하는 프로그램뿐만 아니라, 비디오 코딩을 위한 상기 필터를 포함하는 인코딩 장치 및 디코딩 장치에 관한 것이다.
디지털 비디오는 DVD 디스크들의 도입 이후 널리 이용되어 왔다. 비디오는 전송 전에 인코딩되어 전송 매체를 이용하여 전송된다. 시청자는 비디오를 수신하고 비디오를 디코딩하고 디스플레이하는 시청 디바이스를 이용한다. 예를 들어, 더 높은 해상도, 색상 깊이 및 프레임 속도로 인해, 비디오 품질이 수년에 걸쳐 향상되었다. 이것은, 오늘날 일반적으로 인터넷 및/또는 모바일 통신 네트워크를 통해 전송되는 더 큰 데이터 스트림으로 이어졌다.
그러나, 고해상도 비디오는, 더 많은 정보를 운반하므로 전형적으로 더 많은 대역폭을 요구한다. 대역폭 요구조건들을 감소시키기 위해, 비디오 압축과 관련된 비디오 코딩 표준들이 도입되었다. 비디오가 인코딩될 때, 대역폭 요구조건들(또는 저장의 경우 대응하는 메모리 요구조건들)이 감소된다. 종종, 이러한 감소는 품질을 댓가로 한다. 따라서, 비디오 코딩 표준들은 대역폭 요구조건들과 품질 사이의 균형을 찾으려고 시도한다.
품질 향상 및 대역폭 요구조건 감소에 대한 지속적인 요구가 있으므로, 대역폭 요구조건을 감소시키면서 품질을 유지하거나, 대역폭 요구조건을 유지하면서 품질을 향상시키는 솔루션들이 지속적으로 탐색되고 있다. 또한, 때로는 타협이 받아들여질 수도 있다. 예를 들어, 품질 향상이 상당한 경우 대역폭 요구조건을 증가시키는 것이 허용될 수 있다.
고효율 비디오 코딩(HEVC; High Efficiency Video Coding )은, 본 기술분야의 통상의 기술자에게 흔하게 알려진 비디오 코딩 표준의 한 예이다. HEVC에서, 코딩 유닛(CU)을 예측 유닛들(PU) 또는 변환 유닛들(TU)로 분할한다. VVC(Versatile Video Coding) 차세대 표준은, JVET(Joint Video Exploration Team)라고 알려진 파트너쉽으로 함께 연구하는, ITU-T VCEG(Video Coding Experts Group)와 ISO/IEC MPEG(Moving Picture Experts Group) 표준화 조직들의 가장 최근의 공동 비디오 프로젝트이다. VVC는, ITU-T H.266/NGVC(Next Generation Video Coding) 표준이라고도 한다. VVC에서는, 복수의 분할 유형의 개념들을 제거한다, 즉, 최대 변환 길이에 비해 너무 큰 크기를 갖는 CU들에 필요한 경우를 제외하고, CU, PU 및 TU 개념들의 분리를 제거하고, CU 분할 형상들에 대해 더 많은 유연성을 지원한다.
이미지 필터링은, 이미지의 소정의 피처들을 강조하거나 필터링된 이미지의 객관적 또는 인지적 품질을 향상시키기 위해 종종 이용된다. 이미지 필터링은 다양한 노이즈 소스를 처리해야 한다. 따라서, 품질 향상을 위한 다양한 접근법들이 제안되어 현재 이용되고 있다. 예를 들어, 적응형 루프 필터(ALF; adaptive Loop filter) 방법에서, 복원된 각각의 프레임은 한 세트의 작은 매크로 블록들(수퍼 픽셀들)로 분할되고, 각각의 매크로 블록은, 필터링되고 복원된 프레임의 각각의 픽셀이 필터링된 픽셀의 생성 위치 주변의 복원된 프레임으로부터의 픽셀의 연결된 영역 내의 수개의 픽셀들의 가중 합이 되도록, 적응형 루프 필터에 의해 필터링된다. 가중 계수들(필터 계수들이라고도 함)는 중심 대칭의 속성을 가지며, 인코더로부터 디코더 측으로 전송된다. 엣지들은 종종 큰 크기를 가지므로, 전송된 가중 계수들의 수가 효율적인 처리에 대해 너무 커질 수 있다. 많은 수의 가중 계수는, 전송을 위한 가중 계수의 수를 감소시키기 위해 인코더 측에서의 복합 왜곡 최적화(RDO; rate-distortion optimization)를 요구한다. 디코더 측에서, ALF는 범용 곱셈기들의 구현을 요구하므로, 이들 곱셈기들은 각각의 2x2 픽셀 블록에 대해 리로딩되어야 한다.
따라서, 낮은 복잡도로 예측 품질을 향상시켜 비디오 코딩 효율을 증가시킬 수 있는 개선된 필터 및 방법에 대한 필요성이 존재한다.
본 발명의 목적은, 제한된 복잡성으로 필터링 효율을 개선하여 비디오 코딩 효율성을 증가시키는 것을 허용하는 개선된 필터 및 방법을 제공하는 것이다.
상기 및 기타의 목적은 독립항들의 주제에 의해 달성된다. 추가적인 구현 형태들은, 종속항들, 설명 및 도면들로부터 명백하다.
일부 실시예에 따르면, 현재의 복원된 블록은, 확장된 복원된 블록이 주파수 영역에서 필터링되기 전에 현재의 복원된 블록으로부터 획득된 패딩 샘플을 포함하도록 확장된다.
이러한 확장은 이용가능한 이웃 샘플들을 갖지 않는 픽셀들에 대해서도 효율적이고 통합된 필터링을 용이화한다.
한 양태에 따르면, 현재의 복원된 블록 ―현재의 복원된 블록은 복수의 픽셀을 포함함― 을 처리하기 위해 비디오 인코딩 장치 또는 비디오 디코딩 장치에서 이용하기 위한 필터가 제공되고, 필터는: 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하고; 미리정의된 스캔 템플릿에 따라 확장된 복원된 블록의 현재 픽셀 및 현재 픽셀의 그 이웃 픽셀들을 선형 버퍼에 로딩하고; 선형 버퍼 내의 픽셀들에 대한 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하고; 조회 테이블을 이용함으로써 획득된 스펙트럼 성분들에 기초하여 필터링된 스펙트럼 성분들을 획득하고; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고; 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된다.
주파수 영역에서의 필터는 저-복잡도 구현을 용이화하는 반면, 현재의 복원된 블록의 확장은 필터링의 품질을 향상시킬 수 있고 블록의 모든 픽셀에 대해 동일한 필터링 동작(예를 들어, 필터의 동일한 크기/형상)의 적용을 허용할 수 있다. 그러나, 본 개시내용은 이러한 균일한 필터 동작을 실제로 적용하는 것으로 제한되지 않다는 점에 유의한다.
현재의 복원된 블록은 현재 블록의 복원에 의해 획득된다. 현재의 복원된 블록이란 현재 블록의 복원된 샘플들을 지칭한다. 복원은, 비디오 인코더 및/또는 디코더, 특히 비디오 인코더의 복원 유닛 및/또는 비디오 디코더의 복원 유닛에 의해 각각 수행되는 비디오 인코딩 및/또는 비디오 디코딩의 일부일 수도 있다.
한 실시예에서, 현재의 복원된 블록은, 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 더 포함하도록 확장된다.
이웃 샘플들에 기초하여 및 현재의 복원된 블록 샘플들에 기초하여 양쪽 모두의 패딩 유형들을 제공하는 것은, 블록 경계들에서 더 원활한 필터링 결과를 용이화한다.
예를 들어, 현재의 복원된 블록은 이웃 복원된 블록이 이용가능할 때 이웃 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 확장되고/되거나 현재의 복원된 블록은 이웃 복원된 블록이 이용가능하지 않을 때 현재의 복원된 블록으로부터의 샘플을 포함하도록 확장된다
따라서, 이웃 픽셀들은 더 많은 정보를 포함할 수 있기 때문에 가능하다면 언제든지 이용될 수 있다. 이용불가능한 이웃 샘플들의 경우, 현재의 복원된 블록에 기초한 패딩은 통합된 필터를 여전히 가능케하고(현재의 복원된 블록의 픽셀들에 대해 동일) 필터링 결과들을 개선할 수 있다.
이 예에서, 패딩 샘플들은 현재의 복원된 블록으로부터 취해져 패딩 샘플로서 이용될 수 있다. 그러나, 본 개시내용은 이것으로 제한되지 않고 현재의 복원된 블록들의 샘플들로부터 패딩 샘플들을 도출될 수 있다. 예를 들어, 패딩 샘플들은 현재의 복원된 블록(들)의 샘플들 중 하나 이상에 기초하여 도출될 수 있다. 도출은, 필터링에 의해, 특정한 샘플들 또는 샘플들의 조합들을 선택함으로써 등에 의해 이루어질 수 있다.
한 예시적인 구현에 따르면, 필터는 또한, 현재의 복원된 블록에 대해 이웃 복원된 블록이 이용가능한지를 다음 중 하나 이상에 기초하여 결정하도록 구성된다: 블록 코딩 순서, 현재의 복원된 블록과 이웃 복원된 블록이 동일한 픽처 그룹에 속함, ―여기서, 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는 픽처 경계를 넘어선 이웃 복원된 블록의 위치.
이러한 이용가능성의 결정은 픽처 경계들의 제한들을 고려하고, 타일들, 슬라이스들 등의 독립적인 픽처 부분들을 지원함으로써 병렬 처리의 제공을 용이화할 수 있다.
예를 들어, 필터는 다음과 같이 이웃 복원된 블록에 대한 이용가능성을 도출하도록 구성된다: 조건들, (i) 이웃 복원된 블록이 현재 블록과는 상이한 타일에 포함됨, (ii) 이웃 복원된 블록의 위치가 픽처 경계를 넘어섬, (iii) 이웃 복원된 블록이 복원되었는지를 나타내는 변수가 거짓임 중에서 하나 이상이 참이면, 이웃 복원된 블록에 대한 이용가능성이 거짓으로 결정됨;
그렇지 않으면, 이웃 복원된 블록에 대한 이용가능성이 참으로 결정됨. 예를 들어, 이웃 복원된 블록이 복원되었는지를 나타내는 변수는 참 또는 거짓 값을 취할 수 있다. 변수의 값은 블록 코딩 순서(블록 복원 순서)에 기초하여 결정될 수 있다. 특히, 블록 코딩 순서는, 블록들이 코딩되는 순서 및 그에 따라 또한 현재 블록 이전에 어떤 블록들이 코딩되었는지를 명시한다.
한 예시적인 구현에 따르면, 하나 이상의 패딩 샘플은, 현재의 복원된 블록에 인접한 이전에 복원된 블록인, 이웃 복원된 블록으로부터의 필터링된 샘플들이다.
패딩 샘플들의 사전-필터링은 필터링 품질을 더욱 향상시킬 수 있다.
예를 들어, 현재의 복원된 블록은, 좌측 및 상단 측의 이웃 복원된 블록들로부터의 샘플들에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 좌측 및 상단 측에서 확장된다. 이웃 복원된 블록들은, 예를 들어, 좌측 및 상단 측에서 현재의 복원된 블록에 인접한 이전에 복원된 블록이다.
추가하여 또는 대안으로서, 현재의 복원된 블록은, 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 하나 이상의 패딩 샘플을 포함하도록 우측 및 하단 측에서 확장된다.
이러한 확장은, 블록 스캔 순서가 좌측으로부터 우측으로 및 상단으로부터 하단으로인 시스템에서 쉽게 이용될 수 있는데, 이들 시스템에서는, 전형적으로 좌측 및 상단 이웃 블록들은 이용가능한 반면, 하단 및 우측 블록들은 이용가능하지 않기 때문이다.
한 실시예에 따르면, 확장된 복원된 블록의 획득은, 현재의 복원된 블록의 각각의 측면(예를 들어, 좌측, 우측, 상단, 하단)에서: 이웃 복원된 블록이 이용가능한 경우 상기 측면에서 현재의 복원된 블록에 인접한 상기 이웃 복원된 블록으로부터의 이웃 복원된 샘플들, 또는 그렇지 않은 경우, 현재의 복원된 블록으로부터 가장 가까운 샘플들을 포함하도록 현재의 복원된 블록을 확장하는 것을 포함한다.
다시 말해서, 필터는, 현재의 복원된 블록의 각각의 측면에서: 이웃 복원된 블록이 이용가능한 경우, 상기 측면에서 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 상기 이웃 복원된 샘플들, 또는 그렇지 않은 경우, 현재의 복원된 블록으로부터 가장 가까운 샘플들을 포함하도록 현재의 복원된 블록을 확장함으로써, 확장된 복원된 블록을 획득하도록 구성된다.
이러한 접근법은, 개선된 필터링 품질로 이어질 수 있는 적절한 패딩 샘플들에 의해 모든 경계에서 현재의 복원된 블록을 확장하는 것을 용이화한다. 특히, 이웃하는 인접 블록들로부터의 샘플들을 필터링 프로세스에 포함시킴으로써 이웃 블록들 사이의 더 원활한 전환을 획득하는 것이 가능할 수 있다. 또 다른 이점은, 필터링 동안 조건 체크 및 조건부 처리의 회피를 허용하는, 현재 블록의 경계 및 내측 샘플들에 대한 통합 필터링 프로세스이다.
예를 들어, 샘플들 x = -1..nCbW, y = -1..nCbH에서 확장된 복원된 블록 recSamplesPad[x][y]의 획득 ―(xCb, yCb)는 복원된 블록의 상단 좌측 샘플을 명시하며, nCbW, nCbH는 현재의 복원된 블록의 폭과 높이를 명시함― 은, 현재의 복원된 블록 recSamples[x][y]에 대해: 0 ≤ x ≤ nCbW-1 및 0 ≤ y ≤ nCbH-1일 때, recSamplesPad[ x ][ y ] = recSamples[x][y]이고, 그렇지 않으면, ( xCb + x, yCb + y )에 대해: 변수 dx는 0으로 설정되고 변수 dy는 0으로 설정되며, x == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = 1, x == nCbW 및 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = -1, y == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = 1, y == nCbH이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = -1, recSamplesPad[ x ][ y ] = recSamples[ x + dx ][ y + dy ]인 것을 포함한다.
recSamplesPad는 확장된 복원된 블록 샘플들에 대응하는 반면, recSamples는 현재의 복원된 블록 샘플들에 대응한다는 점에 유의한다.
일부 실시예에서, 필터는 또한, 이웃 복원된 블록이 상기 현재의 복원된 블록에 대해 이용가능한지를 결정하도록 구성되고, 인터 예측된 블록인 현재의 복원된 블록에 대해, 이웃 복원된 블록이 인터 예측된 블록이 아닌 경우, 이웃 복원된 블록의 이용가능성은 거짓인 것으로 결정된다.
인터 예측 모드 등의 예측 모드를 고려하는 것은, 인터 및 인트라 코딩된 샘플들에 대한 별개의 처리 파이프들을 제공하는 것 등의 병렬 처리의 제공을 용이화한다.
한 예시적인 구현에서, 조회 테이블은 현재의 복원된 블록의 양자화 파라미터(Qp)에 기초하여 획득된다. 이것은 복잡한 계산의 필요성 없이 효율적인 구현을 용이화한다.
한 실시예에서, 이웃 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플은, 현재의 복원된 블록의 현재 이미지 블록의 인트라 예측에 이용되는 참조 샘플들이며, 여기서, 현재 이미지 블록의 복원된 블록은 현재의 복원된 블록이다. 하나 이상의 패딩 샘플은 현재 이미지 블록의 인트라 예측에 이용되는 참조 샘플들이며, 여기서, 현재 이미지 블록의 현재의 복원된 블록은 인트라 예측(및 잔차 블록)으로부터 생성되거나 획득된 예측 블록에 기초하여 생성되거나 획득된다.
인트라 예측 참조 샘플들을 재사용하는 것은, 더 높은 구현 효율성, 더 양호한 메모리 활용 및 더 낮은 지연을 용이화할 수 있다.
예를 들어, 필터는 또한, 인트라 참조 샘플 도출의 결과에 기초하여 하나 이상의 패딩 샘플을 획득하도록 구성된다. 특히, 인트라 참조 샘플 도출은: 이웃 복원된 샘플들의 이용가능성의 도출 및 이웃 복원된 샘플이 이용가능한 경우 이웃 복원된 샘플을 회수하는 것; 이웃 복원된 샘플들이 이용가능하지 않다면 이웃 복원된 샘플들을 다른 이용가능한 이웃 복원된 샘플들로 대체하는 것을 포함한다.
이러한 특정한 인트라 참조 샘플 이용가능성 결정은 또한, 패딩 샘플들에 대한 이용가능성의 결정을 위해 재사용될 수 있다.
이하에서, 대응하는 방법 실시예들이 예시된다. 이들은 위에서 언급된 대응하는 필터 실시예들과 유사한 이점들을 달성할 수 있다.
한 양태에 따르면, 현재의 복원된 블록 ―현재의 복원된 블록은 복수의 픽셀을 포함함― 을 처리하기 위한 방법이 제공되고, 여기서, 필터링 방법은: 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하는 단계; 확장된 복원된 블록의 현재 픽셀과 현재 픽셀의 이웃 픽셀들을 미리정의된 스캔 템플릿에 따라 선형 버퍼에 로딩하는 단계; 선형 버퍼 내의 픽셀들에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하는 단계; 각각의 스펙트럼 성분을 이득 계수와 곱하거나 조회 테이블을 이용함으로써 필터링된 스펙트럼 성분들을 획득하는 단계, ―이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함―; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고; 및 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하는 단계를 포함한다.
예를 들어, 현재의 복원된 블록은, 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 더 포함하도록 확장된다.
한 실시예에 따르면, 현재의 복원된 블록은 이웃 복원된 블록이 이용가능할 때 이웃 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 확장되고/되거나, 현재의 복원된 블록은 이웃 복원된 블록이 이용가능하지 않을 때 현재의 복원된 블록으로부터의 샘플을 포함하도록 확장된다.
추가하여 또는 대안으로서, 이 방법은, 현재의 복원된 블록에 대해 이웃 복원된 블록이 이용가능한지를 다음 중 하나 이상에 기초하여 결정하는 단계를 더 포함한다: 블록 코딩 순서, 현재의 복원된 블록과 이웃 복원된 블록이 동일한 픽처 그룹에 속함, ―여기서, 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는 픽처 경계를 넘어선 이웃 복원된 블록의 위치.
한 예시적인 구현에 따르면, 이 방법은, 이웃 복원된 블록에 대한 이용가능성을 도출하되: 다음과 같은 조건들 중 하나 이상이 참이면, 이웃 복원된 블록에 대한 이용가능성이 거짓으로 결정되고: 이웃 복원된 블록이 현재 블록과는 상이한 타일에 포함됨, 이웃 복원된 블록의 위치가 픽처 경계를 넘어섬, 이웃 복원된 블록이 복원되었는지를 나타내는 변수가 거짓임; 그렇지 않으면, 이웃 복원된 블록에 대한 이용가능성이 참으로 결정되도록, 이웃 복원된 블록에 대한 이용가능성을 결정하는 단계를 더 포함한다.
예를 들어, 하나 이상의 패딩 샘플은 현재의 복원된 블록에 인접한 이전에 복원된 블록인, 이웃 복원된 블록으로부터 필터링된 샘플들이다.
현재의 복원된 블록은, 좌측 및 상단 측에서 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들을 포함하도록 좌측 및 상단 측에서 확장될 수 있다.
대안으로서 또는 추가적으로, 현재의 복원된 블록은 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 하나 이상의 패딩 샘플을 포함하도록 우측 및 하단 측으로 확장될 수 있다.
한 실시예에 따르면, 확장된 복원된 블록의 획득은, 현재의 복원된 블록의 각각의 측면에서: 이웃 복원된 블록이 이용가능한 경우 상기 측면에서 현재의 복원된 블록에 인접한 상기 이웃 복원된 블록으로부터의 이웃 복원된 샘플들, 또는 그렇지 않은 경우, 현재의 복원된 블록으로부터 가장 가까운 샘플들을 포함하도록 현재의 복원된 블록을 확장하는 것을 포함한다.
특히, 샘플들 x = -1..nCbW, y = -1..nCbH에서 확장된 복원된 블록 recSamplesPad[x][y]의 획득 ―(xCb, yCb)는 복원된 블록의 상단 좌측 샘플을 명시하며, nCbW, nCbH는 현재의 복원된 블록의 폭과 높이를 명시함― 은, 현재의 복원된 블록 recSamples[x][y]에 대해: 0 ≤ x ≤ nCbW-1 및 0 ≤ y ≤ nCbH-1일 때, recSamplesPad[ x ][ y ] = recSamples[x][y]이고, 그렇지 않으면, ( xCb + x, yCb + y )에 대해: 변수 dx는 0으로 설정되고 변수 dy는 0으로 설정되며, x == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = 1, x == nCbW 및 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = -1, y == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = 1, y == nCbH이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = -1, recSamplesPad[ x ][ y ] = recSamples[ x + dx ][ y + dy ]인 것을 포함한다.
일부 실시예에서, 이 방법은, 이웃 복원된 블록이 상기 현재의 복원된 블록에 대해 이용가능한지를 결정하는 단계를 더 포함하고, 여기서, 인터 예측된 블록인 현재의 복원된 블록에 대해, 이웃 복원된 블록이 인터 예측된 블록이 아닌 경우, 이웃 복원된 블록의 이용가능성은 거짓인 것으로 결정된다.
한 예시적인 구현에서, 조회 테이블은 현재의 복원된 블록 양자화 파라미터(Qp)에 기초하여 획득된다.
한 실시예에서, 이웃 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플은 현재의 복원된 블록의 현재 이미지 블록의 인트라 예측을 위한 샘플들이다.
특히, 하나 이상의 패딩 샘플의 획득은 인트라 참조 샘플 도출의 결과에 기초한다.
한 예시적인 구현에서, 인트라 참조 샘플 도출은: 이웃 복원된 샘플들의 이용가능성의 도출 및 이웃 복원된 샘플이 이용가능한 경우 이웃 복원된 샘플을 회수하는 것; 이웃 복원된 샘플들이 이용가능하지 않다면 이웃 복원된 샘플들을 다른 이용가능한 이웃 복원된 샘플들로 대체하는 것을 포함한다.
한 양태에 따르면, 입력 비디오 스트림으로부터 현재 블록을 인코딩하기 위한 인코딩 방법이 제공되고, 여기서 인코딩 방법은, 위에서 언급된 양태들, 실시예들 및 예들 중 임의의 것에 따라 현재 블록의 현재의 복원된 블록을 필터링하는 단계를 포함한다.
한 양태에 따르면, 수신된 비트스트림으로부터 현재의 복원된 블록을 디코딩하기 위한 디코딩 방법이 제공되고, 여기서 디코딩 방법은 위에서 언급된 양태들, 실시예들 및 예들 중 임의의 것에 따른 필터링 방법을 포함한다.
한 양태에 따르면, 본 발명은 입력 비디오 스트림으로부터 현재 프레임을 인코딩하기 위한 인코딩 장치에 관한 것으로, 여기서 인코딩 장치는 위에서 언급된 양태들, 실시예들 및 예들 중 임의의 것에 따른 필터를 포함한다.
한 양태에 따르면, 본 발명은 수신된 비트스트림으로부터 현재의 복원된 프레임을 디코딩하기 위한 디코딩 장치에 관한 것으로, 여기서 디코딩 장치는 위에서 언급된 양태들, 실시예들 및 예들 중 임의의 것에 따른 필터를 포함한다.
한 양태에 따르면, 본 발명은 컴퓨터에서 실행될 때 상기 언급된 양태들, 실시예들 및 예들 중 임의의 것에 따른 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품에 관한 것이다.
한 양태에 따르면, 디코더가 제공되고, 이 디코더는: 하나 이상의 프로세서; 및 프로세서들에 결합되고 프로세서들에 의한 실행을 위한 프로그래밍을 저장하는 비일시적 컴퓨터-판독가능한 저장 매체를 포함하고, 여기서, 프로그래밍은, 프로세서들에 의해 실행될 때, 선행하는 청구항들 중 어느 한 항에 따른 방법을 실행하도록 디코더를 구성한다.
또 다른 양태에 따르면, 인코더가 제공되고, 이 인코더는: 하나 이상의 프로세서; 및 프로세서들에 결합되고 프로세서들에 의한 실행을 위한 프로그래밍을 저장하는 비일시적 컴퓨터-판독가능한 저장 매체를 포함하고, 여기서, 프로그래밍은, 프로세서들에 의해 실행될 때, 선행하는 청구항들 중 어느 한 항에 따른 방법을 실행하도록 인코더를 구성한다.
한 양태에 따르면, 컴퓨터 디바이스에 의해 실행될 때, 컴퓨터 디바이스로 하여금 선행하는 청구항들 중 어느 한 항에 따른 방법을 수행하게 하는 프로그램 코드를 포함하는 비일시적인 컴퓨터-판독가능한 매체가 제공된다.
따라서, 비디오 코딩 효율성의 향상을 허용하는 필터가 제공된다. 더 구체적으로, 본 발명의 실시예들에 따른 개선된 필터는 필터 파라미터 시그널링 없이 복원된 프레임 자체로부터 필터 파라미터들을 추정하고, 따라서 이미지 영역에서 필터링을 위한 가중 계수들을 시그널링하는 종래의 필터들보다 훨씬 적은 시그널링을 요구한다.
본 발명의 추가 실시예들이 다음과 같은 도면들과 관련하여 설명될 것이며, 여기서:
도 1은 한 실시예에 따른 필터를 포함하는 한 실시예에 따른 인코딩 장치를 나타내는 개략도를 도시한다.
도 2는 한 실시예에 따른 필터를 포함하는 한 실시예에 따른 디코딩 장치를 나타내는 개략도를 도시한다.
도 3a는 한 실시예에 따른 필터에서 구현되는 필터링 프로세스의 양태들을 나타내는 개략도를 도시한다.
도 3b는 한 실시예에 따른 필터에서 구현되는 필터링 프로세스의 양태들을 나타내는 개략도를 도시한다.
도 4a는 정사각형 복원된 블록 내부의 상이한 픽셀 위치에 대한 템플릿을 나타낸다.
도 4b는 하나의 픽셀에 대한 등가 필터 형상을 도시한다.
도 5는 한 실시예에 따른 필터링 방법의 단계들을 나타내는 흐름도를 도시한다.
도 6은 한 실시예에 따른 장치의 예시적인 구조를 나타내는 개략도이다.
도 7은 좌측 및 상단 측의 패딩을 나타낸다;
도 8은 좌측, 상단 측, 우측 및 하단 측의 패딩을 나타낸다;
도 9는 또 다른 실시예에 따른 장치의 예시적인 구조를 나타낸다.
도 10은 또 다른 실시예에 따른 필터를 포함하는 또 다른 실시예에 따른 인코딩 장치를 나타내는 개략도를 도시한다;
도 11은 또 다른 실시예에 따른 필터를 포함하는 또 다른 실시예에 따른 디코딩 장치를 나타내는 개략도를 도시한다;
도 12는 좌측, 상단 측, 우측, 및 하단 측의 패딩 및 패딩된 샘플들을 이용한 필터링을 나타내는 개략도이다;
도 13은 한 실시예에 따른 방법을 나타내는 흐름도이다;
도 14는 콘텐츠 전달 서비스를 실현하는 콘텐츠 공급 시스템(3100)의 한 예시적인 구성을 도시하는 블록도이다; 및
도 15는 단말 디바이스의 한 예의 구조를 도시하는 블록도이다.
다양한 도면에서, 동일하거나 기능적으로 동등한 피처들에 대해 동일한 참조 부호가 이용될 것이다.
도 1은 한 실시예에 따른 필터를 포함하는 한 실시예에 따른 인코딩 장치를 나타내는 개략도를 도시한다.
도 2는 한 실시예에 따른 필터를 포함하는 한 실시예에 따른 디코딩 장치를 나타내는 개략도를 도시한다.
도 3a는 한 실시예에 따른 필터에서 구현되는 필터링 프로세스의 양태들을 나타내는 개략도를 도시한다.
도 3b는 한 실시예에 따른 필터에서 구현되는 필터링 프로세스의 양태들을 나타내는 개략도를 도시한다.
도 4a는 정사각형 복원된 블록 내부의 상이한 픽셀 위치에 대한 템플릿을 나타낸다.
도 4b는 하나의 픽셀에 대한 등가 필터 형상을 도시한다.
도 5는 한 실시예에 따른 필터링 방법의 단계들을 나타내는 흐름도를 도시한다.
도 6은 한 실시예에 따른 장치의 예시적인 구조를 나타내는 개략도이다.
도 7은 좌측 및 상단 측의 패딩을 나타낸다;
도 8은 좌측, 상단 측, 우측 및 하단 측의 패딩을 나타낸다;
도 9는 또 다른 실시예에 따른 장치의 예시적인 구조를 나타낸다.
도 10은 또 다른 실시예에 따른 필터를 포함하는 또 다른 실시예에 따른 인코딩 장치를 나타내는 개략도를 도시한다;
도 11은 또 다른 실시예에 따른 필터를 포함하는 또 다른 실시예에 따른 디코딩 장치를 나타내는 개략도를 도시한다;
도 12는 좌측, 상단 측, 우측, 및 하단 측의 패딩 및 패딩된 샘플들을 이용한 필터링을 나타내는 개략도이다;
도 13은 한 실시예에 따른 방법을 나타내는 흐름도이다;
도 14는 콘텐츠 전달 서비스를 실현하는 콘텐츠 공급 시스템(3100)의 한 예시적인 구성을 도시하는 블록도이다; 및
도 15는 단말 디바이스의 한 예의 구조를 도시하는 블록도이다.
다양한 도면에서, 동일하거나 기능적으로 동등한 피처들에 대해 동일한 참조 부호가 이용될 것이다.
이하의 설명에서, 본 개시내용의 일부를 형성하고 본 발명이 실시될 수 있는 특정한 양태들이 예시에 의해 도시된 첨부된 도면들을 참조한다. 본 발명의 범위를 벗어나지 않으면서 다른 양태들이 이용될 수 있고 구조적 또는 논리적 변경이 이루어질 수 있음을 이해할 것이다. 따라서, 본 발명의 범위는 첨부된 청구항들에 의해 정의되기 때문에, 이하의 상세한 설명은 제한적인 의미로 여겨져서는 안 된다.
예를 들어, 설명된 방법과 관련된 개시내용은 그 방법을 수행하도록 구성된 대응하는 디바이스 또는 시스템에 대해서도 마찬가지로 적용될 수 있고 그 반대의 경우도 마찬가지임을 이해해야 한다. 예를 들어, 한 특정한 방법 단계가 설명되는 경우, 대응하는 디바이스는 그 설명된 방법 단계를 수행하는 유닛을 포함할 수 있고, 그 경우에도 이러한 유닛이 도면에 명시적으로 설명되거나 도시되지 않을 수도 있다. 또한, 여기서 설명된 다양한 예시적인 양태의 피처들은, 구체적으로 달리 언급되지 않는 한, 서로 결합될 수 있다는 것을 이해해야 한다.
도 1은 한 실시예에 따른 필터(120)를 포함하는 한 실시예에 따른 인코딩 장치(100)를 도시한다. 인코딩 장치(100)는 복수의 프레임(본 명세서에서 픽처들 또는 이미지들이라고도 함)을 포함하는 비디오 신호의 프레임의 블록을 인코딩하도록 구성되며, 여기서 각각의 프레임은 복수의 블록으로 분할가능하고 각각의 블록은 복수의 픽셀을 포함한다. 한 실시예에서, 블록들은, 매크로 블록들, 코딩 트리 유닛들, 코딩 유닛들, 예측 유닛들 및/또는 예측 블록들일 수 있다.
본 개시내용에서 "블록"이라는 용어는 임의의 유형의 블록 또는 임의의 깊이 블록에 대해 사용되며, 예를 들어 "블록"이라는 용어는, 루트 블록, 블록, 서브블록, 리프 노드 등을 포함하지만 이것으로 제한되는 것은 아니다. 코딩될 블록들이 반드시 동일한 크기를 가질 필요는 없다. 하나의 픽처는 상이한 크기들의 블록들을 포함할 수 있고, 비디오 시퀀스의 상이한 픽처들의 블록 래스터들도 상이할 수 있다. 본 개시내용에서 용어 "블록"이란, 샘플들의 MxN(M-열 x N-행) 어레이, 또는 변환 계수들의 MxN 어레이를 지칭할 수 있다.
비디오의 프레임은, 강도 값들을 갖는 샘플들의 2차원 어레이 또는 행렬로서 간주될 수 있는 (디지털) 픽처로서 간주될 수 있다. 어레이 내의 샘플은 픽셀(픽처 요소의 축약형) 또는 펠이라고도 한다. 어레이 또는 픽처의 수평 및 수직 방향(또는 축)의 샘플 수는 픽처의 크기 및/또는 해상도를 정의한다. 색상 표현을 위해, 전형적으로 3개의 색상 성분이 채용된다, 즉, 픽처는 3개의 샘플 어레이로 표현되거나 이를 포함할 수 있다. RBG 포멧 또는 색상 공간에서 픽처는, 대응하는 적색, 녹색 및 청색 샘플 어레이를 포함한다. 그러나, 비디오 코딩에서 각각의 픽셀은 전형적으로 휘도 및 색차(chrominance) 포멧 또는 색상 공간, 예를 들어, YCbCr로 표현되고, YCbCr은, Y로 표시된 휘도 성분(때로는 L이 또한 대신 이용됨)과 Cb 및 Cr로 표시된 2개의 색차 성분을 포함한다. 휘도(luminance)(또는 축약하여 루마(luma)) 성분 Y는 밝기 또는 그레이 레벨 강도(예를 들어, 그레이스케일 픽처에서와 같이)를 나타내는 반면, 2개의 색차(chrominance)(또는 축약하여 크로마(chroma)) 성분 Cb 및 Cr은 색도(chromaticity) 또는 색상 정보 성분을 나타낸다. 따라서, YCbCr 포멧의 픽처는 휘도 샘플 값들(Y)의 휘도 샘플 어레이와 색차 값들(Cb 및 Cr)의 2개의 색차 샘플 어레이를 포함한다. RGB 포멧의 픽처들은 YCbCr 포멧으로 전환 또는 변환될 수 있고 그 반대도 마찬가지이며, 이 프로세스는 색상 변환 또는 전환이라고도 알려져 있다. 픽처가 단색이면, 픽처는 휘도 샘플 어레이만을 포함할 수 있다. 본 개시내용은 임의의 하나 이상의(또는 모든) 색상 성분의 샘플들(픽셀들)에 적용가능하다는 것을 이해할 것이다.
비디오 코딩이라는 용어는 일반적으로 비디오 인코딩 및/또는 비디오 디코딩에 적용된다는 점에 유의한다.
도 1에 도시된 예시적인 실시예에서, 인코딩 장치(100)는 하이브리드 비디오 코딩 인코더의 형태로 구현된다. 일반적으로 비디오 신호의 첫 번째 프레임은 인트라 예측만을 이용하여 인코딩되는 인트라 프레임이다. 이 목적을 위해, 도 1에 도시된 인코딩 장치(100)의 실시예는 인트라 예측을 위한 인트라 예측 유닛(154)을 포함한다. 인트라 프레임은 다른 프레임들로부터의 정보 없이 디코딩될 수 있다. 인트라 예측 유닛(154)은 인트라 추정 유닛(152)에 의해 제공된 정보에 기초하여 블록의 인트라 예측을 수행할 수 있다. 또 다른 예에서, 인트라 추정 유닛(152) 및 인트라 예측 유닛(154)은 인코딩 장치(100)에서 별개로 제시되지 않을 수 있다는 점에 유의한다, 예를 들어, 인트라 추정 유닛(152) 및 인트라 예측 유닛(154)은 함께 통합될 수 있다.
한 예에서, 인트라 예측 유닛(154)은 이웃 복원된 샘플들의 이용가능성을 체크하고 이웃 복원된 샘플들이 이용가능한 경우(예를 들어, 일부 특정한 구현에서 라인 버퍼(116)를 형성함) 회수하기 위한 로직을 포함하는 참조 샘플 도출을 담당할 수 있고, 이용가능하지 않은 경우 다른 이용가능한 (이웃) 샘플들로 대체한다. 이들 참조 샘플들은 인트라 예측을 위한 입력으로 이용된다.
첫 번째 인트라 프레임에 뒤따르는 후속 프레임들의 블록들은, 모드 선택 유닛(160)에 의해 선택되는, 인터 또는 인트라 예측을 이용하여 코딩될 수 있다. 이를 위해, 도 1에 도시된 인코딩 장치(100)는 인터 예측 유닛(144)을 더 포함한다. 일반적으로, 인터 예측 유닛(144)은 인터 추정 유닛(142)에 의해 제공되는 모션 추정에 기초하여 블록의 모션 보상을 수행하도록 구성될 수 있다. 또 다른 예에서, 인터 추정 유닛(142) 및 인터 예측 유닛(144)은 인코딩 장치(100)에서 별개로 제공되지 않을 수 있다는 점에 유의한다, 예를 들어, 인터 추정 유닛(142) 및 인터 예측 유닛(144)은 함께 통합될 수 있다.
또한, 도 1에 도시된 하이브리드 인코더 실시예에서, 잔차 계산 유닛(104)은 원래 블록과 그 예측 사이의 차이, 즉, 인트라/인터 픽처 예측의 예측 에러를 정의하는 잔차 블록을 결정한다. 이 잔차 블록은 변환 유닛(106)에 의해 변환되고(예를 들어, DCT를 이용하여), 변환 계수들은 양자화 유닛(108)에 의해 양자화된다. 양자화 유닛(108)의 출력 뿐만 아니라, 예를 들어 인트라 예측 유닛(154), 인터 예측 유닛(144) 및 필터(120)에 의해 제공된 코딩 또는 부가 정보는, 엔트로피 인코딩 유닛(170)에 의해 추가로 인코딩된다.
하이브리드 비디오 인코더는 대개 양쪽 디코더가 동일한 예측을 생성하도록 디코더 처리를 복제한다. 따라서, 도 1에 도시된 실시예에서 역 양자화 유닛(110) 및 역 변환 유닛은 변환 유닛(106) 및 양자화 유닛(108)의 역 동작들을 수행하고 잔차 블록의 디코딩된 근사치를 복제한다. 그 다음, 디코딩된 잔차 블록 데이터는, 복원 유닛(114)에 의해, 예측 결과들, 즉, 예측 블록에 추가된다. 그 후, 복원 유닛(114)의 출력은 인트라 예측을 위해 이용되도록 라인 버퍼(116)에 제공될 수 있고, 필터(120)에 의해 더 처리될 수 있으며, 이것은 아래에서 더 상세히 설명될 것이다. 최종 픽처는 디코딩된 픽처 버퍼(130)에 저장되어 후속 프레임들의 인터 예측에 이용될 수 있다.
도 2는 한 실시예에 따른 필터(220)를 포함하는 한 실시예에 따른 디코딩 장치(200)를 도시한다. 디코딩 장치(200)는 인코딩된 비디오 신호의 프레임의 블록을 디코딩하도록 구성된다. 도 2에 도시된 실시예에서, 디코딩 장치(200)는 하이브리드 디코더로서 구현된다. 엔트로피 디코딩 유닛(204)은, 특히 인트라 예측 유닛(254) 및 인터 예측 유닛(244) 뿐만 아니라 필터(220) 등의 디코딩 장치(200)의 다른 컴포넌트들을 위해 필요한, 일반적으로 예측 에러들(즉, 잔차 블록들), 모션 데이터 및 기타의 부가 정보를 포함할 수 있는 인코딩된 픽처 데이터의 엔트로피 디코딩을 수행한다. 일반적으로, 도 2에 도시된 디코딩 장치(200)의 인트라 예측 유닛(254) 및 인터 예측 유닛(244)은 모드 선택 유닛(260)에 의해 선택되며, 인코딩 장치(100) 및 디코딩 장치(200)에 의해 동일한 예측이 생성될 수 있도록, 도 1에 도시된 인코딩 장치(100)의 인트라 예측 유닛(154) 및 인터 예측 유닛(144)과 동일한 방식으로 기능한다. 인트라 예측 유닛(154, 254)은 이웃 복원된 샘플들의 이용가능성을 체크하고 이웃 복원된 샘플들이 이용가능한 경우(예를 들어, 일부 특정한 구현에서 라인 버퍼(216, 116)를 형성함) 회수하기 위한 로직을 포함하는 참조 샘플 도출을 담당할 수 있고, 이용가능하지 않은 경우 다른 이용가능한 이웃 샘플들로 대체한다. 이들 참조 샘플들은 인트라 예측을 위한 입력으로 이용된다. 디코딩 장치(200)의 복원 유닛(214)은 역 양자화 유닛(210) 및 역 변환 유닛(212)에 의해 제공되는 필터링된 예측된 블록 및 잔차 블록에 기초하여 블록을 복원하도록 구성된다. 인코딩 장치(100)의 경우에서와 같이, 복원된 블록은 인트라 예측에 이용되는 라인 버퍼(216)에 제공될 수 있고, 필터링된 블록/프레임은 인터 예측을 위해 필터(220)에 의해 디코딩된 픽처 버퍼(230)에 제공될 수 있다.
이미 위에서 설명된 바와 같이, 필터(120, 220)는 프레임 레벨에서 이용될 수 있고, 예를 들어 필터(120, 220)는 필터링된 복원된 프레임을 생성하기 위해 디코딩된 복원된 비디오 스트림으로부터 복원된 프레임을 처리하도록 구성될 수 있으며, 여기서 복원된 프레임은 복수의 블록을 포함한다. 필터(120, 220)는 또한, 전체 프레임을 기다리지 않고 블록 복원(또는 복원후 필터) 후 블록 레벨에서도 이용될 수 있고, 예를 들어, 필터(120, 220)는 필터링된 복원된 블록을 생성하고 또한 도 10에 예시된 바와 같이 필터링된 복원된 샘플들을 라인 버퍼(1016, 1116)에 제공하거나 도 11에 예시된 바와 같이 필터링된 복원된 샘플들을 라인 버퍼(1116)에 제공하기 위해 복원된 블록을 처리하도록 구성될 수 있고, 여기서, 복원된 블록은 복수의 픽셀을 포함한다.
도 10은 또 다른 실시예에 따른 인코딩 장치(1000)의 예를 도시하며, 여기서, 필터는, 블록 복원 직후 등의, 블록 복원 후에 복원후 필터(1018)로서 필터가 적용된다. 복원 유닛(1014)의 결과는 복원후 필터(1018)에 제공될 수 있다. 그 다음, 복원후 필터(1018)의 결과는 라인 버퍼(1016)에 제공될 수 있고 루프 필터(1020)에 의해 추가로 처리되거나 디코딩된 픽처 버퍼(1030)에 직접 제공된다.
도 11은 또 다른 실시예에 따른 디코딩 장치(1100)의 한 예를 도시하며, 여기서, 필터는, 블록 복원 직후 등의, 블록 복원 후에 복원후 필터(1118)로서 적용된다. 복원 유닛(1114)의 결과는 복원후 필터(1118)에 제공될 수 있다. 그 다음, 복원후 필터(1118)의 결과는 라인 버퍼(1116)에 제공될 수 있고 루프 필터(1120)에 의해 추가로 처리되거나 디코딩된 픽처 버퍼(1130)에 직접 제공된다.
필터(120, 220, 1018, 1118)는, 한 실시예에서, 하나 이상의 프로세서(또는 하나 이상의 처리 유닛 또는 처리 회로)를 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 하나 이상의 프로세서(또는 하나 이상의 처리 유닛 또는 처리 회로)는, 미리정의된 스캔 템플릿(즉, 스캔 순서, 또는 스캔 패턴)에 따라 선형 버퍼에 현재 픽셀 및 그 이웃 픽셀들을 로딩하고; 선형 버퍼 내의 각각의 픽셀에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하고; 각각의 스펙트럼 성분에 이득 계수를 곱함으로써 필터링된 스펙트럼을 획득하고, ―여기서, 이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함―; 필터링된 스펙트럼에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고; 이전 처리 단계들에서 추정된 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된다. 한 예에서, 이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존한다. 또 다른 예에서, 이득 계수는 하나 이상의 필터링 파라미터 및 하나 이상의 대응하는 스펙트럼 성분에 의존한다. 다른 예에서, 각각의 이득 계수는, 하나 이상의 필터링 파라미터 및 대응하는 스펙트럼 성분 뿐만 아니라 스펙트럼 성분의 좌측 및 우측에 이웃하는 스펙트럼 성분들에 의존할 수 있다.
또 다른 실시예에서, 필터(120, 220, 1018, 1118)는, 한 실시예에서, 하나 이상의 프로세서(또는 하나 이상의 처리 유닛 또는 처리 회로)를 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 하나 이상의 프로세서(또는 하나 이상의 처리 유닛 또는 처리 회로)는 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하고; 미리정의된 스캔 템플릿에 따라 확장된 복원된 블록의 현재 픽셀 및 현재 픽셀의 그 이웃 픽셀들을 선형 버퍼에 로딩하고; 선형 버퍼 내의 픽셀들에 대한 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하고; 조회 테이블을 이용함으로써 획득된 스펙트럼 성분들에 기초하여 필터링된 스펙트럼 성분들을 획득하고; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고; 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된다. 본 개시내용은 복원된 프레임으로부터 복원된 블록의 로컬 및/또는 비-로컬 필터링을 수행하는 유손실 비디오 코덱을 위한 인루프 필터를 설명한다. 한 예에 따르면, 복원된 프레임은 한 세트의 작은 비중첩 직사각형 매크로 블록들(CU 블록들)로 분할된다. 다음 단계에서, 각각의 복원된 매크로 블록(복원된 CU 블록)은 다른 복원된 매크로 블록들과 독립적으로, 특히 다른 복원된 매크로 블록들의 필터링과 독립적으로, 주파수 영역에서 필터링된다. 필터는 변환 및 복원된 후에도 적용될 수 있고, 필터링된 결과는 출력뿐만 아니라 공간 및 시간 예측 양쪽 모두에 이용된다.
처리의 첫 번째 단계에서, 복원된 블록 내부의 모든 픽셀은 서로 독립적으로 처리될 수 있다. 픽셀 r(0)의 처리를 위해, 이웃 픽셀들이 이용된다. 예를 들어, 도 3a에 나타낸 바와 같이, 픽셀들 r(1) 내지 r(7)이 이용되고, 픽셀들 r(0) 내지 r(7)이 하나의 처리 그룹을 형성한다.
도 3a 또는 도 3b는, 한 실시예에 따른 필터에서 구현되는 필터링 프로세스의 양태들을 나타내는 개략도(300)(또는 300')를 도시한다. 단계 302(또는 302')에서, 복원된 블록으로부터의 현재 픽셀 및 그 이웃 픽셀들은 미리정의된 스캔 템플릿에 따라 선형 버퍼(116, 216, 1016, 1116) 등의 선형 버퍼에 로딩된다.
단계 304(또는 304')에서, 선형 버퍼 내의 픽셀 r(0) 및 이웃 픽셀들 r(1) 내지 r(7)에 대해 1D 변환이 수행되어 스펙트럼 성분 R을 획득한다:
한 예로서, 1D 변환은 Hadamard 변환일 수 있다.
단계 306(또는 306')에서, 필터링된 스펙트럼 성분들 을 획득하기 위해 대응하는 이득 계수 에 의한 각각의 스펙트럼 성분 의 곱셈(여기서 "*"로 표시됨)에 기초하여 주파수 영역에서 필터링이 수행된다.
모든 스펙트럼 성분에 대한 이득 계수 세트는 필터의 주파수 임펄스 응답이다.
또 다른 예에서, 이득 계수 는 하나 이상의 필터링 파라미터 및 대응하는 스펙트럼 성분들 중 하나 이상에 의존한다. 다른 예에서, 각각의 이득 계수는, 하나 이상의 필터링 파라미터 및 대응하는 스펙트럼 성분 뿐만 아니라 스펙트럼 성분의 좌측 및 우측에 이웃하는 스펙트럼 성분들에 의존할 수 있다. 각각의 이득 계수 가 복원된 블록의 스펙트럼 성분과 필터링 파라미터의 함수인 경우, 이득 계수 는 예를 들어 다음과 같은 공식에 의해 설명될 수 있다:
여기서, (i)는 스펙트럼 성분의 인덱스이고, R(i)는 (i) 인덱스에 대응하는 스펙트럼 성분이고, 는 R(i)에 대응하는 이득 계수이고, σ는 필터링 파라미터이고, m은 스펙트럼 성분 수와 동일한 정규화 상수이다. 예를 들어, m은 1D 변환의 길이에 대응한다. m에 대한 예시적이고 제한적인 값은 4이다. 그러나, 본 개시내용은 1D 변환의 임의의 크기에 적용가능하다. 상이한 스펙트럼 성분들은 동일한 이득 계수를 갖거나, 상이한 이득 계수들을 가질 수 있다.
필터링 파라미터로서의 파라미터 σ는, 예를 들어 다음과 같은 공식을 이용하여, 인코더 및 디코더 측의 코덱 양자화 파라미터(QP)로부터 도출될 수 있다:
상이한 스펙트럼 성분들은 동일한 필터링 파라미터를 가질 수 있거나, 상이한 필터링 파라미터들을 가질 수 있다.
도 3a에 나타낸 방법(300)(또는 도 3b의 방법(300'))에 따르면, 각각의 주파수에 대한 이득 계수는 복원된 픽셀들의 스펙트럼 성분으로부터 도출된다. 따라서, 방법 300(또는 300')은 필터링 파라미터들의 전송을 필요로 하지 않으며 추가적인 시그널링 없이 임의의 복원된 블록에 적용될 수 있다.
스펙트럼 이득 계수는 1보다 작으므로, 필터링은 다음과 같은 공식에 따라 짧은 조회 테이블(LUT) 판독값에 기초하여 구현될 수 있다:
여기서, 이고, (i)는 스펙트럼 성분의 인덱스이고, R(i)는 인덱스(i)에 대응하는 스펙트럼 성분이고, σ는 필터링 파라미터이고, THR은 임계값이고, m은 스펙트럼 성분 수와 동일한 정규화 상수이다. 는, 파라미터들 로 파라미터화된 필터로 필터링된, (i)번째 필터링된 스펙트럼 성분을 나타낸다.
예를 들어, THR은 다음과 같은 공식으로부터 계산될 수 있다,
여기서 C는 1에 가까운 값, 예를 들어, 0.9이다.
단계 310에서, 역 1D 변환의 결과는 필터링된 복원된 픽셀의 선형 버퍼에 배치된다.
단계 312(도 3a 또는 도 3b에 도시되지 않음)에서, 이전 처리 단계들에서 추정된 필터링된 픽셀들에 기초하여 필터링된 복원된 블록이 생성된다.
한 실시예로서 픽처 3a에 도시된 바와 같이, 필터링 단계 306 후에, 필터링된 픽셀 f(0)은 미리정의된 스캔 템플릿에 따라 그 원래 위치에 배치된다. 다른 필터링된 샘플들 f(1)-f(7)은 이용되지 않는다. 또 다른 실시예에서, 하나보다 많은 필터링된 픽셀, 예를 들어 필터링된 샘플들의 선형 버퍼로부터의 모든 필터링된 픽셀들은, 도 3a 또는 도 3b의 단계 302(또는 302')에서 이용된 미리정의된 스캔 템플릿에 따라 누적 버퍼에 추가된다. 누적 버퍼는 필터링 단계 전에 0으로 초기화되어야 한다. 마지막 정규화 단계에서, 최종 필터링된 픽셀들은 누적 버퍼 내의 누적된 값들을 누적 버퍼의 현재 위치에 추가된 픽셀 수, 즉, 이전 처리 단계들에서 누적 버퍼의 현재 위치에 추가된 픽셀 수 값들로 나눈 값으로서 획득된다. 그 다음, 필터링된 복원된 블록은 최종 필터링된 픽셀들에 기초하여 생성된다.
1D Hadamard 변환이 이용되고, 필터링된 픽셀이 미리정의된 스캔 템플릿에 따라 그 원래 위치에 배치된다면, 다음과 같은 의사 코드가 방법(300)의 필터링 프로세스를 기술한다:
// 복원된 픽셀 스캔
const int x0 = pIn[p0];
const int x1 = pIn[p1];
const int x2 = pIn[p2];
const int x3 = pIn[p3]; // p0-p3은 스캔 패턴을 정의
// 1D 순방향 Hadamard 변환
const int y0 = x0 + x2;
const int y1 = x1 + x3;
const int y2 = x0 - x2;
const int y3 = x1 - x3;
const int t0 = y0 + y1;
const int t1 = y0 - y1;
const int t2 = y2 + y3;
const int t3 = y2 - y3;
// 주파수 영역 필터링
const int z0 = pTbl[t0];
const int z1 = pTbl[t1];
const int z2 = pTbl[t2];
const int z3 = pTbl[t3];
// 역방향 Hadamard 변환
const int iy0 = z0 + z2;
const int iy1 = z1 + z3;
const int iy2 = z0 - z2;
const int iy3 = z1 - z3;
// 출력 필터링된 픽셀
pOut[p0_out] = iy0 + iy1;
1D Hadamard 변환이 이용되고 필터링된 샘플들의 선형 버퍼로부터 하나보다 많은 필터링된 픽셀들이 누적 버퍼에 추가된다면, 다음과 같은 의사 코드는 이 시나리오의 필터링 프로세스를 기술한다:
// 복원된 픽셀 스캔
const int x0 = pIn[p0];
const int x1 = pIn[p1];
const int x2 = pIn[p2];
const int x3 = pIn[p3]; // p0-p3은 스캔 패턴을 정의
// 1D 순방향 Hadamard 변환
const int y0 = x0 + x2;
const int y1 = x1 + x3;
const int y2 = x0 - x2;
const int y3 = x1 - x3;
const int t0 = y0 + y1;
const int t1 = y0 - y1;
const int t2 = y2 + y3;
const int t3 = y2 - y3;
// 주파수 영역 필터링
const int z0 = pTbl[t0];
const int z1 = pTbl[t1];
const int z2 = pTbl[t2];
const int z3 = pTbl[t3];
// 역방향 Hadamard 변환
const int iy0 = z0 + z2;
const int iy1 = z1 + z3;
const int iy2 = z0 - z2;
const int iy3 = z1 - z3;
// 필터링된 픽셀 누적
pOut[p0] += iy0 + iy1 // p0-p3은 스캔 패턴을 정의함
pOut[p1] += iy0 - iy1
pOut[p2] += iy2 + iy3
pOut[p3] += iy2 - iy3
대안적인 실시예로서, 누적 버퍼는, 필터링되지 않은 픽셀 값들을 블록 내의 추가될 픽셀 값들의 최대 수로 곱한 값으로 초기화되어야 한다. 블록 내의 추가될 최대 픽셀 값의 수는 스캔 템플릿에 기초하여 정의된다. 사실상, 스캔 템플릿은 각각의 위치에 대해 추가되는 픽셀 값들의 수를 정의한다. 이에 기초하여 블록의 모든 위치로부터의 최대 개수가 선택되고 누적 버퍼 초기화 동안에 이용될 수 있다. 그 다음, 각각의 누적 단계 동안에, 필터링되지 않은 픽셀 값을 대응하는 필터링된 값으로부터 차감하여 누적 버퍼에 추가한다 :
// 필터링된 픽셀 누적
pOut[p0] += iy0 + iy1 - x0
pOut[p1] += iy0 - iy1 - x1
pOut[p2] += iy2 + iy3 - x2
pOut[p3] += iy2 - iy3 - x3
이 실시예는, 추가된 픽셀 값들의 최대 수가 예를 들어 2의 거듭제곱, 예를 들어 2, 4, 8 등인 경우, 현재 위치에 추가된 픽셀 수를 저장하는 것을 피하는 것을 허용하고 그에 따라 마지막 정규화 단계 및 누적 버퍼 초기화 단계에서 시프트 연산에 의해 나눗셈과 곱셈을 대체하는 것을 허용한다.
복원된 블록 내부의 각각의 픽셀에 대해, 단계들 302 및 310에 대해 복원된 블록 내부의 필터링 픽셀의 위치에 기초하여 스캔 템플릿이 선택된다. 스캔 템플릿은, 모든 픽셀이 복원된 CU 내부에 있고 처리 픽셀에 가깝게 배치(위치결정)되는 것을 보장하도록 선택된다. 템플릿 내에서 임의의 스캔 순서가 이용될 수 있다. 예를 들어, 미리정의된 스캔 템플릿은 복원된 블록 내부의 현재 픽셀 위치에 상대적인 공간 또는 래스터 오프셋 세트로 정의되며, 여기서 오프셋들은 복원된 블록 내부의 이웃 픽셀들을 가리킨다.
도 3b에 나타낸 방법(300')의 관련 부분에 대해, 도 3a에 나타낸 방법(300)을 참조할 수 있다는 점에 유의한다.
도 4는 정사각형 복원된 블록(정사각형 CU 복원된 블록) 내의 상이한 픽셀 위치에 대한 템플릿들을 나타낸다. 이 도면에 따르면, 경계 픽셀들은 4 포인트 변환에 기초하여 필터링될 수 있고 중심 픽셀들은 8 포인트 변환에 기초하여 필터링될 수 있다.
한 변의 크기가 다른 변의 크기보다 큰 직사각형 복원된 블록의 경우, 긴 변을 따라 스캔이 수행되어야 한다. 예를 들어 수평 직사각형 블록의 경우 다음과 같은 스캔 순서가 이용될 수 있다
( 0,-3 ), ( 0,-2 ), ( 0,-1 ), ( 0,0 ), ( 0,1 ), (0,2), (0,3), (0,4),
여기서 각각의 쌍 (y, x)에서, x는 수평 오프셋이고, y는 필터링 복원된 블록 내부의 필터링 픽셀 위치에 관한 수직 오프셋이다.
설명된 필터는 다음과 같은 조건들에 따라 선택적으로 적용될 수 있다:
필터 파라미터 시그마 및 스캔 패턴은 위에 나열된 조건들에 따라 다를 수 있다.
도 4b는 예시적인 스캔 템플릿 (0, 0), (0, 1), (1, 0), (1, 1)에 대한 현재 블록 내부의 하나의 픽셀을 고려한 등가 필터 형상을 나타낸다. 현재 픽셀의 필터링을 위해, 3x3 픽셀의 정사각형 영역이 이용된다(현재 픽셀은 3x3 정사각형의 중앙에서 짙은 회색으로 마킹됨). 필터링된 픽셀은 4개의 2x2 처리 그룹으로부터 변환 영역 필터링된 샘플들을 결합함으로써 획득된다, 즉, 필터링된 픽셀은 4개의 처리 그룹으로부터의 변환 영역 필터링된 샘플들을 결합함으로써 획득되고, 여기서, 각각의 처리 그룹은 2x2의 형상/크기이다. 현재 픽셀이 블록 경계(예를 들어, 상단 경계)에 있는 경우 상단 좌측 및 상단 우측 2x2 처리 그룹이 이용가능하지 않고 2개의 2x2 처리 그룹(하단 좌측 및 하단 우측)만이 필터링에 이용될 수 있다는 것을 이해할 수 있을 것이다. 또한, 현재 픽셀이 블록 코너(예를 들어, 상단 좌측 코너)에 있는 경우, 하나의 2x2 처리 그룹(하단 우측)만이 필터링에 이용될 수 있다.
경계 및 코너 픽셀들에 대해 동일한 2x2 그룹을 이용함으로써 블록 엣지들 근처의 필터링 품질을 증가시키고 처리를 통합하기 위해, 현재 블록은 추가 샘플들에 의해 패딩될 수 있다. 도 7은 좌측과 상단 측의 패딩의 한 예를 보여준다. 특히, 도 7은 현재 블록의 상단 좌측 코너 픽셀이 강조표시된 4x8 픽셀들(샘플들)을 포함하는 현재 블록을 보여준다. 여기서는, 일반적으로 현재 블록에 대한 참조가 이루어진다는 점에 유의한다. 그러나, 비디오의 인코딩 및/또는 디코딩을 위한 필터 적용의 경우, 현재 블록은 더 구체적으로 현재의 복원된 블록이라고 지칭된다. 이것은 필터링이, 상기의 도 1 및 도 2를 참조하여 이미 앞서 간략하게 설명된 바와 같이, 전형적으로 인코딩 동안 및/또는 복원된 후 디코딩 동안 적용되기 때문이다. 도 7은 현재 블록의 상단 측과 현재 블록의 좌측 상에서 패딩되어 있는 패딩된 샘플들을 추가로 보여준다. 패딩된 샘플들은 현재 블록의 경계에 위치한 픽셀들(현재 블록의 샘플들)에 대한 필터(도 7에서 파선으로 표시)의 적용을 용이화한다. 현재 블록의 경계에 위치한 픽셀들은 현재 블록의 외측 픽셀들로서 간주되거나 동일한 (현재) 블록에 속하지 않는 하나 이상의 이웃 픽셀을 갖거나 또는 (예를 들어, 픽처 경계에 위치하기 때문에) 이웃 픽셀들을 전혀 갖지 않는 픽셀들로서 간주될 수 있다.
패딩 샘플들은 현재 블록에 인접한 블록들(예를 들어, 이웃 블록들) 등의 이미 복원된 블록들로부터 취해질 수 있다. 처리 그룹 형상(예를 들어, 2x2 또는 3x3)에 따라 하나 이상의 패딩 라인이 이용될 수 있다는 점에 유의한다. 예를 들어, 2x2 처리 그룹의 경우, 각각의 측 상에서 한 라인의 패딩이 이용된다. 3x3 처리 그룹의 경우, 각각의 측 상에서 2개 라인의 패딩이 이용된다.
패딩 샘플(padding sample)들은 패딩에 이용되는 샘플들임을 이해할 수 있을 것이다. 이들이 패딩된 후에는, 이들은 패딩된 샘플(padded sample)이다.
블록의 모든 픽셀에 대한 필터링 프로세스의 추가 통합을 위해(예를 들어, 현재 블록의 모든 픽셀의 필터링에 대해 4개의 2x2 처리 그룹이 이용됨), 상단 좌측 패딩 외에도, 도 8에 나타낸 바와 같이 현재 블록은 또한 하단 우측 패딩에 의해 확장될 수 있다. 필터링의 통합은, 코너 픽셀들 및/또는 경계 픽셀들에 대한 특별 처리 사례를 배제함으로써 구현을 간소화하기 때문에 유리하다.
도 8은, 도 7의 현재 블록과 유사하게, 4x8 픽셀들의 현재 블록을 보여준다. 도 7에 추가하여, 도 8은, 하단 우측 코너 픽셀을 포함한, 현재 블록의 하단 측과 현재 블록의 우측 상의 패딩된 샘플들을 보여준다. 도 12는 도 8에 기초하며 추가적인 명료화를 포함한다. 중앙에 하단 우측 코너 픽셀을 갖는 파선 정사각형(1260)은 상단 좌측 코너에 적용된 필터와 유사한 3x3 필터를 이용한 필터링을 나타낸다. 알 수 있는 바와 같이, 패딩된 샘플들은 필터링에 이용된다, 예를 들어, 필터링된 하단 우측 샘플 및/또는 상단 좌측 샘플(1250)을 도출하는데 이용된다. 여기서 현재 블록(1200)은 패딩된 샘플들(1210 및 1220)에 의해 모든 측면들에서 확장된다. 패딩된 샘플들(1210, 1220)은, 현재 블록(1200)의 외측 경계 상의 샘플들, 특히 현재 블록의 외측 경계 상의 한 라인의 샘플들이다. 위에서 언급된 바와 같이, 패딩된 샘플들은 4개의 측면(상단, 하단, 우측, 좌측) 각각에서 하나보다 많은 라인의 샘플들만큼씩 현재 블록을 확장할 수 있다.
패딩 샘플들은 바람직하게는 이미 복원된 블록들의 인접한 이웃 샘플들로부터 취해진다. 최신 비디오 코덱에서, 이들 이미 복원된 블록들은 블록 복원 순서에 따라 현재 블록의 좌측이나 상단 측 또는 우측이나 하단 측에 위치할 수 있다. 조정 샘플들로부터의 더 많은 정보를 이용하여, 필터링 품질을 개선하고 블록들간 전환을 보다 원활하게 한다. 본 개시내용은 임의의 특정한 블록 스캔 순서로 제한되지 않는다는 점에 유의한다. 일반적으로, 임의의 이용가능한 이웃 블록으로부터의 이웃 샘플들이 이용될 수 있다. 블록 스캔 순서에 의해 이용가능성이 주어질 수 있다. 특히, 블록 스캔 순서는 블록의 처리(예를 들어, 복원) 순서에 대응할 수 있다. 다시 말해, 블록 스캔 순서는, 현재 블록이 필터링되는 시점에서 이전에 어떤 블록들이 복원되었는지(이용가능한지)를 정의할 수 있다.
인접 블록들 또는 이전에 복원된 블록들로부터 복원된 샘플을 회수하는 것은 하드웨어 또는 소프트웨어 구현을 위한 추가 메모리 부하를 요구할 수 있다. 추가 메모리를 최소화하거나 배제하기 위해, 일반적으로 현재 블록 경계들에 인접한 이웃 블록들로부터 하나, 둘 또는 그 이상의 행 및 열로부터 취해지는 현재 블록의 인트라 예측을 위한 샘플들을 이용하는 것이 유리하다. 이들 샘플들은 대개 인트라 예측에 대한 용이한 액세스를 위해 고속 메모리("라인" 버퍼라고도 알려짐)에 저장되며 인트라 예측의 참조 샘플들이라고 불린다.
일부 구현에서, 인트라 예측을 수행하기 전에, 예를 들어 평활화, 선명화, 링 제거 또는 양방향 필터링을 통해, 참조 샘플(인트라 참조 샘플들)이 예측 전에 전처리(예를 들어, 필터링)된다는 점에 추가로 유의해야 한다. 이 경우 현재 블록의 패딩을 위해 전처리된 샘플들을 이용하는 것이 유리할 수 있다.
인접 블록 복원의 순서, 또는 픽처 경계/슬라이스 경계/타일 경계 또는 타일 그룹 경계에 관한 현재 블록의 위치로 인해, 패딩된 영역 내의 일부 샘플들이 이용가능하지 않은 경우, 현재 블록으로부터 요구되는 샘플들이 패딩되어, 도 8 및 도 12에 나타낸 바와 같이 경계 픽셀들을 패딩 영역으로 확장할 수 있다. 특히, 도 12에서, 패딩된 샘플들(1220)은 하단 경계 픽셀들 및 우측 경계 픽셀들을 패딩된 영역으로 확장함으로써 획득된다. 이것은, 예를 들어, 하단 이웃 블록 및 우측 이웃 블록이 현재 블록(1200)에 대해 이용가능하지 않은(예를 들어, 아직 복원되지 않았거나, 현재 블록과 다른 타일에 속하거나, 픽처 경계에 위치해 있는) 시나리오에서 유리할 수 있다. 패딩된 샘플들(1210)은 이웃 블록들로부터 획득될 수 있다.
다시 말해서, 패딩 프로세스는 이웃 샘플들의 이용가능성 체크를 포함한다. 이웃 샘플이 이용가능한 경우, 샘플(이용가능한 이웃 샘플)이 패딩에 이용된다. 그렇지 않으면, 현재 블록의 샘플이 패딩에 이용된다. 예를 들어, 패딩될 영역에서 픽셀 위치가 주어지면, 그 픽셀 위치는 현재 블록으로부터의 샘플로 패딩될 수 있고, 샘플은 그 주어진 픽셀 위치에 (현재 블록의 샘플들 중에서) 가장 가깝게 위치한다.
이웃 샘플들의 이용가능성 체크 로직은 인트라 참조 샘플 도출 프로세스와 동일할 수 있다. 6.4.1절(이웃 블록 이용가능성 체크를 도출 프로세스)을 포함한 인트라 참조 샘플들(p[ x ][ y ]) 도출 프로세스의 예는 다음과 같다:
sps_suco_flag가 1이면, 다음이 적용된다:
x=-1, y = - 1..nCbH + nCbW - 1, x = 0..nCbW + nCbH - 1, y = -1, x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..- 1, y = -1인, 복원후 필터링 프로세스 이후에 및/또는 인루프 필터 프로세스 이전에 구성된 샘플들인 nCbW * 3 + nCbH * 4 + 2 이웃 샘플들 p[ x ][ y ]은 다음과 같이 도출된다:
― 이웃 위치 ( xNbCmp, yNbCmp )는 다음과 같이 명시된다:
( xNbCmp, yNbCmp ) = ( xCbCmp + x, yCbCmp + y ) (8-1)
― 현재 루마 위치 ( xCbY, yCbY )와 이웃 루마 위치 ( xNbY, yNbY )는 다음과 같이 도출된다:
( xCbY, yCbY ) = ( cIdx = = 0 ) ? ( xCbCmp, yCbCmp ) : ( xCbCmp * SubWidthC, yCbCmp * SubHeightC )
(8-2)
( xNbY, yNbY ) = ( cIdx = = 0 ) ? ( xNbCmp, yNbCmp ) : ( xNbCmp * SubWidthC, yNbCmp * SubHeightC )
(8-3)
― 6.4.1절에 명시된 z-스캔 순서의 블록에 대한 이용가능성 도출 프로세스는, ( xCbY, yCbY )로 설정된 현재 루마 위치 ( xCurr, yCurr )와 이웃 루마 위치(xNbY, yNbY)를 입력들로서 취하여 호출되고, 출력은 availableN에 할당된다.
― 각각의 샘플 p[ x ][ y ]는 다음과 같이 도출된다:
― 변수 availableN이 FALSE와 같으면 샘플 p[ x ][ y ]가 "인트라 예측에 이용할 수 없음"으로 마킹되며, 다음이 적용된다:
― 그렇지 않은 경우(변수 availableN이 TRUE임), 샘플 p[ x ][ y ]는 "인트라 예측에 이용가능"으로 마킹되고 위치( xNbCmp, yNbCmp )의 샘플은 p[ x ][ y ]에 할당된다.
― x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 적어도 하나의 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로 마킹될 때, x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1, nCbW, nCbH인 샘플들 p[ x ][ y ]와 cIdx를 입력들로서 취하고 x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 수정된 샘플들 p[ x ][ y ]을 출력으로서 취하는 8.4.4.2절의 인트라 샘플 예측에 대한 참조 샘플 대체 프로세스가 호출된다.
그렇지 않고, sps_suco_flag가 0이면, 다음이 적용된다:
x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1인, 인루프 필터링 프로세스 이전에 구성된 샘플들인 nCbW * 2 + nCbH * 2 + 1 이웃 샘플들 p[ x ][ y ]은 다음과 같이 도출된다:
― 이웃 위치 ( xNbCmp, yNbCmp )는 다음과 같이 명시된다:
( xNbCmp, yNbCmp ) = ( xCbCmp + x, yCbCmp + y ) (8-4)
― 현재 루마 위치 ( xCbY, yCbY )와 이웃 루마 위치 ( xNbY, yNbY )는 다음과 같이 도출된다:
( xCbY, yCbY ) = ( cIdx = = 0 ) ? ( xCbCmp, yCbCmp ) : ( xCbCmp * SubWidthC, yCbCmp * SubHeightC )
(8-5)
( xNbY, yNbY ) = ( cIdx = = 0 ) ? ( xNbCmp, yNbCmp ) : ( xNbCmp * SubWidthC, yNbCmp * SubHeightC )
(8-6)
― 6.4.1절에 명시된 z-스캔 순서의 블록에 대한 이용가능성 도출 프로세스는, ( xCbY, yCbY )로 설정된 현재 루마 위치 ( xCurr, yCurr )와 이웃 루마 위치(xNbY, yNbY)를 입력들로서 취하여 호출되고, 출력은 availableN에 할당된다.
― 각각의 샘플 p[ x ][ y ]는 다음과 같이 도출된다:
― 변수 availableN이 FALSE와 같으면 샘플 p[ x ][ y ]가 "인트라 예측에 이용할 수 없음"으로 마킹되며, 다음이 적용된다:
― 그렇지 않은 경우(변수 availableN이 TRUE임), 샘플 p[ x ][ y ]는 "인트라 예측에 이용가능"으로 마킹되고 위치( xNbCmp, yNbCmp )의 샘플은 p[ x ][ y ]에 할당된다.
― x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1인 적어도 하나의 샘플 p[ x ][ y ]이 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1, nCbW, nCbH인 샘플들 p[ x ][ y ]과 cIdx를 입력들로서 취하고, x = -1, y = -1..nCbH + nCbw - 1 및 x = 0..nCbW + nCbH - 1, y = -1인 수정된 샘플들 p[ x ][ y ]을 출력으로서 취하는 8.4.4.2절의 인트라 샘플 예측을 위한 참조 샘플 대체 프로세스가 호출된다.
6.4.1절 이웃 블록 이용가능성에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
― 현재 픽처의 상단 좌측 루마 샘플에 관한 현재 블록의 상단 좌측 샘플의 루마 위치 ( xCurr, yCurr ),
― 현재 픽처의 상단 좌측 루마 샘플에 관한 이웃 블록에 의해 커버되는 루마 위치( xNbY, yNbY ).
이 프로세스의 출력은 위치 ( xNbY, yNbY )를 커버하는 이웃 블록의 이용가능성이며, availableN으로 표기된다.
이웃 블록 이용가능성 availableN은 다음과 같이 도출된다:
― 이웃 블록이 현재 블록과는 상이한 타일에 포함되어 있으면 availableN은 FALSE로 설정된다.
― 이웃 블록이 코딩 순서에서 현재 블록보다 이전인 경우, availableN은 FALSE로 설정된다.
상기의 예에서 알 수 있는 바와 같이, 6.4.1절 '이웃 블록 이용가능성에 대한 도출 프로세스'는 인트라 참조 샘플 도출에 이용될 수 있다. 동일하거나 유사한 프로세스는 패딩 프로세스 동안의 이용가능성 체크일 수 있다. 이것은 유리하게도 2개의 모듈들 사이의 로직 재사용으로 인해 구현 비용을 절감한다. 다음과 같이 명시된 패딩 프로세스의 예시적인 로직이 아래에 있다:
이 프로세스에 대한 입력들은 다음과 같다 :
― 현재 픽처의 상단 좌측 샘플에 관한 현재 루마 블록의 상단 좌측 샘플을 명시하는 위치 ( xCb, yCb ),
― 현재 루마 코딩 블록의 폭과 높이를 명시하는 2개의 변수 nCbW 및 nCbH,
― 현재 블록의 복원된 루마 샘플들을 명시하는 어레이 recSamples,
x = -1..nCbW, y = -1..nCbH인 현재 블록 recSamplesPad[ x ][ y ]의 패딩된 복원된 루마 샘플들의 출력 어레이는 다음과 같이 도출된다:
0 ≤ x ≤ nCbW-1 및 0 ≤ y ≤ nCbH-1일 때, 다음이 적용된다:
recSamplesPad[ x ][ y ] = recSamples[ x ][ y ]
그외의 경우,
― 6.4.1절에 명시된 z-스캔 순서의 블록에 대한 이용가능성 도출 프로세스는, ( xCb, yCb )로 설정된 현재 루마 위치 ( xCurr, yCurr )와 ( xCb + x, yCb + y )로 설정된 이웃 루마 위치(xNbY, yNbY)를 입력들로서 취하여 호출되고, 출력은 availableN에 할당된다.
― 변수 dx는 0으로 설정되고 변수 dy는 0으로 설정되며,
― x == -1이고 availableN이 FALSE인 경우, dx = 1,
― x == nCbW이고 availableN이 FALSE인 경우 dx = -1,
― y == -1이고 availableN이 FALSE인 경우, dy = 1,
― y == nCbH이고 availableN이 FALSE인 경우, dy = -1,
recSamplesPad[ x ][ y ] = recSamples[ x + dx ][ y + dy ]
여기서 위치 x < 0 또는 x >= nCbW 또는 y < 0 또는 y >= nCbH의 샘플들은 이웃 블록들에 속하고, 이용가능성 도출 프로세스는, 예를 들어, 블록 코딩 순서, 동일한 슬라이스, 타일, 타일 그룹에 속하는 현재 및 이웃 블록들, 픽처 경계 너머의 이웃 블록의 위치에 기초하여 현재 블록에 대해 이웃 블록이 이용가능한지를 정의한다. "availableN"은 대응하는 이웃 블록의 이용가능성을 나타낸다. 변수 dx 및 dy는, 패딩 영역 내의 이웃 샘플들이 이용가능하지 않을 때(availableN=false) 패딩 영역 내의 픽셀 위치들의 패딩에 이용되는 현재 블록으로부터의 샘플들을 명시하는데 이용된다.
예를 들어, x == -1이면, 현재 블록의 좌측이 패딩된다. 좌측에 대해 availableN이 FALSE이면, dx는 1로 설정된다(dx=1). 그 다음, 값이 -1인 x의 recSamplesPad[ -1 ][ y ], 즉, 현재 블록의 좌측에 있는 패딩 영역에는, 현재 블록으로부터의 샘플들, 이른바, recSamples[ 0 ][ y + dy ], 즉, 첫 번째 수직 라인의, 즉, 현재 블록의 좌측 경계 상의, 현재 블록으로부터의 샘플들이 할당된다.
마찬가지로, x == nCbW일 때 dx = -1이고, 현재 블록이 우측에서 확장된다. 특히, (우측에서 현재 블록과 이웃하는) nCbW번째 라인은, 현재 블록의 마지막 라인이며 현재 블록의 우측 경계로부터의 샘플들을 포함하는 (nCbW-1)번째 라인으로부터의 샘플들로 패딩된다.
y == -1이면 dy = 1이고, 현재 블록이 그 상단 측에서 확장된다. 특히, (상단에서 현재 블록과 이웃하는) (-1)번째 라인은, 현재 블록의 첫 번째 라인이며 현재 블록의 상단 경계로부터의 샘플들을 포함하는 0번째 라인으로부터의 샘플들로 패딩된다.
y == nCbH이면 dy = -1이고, 현재 블록이 그 하단 측에서 확장된다. 특히, (하단에서 현재 블록과 이웃하는) (nCbH)번째 라인은, 현재 블록의 마지막 라인이며 현재 블록의 하단 경계로부터의 샘플들을 포함하는 (nCbH-1)번째 라인으로부터의 샘플들로 패딩된다.
인접 블록으로부터의 특정한 샘플이 이용가능한 때(availableN=true), 변수 dx 및 dx는 초기화될 때처럼 0으로 유지된다. 그리고, 방정식 recSamplesPad[ x ][ y ] = recSamples[ x + dx ][ y + dy ]을 이용하여, x < 0 및 x >= nCbW 및 y < 0 및 y >= nCbH에 대해, 인접 블록들에 대한 샘플들이 취해진다.
다시 말해서, 확장된(복원된) 블록의 획득은, 현재의 복원된 블록의 각각의 측면(좌측, 우측, 상단, 하단)에서: 이웃 복원된 블록이 이용가능한 경우 상기 측면(좌측, 우측, 상단, 하단)에서 현재의 복원된 블록에 인접한 상기 이웃 복원된 블록으로부터의 이웃 복원된 샘플들, 또는 그렇지 않으면, 현재의 복원된 블록으로부터 가장 가까운 샘플들을 포함하도록 현재의 (복원된) 블록을 확장하는 것을 포함한다.
본 개시내용은 위에서 설명된 상세한 예시적인 구현으로 제한되지 않는다는 점에 유의한다. 특히, 예시적인 변수들 및 조건들은 상세한 예로서 역할할 뿐이다. 예를 들어, 체크는 다른 추가적인 또는 대안적인 조건들에 기초할 수 있다. 예를 들어, 체크는 다른 추가적인 또는 대안적인 변수들 및 파라미터들 기초할 수 있다. 더욱이, 본 개시내용은 코덱의 일부 특정한 파라미터들에 맞게 적합화될 수 있는 임의의 방식으로 이용가능성의 도출을 구현할 수 있다.
예를 들어, 블록 코딩 순서에 기초하여 현재 블록에 대해 대응하는 이웃 블록이 이용가능한지가 결정된다. 또 다른 예에서, 현재 블록과 이웃 블록들이 동일한 슬라이스, 타일, 타일 그룹에 속하는 경우 현재 블록에 대해 대응하는 이웃 블록이 이용가능하다. 또 다른 예에서, 이웃 블록의 위치가 픽처 경계를 넘어선 경우 현재 블록에 대해 대응하는 이웃 블록이 이용가능하지 않다.
인코딩 및 디코딩 양쪽 모두가 블록들에 복원을 적용하기 때문에, 블록 코딩 순서는 블록 복원 순서로서 간주될 수 있는 블록 인코딩 및/또는 블록 디코딩 순서로서 간주될 수 있다. 위에서 언급된 바와 같이, 블록 복원 순서는, 블록 스캔 순서, 즉, 픽처의 블록들이 처리(인코딩, 디코딩, 복원)를 위해 스캔되는 순서에 대응한다.
본 개시내용의 일부 구현에서, 패딩 프로세스에 대한 이웃 샘플들 이용가능성 체크는 인터 및 인트라 블록들의 필터링에 대해 상이할 수 있다. 인터 블록들의 경우, 이용가능한 샘플들이 인트라 또는 인터 예측된 블록들에 속하는지를 추가로 체크할 수 있다. 샘플들이 인터 예측된 블록들에 속하는 경우, 샘플들은 패딩에 이용될 수 있고, 그렇지 않으면 패딩에 이용될 수 없다. 이것은, 상이한 운영 메모리를 이용하여 상이한 파이프라인들에서 인트라 및 인터 블록들이 복원될 때 일부 하드웨어 구현에 대해 유리할 수 있다. 인터 블록 복원후 필터링 동안에 인터 블록들로부터만 나오는 이웃 샘플들을 이용하는 것은, 상이한 파이프라인들 사이의 종속성을 피할 수 있으므로, 로직이 간소화되고 전체 처리 파이프라인을 가속한다.
인트라 예측을 수행하기 위해, 최신 디코더들은 대개 인트라 예측을 위한 소스로서 이용되는 인트라 참조 샘플 도출 유닛(또는 프로세스)을 포함한다. 인트라 참조 샘플 도출 유닛(또는 프로세스)은 (현재 블록에 인접하거나, 예를 들어 복수의 참조 라인 예측 기술에서와 같이 훨씬 더 멀리 떨어진) 이웃 샘플들의 이용가능성의 체크를 수행하는 로직을 포함할 수 있다. 샘플이 이용가능하다면, 그 샘플은 참조 샘플들 내에 포함된다. 그렇지 않으면, 그 샘플은 이웃 이용가능 샘플로 대체된다. 일부 유리한 구현에서, 필터링을 위한 패딩 프로세스는 도 9에 나타낸 바와 같이 인트라 참조 샘플 도출 유닛(또는 프로세스)의 결과들을 재사용할 수 있다. 이것은 인트라 예측과 필터 패딩 양쪽 모두에 대해 동일한 도출 로직의 이용을 허용하여 구현 비용을 감소시킨다.
도 9는 본 개시내용의 한 실시예를 나타내는 블록도이다. 특히, 도 9는 인트라 예측 유닛(모듈)(930)을 도시한다. 인트라 예측 유닛(930)은, 예를 들어, 도 1의 154, 도 2의 254, 도 10의 1054, 및/또는 도 11의 1154로서 구현될 수 있다. 인트라 예측 유닛(930)은 참조 샘플 도출 유닛(모듈)(910) 및 예측 도출 유닛(920)을 포함한다. 특히, 이전에 복원된 블록(901)은 참조 샘플 도출 유닛(910)에 입력된다. 이 유닛은 참조 샘플들(935)을 도출/결정하도록 구성된다. 참조 샘플들(935)은, 예측 도출 유닛(920)에 의해 현재 블록에 대한 예측을 도출하는데 이용될 수 있는 샘플들이다. 그러면, 예측 도출 유닛(920)은 예측 블록(925)을 출력한다. 여기서 용어 "이전에 복원된 블록"(901)이란 현재 블록을 예측하는데 이용되고 이용가능한 블록(전형적으로는, 현재 블록의 이웃 블록)을 지칭한다는 점에 유의한다. 더 구체적으로, 이전에 복원된 블록은 현재 블록의 복원 이전(및 예측 이전)에 복원되었다.
이 예시적인 실시예들에서, 예측 도출 유닛(920)에 대해 도출된 참조 샘플들(935)은 재사용된다, 즉, 패딩 유닛(940)에 전달된다. 패딩 유닛(940)에 대한 또 다른 입력은 (현재의) 복원된 블록(903)이다. 현재의 복원된 블록은, 예를 들어, 인트라 예측(920)에 의해 복원된 현재 블록의 샘플들을 포함한다. 패딩 유닛은 참조 샘플들(935)을 포함하도록 현재의 복원된 블록(903)을 확장한다. 그 다음, 확장된 복원된 블록(945)은 필터 처리 유닛/모듈(950)에 의한 필터링을 위해 제공된다. 필터링 처리(950)의 출력은 필터링된 복원된 블록(955)이다.
필터링 처리 모듈(950) 및 패딩 유닛(940) 양쪽 모두는 필터 유닛/모듈(960)의 일부로서 간주될 수 있다. 본 개시내용에서, 필터 유닛/모듈(960)은 필터(120, 220, 1018, 1118)에 대응할 수 있고, 필터(120, 220, 1018, 1118)의 구조는 전술된 예시적인 구현을 포함하지만 이것으로 제한되는 것은 아니다.
아래는 6.4.1절('이웃 블록 이용가능성 체크를 위한 도출 프로세스') 및 8.4.4.2절(이용가능하지 않은 샘플들에 대한 '참조 샘플 대체 프로세스')을 포함하는 인트라 참조 샘플(p[ x ][ y ]) 도출 프로세스의 한 예이며, 다음과 같다:
8.4.4.2절 인트라 샘플 예측을 위한 참조 샘플 대체 프로세스
……
sps_suco_flag가 1이면, 다음이 적용된다:
x = -1, y = -1..nCbH + nCbW - 1, x = 0..nCbW + nCbH - 1, y = -1, x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인, 복원후 필터링 프로세스 이후에 및/또는 인루프 필터 프로세스 이전에 구성된 샘플들인 nCbW * 3 + nCbH * 4 + 2 이웃 샘플들 p[ x ][ y ]은 다음과 같이 도출된다:
― 이웃 위치 ( xNbCmp, yNbCmp )는 다음과 같이 명시된다:
( xNbCmp, yNbCmp ) = ( xCbCmp + x, yCbCmp + y ) (8-7)
― 현재 루마 위치 ( xCbY, yCbY )와 이웃 루마 위치 ( xNbY, yNbY )는 다음과 같이 도출된다:
( xCbY, yCbY ) = ( cIdx = = 0 ) ? ( xCbCmp, yCbCmp ) : ( xCbCmp * SubWidthC, yCbCmp * SubHeightC )
(8-8)
( xNbY, yNbY ) = ( cIdx = = 0 ) ? ( xNbCmp, yNbCmp ) : ( xNbCmp * SubWidthC, yNbCmp * SubHeightC )
(8-9)
― 6.4.1절에 명시된 z-스캔 순서의 블록에 대한 이용가능성 도출 프로세스는, ( xCbY, yCbY )로 설정된 현재 루마 위치 ( xCurr, yCurr )와 이웃 루마 위치(xNbY, yNbY)를 입력들로서 취하여 호출되고, 출력은 availableN에 할당된다.
― 각각의 샘플 p[ x ][ y ]는 다음과 같이 도출된다:
― 변수 availableN이 FALSE와 같으면 샘플 p[ x ][ y ]가 "인트라 예측에 이용할 수 없음"으로 마킹되며, 다음이 적용된다:
― 그렇지 않은 경우(변수 availableN이 TRUE임), 샘플 p[ x ][ y ]는 "인트라 예측에 이용가능"으로 마킹되고 위치( xNbCmp, yNbCmp )의 샘플은 p[ x ][ y ]에 할당된다.
― x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 적어도 하나의 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로 마킹될 때, x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1, nCbW, nCbH인 샘플들 p[ x ][ y ]와 cIdx를 입력들로서 취하고 x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 수정된 샘플들 p[ x ][ y ]을 출력으로서 취하는 8.4.4.2절의 인트라 샘플 예측에 대한 참조 샘플 대체 프로세스가 호출된다.
그렇지 않고, sps_suco_flag가 0이면, 다음이 적용된다:
x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1인, 인루프 필터링 프로세스 이전에 구성된 샘플들인 nCbW * 2 + nCbH * 2 + 1 이웃 샘플들 p[ x ][ y ]은 다음과 같이 도출된다:
― 이웃 위치 ( xNbCmp, yNbCmp )는 다음과 같이 명시된다:
( xNbCmp, yNbCmp ) = ( xCbCmp + x, yCbCmp + y ) (8-10)
― 현재 루마 위치 ( xCbY, yCbY )와 이웃 루마 위치 ( xNbY, yNbY )는 다음과 같이 도출된다:
( xCbY, yCbY ) = ( cIdx = = 0 ) ? ( xCbCmp, yCbCmp ) : ( xCbCmp * SubWidthC, yCbCmp * SubHeightC )
(8-11)
( xNbY, yNbY ) = ( cIdx = = 0 ) ? ( xNbCmp, yNbCmp ) : ( xNbCmp * SubWidthC, yNbCmp * SubHeightC )
(8-12)
― 6.4.1절에 명시된 z-스캔 순서의 블록에 대한 이용가능성 도출 프로세스는, ( xCbY, yCbY )로 설정된 현재 루마 위치 ( xCurr, yCurr )와 이웃 루마 위치(xNbY, yNbY)를 입력들로서 취하여 호출되고, 출력은 availableN에 할당된다.
― 각각의 샘플 p[ x ][ y ]는 다음과 같이 도출된다:
― 변수 availableN이 FALSE와 같으면 샘플 p[ x ][ y ]가 "인트라 예측에 이용할 수 없음"으로 마킹되며, 다음이 적용된다:
― 그렇지 않은 경우(변수 availableN이 TRUE임), 샘플 p[ x ][ y ]는 "인트라 예측에 이용가능"으로 마킹되고 위치( xNbCmp, yNbCmp )의 샘플은 p[ x ][ y ]에 할당된다.
― x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1인 적어도 하나의 샘플 p[ x ][ y ]이 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1, nCbW, nCbH인 샘플들 p[ x ][ y ]과 cIdx를 입력들로서 취하고, x = -1, y = -1..nCbH + nCbw - 1 및 x = 0..nCbW + nCbH - 1, y = -1인 수정된 샘플들 p[ x ][ y ]을 출력으로서 취하는 8.4.4.2절의 인트라 샘플 예측을 위한 참조 샘플 대체 프로세스가 호출된다.
6.4.1절 이웃 블록 이용가능성에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
― 현재 픽처의 상단 좌측 루마 샘플에 관한 현재 블록의 상단 좌측 샘플의 루마 위치 ( xCurr, yCurr ),
― 현재 픽처의 상단 좌측 루마 샘플에 관한 이웃 블록에 의해 커버되는 루마 위치( xNbY, yNbY ).
이 프로세스의 출력은 위치 ( xNbY, yNbY )를 커버하는 이웃 블록의 이용가능성이며, availableN으로 표기된다.
이웃 블록 이용가능성 availableN은 다음과 같이 도출된다:
― 이웃 블록이 현재 블록과는 상이한 타일에 포함되어 있으면 availableN은 FALSE로 설정된다.
― 이웃 블록이 코딩 순서에서 현재 블록보다 이전인 경우, availableN은 FALSE로 설정된다.
8.4.4.2절 인트라 샘플 예측을 위한 참조 샘플 대체 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
인트라 샘플 예측에 대해 x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1이고, sps_suco_flag가 1인 경우 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 참조 샘플들 p[ x ][ y ],
― 현재 코딩 블록의 폭과 높이를 명시하는 변수들 nCbW 및 nCbH,
― 현재 코딩 블록의 색상 성분을 명시하는 변수 cIdx.
이 프로세스의 출력들은, 인트라 샘플 예측에 대해 x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1이고, sps_suco_flag가 1인 경우 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 수정된 참조 샘플들 p[ x ][ y ]이다.
변수 bitDepth는 다음과 같이 도출된다:
― cIdx가 0이면, bitDepth는 BitDepthY로 설정된다.
― 그렇지 않으면, 변수 bitDepth는 BitDepthC로 설정된다.
sps_suco_flag가 1이면, 다음이 적용된다:
x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 샘플들 p[ x ][ y ]의 값들은 다음과 같은 수정된다:
x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1 및 x = nCbW, y = -1..nCbH + nCbW - 1 및 x = -nCbH..-1, y = -1인 모든 샘플 p[ x ][ y ]이 "인트라 예측에 대해 이용가능하지 않음"으로서 마킹된다면, 모든 샘플 p[ x ][ y ]의 값들에 대해 값 1 << ( bitDepth - 1 )로 대체된다.
― 그렇지 않으면(모두는 아닌 적어도 하나의 샘플 p[ x ][ y ]이 "인트라 예측에 이용가능하지 않음"으로서 마킹됨), 다음과 같은 순서화된 단계들이 적용된다:
1. p[ 0 ][ -1 ]이 "인트라 예측에 이용가능하지 않음"으로서 마킹된다면, x = -nCbH..nCbW + nCbH - 1, y = -1인 샘플들 p[ x ][ y ]의 값들에 대해 값 1 << (bitDepth - 1 )으로 대체된다.
2. 그렇지 않으면(p[ 0 ][ -1 ]이 "인트라 예측에 이용가능"으로서 마킹됨), 다음이 적용된다:
― x = nCbW, y = -1에서 시작하여 x = nCbW + nCbH - 1, y = -1까지 순차적으로 검색한다. 일단 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 검색이 종료되고 p[ x - 1 ][ y ]의 값이 p[ x ][ y ]부터 p[ nCbW + nCbH - 1 ][ y ]까지 할당된다.
― p[ -1 ][ -1 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = -nCbH..-1, y = -1인 샘플들 p[ x ][ y ]의 값들에 대해 값 p[ 0 ][ -1 ]로 대체된다.
― 그렇지 않으면(p[ -1 ][ -1 ]이 "인트라 예측에 이용가능함"으로서 마킹됨) x = -1, y = -1에서 시작하여 x = -nCbH, y = -1까지 순차적으로 검색한다. 일단 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 검색이 종료되고 p[ x + 1 ][ y ]의 값이 [ x ][ y ]부터 p[ -nCbH ][ y ]까지 할당된다.
3. p[ -1 ][ 0 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 다음이 적용된다:
― p[ -1 ][ -1 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = -1, y = -1..nCbH + nCbW - 1인 샘플들 p[ x ][ y ]의 값들에 대해 값 1 << (bitDepth - 1 )로 대체된다.
― 그렇지 않으면, x = -1, y = -1..nCbH + nCbW - 1인 샘플들 p[ x ][ y ]의 값들에 대해 p[ -1 ][ -1 ]로 대체된다.
4. 그렇지 않으면(p[ -1 ][ 0 ]이 "인트라 예측에 이용가능함"으로서 마킹됨) x = -1, y = 0에서 시작하여 x = -1, y = nCbH + nCbW - 1까지 순차적으로 검색한다. 일단 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 검색이 종료되고, p[ x ][ y ]부터 p[ x ][ nCbH + nCbW - 1 ]까지 p[ x ][ y - 1 ]의 값이 할당된다.
5. p[ nCbW ][ 0 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 다음이 적용된다:
― p[ nCbW ][ -1 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = nCbW, y = -1..nCbH + nCbW - 1인 샘플들 p[ x ][ y ]의 값들에 대해 값 1 << ( bitDepth - 1 )로 대체된다.
― 그렇지 않으면, x = nCbW, y = -1..nCbH + nCbW - 1인 샘플들 p[ x ][ y ]의 값들에 대해 p[ nCbW ][ -1 ]로 대체된다.
6. 그렇지 않으면(p[ nCbW ][ 0 ]이 "인트라 예측에 이용가능함"으로서 마킹됨), x = nCbW, y = 0부터 시작하여 x = nCbW, y = nCbH + nCbW - 1까지 순차적으로 검색한다. 일단 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 검색이 종료되고, p[ x ][ y ]부터 p[ x ][ nCbH + nCbW - 1 ]까지 p[ x ][ y - 1 ]의 값이 할당된다.
그렇지 않고, sps_suco_flag가 0이면, 다음이 적용된다:
x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1인 샘플들 p[ x ][ y ]의 값들은 다음과 같이 수정된다 :
x = -1, y = -1..nCbH + nCbW - 1 및 x = 0..nCbW + nCbH - 1, y = -1인 모든 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 모든 샘플 p[ x ][ y ]의 값들에 대해 값 1 << ( bitDepth - 1 )로 대체된다.
― 그렇지 않으면(모두는 아닌 적어도 하나의 샘플 p[ x ][ y ]이 "인트라 예측에 이용가능하지 않음"으로서 마킹됨), 다음과 같은 순서화된 단계들이 적용된다:
1. p[ 0 ][ -1 ]이 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = 0..nCbW + nCbH - 1, y = -1인 샘플들 p[ x ][ y ]의 값들에 대해 값 1 << (bitDepth - 1 )로 대체된다.
2. 그렇지 않으면(p[ 0 ][ -1 ]이 "인트라 예측에 이용가능함"으로서 마킹됨), x = nCbW, y = - 1부터 시작하여 x = nCbW + nCbH - 1, y = - 1까지 순차적으로 검색한다. 일단 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 검색이 종료되고 p[ x - 1 ][ y ]의 값이 p[ x ][ y ]부터 p[ nCbW + nCbH - 1 ][ y ]까지 할당된다.
3. p[ -1 ][ 0 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 다음이 적용된다:
― p[ -1 ][ -1 ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, x = -1, y = -1..nCbH + nCbW - 1인 샘플들 p[ x ][ y ]의 값들에 대해 값 1 << (bitDepth - 1 )로 대체된다.
― 그렇지 않으면, x = -1, y = -1..nCbH + nCbW - 1인 샘플들 p[ x ][ y ]의 값들에 대해 p[ -1 ][ -1 ]로 대체된다.
4. 그렇지 않으면, x = -1, y = 0부터 시작하여 x = -1, y = nCbH + nCbW - 1까지 순차적으로 검색한다. 일단 샘플 p[ x ][ y ]가 "인트라 예측에 이용가능하지 않음"으로서 마킹되면, 검색이 종료되고, p[ x ][ y ]부터 p[ x ][ nCbH + nCbW - 1 ]까지 p[ x ][ y - 1 ]의 값이 할당된다.
위의 예에서 알 수 있는 바와 같이, 인트라 참조 샘플(p[ x ][ y ]) 도출 프로세스는 상당히 복잡할 수 있다. 따라서, 현재 블록의 패딩을 채우기 위해 이 프로세스의 출력(p[ x ][ y ])을 이용하는 것은, 2개의 모듈간의 로직 재사용으로 인해 유리하게도 구현 비용을 절약할 수 있다.
본 개시내용에서, 이전에 복원된 인접 블록이란, 예를 들어, 현재 블록과 경계를 공유하는, 가장 가까운 이웃을 의미한다는 점에 유의한다. 이전에 복원된 것이란, 현재 블록을 복원하기 전에 복원된 것을 의미한다.
도 5는 한 실시예에 따른 대응하는 인루프 필터링 방법(500)의 단계들을 나타내는 흐름도를 도시한다. 복원된 블록은 복수의 픽셀을 포함한다. 방법(500)은 다음과 같은 단계들을 포함한다: 미리정의된 스캔 템플릿에 따라 현재 픽셀 및 그 이웃 픽셀들을 선형 버퍼에 로딩하는 단계(502); 선형 버퍼 내의 픽셀들에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하는 단계(504); 각각의 스펙트럼 성분에 이득 계수를 곱함으로써 필터링된 스펙트럼 성분을 획득하는 단계(506), ―이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함―; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀을 획득하는 단계(508); 및 이전 처리 단계들에서 추정된 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하는 단계(510). 방법(500)은 도 1에 도시된 인코딩 장치 및 도 2에 도시된 디코딩 장치에 의해 수행될 수 있다. 도 3a 또는 도 3b의 상세 정보(300, 300')는 도 5에 도시된 바와 같이 방법(500)에도 적용된다.
도 13은 한 실시예에 따른 대응하는(인루프 또는 포스트) 필터링 방법(1300)의 단계들을 나타내는 흐름도를 도시한다. 복원된 블록은 복수의 픽셀(샘플)을 포함한다. 방법(1300)은 다음과 같은 단계들을 포함한다: 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하는 단계(1310); 미리정의된 스캔 템플릿에 따라 확장된 복원된 블록의 현재 픽셀 및 현재 픽셀의 그 이웃 픽셀들을 선형 버퍼에 로딩하는 단계(1320); 선형 버퍼 내의 픽셀들에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하는 단계(1330); 조회 테이블을 이용하여 필터링된 스펙트럼 성분들을 획득하는 단계(1340); 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하는 단계(1350); 및 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하는 단계(1360). 방법(1300)은 도 1 또는 도 10에 도시된 인코딩 장치 및 도 2 또는 11에 도시된 디코딩 장치에 의해 수행될 수 있다. 도 3a 또는 도 3b의 상세한 정보(300, 300')는 또한, 도 13에 도시된 방법(1300)에도 적용될 수 있다.
도 6은 다양한 실시예를 구현하는데 이용될 수 있는 장치(600)의 블록도이다. 장치(600)는 도 1 또는 도 10에 도시된 인코딩 장치 및 도 2 또는 도 11에 도시된 디코딩 장치일 수 있다. 추가적으로, 장치(600)는 설명된 요소들 중 하나 이상을 호스팅할 수 있다. 일부 실시예에서, 장치(600)는, 스피커, 마이크로폰, 마우스, 터치스크린, 키패드, 키보드, 프린터, 디스플레이 등의 하나 이상의 입력/출력 디바이스를 갖추고 있다. 장치(600)는, 하나 이상의 중앙 처리 유닛(CPU)(610), 메모리(620), 대용량 스토리지(630), 비디오 어댑터(640), 및 버스에 접속된 I/O 인터페이스(660)를 포함할 수 있다. 버스는 메모리 버스 또는 메모리 제어기, 주변기기 버스, 비디오 버스 등을 포함하는 여러 버스 아키텍쳐 유형들 중 임의의 유형의 하나 이상이다.
CPU(610)는 임의의 유형의 전자 데이터 프로세서를 가질 수 있다. 메모리(620)는, 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 동기식 DRAM(SDRAM), 판독 전용 메모리(ROM), 이들의 조합 등의 임의의 유형의 시스템 메모리이거나 이를 가질 수 있다. 한 실시예에서, 메모리(620)는, 부팅시에 이용하기 위한 ROM, 및 프로그램 실행 동안에 이용하기 위한 프로그램 및 데이터 저장을 위한 DRAM을 포함할 수 있다. 실시예에서, 메모리(620)는 비일시적이다. 대용량 스토리지(630)는, 데이터, 프로그램 및 기타 정보를 저장하고, 데이터, 프로그램 및 기타의 정보를 버스를 통해 액세스할 수 있도록 하는 임의의 유형의 저장 디바이스를 포함한다. 대용량 스토리지(630)는, 예를 들어, 솔리드 스테이트 드라이브, 하드 디스크 드라이브, 자기 디스크 드라이브, 광 디스크 드라이브 등 중에서 하나 이상을 포함한다.
비디오 어댑터(640) 및 I/O 인터페이스(660)는 외부 입력 및 출력 디바이스들을 장치(600)에 결합하는 인터페이스를 제공한다. 예를 들어, 장치(600)는 SQL 커맨드 인터페이스를 클라이언트들에 제공할 수 있다. 예시된 바와 같이, 입력 및 출력 디바이스들의 예들은, 비디오 어댑터(640)에 결합된 디스플레이(690) 및 I/O 인터페이스(660)에 결합된 마우스/키보드/프린터(670)의 임의의 조합을 포함한다. 다른 디바이스들이 장치(600)에 결합될 수 있고, 추가의 또는 더 적은 수의 인터페이스 카드가 이용될 수 있다. 예를 들어, 직렬 인터페이스 카드(미도시)는 프린터에 직렬 인터페이스를 제공하는데 이용될 수 있다.
장치(600)는 또한, Ethernet 케이블 등의 유선 링크들, 및/또는 액세스 노드 또는 하나 이상의 네트워크(680)에 대한 무선 링크를 포함하는 하나 이상의 네트워크 인터페이스(650)를 포함한다. 네트워크 인터페이스(650)는 장치(600)가 네트워크(680)를 통해 원격 유닛과 통신하는 것을 허용한다. 예를 들어, 네트워크 인터페이스(650)는 데이터베이스에 대한 통신을 제공할 수 있다. 한 실시예에서, 장치(600)는, 데이터 처리, 및 다른 처리 유닛들, 인터넷, 원격 저장 설비 등의 원격 디바이스들과의 통신을 위해 근거리 통신망 또는 광역 통신망에 결합된다.
인루프 필터의 제안된 설계는 종래의 ALF 방법에 비해 다음과 같은 이점들을 갖는다:
제안된 주파수 영역 필터는 디코더 측의 복원된 프레임으로부터 필터링 파라미터(주파수 영역 이득 계수들)를 도출하므로 필터링 파라미터들은 인코더로부터 디코더 측으로 전달될 필요가 없다.
ALF는 전송을 위한 가중된 계수들의 수를 감소시키기 위해 인코더 측의 복합 레이트 왜곡 최적화(RDO; complex rate distortion optimization)를 요구한다. 제안된 방법은 인코더 측의 복합 RDO를 요구하지 않으며(파라미터 전송 없음) 미리정의된 조건들을 충족하는 모든 블록에 적용된다.
ALF는 픽셀 영역의 선형 필터이다. 각각의 1D 스펙트럼 성분에 대한 이득 계수는 이 스펙트럼 성분 값에 의존하기 때문에 제안된 필터는 비선형이다. 이것은 비선형 처리에서 추가적인 코딩 이득의 달성을 허용한다.
ALF는 디코더 측의 범용 곱셈기를 요구한다. 제안된 방법에서, 각각의 스펙트럼 계수에 대한 이득이 1보다 작기 때문에, 필터링은 조회 테이블로서 구현될 수 있다. 따라서, 제안된 방법은 임의의 곱셈 없이 구현될 수 있다.
따라서, 필터가 제공되어 복잡성이 낮은 비디오 코딩의 효율성 향상을 허용한다.
본 개시내용의 특정한 피처 또는 양태가 수개의 구현들 또는 실시예들 중 하나에 관해서만 개시되었을 수 있지만, 이러한 피처 또는 양태는, 임의의 주어진 또는 특정한 응용에 대해 바람직하고 유리하다면 다른 구현들 또는 실시예들의 하나 이상의 다른 피처 또는 양태와 결합될 수 있다. 또한, 용어들 "~을 포함한다(include)", "~을 갖는다(have)", "~와 함께(with)" 또는 이들의 다른 변형들은, 상세한 설명 또는 청구항들에서 이용되는 한, 이러한 용어들은 "~을 포함한다(comprise)"라는 용어와 유사한 방식으로 포함적임을 의도한 것이다. 또한, 용어들 "예시적인", "예를 들어" 및 "예컨대"라는 용어들은, 최상의 또는 최적이 아니라, 단지 예를 의미한다. 용어들 "결합된" 및 "접속된" 및 그 파생어들도 이용되었을 수 있다. 이들 용어들은 직접적인 물리적 또는 전기적 접촉이든 또는 서로 직접 접촉하든 아니든 관계없이, 2개의 요소가 서로 협력하거나 상호작용한다는 것을 나타내기 위해 사용되었을 수 있다는 것을 이해해야 한다.
본 명세서에서 특정한 양태들이 예시되고 설명되었지만, 본 기술분야의 통상의 기술자라면, 본 개시내용의 범위로부터 벗어나지 않고 도시되고 특정한 양태들에 대해 다양한 대안적 및/또는 균등한 구현들로 대체할 수 있다는 것을 이해할 것이다. 본 출원은 본 명세서에서 논의된 특정한 양태들의 임의의 개조 또는 변형을 포괄하고자 한다.
이하의 청구항들 내의 요소들이 대응하는 라벨과 함께 특정한 순서로 기재되지만, 청구항 기재가 이들 요소들의 일부 또는 전부를 구현하기 위한 특정한 순서를 달리 암시하지 않는 한, 이들 요소들은 반드시 그 특정한 순서로 구현되는 것으로 제한되는 것을 의도하지 않는다.
많은 대안들, 수정들, 및 변형들이 상기 교시에 비추어 본 기술분야의 통상의 기술자에게 명백할 것이다. 물론, 본 기술분야의 통상의 기술자라면, 본 명세서에 설명된 것들 외에도 본 발명의 수많은 응용이 있다는 것을 쉽게 인식할 수 있다. 본 발명이 하나 이상의 특정한 실시예를 참조하여 설명되었지만, 본 기술분야의 통상의 기술자라면 본 발명의 범위를 벗어나지 않고 많은 변경이 이루어질 수 있다는 것을 인식한다. 따라서, 첨부된 청구항들 및 그 균등물들의 범위 내에서, 본 발명은 여기서 구체적으로 설명된 것과는 다르게 실시될 수 있다는 것을 이해해야 한다.
이하에서, 일부 예시적인 실시예 및 구현이 요약된다. 제1 예시적인 실시예에서, 비디오 인코딩 장치 또는 디코딩 장치에서 이용하기 위한 필터가 제공되고, 이 필터는 현재의 복원된 블록을 처리하도록 구성되고, 현재의 복원된 블록은 복수의 픽셀을 포함하며, 필터는 : 현재의 복원된 블록의 현재 픽셀과 현재 픽셀의 이웃 픽셀들을 미리정의된 스캔 템플릿에 따라 선형 버퍼에 로딩하고; 선형 버퍼 내의 픽셀들에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하고; 각각의 스펙트럼 성분을 이득 계수와 곱하거나 조회 테이블을 이용함으로써 필터링된 스펙트럼 성분들을 획득하고, ―이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함―; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고; 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된다.
제2 예에서, 현재의 복원된 블록은, 이전에 복원된 인접 블록들로부터의 적어도 하나의 샘플에 기초하여 획득된 적어도 하나의 샘플을 포함하는 하나 이상의 샘플에 의해 패딩된다.
제3 예에서, 패딩 샘플들은 이전에 복원된 인접 블록들로부터의 샘플들이다.
제4 예에서, 패딩 샘플들은 이전에 복원된 인접 블록들로부터의 필터링된 샘플들이다.
제5 예에서, 패딩 샘플들은 현재 이미지 블록의 인트라 예측을 위한 샘플들이다.
제6 예에서, 필터는 또한, (도 9에 나타낸 참조 샘플들 등의) 패딩 샘플들을 획득하도록 추가로 구성되며, 여기서, 패딩 샘플들은 인트라 참조 샘플 도출의 결과에 기초한다.
제7 예에서, 인트라 참조 샘플 도출은 다음을 포함한다:
이웃 복원된 샘플들의 이용가능성을 체크하고 이웃 복원된 샘플들이 이용가능한 경우 이웃 복원된 샘플들을 회수하는 단계; 및 이웃 복원된 샘플들이 이용가능하지 않은 경우 이웃 복원된 샘플들을 다른 이용가능한 이웃 샘플들로 대체하는 단계.
제8 예에서, 현재의 복원된 블록은 인트라 예측된 블록이다.
제9 예에서, 현재의 복원된 블록은 인터 예측된 블록이다.
제10 예에서, 복원된 블록은 현재의 복원된 블록들로부터의 적어도 하나의 샘플을 포함하는 샘플들에 의해 패딩된다.
제11 예에서, 현재의 복원된 블록은 인트라 예측된 블록이다.
제12 예에서, 현재의 복원된 블록은 인터 예측된 블록이다.
제13 예에서, 복원된 블록은 (이웃 샘플들 또는 참조 샘플들 등의) 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들에 의해 패딩되고 현재의 복원된 블록으로부터의 샘플들에 의해 패딩된다.
제14 예에서, 복원된 블록은 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들에 의해 좌측 및 상단 측에서 패딩된다.
제15 예에서, 복원된 블록은 현재의 복원된 블록으로부터의 샘플들에 의해 우측 및 하단 측에서 패딩된다.
제16 예에서, 복원된 블록은, 이전에 복원된 인접 블록이 이용가능할 때 적어도 하나의 이전에 복원된 인접 블록으로부터의 샘플에 기초하여 획득된 적어도 하나의 샘플에 의해 패딩되거나 및/또는
현재의 복원된 블록은, 이전에 복원된 인접 블록이 이용가능하지 않을 때, 현재의 복원된 블록으로부터의 샘플로 패딩된다.
제17 예에서, (위치 x < 0 또는 x >= nCbW 또는 y < 0 또는 y >= nCbH의 샘플들 등의) 적어도 이웃 블록에 속하는 이웃 샘플들에 대해, 다음 중 하나 이상에 기초하여 현재 블록에 대해 이웃 블록이 이용가능한지가 결정된다: 블록 코딩 순서, 동일한 픽처 그룹에 속하는 현재 블록 및 이웃 블록 ―여기서, 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는 픽처 경계를 넘어선 이웃 블록의 위치.
제18 예에서, 현재의 복원된 블록은 인터 예측된 블록이고, 복원된 블록은 이전에 복원된 인접 블록이 인터 예측된 블록인 경우에만 이전에 복원된 인접 블록으로부터의 샘플들에 기초하여 획득된 샘플들에 의해 패딩된다.
제19 예에서, 모든 필터링된 및 대응하는 필터링되지 않은 픽셀들 사이의 차이들은 미리정의된 스캔 템플릿에 따라 누적 버퍼에 추가되고, 여기서, 누적 버퍼는 블록 내의 추가될 픽셀 값들의 최대 수로 곱해진 필터링되지 않은 픽셀들에 의해 초기화된다.
제20 예에서, 최종 필터링된 픽셀들은, 누적 버퍼 내의 누적 값들을 블록 내의 추가될 픽셀 값들의 최대 수로 나눈 값으로서 획득된다.
제21 예에서, 필터는 조건들에 따라 적용되며, 여기서, 조건들은 다음 중 적어도 하나를 포함한다: (i) 0이 아닌 잔차 신호를 갖는 복원된 블록; (ii) 복원된 블록의 크기; (iii) 복원된 블록의 종횡비; 또는 (iv) 복원된 블록의 예측 모드.
제22 예에서, 필터 파라미터 시그마(sigma)와 미리정의된 스캔 템플릿은 조건들에 의존한다.
제23 예에서, 1D 변환은 Hadamard 변환이다.
또 다른 예에서, 조회 테이블은 현재 블록 양자화 파라미터(Qp)에 기초하여 획득된다.
추가 예에서, 이득 계수는, 대응하는 스펙트럼 성분 및 현재 블록 양자화 파라미터(Qp)에 기초하여 획득된 필터링 파라미터에 의존하거나; 이득 계수는 대응하는 스펙트럼 성분 및 현재 블록 양자화 파라미터(Qp)에 의존한다.
제24 예시적인 실시예에서, 현재의 복원된 블록을 처리하기 위한 방법이 제공되고, 현재의 복원된 블록은 복수의 픽셀을 포함하며, 필터링 방법은 : 현재의 복원된 블록의 현재 픽셀과 현재 픽셀의 이웃 픽셀들을 미리정의된 스캔 템플릿에 따라 선형 버퍼에 로딩하는 단계; 선형 버퍼 내의 픽셀들에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하는 단계; 각각의 스펙트럼 성분을 이득 계수와 곱하거나 조회 테이블을 이용함으로써 필터링된 스펙트럼 성분들을 획득하는 단계, ―이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함―; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고; 및 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하는 단계를 포함한다.
제25 예에서, 현재의 복원된 블록은, 이전에 복원된 인접 블록들로부터의 적어도 하나의 샘플에 기초하여 획득된 적어도 하나의 샘플을 포함하는 하나 이상의 샘플에 의해 패딩된다.
제26 예에서, 패딩 샘플들은 이전에 복원된 인접 블록들로부터의 샘플들이다.
제27 예에서, 패딩 샘플들은 이전에 복원된 인접 블록들로부터의 필터링된 샘플들이다.
제28 예에서, 패딩 샘플들은 현재 이미지 블록의 인트라 예측을 위한 샘플들이다.
제29 예에서, 필터는 또한, (도 9에 나타낸 참조 샘플들 등의) 패딩 샘플들을 획득하도록 추가로 구성되며, 여기서, 패딩 샘플들은 인트라 참조 샘플 도출의 결과에 기초한다.
제30 예에서, 인트라 참조 샘플 도출은 : 이웃 복원된 샘플들의 이용가능성을 체크하고 이웃 복원된 샘플들이 이용가능한 경우 이웃 복원된 샘플들을 회수하는 단계; 이웃 복원된 샘플들이 이용가능하지 않은 경우 이웃 복원된 샘플들을 다른 이용가능한 이웃 샘플들로 대체하는 단계를 포함한다.
제31 예에서, 현재의 복원된 블록은 인트라 예측된 블록이다.
제32 예에서, 현재의 복원된 블록은 인터 예측된 블록이다.
제33 예에서, 복원된 블록은 현재의 복원된 블록들로부터의 적어도 하나의 샘플을 포함하는 샘플들에 의해 패딩된다.
제34 예에서, 현재의 복원된 블록은 인트라 예측된 블록이다.
제35 예에서, 현재의 복원된 블록은 인터 예측된 블록이다.
제36 예에서, 복원된 블록은 (이웃 샘플들 또는 참조 샘플들 등의) 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들에 의해 패딩되고 현재의 복원된 블록으로부터의 샘플들에 의해 패딩된다.
제37 예에서, 현재의 복원된 블록은 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들에 의해 좌측 및 상단에서 패딩된다.
제38 예에서, 현재의 복원된 블록은 현재의 복원된 블록으로부터의 샘플들에 의해 우측 및 하단 측에서 패딩된다.
제39 예에서, 현재의 복원된 블록은, 이전에 복원된 인접 블록이 이용가능할 때 적어도 하나의 이전에 복원된 인접 블록으로부터의 샘플에 기초하여 획득된 적어도 하나의 샘플에 의해 패딩되고/되거나, 현재의 복원된 블록은 이전에 복원된 인접 블록을 이용가능하지 않을 때 현재의 복원된 블록으로부터 샘플에 의해 패딩된다.
제40 예에서, (위치 x < 0 또는 x >= nCbW 또는 y < 0 또는 y >= nCbH의 샘플들 등의) 적어도 이웃 블록에 속하는 이웃 샘플들에 대해, 다음 중 하나 이상에 기초하여 현재 블록에 대해 이웃 블록이 이용가능한지가 결정된다: 블록 코딩 순서, 동일한 픽처 그룹에 속하는 현재 블록 및 이웃 블록, ―여기서, 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는 픽처 경계를 넘어선 이웃 블록의 위치.
제41 예에서, 현재의 복원된 블록은 인터 예측된 블록이고, 현재의 복원된 블록은 이전에 복원된 인접 블록이 인터 예측된 블록인 경우에만 이전에 복원된 인접 블록으로부터의 샘플들에 기초하여 획득된 샘플들에 의해 패딩된다.
제42 예에서, 모든 필터링된 및 대응하는 필터링되지 않은 픽셀들 사이의 차이들은 미리정의된 스캔 템플릿에 따라 누적 버퍼에 추가되고, 여기서, 누적 버퍼는, 필터링된 스펙트럼 성분들을 획득하기 전에 블록 내의 추가될 픽셀 최대 수로 곱해진 필터링되지 않은 픽셀들에 의해 초기화된다.
제43 예에서, 최종 필터링된 픽셀들은, 블록 내의 추가될 픽셀들의 최대 수로 나누어진 누적 버퍼 내의 누적 값들로서 획득된다; 그리고, 하나 이상의 프로세서는, 최종 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된다.
제44 예에서, 1D 변환은 Hadamard 변환이다.
또 다른 예에서, 조회 테이블은 현재 블록 양자화 파라미터(Qp)에 기초하여 획득된다.
또 다른 예에서, 이득 계수는, 대응하는 스펙트럼 성분 및 현재 블록 양자화 파라미터(Qp)에 기초하여 획득된 필터링 파라미터에 의존하거나; 이득 계수는 대응하는 스펙트럼 성분 및 현재 블록 양자화 파라미터(Qp)에 의존한다.
제45 예시적인 실시예에서, 인코딩 장치 또는 디코딩 장치에서 이용하기 위한 필터가 제공되고, 이 필터는 현재의 복원된 블록을 처리하도록 구성되고, 현재의 복원된 블록은 복수의 샘플을 포함하며, 필터는: 미리정의된 스캔 템플릿에 따라 현재 샘플 및 그 이웃 샘플들을 선형 버퍼에 로딩하고, ―이웃 샘플들은, 현재 샘플에 이웃하고 현재의 복원된 블록으로부터의 M개의 샘플을 포함하고, N개의 샘플은 현재 샘플에 이웃하고 이전에 복원된 인접 블록들로부터 나오며 N>=0ㅡ; 선형 버퍼 내의 샘플들에 대해 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하고;
각각의 스펙트럼 성분을, 이득 계수와 곱하거나 조회 테이블을 이용함으로써 필터링된 스펙트럼 성분들을 획득하고, ㅡ이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함ㅡ; 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 샘플들을 획득하고; 필터링된 샘플들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된 하나 이상의 프로세서 또는 하나 이상의 처리 회로를 포함한다.
제46 예에서는 M+N=3, 또는 M+N=8이다.
제47 예에서, N개의 샘플은 현재의 복원된 블록의 상단 측에 이웃하는 샘플들 및/또는 현재의 복원된 블록의 좌측에 이웃하는 샘플들을 포함한다.
제48 예에서, N개의 샘플은 현재의 복원된 블록의 하단 측에 이웃한 N1개의 샘플, 및/또는 현재의 복원된 블록의 우측에 이웃한 N2개의 샘플을 포함하며, N1개의 샘플은, 대응하는 하단 위치에 있고 현재의 복원된 블록으로부터 나오는 이용가능한 샘플들에 의해 패딩되고, N2개의 샘플은, 대응하는 우측 위치에 있고 현재의 복원된 블록으로부터 나오는 이용가능한 샘플들에 의해 패딩된다.
제49 예에서, 현재의 복원된 블록은, 이전에 복원된 인접 블록들로부터의 적어도 하나의 샘플에 기초하여 획득된 적어도 하나의 샘플을 포함하는 하나 이상의 샘플에 의해 패딩된다.
제50 예에서, 패딩 샘플들은 이전에 복원된 인접 블록들로부터의 샘플들이다.
제51 예에서, 패딩 샘플들은 이전에 복원된 인접 블록들로부터의 필터링된 샘플들이다.
제52 예에서, 패딩 샘플들은 현재 이미지 블록의 인트라 예측을 위한 샘플들이다.
제53 예에서, 필터는 또한, (도 9에 나타낸 참조 샘플들 등의) 패딩 샘플들을 획득하도록 추가로 구성되며, 여기서, 패딩 샘플들은 인트라 참조 샘플 도출의 결과에 기초한다.
제54 예에서, 인트라 참조 샘플 도출은 다음을 포함한다:
이웃 복원된 샘플들의 이용가능성을 체크하고 이웃 복원된 샘플들이 이용가능한 경우 이웃 복원된 샘플들을 회수하는 단계; 이웃 복원된 샘플들이 이용가능하지 않은 경우 이웃 복원된 샘플들을 다른 이용가능한 이웃 샘플들로 대체하는 단계.
제55 예에서, 현재의 복원된 블록은 인트라 예측 블록이거나 현재의 복원된 블록은 인터 예측 블록이다.
제57 예에서, 현재의 복원된 블록은 현재의 복원된 블록들로부터의 적어도 하나의 샘플을 포함하는 샘플들에 의해 패딩된다.
제58 예에서, 현재의 복원된 블록은 인트라 예측 블록이거나 현재의 복원된 블록은 인터 예측 블록이다.
제60 예에서, 현재의 복원된 블록은 (이웃 샘플들 또는 참조 샘플들 등의) 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들에 의해 패딩되고 현재의 복원된 블록으로부터의 샘플들에 의해 패딩된다.
제61 예에서, 현재의 복원된 블록은 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들에 의해 좌측 및 상단 측에서 패딩된다.
제62 예에서, 현재의 복원된 블록은 현재의 복원된 블록으로부터의 샘플들에 의해 우측 및 하단 측에서 패딩된다.
제63 예에서, 현재의 복원된 블록은 이전에 복원된 인접 블록이 이용가능할 때 적어도 하나의 이전에 복원된 인접 블록으로부터의 샘플에 기초하여 획득된 적어도 하나의 샘플에 의해 패딩되고/되거나, 현재의 복원된 블록은 이전에 복원된 인접 블록을 이용가능하지 않을 때 현재의 복원된 블록으로부터 샘플에 의해 패딩된다.
제64 예에서, (위치 x < 0 또는 x >= nCbW 또는 y < 0 또는 y >= nCbH의 샘플들 등의) 적어도 이웃 블록에 속하는 이웃 샘플들에 대해, 다음 중 하나 이상에 기초하여 현재 블록에 대해 이웃 블록이 이용가능한지가 결정된다: 블록 코딩 순서, 동일한 픽처 그룹에 속하는 현재 블록 및 이웃 블록 ―여기서, 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는 픽처 경계를 넘어선 이웃 블록의 위치.
제65 예에서, 현재의 복원된 블록은 인터 예측된 블록이고, 현재의 복원된 블록은 이전에 복원된 인접 블록이 인터 예측된 블록인 경우에만 이전에 복원된 인접 블록으로부터의 샘플들에 기초하여 획득된 샘플들에 의해 패딩된다.
또 다른 예에서, 조회 테이블은 현재 블록 양자화 파라미터(Qp)에 기초하여 획득된다.
또 다른 예에서, 이득 계수는, 대응하는 스펙트럼 성분 및 현재 블록 양자화 파라미터(Qp)에 기초하여 획득된 필터링 파라미터에 의존하거나; 이득 계수는 대응하는 스펙트럼 성분 및 현재 블록 양자화 파라미터(Qp)에 의존한다.
제66 예시적인 실시예에서, 입력 비디오 스트림으로부터 현재 블록을 인코딩하기 위한 인코딩 장치가 제공되고, 여기서, 인코딩 장치는 상기 실시예들 및 예들 중 임의의 것에 따른 필터를 포함한다.
제67 예시적인 실시예에서, 수신된 비트스트림으로부터 현재의 복원된 블록을 디코딩하기 위한 디코딩 장치가 제공되고, 여기서 디코딩 장치는 상기 실시예들 및 예들 중 임의의 것에 따른 필터를 포함한다.
제68 예시적인 실시예에 따르면, 컴퓨터 또는 프로세서 상에서 실행될 때 상기 언급된 실시예들 및 예들 중 임의의 것의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품이 제공된다.
본 개시내용은, 필터, 필터를 이용한 인코더 및 디코더, 필터링 방법 및 대응하는 프로그램뿐만 아니라, 이 필터링 방법 또는 필터를 이용한 인코딩 및 디코딩에 관한 것이다. 필터링은, 적어도 현재의 복원된 블록으로부터의 패딩 샘플들을 포함하도록 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하는 것을 포함한다. 패딩 후, 확장된 복원된 블록의 현재 픽셀과 그 이웃 픽셀들은 선형 버퍼에 로딩되고 1D 변환으로 변환된다. 필터링은 조회 테이블을 이용하여 주파수 영역에서 수행되고 필터링된 픽셀들은 다시 변환된다.
다음은, 전술된 실시예들에 도시된 인코딩 방법 및 디코딩 방법의 적용 및 이를 이용하는 시스템에 대한 설명이다.
도 14는 콘텐츠 배포 서비스를 실현하기 위한 콘텐츠 공급 시스템(3100)을 나타내는 블록도이다. 이 콘텐츠 공급 시스템(3100)은, 캡처 디바이스(3102), 단말 디바이스(3106), 및 선택사항으로서 디스플레이(3126)를 포함한다. 캡처 디바이스(3102)는 통신 링크(3104)를 통해 단말 디바이스(3106)와 통신한다. 통신 링크는 전술된 통신 채널(13)을 포함할 수 있다. 통신 링크(3104)는, WIFI, Ethernet, 케이블, 무선(3G/4G/5G), USB, 또는 이들의 임의의 종류의 조합 등을 포함하지만, 이것으로 제한되는 것은 아니다.
캡처 디바이스(3102)는 데이터를 생성하고, 상기의 실시예들에 도시된 인코딩 방법에 의해 데이터를 인코딩할 수 있다. 대안으로서, 캡처 디바이스(3102)는 스트리밍 서버(도면들에 도시되지 않음)에 데이터를 배포할 수 있고, 서버는 데이터를 인코딩하고 인코딩된 데이터를 단말 디바이스(3106)에 전송한다. 캡처 디바이스(3102)는, 카메라, 스마트폰 또는 패드, 컴퓨터 또는 랩탑, 화상 회의 시스템, PDA, 차량 탑재형 디바이스, 또는 이들 중 임의의 것의 조합 등을 포함하지만, 이것으로 제한되는 것은 아니다. 예를 들어, 캡처 디바이스(3102)는 전술된 소스 디바이스(12)를 포함할 수 있다. 데이터가 비디오를 포함하는 경우, 캡처 디바이스(3102)에 포함된 비디오 인코더(20)는 실제로 비디오 인코딩 처리를 수행할 수 있다. 데이터가 오디오(즉, 음성)를 포함하는 경우, 캡처 디바이스(3102)에 포함된 오디오 인코더는 실제로 오디오 인코딩 처리를 수행할 수 있다. 일부 실제의 시나리오의 경우, 캡처 디바이스(3102)는 인코딩된 비디오 및 오디오 데이터를 함께 멀티플렉싱하여 배포한다. 다른 실제 시나리오들의 경우, 예를 들어 화상 회의 시스템에서, 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터는 멀티플렉싱되지 않는다. 캡처 디바이스(3102)는 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터를 단말 디바이스(3106)에 별개로 배포한다.
콘텐츠 공급 시스템(3100)에서, 단말 디바이스(310)는 인코딩된 데이터를 수신하고 재생한다. 단말 디바이스(3106)는, 스마트폰 또는 패드(3108), 컴퓨터 또는 랩탑(3110), 네트워크 비디오 레코더(NVR)/디지털 비디오 레코더(DVR)(3112), TV(3114), 셋탑 박스(STB)(3116), 화상 회의 시스템(3118), 비디오 감시 시스템(3120), 개인 휴대 정보 단말기(PDA)(3122), 차량 탑재형 디바이스(3124), 또는 이들 중 임의의 것의 조합, 또는 전술된 인코딩된 데이터를 디코딩할 수 있는 기타의 것 등의, 데이터 수신 및 복구 기능을 갖춘 디바이스일 수 있다. 예를 들어, 단말 디바이스(3106)는 전술된 목적지 디바이스(14)를 포함할 수 있다. 인코딩된 데이터가 비디오를 포함하는 경우, 단말 디바이스에 포함된 비디오 디코더(30)는 우선적으로 비디오 디코딩을 수행한다. 인코딩된 데이터가 오디오를 포함하는 경우, 단말 디바이스에 포함된 오디오 디코더는 우선적으로 오디오 디코딩 처리를 수행한다.
디스플레이를 갖춘 단말 디바이스, 예를 들어, 스마트폰 또는 패드(3108), 컴퓨터 또는 랩탑(3110), 네트워크 비디오 레코더(NVR)/디지털 비디오 레코더(DVR)(3112), TV(3114), 개인 휴대 정보 단말기(PDA)(3122) 또는 차량 장착형 디바이스(3124)의 경우, 단말 디바이스는 디코딩된 데이터를 자신의 디스플레이에 공급할 수 있다. 디스플레이가 없는 단말 디바이스, 예를 들어 STB(3116), 화상 회의 시스템(3118) 또는 비디오 감시 시스템(3120)의 경우, 외부 디스플레이(3126)가 이들에 접속되어 디코딩된 데이터를 수신하고 보여줄 수 있다.
이 시스템의 각각의 디바이스가 인코딩 또는 디코딩을 수행할 때, 픽처 인코딩 디바이스 또는 픽처 디코딩 디바이스가, 전술한 실시예에 도시된 바와 같이, 이용될 수 있다.
도 15는 단말 디바이스(3106)의 한 예의 구성을 보여주는 도면이다. 단말 디바이스(3106)가 캡처 디바이스(3102)로부터 스트림을 수신한 후, 프로토콜 진행 유닛(3202)은 스트림의 전송 프로토콜을 분석한다. 프로토콜에는, RTSP(Real Time Streaming Protocol), HTTP(Hyper Text Transfer Protocol), HTTP HLS(Live streaming protocol), MPEG-DASH, RTP(Real-time Transport protocol), RTMP(Real Time Messaging Protocol), 또는 이들의 임의의 종류의 조합 등을 포함하지만, 이것으로 제한되는 것은 아니다.
프로토콜 진행 유닛(3202)은 스트림을 처리한 후 스트림 파일을 생성한다. 파일은 디멀티플렉싱 유닛(3204)에 출력된다. 디멀티플렉싱 유닛(3204)은 멀티플렉싱된 데이터를 인코딩된 오디오 데이터와 인코딩된 비디오 데이터로 분리할 수 있다. 전술된 바와 같이, 일부 실제 시나리오, 예를 들어 화상 회의 시스템의 경우, 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터는 멀티플렉싱되지 않는다. 이 상황에서, 인코딩된 데이터는 디멀티플렉싱 유닛(3204)을 거치지 않고 비디오 디코더(3206) 및 오디오 디코더(3208)로 전송된다.
디멀티플렉싱 처리를 통해, 비디오 기본 스트림(ES), 오디오 ES 및 선택사항으로서 자막이 생성된다. 전술한 실시예들에서 설명된 비디오 디코더(30)를 포함하는 비디오 디코더(3206)는, 전술한 실시예들에서 도시된 디코딩 방법에 의해 비디오 ES를 디코딩하여 비디오 프레임을 생성하고, 이 데이터를 동기 유닛(3212)에 공급한다. 오디오 디코더(3208)는 오디오 ES를 디코딩하여 오디오 프레임을 생성하고 이 데이터를 동기 유닛(3212)에 공급한다. 대안으로서, 비디오 프레임은 동기 유닛(3212)에 공급되기 전에 버퍼(도 15에 도시되지 않음)에 저장될 수 있다. 유사하게, 오디오 프레임은 동기 유닛(3212)에 공급되하기 전에 버퍼(도 15에 도시되지 않음)에 저장될 수 있다.
동기 유닛(3212)은 비디오 프레임과 오디오 프레임을 동기화하고, 비디오/오디오를 비디오/오디오 디스플레이(3214)에 공급한다. 예를 들어, 동기 유닛(3212)은 비디오 및 오디오 정보의 프리젠테이션을 동기화한다. 정보는 코딩된 오디오 및 시각적 데이터의 프리젠테이션에 관한 타임 스탬프들과 데이터 스트림 자체의 전달에 관한 타임 스탬프들을 이용하여 신택스에서 코딩될 수 있다.
스트림에 자막이 포함된 경우, 자막 디코더(3210)는 자막을 디코딩하고, 이를 비디오 프레임 및 오디오 프레임과 동기화하고, 비디오/오디오/자막을 비디오/오디오/자막 디스플레이(3216)에 제공한다.
본 발명은 전술된 시스템으로 제한되지 않고, 전술된 실시예들의 픽처 인코딩 디바이스 또는 픽처 디코딩 디바이스 중 어느 하나는, 다른 시스템, 예를 들어 자동차 시스템에 통합될 수 있다.
본 발명의 실시예들이 주로 비디오 코딩에 기초하여 설명되었지만, 코딩 시스템(10), 인코더(20) 및 디코더(30)(및 이에 대응하는 시스템(10))의 실시예들 및 여기서 설명된 다른 실시예는 또한, 정지 픽처 코딩 및 처리, 즉, 비디오 코딩에서와 같이 임의의 선행하는 또는 연속적인 픽처와는 독립적인 개개의 픽처의 처리 또는 코딩을 위해 구성될 수 있다는 점에 유의해야 한다. 일반적으로, 픽처 처리 코딩이 단일 픽처(17)로 제한되는 경우 인터 예측 유닛(244)(인코더) 및 344(디코더)만이 이용가능하지 않을 수 있다. 비디오 인코더(20) 및 비디오 디코더(30)의 모든 다른 기능들(도구들 또는 기술들이라고도 지칭됨)은 예를 들어, 정지 픽처 처리, 예를 들어, 잔차 계산(204/304), 변환(206), 양자화(208), 역 양자화(210/310), (역) 변환(212/312), 분할(262/362), 인트라 예측(254/354), 및/또는 루프 필터링(220, 320), 및 엔트로피 코딩(270) 및 엔트로피 디코딩(304)에 대해서도 동등하게 이용될 수 있다.
예를 들어 인코더(20) 및 디코더(30)의 실시예들, 및 예를 들어 인코더(20) 및 디코더(30)를 참조하여 여기서 설명된 기능들은, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터-판독가능한 매체에 저장되거나 하나 이상의 명령어 또는 코드로서 통신 매체를 통해 전송되고 하드웨어 기반의 처리 유닛에 의해 실행될 수 있다. 컴퓨터-판독가능한 매체는, 데이터 저장 매체 등의 유형 매체, 또는, 예를 들어, 통신 프로토콜에 따라, 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체에 대응하는 컴퓨터-판독가능한 저장 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터-판독가능한 매체는 일반적으로, (1) 비일시적인 유형의 컴퓨터-판독가능한 저장 매체 또는 (2) 신호 또는 반송파 등의 통신 매체에 대응할 수 있다. 데이터 저장 매체는, 본 개시내용에서 설명된 기술들의 구현을 위한 명령어들, 코드 및/또는 데이터 구조를 회수하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능한 매체를 포함할 수 있다.
제한이 아닌 예로서, 이러한 컴퓨터-판독가능한 저장 매체는, RAM, ROM, EEPROM, CD-ROM 또는 기타의 광 디스크 저장소, 자기 디스크 저장소, 또는 기타의 자기 저장 디바이스, 플래시 메모리, 또는 원하는 프로그램 코드를 명령어나 데이터 구조 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 기타 임의의 매체를 포함할 수 있다. 또한, 임의의 접속은 적절하게 컴퓨터-판독가능한 매체라고 명명된다. 예를 들어, 명령어들이, 동축 케이블, 광섬유 케이블, 꼬인 쌍선, 디지털 가입자 회선(DSL), 또는 적외선, 라디오 및 마이크로파 등의 무선 기술을 이용하여, 웹사이트, 서버 또는 기타의 원격 소스로부터 전송된다면, 동축 케이블, 광섬유 케이블, 꼬인 쌍선, DSL, 또는 적외선, 라디오 및 마이크로파 등의 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능한 저장 매체 및 데이터 저장 매체는, 접속, 반송파, 신호, 또는 다른 일시적인 매체를 포함하지 않고, 그 대신에, 비일시적인, 유형의 저장 매체와 관련된다는 것을 이해해야 한다. 본 명세서에서 사용될 때, 디스크(disk 및 disc)는, 컴팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 범용 디스크(DVD; digital versatile disc), 플로피 디스크, 및 블루레이 디스크를 포함하며, 대개 디스크(disk)는 데이터를 자기적으로 재생하는 반면, 디스크(disc)는 데이터를 레이저에 의해 광학적으로 재생한다. 상기의 조합은 또한 컴퓨터-판독가능한 매체의 범위 내에 포함되어야 한다.
명령어들은, 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 로직 어레이(FPGA), 또는 기타의 균등한 집적 또는 개별 논리 회로 등의, 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 여기서 사용되는 용어 "프로세서"란, 전술된 구조 또는 본 명세서에서 설명된 기술들의 구현에 적절한 기타 임의의 구조를 말할 수도 있다. 또한, 일부 양태에서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 결합된 코덱에 통합될 수 있다. 또한, 본 기술들은 하나 이상의 회로 또는 로직 요소에서 완전히 구현될 수 있다.
본 개시내용의 기술들은, 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩 세트)를 포함한 다양한 디바이스 또는 장치에서 구현될 수 있다. 개시된 본 기술을 수행하도록 구성된 디바이스의 기능적 양태를 강조하기 위해 본 개시내용에서는 다양한 컴포넌트, 모듈 또는 유닛이 설명되지만, 반드시 상이한 하드웨어 유닛들에 의한 구현을 요구하지는 않는다. 오히려, 전술된 바와 같이, 다양한 유닛들은, 적절한 소프트웨어 및/또는 펌웨어와 연계하여, 코덱 하드웨어 유닛에서 결합되거나 전술된 하나 이상의 프로세서를 포함하는 연동 하드웨어 유닛들의 집합에 의해 제공될 수 있다.
Claims (38)
- 현재의 복원된 블록 ―상기 현재의 복원된 블록은 복수의 픽셀을 포함함― 을 처리하기 위해 비디오 인코딩 장치 또는 비디오 디코딩 장치에서 이용하기 위한 필터(120, 220, 1018, 1118, 960)로서, 상기 필터(120, 220, 1018, 1118, 960)는 :
상기 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 상기 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하고;
미리정의된 스캔 템플릿에 따라 상기 확장된 복원된 블록의 현재 픽셀 및 상기 현재 픽셀의 이웃 픽셀들을 선형 버퍼에 로딩하고;
상기 선형 버퍼 내의 픽셀들에 대한 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하고;
조회 테이블을 이용하여 상기 획득된 스펙트럼 성분들에 기초하여 필터링된 스펙트럼 성분들을 획득하고;
상기 필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하고;
상기 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하도록 구성된, 필터(120, 220, 1018, 1118, 960). - 제1항에 있어서, 상기 현재의 복원된 블록은 상기 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 더 포함하도록 확장되는, 필터(120, 220, 1018, 1118, 960).
- 제2항에 있어서, 상기 현재의 복원된 블록은 상기 이웃 복원된 블록이 이용가능하지 않을 때 상기 이웃 복원된 블록으로부터 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 확장되고/되거나,
상기 현재의 복원된 블록은 상기 이웃 복원된 블록이 이용가능하지 않을 때 상기 현재의 복원된 블록으로부터의 샘플을 포함하도록 확장되는, 필터(120, 220, 1018, 1118, 960). - 제3항에 있어서, 상기 필터(120, 220, 1018, 1118)는 추가로, 상기 현재의 복원된 블록에 대해 상기 이웃 복원된 블록이 이용가능한지를 :
- 블록 코딩 순서,
- 상기 현재의 복원된 블록과 상기 이웃 복원된 블록은 동일한 픽처 그룹에 속함, ―상기 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는
- 픽처 경계를 넘어선 상기 이웃 복원된 블록의 위치
중 하나 이상에 기초하여 결정하도록 구성된, 필터(120, 220, 1018, 1118, 960). - 제3항에 있어서, 상기 필터(120, 220, 1018, 1118, 960)는 추가로,
다음과 같은 조건들 중 하나 이상이 참이면, 상기 이웃 복원된 블록에 대한 이용가능성이 거짓으로 결정되고 :
- 상기 이웃 복원된 블록이 상기 현재의 복원된 블록과는 상이한 타일에 포함됨,
- 상기 이웃 복원된 블록의 위치가 픽처 경계를 넘어섬,
- 이웃 복원된 블록이 복원되었는지를 나타내는 변수가 거짓임;
그렇지 않으면, 상기 이웃 복원된 블록에 대한 이용가능성이 참으로 결정되도록 하여, 상기 이웃 복원된 블록에 대한 이용가능성을 도출하도록 구성된, 필터(120, 220, 1018, 1118, 960). - 제2항 내지 제5항 중 어느 한 항에 있어서, 상기 하나 이상의 패딩 샘플은, 상기 현재의 복원된 블록에 인접한 이전에 복원된 블록인, 이웃 복원된 블록으로부터의 필터링된 샘플들인, 필터(120, 220, 1018, 1118, 960).
- 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 현재의 복원된 블록은, 좌측 및 상단 측의 이웃 복원된 블록들로부터의 샘플들에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 좌측 및 상단 측에서 확장되는, 필터(120, 220, 1018, 1118, 960).
- 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 현재의 복원된 블록은 상기 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 우측 및 하단 측에서 확장되는, 필터(120, 220, 1018, 1118, 960).
- 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 필터(120, 220, 1018, 1118, 960)는 상기 현재의 복원된 블록의 각각의 측면에서:
- 상기 이웃 복원된 블록이 이용가능한 경우, 상기 측면 상의 상기 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 이웃 복원된 샘플들, 또는
- 그렇지 않다면, 상기 현재의 복원된 블록으로부터 가장 가까운 샘플들
을 포함하도록 상기 현재의 복원된 블록을 확장함으로써 상기 확장된 복원된 블록을 획득하도록 구성된, 필터(120, 220, 1018, 1118, 960). - 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 필터(120, 220, 1018, 1118, 960)는, 상기 현재의 복원된 블록 recSamples[x][y]에 대해, 샘플들 x = -1..nCbW, y = -1..nCbH에서 상기 확장된 복원된 블록 recSamplesPad[x][y]을 획득 ―(xCb, yCb)는 상기 복원된 블록의 상단 좌측 샘플을 명시하며, nCbW, nCbH는 상기 현재의 복원된 블록의 폭과 높이를 명시함― 하도록 구성되되:
0 ≤ x ≤ nCbW-1 및 0 ≤ y ≤ nCbH-1일 때,
recSamplesPad[ x ][ y ] = recSamples[x][y]이고,
그렇지 않으면, ( xCb + x, yCb + y )에 대해:
- 변수 dx는 0으로 설정되고 변수 dy는 0으로 설정되며,
- x == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = 1,
- x == nCbW 및 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = -1,
- y == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = 1,
- y == nCbH이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = -1,
recSamplesPad[ x ][ y ] = recSamples[ x + dx ][ y + dy ]인, 필터(120, 220, 1018, 1118, 960). - 제3항 내지 제10항 중 어느 한 항에 있어서, 추가로, 상기 이웃 복원된 블록이 상기 현재의 복원된 블록에 대해 이용가능한지를 결정하도록 구성되고, 인터 예측된 블록인 상기 현재의 복원된 블록에 대해, 상기 이웃 복원된 블록이 인터 예측된 블록이 아닌 경우, 상기 이웃 복원된 블록의 이용가능성은 거짓인 것으로 결정되는, 필터(120, 220, 1018, 1118, 960).
- 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 조회 테이블은 상기 현재의 복원된 블록의 양자화 파라미터(Qp)에 기초하여 획득되는, 필터(120, 220, 1018, 1118, 960).
- 제2항 내지 제12항 중 어느 한 항에 있어서, 이웃 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 상기 하나 이상의 패딩 샘플은 현재 이미지 블록의 인트라 예측에 이용되는 참조 샘플들이고, 상기 현재 이미지 블록의 복원된 블록은 상기 현재의 복원된 블록인, 필터(120, 220, 1018, 1118, 960).
- 제13항에 있어서, 상기 필터는 추가로, 상기 현재의 복원된 블록의 현재 이미지 블록의 인트라 예측에서의 인트라 참조 샘플 도출의 결과에 기초하여 상기 하나 이상의 패딩 샘플을 획득하도록 구성된, 필터(120, 220, 1018, 1118, 960).
- 제14항에 있어서, 상기 인트라 참조 샘플 도출은,
이웃 복원된 샘플들의 이용가능성의 도출 및 상기 이웃 복원된 샘플들이 이용가능한 경우 상기 이웃 복원된 샘플들을 회수하는 것;
상기 이웃 복원된 샘플들이 이용가능하지 않은 경우 상기 이웃 복원된 샘플들을 다른 이용가능한 이웃 복원된 샘플들로 대체하는 것을 포함하는, 필터(120, 220, 1018, 1118, 960). - 현재의 복원된 블록 ―상기 현재의 복원된 블록은 복수의 픽셀을 포함함― 을 처리하기 위한 방법(300, 300', 500)으로서, 필터링 방법(300, 300', 500)은
상기 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 상기 현재의 복원된 블록을 확장함으로써 확장된 복원된 블록을 획득하는 단계;
미리정의된 스캔 템플릿에 따라 상기 확장된 복원된 블록의 현재 픽셀 및 상기 현재 픽셀의 이웃 픽셀들을 선형 버퍼에 로딩하는 단계;
상기 선형 버퍼 내의 픽셀들에 대한 1D 변환을 수행함으로써 스펙트럼 성분들을 획득하는 단계;
각각의 스펙트럼 성분에 이득 계수를 곱하거나 조회 테이블을 이용함으로써 필터링된 스펙트럼 성분들을 획득하는 단계, ―상기 이득 계수는 대응하는 스펙트럼 성분 및 필터링 파라미터에 의존함―;
필터링된 스펙트럼 성분들에 대해 역 1D 변환을 수행함으로써 필터링된 픽셀들을 획득하는 단계; 및
상기 필터링된 픽셀들에 기초하여 필터링된 복원된 블록을 생성하는 단계
를 포함하는 방법(300, 300', 500). - 제16항에 있어서, 상기 현재의 복원된 블록은 상기 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 더 포함하도록 확장되는, 방법(300, 300', 500).
- 제17항에 있어서, 상기 현재의 복원된 블록은 상기 이웃 복원된 블록이 이용가능하지 않을 때 상기 이웃 복원된 블록으로부터 적어도 하나의 샘플에 기초하여 획득된 하나 이상의 패딩 샘플을 포함하도록 확장되고/되거나,
상기 현재의 복원된 블록은 상기 이웃 복원된 블록이 이용가능하지 않을 때 상기 현재의 복원된 블록으로부터의 샘플을 포함하도록 확장되는, 방법(300, 300', 500). - 제18항에 있어서, 상기 현재의 복원된 블록에 대해 상기 이웃 복원된 블록이 이용가능한지를 :
- 블록 코딩 순서,
- 상기 현재의 복원된 블록과 상기 이웃 복원된 블록은 동일한 픽처 그룹에 속함, ―상기 동일한 픽처 그룹은, 동일한 슬라이스, 동일한 타일 또는 동일한 타일 그룹을 포함함―, 또는
- 픽처 경계를 넘어선 상기 이웃 복원된 블록의 위치
중 하나 이상에 기초하여 결정하는 단계를 더 포함하는 방법(300, 300', 500). - 제18항에 있어서, 상기 방법은,
다음과 같은 조건들 중 하나 이상이 참이면, 상기 이웃 복원된 블록에 대한 이용가능성이 거짓으로 결정되고 :
- 상기 이웃 복원된 블록이 상기 현재 블록과는 상이한 타일에 포함됨,
- 상기 이웃 복원된 블록의 위치가 픽처 경계를 넘어섬,
- 이웃 복원된 블록이 복원되었는지를 나타내는 변수가 거짓임;
그렇지 않으면, 상기 이웃 복원된 블록에 대한 이용가능성이 참으로 결정되도록 하여, 상기 이웃 복원된 블록에 대한 이용가능성을 도출하는 단계를 더 포함하는 방법(300, 300', 500). - 제17항 내지 제20항 중 어느 한 항에 있어서, 상기 하나 이상의 패딩 샘플은, 상기 현재의 복원된 블록에 인접한 이전에 복원된 블록인, 이웃 복원된 블록으로부터의 필터링된 샘플들인, 방법(300, 300', 500).
- 제16항 내지 제21항 중 어느 한 항에 있어서, 상기 현재의 복원된 블록은, 좌측 및 상단 측에서 이전에 복원된 인접 블록들로부터의 샘플들에 기초하여 획득된 샘플들을 포함하도록 좌측 및 상단 측에서 확장되는, 방법(300, 300', 500).
- 제16항 내지 제22항 중 어느 한 항에 있어서, 상기 현재의 복원된 블록은 상기 현재의 복원된 블록으로부터의 적어도 하나의 샘플에 기초하여 상기 하나 이상의 패딩 샘플을 포함하도록 우측 및 하단 측에서 확장되는, 방법(300, 300', 500).
- 제18항 내지 제23항 중 어느 한 항에 있어서, 상기 확장된 복원된 블록을 획득하는 단계는, 상기 현재의 복원된 블록의 각각의 측면에서 :
- 상기 이웃 복원된 블록이 이용가능한 경우, 상기 측면 상의 상기 현재의 복원된 블록에 인접한 이웃 복원된 블록으로부터의 이웃 복원된 샘플들, 또는
- 그렇지 않다면, 상기 현재의 복원된 블록으로부터 가장 가까운 샘플들
을 포함하도록 상기 현재의 복원된 블록을 확장하는 단계를 포함하는, 방법(300, 300', 500). - 제18항 내지 제23항 중 어느 한 항에 있어서, 샘플들 x = -1..nCbW, y = -1..nCbH에서 상기 확장된 복원된 블록 recSamplesPad[x][y]을 획득 ―(xCb, yCb)는 상기 복원된 블록의 상단 좌측 샘플을 명시하며, nCbW, nCbH는 상기 현재의 복원된 블록의 폭과 높이를 명시함― 하는 단계는, 상기 현재의 복원된 블록 recSamples[x][y]에 대해:
0 ≤ x ≤ nCbW-1 및 0 ≤ y ≤ nCbH-1일 때,
recSamplesPad[ x ][ y ] = recSamples[x][y]이고,
그렇지 않으면, ( xCb + x, yCb + y )에 대해:
- 변수 dx는 0으로 설정되고 변수 dy는 0으로 설정되며,
- x == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = 1,
- x == nCbW 및 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dx = -1,
- y == -1이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = 1,
- y == nCbH이고 샘플( xCb + x, yCb + y )이 이용가능하지 않을 때, dy = -1,
recSamplesPad[ x ][ y ] = recSamples[ x + dx ][ y + dy ]인 것을 포함하는, 방법(300, 300', 500). - 제18항 내지 제25항 중 어느 한 항에 있어서, 상기 이웃 복원된 블록이 상기 현재의 복원된 블록에 대해 이용가능한지를 결정하는 단계를 더 포함하고, 인터 예측된 블록인 상기 현재의 복원된 블록에 대해, 상기 이웃 복원된 블록이 인터 예측된 블록이 아닌 경우, 상기 이웃 복원된 블록의 이용가능성은 거짓인 것으로 결정되는, 방법(300, 300', 500).
- 제16항 내지 제26항 중 어느 한 항에 있어서, 상기 조회 테이블은 상기 현재의 복원된 블록의 양자화 파라미터(Qp)에 기초하여 획득되는, 방법(300, 300', 500).
- 제17항 내지 제27항 중 어느 한 항에 있어서, 이웃 블록으로부터의 적어도 하나의 샘플에 기초하여 획득된 상기 하나 이상의 패딩 샘플은 현재 이미지 블록의 인트라 예측에 이용되는 샘플들이고, 상기 현재 이미지 블록의 복원된 블록은 상기 현재의 복원된 블록인, 방법(300, 300', 500).
- 제28항에 있어서, 상기 하나 이상의 패딩 샘플을 획득하는 단계는, 상기 현재의 복원된 블록의 현재 이미지 블록의 인트라 예측에서의 인트라 참조 샘플 도출의 결과에 기초하는, 방법(300, 300', 500).
- 제29항에 있어서, 상기 인트라 참조 샘플 도출은,
이웃 복원된 샘플들의 이용가능성의 도출 및 상기 이웃 복원된 샘플들이 이용가능한 경우 상기 이웃 복원된 샘플들을 회수하는 것;
상기 이웃 복원된 샘플들이 이용가능하지 않은 경우 상기 이웃 복원된 샘플들을 다른 이용가능한 이웃 복원된 샘플들로 대체하는 것을 포함하는, 방법(300, 300', 500). - 입력 비디오 스트림으로부터 현재 블록을 인코딩하기 위한 인코딩 방법으로서, 제16항 내지 제30항 중 어느 한 항에 따른 현재 블록의 현재의 복원된 블록을 필터링하는 방법을 포함하는 인코딩 방법.
- 수신된 비트스트림으로부터 현재의 복원된 블록을 디코딩하기 위한 디코딩 방법으로서, 제16항 내지 제30항 중 어느 한 항에 따른 필터링 방법을 포함하는 디코딩 방법.
- 입력 비디오 스트림으로부터 현재 블록을 인코딩하기 위한 인코딩 장치(100)로서, 제1항 내지 제15항 중 어느 한 항에 따른 현재 블록의 현재의 복원된 블록을 필터링하기 위한 필터(120)를 포함하는, 인코딩 장치(100).
- 수신된 비트스트림으로부터 현재의 복원된 블록을 디코딩하기 위한 디코딩 장치(200)로서, 제1항 내지 제15항 중 어느 한 항에 따른 필터(220)를 포함하는 디코딩 장치(200).
- 컴퓨터 또는 프로세서에서 실행될 때 제16항 내지 제32항 중 어느 한 항의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
- 디코더로서,
하나 이상의 프로세서; 및
상기 프로세서들에 결합되고 상기 프로세서들에 의한 실행을 위한 프로그래밍을 저장하는 비일시적인 컴퓨터-판독가능한 저장 매체를 포함하고, 상기 프로그래밍은 상기 프로세서들에 의해 실행될 때 제16항 내지 제32항 중 어느 한 항에 따른 방법을 수행하도록 상기 디코더를 구성하는, 디코더. - 인코더로서,
하나 이상의 프로세서; 및
상기 프로세서들에 결합되고 상기 프로세서들에 의한 실행을 위한 프로그래밍을 저장하는 비일시적인 컴퓨터-판독가능한 저장 매체를 포함하고, 상기 프로그래밍은 상기 프로세서들에 의해 실행될 때 제16항 내지 제32항 중 어느 한 항에 따른 방법을 수행하도록 상기 인코더를 구성하는, 인코더. - 비일시적인 컴퓨터-판독가능한 매체로서,
컴퓨터 디바이스에 의해 실행될 때 상기 컴퓨터 디바이스로 하여금 제16항 내지 제32항 중 어느 한 항의 방법을 수행하게 하는 프로그램 코드를 포함하는 비일시적인 컴퓨터-판독가능한 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2019050090 | 2019-06-18 | ||
RU2019050091 | 2019-06-18 | ||
RUPCT/RU2019/050090 | 2019-06-18 | ||
RUPCT/RU2019/050091 | 2019-06-18 | ||
PCT/RU2020/050127 WO2020256596A1 (en) | 2019-06-18 | 2020-06-18 | Apparatus and method for filtering in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220019288A true KR20220019288A (ko) | 2022-02-16 |
Family
ID=74040633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227001069A KR20220019288A (ko) | 2019-06-18 | 2020-06-18 | 비디오 코딩에서 필터링을 위한 장치 및 방법 |
Country Status (12)
Country | Link |
---|---|
US (1) | US12075035B2 (ko) |
EP (1) | EP3973711A4 (ko) |
JP (1) | JP7383736B2 (ko) |
KR (1) | KR20220019288A (ko) |
CN (1) | CN114009048B (ko) |
AU (1) | AU2020297260B9 (ko) |
BR (1) | BR112021025435A2 (ko) |
CA (1) | CA3155487A1 (ko) |
IL (1) | IL289092A (ko) |
MX (1) | MX2021015943A (ko) |
WO (1) | WO2020256596A1 (ko) |
ZA (1) | ZA202110751B (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023200214A1 (ko) * | 2022-04-12 | 2023-10-19 | 현대자동차주식회사 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
WO2024122886A1 (ko) * | 2022-12-07 | 2024-06-13 | 현대자동차주식회사 | 적응적 템플릿 기반 인트라 예측모드 유도를 이용하는 비디오 코딩방법 및 장치 |
WO2024122880A1 (ko) * | 2022-12-06 | 2024-06-13 | 현대자동차주식회사 | Mpm 리스트를 적응적으로 생성하는 비디오 코딩방법 및 장치 |
WO2024155168A1 (ko) * | 2023-01-20 | 2024-07-25 | 엘지전자 주식회사 | 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
WO2024155166A1 (ko) * | 2023-01-20 | 2024-07-25 | 엘지전자 주식회사 | 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105872539B (zh) * | 2015-02-08 | 2020-01-14 | 同济大学 | 图像编码方法和装置及图像解码方法和装置 |
EP3989586A4 (en) * | 2019-06-21 | 2023-07-19 | Samsung Electronics Co., Ltd. | VIDEO ENCODING METHOD AND DEVICE FOR PERFORMING POST-RECONSTRUCTION FILTERING IN LIMITED PREDICTION MODE, AND VIDEO DECODER METHOD AND DEVICE |
WO2024002168A1 (en) * | 2022-06-28 | 2024-01-04 | Douyin Vision (Beijing) Co., Ltd. | Padding methods for adaptive loop filter in video coding |
WO2024192287A1 (en) * | 2023-03-14 | 2024-09-19 | Beijing Dajia Internet Information Technology Co., Ltd | Methods and devices for adaptive loop filter and cross-component adaptive loop filter |
WO2024211838A1 (en) * | 2023-04-05 | 2024-10-10 | Beijing Dajia Internet Information Technology Co., Ltd. | Method and apparatus for adaptive motion compensated filtering |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2192786A1 (en) | 2008-11-27 | 2010-06-02 | Panasonic Corporation | Frequency domain filters for video coding |
WO2012163199A1 (en) * | 2011-05-27 | 2012-12-06 | Mediatek Inc. | Method and apparatus for line buffer reduction for video processing |
US20130343447A1 (en) * | 2012-06-25 | 2013-12-26 | Broadcom Corporation | Adaptive loop filter (ALF) padding in accordance with video coding |
CN107925773B (zh) | 2015-06-11 | 2022-06-07 | 杜比实验室特许公司 | 使用自适应去块滤波编码和解码图像的方法及其装置 |
US20180332292A1 (en) | 2015-11-18 | 2018-11-15 | Mediatek Inc. | Method and apparatus for intra prediction mode using intra prediction filter in video and image compression |
NZ772208A (en) * | 2018-07-02 | 2022-11-25 | Huawei Tech Co Ltd | Apparatus and method for filtering in video coding |
EP3939323A1 (en) * | 2019-03-11 | 2022-01-19 | Vid Scale, Inc. | Methods and systems for post-reconstruction filtering |
-
2020
- 2020-06-18 BR BR112021025435A patent/BR112021025435A2/pt unknown
- 2020-06-18 KR KR1020227001069A patent/KR20220019288A/ko active Search and Examination
- 2020-06-18 WO PCT/RU2020/050127 patent/WO2020256596A1/en unknown
- 2020-06-18 EP EP20825975.4A patent/EP3973711A4/en active Pending
- 2020-06-18 CN CN202080044073.4A patent/CN114009048B/zh active Active
- 2020-06-18 CA CA3155487A patent/CA3155487A1/en active Pending
- 2020-06-18 AU AU2020297260A patent/AU2020297260B9/en active Active
- 2020-06-18 JP JP2021575457A patent/JP7383736B2/ja active Active
- 2020-06-18 MX MX2021015943A patent/MX2021015943A/es unknown
-
2021
- 2021-12-16 IL IL289092A patent/IL289092A/en unknown
- 2021-12-20 US US17/556,180 patent/US12075035B2/en active Active
- 2021-12-21 ZA ZA2021/10751A patent/ZA202110751B/en unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023200214A1 (ko) * | 2022-04-12 | 2023-10-19 | 현대자동차주식회사 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
WO2024122880A1 (ko) * | 2022-12-06 | 2024-06-13 | 현대자동차주식회사 | Mpm 리스트를 적응적으로 생성하는 비디오 코딩방법 및 장치 |
WO2024122886A1 (ko) * | 2022-12-07 | 2024-06-13 | 현대자동차주식회사 | 적응적 템플릿 기반 인트라 예측모드 유도를 이용하는 비디오 코딩방법 및 장치 |
WO2024155168A1 (ko) * | 2023-01-20 | 2024-07-25 | 엘지전자 주식회사 | 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
WO2024155166A1 (ko) * | 2023-01-20 | 2024-07-25 | 엘지전자 주식회사 | 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체 |
Also Published As
Publication number | Publication date |
---|---|
EP3973711A4 (en) | 2022-08-31 |
IL289092A (en) | 2022-02-01 |
AU2020297260B2 (en) | 2023-12-14 |
MX2021015943A (es) | 2022-03-22 |
EP3973711A1 (en) | 2022-03-30 |
WO2020256596A1 (en) | 2020-12-24 |
JP2022537749A (ja) | 2022-08-29 |
JP7383736B2 (ja) | 2023-11-20 |
US12075035B2 (en) | 2024-08-27 |
CN114009048B (zh) | 2023-05-16 |
US20220116597A1 (en) | 2022-04-14 |
AU2020297260B9 (en) | 2024-02-01 |
AU2020297260A1 (en) | 2022-01-27 |
CA3155487A1 (en) | 2020-12-24 |
ZA202110751B (en) | 2023-06-28 |
BR112021025435A2 (pt) | 2022-02-01 |
CN114009048A (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220019288A (ko) | 비디오 코딩에서 필터링을 위한 장치 및 방법 | |
JP2021533644A (ja) | ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法 | |
JP2022529763A (ja) | エンコーダ、デコーダ、および対応するイントラ予測方法 | |
JP2022524357A (ja) | エンコーダ、デコーダ、及び対応するインター予測方法 | |
KR102696162B1 (ko) | 인트라 서브파티션 코딩 툴로 인한 서브파티션 경계를 위한 디블로킹 필터 | |
JP2024099544A (ja) | 交差成分線形モデル予測のためのフィルタリングの方法及び装置 | |
KR102606722B1 (ko) | 비디오 코딩에서 디블로킹 필터를 위한 장치 및 방법 | |
KR20210126771A (ko) | 인트라 예측 모드에 관련된 인코더, 디코더 및 대응하는 방법들 | |
JP2022521757A (ja) | 線形モデルを使用したイントラ予測のための方法および装置 | |
JP7562798B2 (ja) | イントラ・サブ・パーティション・コーディング・モードのための方法及び装置 | |
JP2022524710A (ja) | エンコーダ、デコーダ、及び対応する非ブロック化フィルタ適応の方法 | |
KR20220127314A (ko) | 적응적 루프 필터링을 위한 인코더, 디코더, 및 대응하는 방법 | |
JP2022525943A (ja) | オプティカルフローベースのビデオフレーム間予測 | |
KR102657540B1 (ko) | 변환 프로세스를 위해 사용되는 인코더, 디코더 및 대응하는 방법 | |
KR20220065880A (ko) | 아핀 모션 보상에서 dct 기반 보간 필터 및 향상된 쌍선형 보간 필터의 사용 | |
KR20210103562A (ko) | 인트라 예측을 위한 교차-성분 선형 모델링의 방법 및 장치 | |
CN112997497B (zh) | 用于帧内预测的方法和装置 | |
CN114762339A (zh) | 基于变换跳过和调色板编码相关高级语法元素的图像或视频编码 | |
KR20210145824A (ko) | 제산 없는 인트라 예측을 위한 방법 및 장치 | |
US20230199227A1 (en) | Method and apparatus for hadamard transform domain filtering of the video signal with various bit depth | |
RU2789030C2 (ru) | Устройство и способ для фильтра деблокинга при кодировании видео | |
RU2809192C2 (ru) | Кодер, декодер и соответствующие способы межкадрового предсказания | |
JP2022531544A (ja) | 平面モードのためのイントラ予測における複雑さ減少のエンコーダ、デコーダ、および対応する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |