بعض محتويات هذا التطبيق غير متوفرة في الوقت الحالي.
إذا استمرت هذه الحالة ، يرجى الاتصال بنا علىتعليق وإتصال
1. (WO2019050385) METHOD AND APPARATUS FOR ENTROPY ENCODING AND DECODING VIDEO SIGNAL
Document

명세서

발명의 명칭

기술분야

1  

배경기술

2   3   4  

발명의 상세한 설명

기술적 과제

5   6   7  

과제 해결 수단

8   9   10   11   12  

발명의 효과

13   14   15  

도면의 간단한 설명

16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34   35   36   37  

발명의 실시를 위한 최선의 형태

38   39   40   41   42   43   44   45   46   47  

발명의 실시를 위한 형태

48   49   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64   65   66   67   68   69   70   71   72   73   74   75   76   77   78   79   80   81   82   83   84   85   86   87   88   89   90   91   92   93   94   95   96   97   98   99   100   101   102   103   104   105   106   107   108   109   110   111   112   113   114   115   116   117   118   119   120   121   122   123   124   125   126   127   128   129   130   131   132   133   134   135   136   137   138   139   140   141   142   143   144   145   146   147   148   149   150   151   152   153   154   155   156   157   158   159   160   161   162   163   164   165   166   167   168   169   170   171   172   173   174   175   176   177   178   179   180   181   182   183   184   185   186   187   188   189   190   191   192   193   194   195   196   197   198   199   200   201   202   203   204   205   206   207   208   209   210   211   212   213   214   215   216   217   218   219   220   221   222   223   224   225   226   227   228   229   230   231   232   233   234   235   236   237   238   239   240   241   242   243   244   245   246   247   248   249   250   251   252   253   254   255   256   257   258   259   260   261   262   263   264   265   266   267   268   269   270   271   272   273   274   275   276   277   278   279   280   281   282   283   284   285   286   287   288   289   290   291   292   293   294   295   296   297   298   299   300   301   302   303   304   305   306   307   308   309   310   311   312   313   314   315   316   317   318   319   320   321   322   323   324   325   326   327   328   329   330   331   332   333   334   335   336   337   338   339   340   341   342   343   344  

산업상 이용가능성

345  

청구범위

1   2   3   4   5   6   7   8   9   10   11   12  

도면

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22  

명세서

발명의 명칭 : 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치

기술분야

[1]
본 발명은 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치에 관한 것이다. 보다 구체적으로, 어파인 예측을 위한 신택스 요소들(syntax elements for affine prediction)의 CABAC(Context-based Adaptive Binary Arithmetic Coding) 컨텍스트 모델(context model)을 디자인하는 방법 및 장치에 관한 것이다.

배경기술

[2]
엔트로피 코딩은 부호화 과정을 통해 결정된 신택스 엘리먼트들을 무손실 압축하여 RBSP(Raw Byte Sequence Payload)를 생성하는 과정이다. 엔트로피 코딩은 신택스의 통계를 이용하여 자주 발생하는 신택스에 대해서는 짧은 비트를 할당하고, 그렇지 않은 신택스에는 긴 비트를 할당하여 신택스 엘리먼트들을 간결한 데이터로 표현한다.
[3]
그 중, CABAC(Context-based Adaptive Binary Arithmetic Coding)은 이진 산술 코딩을 수행하는 과정에서 신택스의 컨텍스트와 이전에 발생한 심볼에 기초하여 적응적으로 업데이트된 확률 모델을 사용한다. 그러나, 이러한 CABAC도 연산량이 많아 복잡도가 높고 순차적 구조를 가지고 있어 병렬 수행이 어려운 문제점이 있다.
[4]
따라서, 비디오 압축 기술에 있어서 신택스 엘리먼트를 보다 효율적으로 압축하고 전송할 필요가 있으며, 이를 위해 엔트로피 코딩의 성능을 향상시킬 필요가 있다.

발명의 상세한 설명

기술적 과제

[5]
본 발명은, CABAC 수행시 컨텍스트 모델의 예측 성능을 높이기 위한 방법을 제안하고자 한다.
[6]
본 발명은, 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행하는 방법을 제안하고자 한다.
[7]
본 발명은, CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩에 기초하여 코딩 성능을 유지하면서 쓰루풋(throughput)을 향상시키는 방법을 제안하고자 한다.

과제 해결 수단

[8]
본 발명은, 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행하는 방법을 제안한다.
[9]
본 발명은, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[10]
본 발명은, 이웃 블록이 어파인 코딩되었는지 여부(조건1) 및/또는 어떠한 어파인 예측 모드가 적용되었는지 (조건 2) 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[11]
본 발명은, 어파인 예측을 위한 모션 벡터 예측 인덱스(affine_mvp_idx) 와 비-어파인 예측(non-affine prediction)을 위한 모션 벡터 예측 인덱스(mvp_idx)를 구분하여 컨텍스트 모델링을 수행하는 방법을 제안한다.
[12]
본 발명은, 어파인 예측과 관련된 신택스 엘리먼트에 대해 CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩을 수행하는 방법을 제안한다.

발명의 효과

[13]
본 발명은, CABAC 수행시 어파인 예측과 관련된 신택스 엘리먼트에 대해 컨텍스트 모델링을 수행하는 방법을 제공함으로써 엔트로피 부호화/복호화에 대한 성능을 향상시킬 수 있다.
[14]
또한, 본 발명은, 이웃 블록이 어파인 코딩되었는지 여부(조건1) 및/또는 어떠한 어파인 예측 모드가 적용되었는지 (조건 2) 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정함으로써 현재 블록에 보다 적합한 컨텍스트 모델을 결정할 수 있고, 이를 통해 엔트로피 부호화/복호화에 대한 성능을 향상시킬 수 있다.
[15]
또한, 본 발명은, 어파인 예측과 관련된 신택스 엘리먼트에 대해 CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩을 수행함으로써 코딩 성능을 유지하면서 쓰루풋(throughput)을 향상시킬 수 있다.

도면의 간단한 설명

[16]
도 1은 본 발명이 적용되는 실시예로서, 비디오 신호의 인코딩이 수행되는 인코더의 개략적인 블록도를 나타낸다.
[17]
도 2는 본 발명이 적용되는 실시예로서, 비디오 신호의 디코딩이 수행되는 디코더의 개략적인 블록도를 나타낸다.
[18]
도 3은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 인코딩부의 개략적인 블록도를 나타낸다.
[19]
도 4는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 디코딩부의 개략적인 블록도를 나타낸다.
[20]
도 5는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 인코딩 흐름도를 나타낸다.
[21]
도 6은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 디코딩 흐름도를 나타낸다.
[22]
도 7은 본 발명이 적용되는 실시예로서, 이웃 블록에 기초하여 컨텍스트 모델을 선택하는 방법을 설명하기 위한 블록 관계도를 나타낸다.
[23]
도 8은 본 발명이 적용되는 실시예로서, 좌측 블록과 상측 블록을 이용하여 컨텍스트 모델을 선택하는 방법을 나타내는 흐름도이다.
[24]
도 9는 본 발명이 적용되는 실시예로서, 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 과정을 나타내는 흐름도이다.
[25]
도 10은 본 발명이 적용되는 실시예로서, 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 장치의 개략적인 블록도이다.
[26]
도 11은 본 발명이 적용되는 실시예로서, 이웃 블록의 어파인 예측 코딩 관련 정보에 기초하여 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 과정을 나타내는 흐름도이다.
[27]
도 12는 본 발명이 적용되는 실시예로서, 어파인 플래그의 컨텍스트 인덱스를 결정하는 과정을 나타내는 흐름도이다.
[28]
도 13은 본 발명이 적용되는 실시예로서, 어파인 파라미터 플래그의 컨텍스트 인덱스를 결정하는 과정을 나타내는 흐름도이다.
[29]
도 14는 본 발명이 적용되는 실시예로, affine_param_flag 를 부호화하기 위해 1개의 컨텍스트 모델을 이용하는 방법을 설명하기 위한 흐름도이다.
[30]
도 15는 본 발명이 적용되는 실시예로서, 어파인 플래그에 기초하여 어파인 움직임 예측을 신택스 구조를 나타낸다.
[31]
도 16은 본 발명이 적용되는 실시예로서, 어파인 예측을 위한 움직임 벡터 예측자 인덱스와 인터 예측을 위한 움직임 벡터 예측자 인덱스를 구분하여 디코딩하는 신택스 구조를 나타낸다.
[32]
도 17은 본 발명이 적용되는 실시예로서, AF4 모드 또는 AF6 모드 중 적어도 하나에 기초하여 최적의 코딩 모드를 적응적으로 결정하는 흐름도를 나타낸다.
[33]
도 18은 본 발명이 적용되는 실시예로서, AF4 모드 또는 AF6 모드에 기초하여 디코딩을 수행하는 신택스 구조를 나타낸다.
[34]
도 19는 본 발명이 적용되는 실시예로서, 조건 A(condition A)에 기초하여 AF4 모드 또는 AF6 모드를 포함하는 움직임 벡터 예측 모드들 중 최적의 코딩 모드를 적응적으로 결정하는 흐름도를 나타낸다.
[35]
도 20은 본 발명이 적용되는 실시예로서, 조건 A(condition A)에 기초하여 AF4 모드 또는 AF6 모드에 따라 적응적으로 디코딩을 수행하는 흐름도를 나타낸다.
[36]
도 21은 본 발명이 적용되는 비디오 코딩 시스템을 나타낸다.
[37]
도 22는 본 발명이 적용되는 컨텐츠 스트리밍 시스템을 나타낸다.

발명의 실시를 위한 최선의 형태

[38]
본 발명은, 현재 블록을 포함하는 비디오 신호에 대해 엔트로피 디코딩을 수행하는 방법에 있어서, 현재 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 확인하는 단계; 상기 확인 결과, 상기 현재 블록에 대해 어파인 움직임 예측이 수행될 때, 기정의된 1개의 컨텍스트 모델에 기초하여 상기 현재 블록의 어파인 파라미터 플래그를 파싱하는 단계; 및 상기 어파인 파라미터 플래그에 기초하여 컨텍스트 모델을 업데이트하는 단계를 포함하되, 상기 어파인 파라미터 플래그는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그이고, 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타낸다.
[39]
본 발명에서, 상기 현재 블록에 대해 어파인 움직임 예측이 수행될 때, 상기 현재 블록의 컨텍스트 인덱스는 항상 0값을 가지며, 상기 기정의된 1개의 컨텍스트 모델에 대응되는 것을 특징으로 한다.
[40]
본 발명에서, 상기 확인 단계는, 상기 현재 블록에 이웃하는 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 확인되는 것을 특징으로 한다.
[41]
본 발명은, 현재 블록을 포함하는 비디오 신호에 대해 엔트로피 디코딩을 수행하는 방법에 있어서, 상기 현재 블록에 이웃하는 좌측 블록 및/또는 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도하는 단계; 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정하는 단계; 및 상기 컨텍스트 인덱스에 기초하여, 상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 단계를 포함하는 방법을 제공한다. 여기서, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이고, 상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이고, 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타낸다.
[42]
본 발명에서, 상기 어파인 예측 관련 신택스 요소가 어파인 플래그를 포함할 때, 상기 어파인 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 상기 상측 블록의 어파인 코딩 정보의 합에 기초하여 결정되고, 상기 어파인 플래그는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 플래그이다.
[43]
본 발명에서, 상기 어파인 예측 관련 신택스 요소가 어파인 파라미터 플래그를 포함할 때, 상기 어파인 파라미터 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제1값 및 상기 상측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제2값의 합에 기초하여 결정되고, 상기 어파인 파라미터 플래그는 어파인 움직임 예측이 상기 AF4 모드 또는 상기 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그이다.
[44]
본 발명에서, 상기 어파인 플래그에 기초하여 상기 좌측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 좌측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제1값은 1로 결정되고, 그렇지 않을 때 상기 제1값은 0으로 결정된다.
[45]
본 발명에서, 상기 어파인 플래그에 기초하여 상기 상측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 상측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제2값은 1로 결정되고, 그렇지 않을 때 상기 제2값은 0으로 결정된다.
[46]
본 발명에서, 상기 어파인 예측 관련 신택스 요소가 어파인 움직임 벡터 예측자 인덱스(affine motion vector predictor index) 및/또는 비-어파인 움직임 벡터 예측자 인덱스(non-affine motion vector predictor index)를 포함할 때, 상기 어파인 움직임 벡터 예측자 인덱스와 상기 비-어파인 움직임 벡터 예측자 인덱스는 서로 다른 테이블에 의해 정의되고, 상기 어파인 움직임 벡터 예측자 인덱스는 어파인 움직임 예측을 위해 이용되는 후보를 나타내고, 상기 상기 비-어파인 움직임 벡터 예측자 인덱스는 인터 예측을 위해 이용되는 후보를 나타낸다.
[47]
본 발명은, 현재 블록을 포함하는 비디오 신호에 대해 엔트로피 디코딩을 수행하는 장치에 있어서, 상기 현재 블록에 이웃하는 좌측 블록 및 상측 블록이 이용가능한지를 확인하고, 상기 좌측 블록 및/또는 상기 상측 블록 중 적어도 하나가 이용가능할 때, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도하고, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정하는 컨텍스트 모델링부; 및 상기 컨텍스트 인덱스에 기초하여, 상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 이진 산술 디코딩부를 포함하되, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이고, 상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이고, 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내는 장치를 제공한다.

발명의 실시를 위한 형태

[48]
이하, 본 발명의 실시예들에 따른 예시적인 엘리먼트들 및 동작들이 첨부된 도면들을 참조하여 기술된다. 그러나 상기 도면들을 참조하여 기술되는 본 발명의 상기 엘리먼트들 및 동작들은 단지 실시예들로서 제공되는 것이고, 이것에 의해서 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다는 것을 밝혀두고자 한다.
[49]
또한, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미가 명확하게 기재된다. 따라서, 본 명세서의 설명에서 사용된 용어의 명칭 만에 기초하여 본 발명이 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.
[50]
또한, 본 발명에서 사용되는 용어들은 발명을 설명하기 위해 선택된 일반적인 용어들이나, 유사한 의미를 갖는 다른 용어가 있는 경우 보다 적절한 해석을 위해 대체 가능할 것이다. 예를 들어, 신호, 데이터, 샘플, 픽쳐, 프레임, 블록은 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다.
[51]
또한, 본 명세서에서 설명되는 실시예들의 개념과 방법들은, 다른 실시예들에도 적용가능하며, 본 명세서에서 모두 명시하여 기재하지 않더라도 본 발명의 기술적 사상 범위 내에서 각 실시예들의 조합도 적용가능할 것이다.
[52]
[53]
도 1은 본 발명이 적용되는 실시예로서, 비디오 신호의 인코딩이 수행되는 인코더의 개략적인 블록도를 나타낸다.
[54]
도 1을 참조하면, 인코더(100)는 영상 분할부(110), 변환부(120), 양자화부(130), 역양자화부(140), 역변환부(150), 필터링부(160), 복호 픽쳐 버퍼(DPB: Decoded Picture Buffer) (170), 인터 예측부(180), 인트라 예측부(185) 및 엔트로피 인코딩부(190)를 포함하여 구성될 수 있다.
[55]
영상 분할부(110)는 인코더(100)에 입력된 입력 영상(Input image) (또는, 픽쳐, 프레임)를 하나 이상의 처리 유닛으로 분할할 수 있다. 예를 들어, 상기 처리 유닛은 코딩 트리 유닛(CTU: Coding Tree Unit), 코딩 유닛(CU: Coding Unit), 예측 유닛(PU: Prediction Unit) 또는 변환 유닛(TU: Transform Unit)일 수 있다. 이때, 상기 분할은 QT(QuadTree), BT(Binary Tree), TT(Ternary Tree), AT(Asymmetric Tree) 중 적어도 하나의 방식에 의해 수행될 수 있다.
[56]
비디오 코딩에서 하나의 블록은 QT(QuadTree) 기반으로 분할될 수 있다. 또한, QT에 의해서 분할된 하나의 서브 블록 (sub block)은 QT를 사용하여 재귀적으로 더 분할될 수 있다. 더 이상 QT 분할되지 않는 리프 블록 (leaf block)은 BT(Binary Tree), TT(Ternary Tree) 또는 AT(Asymmetric Tree) 중 적어도 하나의 방식에 의해서 분할될 수 있다. BT는 horizontal BT (2NxN, 2NxN)과 vertical BT (Nx2N, Nx2N)의 두 가지 형태의 분할을 가질 수 있다. TT는 horizontal TT (2Nx1/2N, 2NxN, 2Nx1/2N)와 vertical TT (1/2Nx2N, Nx2N, 1/2Nx2N)의 두 가지 형태의 분할을 가질 수 있다. AT는 horizontal-up AT (2Nx1/2N, 2Nx3/2N), horizontal-down AT (2Nx3/2N, 2Nx1/2N), vertical-left AT (1/2Nx2N, 3/2Nx2N), vertical-right AT (3/2Nx2N, 1/2Nx2N) 의 네 가지 형태의 분할을 가질 수 있다. 각각의 BT, TT, AT는 BT, TT, AT를 사용하여 재귀적으로 더 분할될 수 있다.
[57]
한편, BT, TT, AT 분할은 함께 사용하여 분할이 가능하다. 예를 들어, BT에 의해 분할된 서브 블록은 TT 또는 AT에 의한 분할이 가능하다. 또한, TT에 의해 분할된 서브 블록은 BT 또는 AT에 의한 분할이 가능하다. AT에 의해 분할된 서브 블록은 BT 또는 TT에 의한 분할이 가능하다. 예를 들어, horizontal BT 분할 이후, 각각의 서브 블록이 vertical BT로 분할될 수 있고, 또는 vertical BT 분할 이후, 각각의 서브 블록이 horizontal BT로 분할될 수도 있다. 상기 두 종류의 분할 방법은 분할 순서는 다르지만 최종적으로 분할되는 모양은 동일하다.
[58]
또한, 블록이 분할되면 블록을 탐색하는 순서를 다양하게 정의할 수 있다. 일반적으로, 좌측에서 우측으로, 상단에서 하단으로 탐색을 수행하며, 블록을 탐색한다는 것은 각 분할된 서브 블록의 추가적인 블록 분할 여부를 결정하는 순서를 의미하거나, 블록이 더 이상 분할되지 않을 경우 각 서브 블록의 부호화 순서를 의미하거나, 또는 서브 블록에서 다른 이웃 블록의 정보를 참조할 때의 탐색 순서를 의미할 수 있다.
[59]
다만, 상기 용어들은 본 발명에 대한 설명의 편의를 위해 사용할 뿐이며, 본 발명은 해당 용어의 정의에 한정되지 않는다. 또한, 본 명세서에서는 설명의 편의를 위해, 비디오 신호를 인코딩 또는 디코딩하는 과정에서 이용되는 단위로써 코딩 유닛이라는 용어를 사용하지만, 본 발명은 그에 한정되지 않으며 발명 내용에 따라 적절하게 해석 가능할 것이다.
[60]
인코더(100)는 입력 영상 신호에서 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호(prediction signal)를 감산하여 레지듀얼 신호(residual signal)를 생성할 수 있고, 생성된 레지듀얼 신호는 변환부(120)로 전송된다.
[61]
변환부(120)는 레지듀얼 신호에 변환 기법을 적용하여 변환 계수(transform coefficient)를 생성할 수 있다. 변환 과정은 정사각형의 동일한 크기를 갖는 픽셀 블록에 적용될 수도 있고, 정사각형이 아닌 가변 크기의 블록에도 적용될 수 있다.
[62]
양자화부(130)는 변환 계수를 양자화하여 엔트로피 인코딩부(190)로 전송하고, 엔트로피 인코딩부(190)는 양자화된 신호(quantized signal)를 엔트로피 코딩하여 비트스트림으로 출력할 수 있다.
[63]
상기 엔트로피 인코딩부(190)는 신택스 요소들에 대해 엔트로피 인코딩을 수행할 수 있으며, 이에 대해서는 도 3 및 명세서에서 보다 상세히 설명하도록 한다.
[64]
예를 들어, 본 발명의 일실시예는 어파인 예측(affine prediction)과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행하는 방법을 제안한다.
[65]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[66]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부(조건1) 및/또는 어떠한 어파인 예측 모드가 적용되었는지 (조건 2) 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[67]
다른 일실시예는, 어파인 예측을 위한 모션 벡터 예측 인덱스(affine_mvp_idx) 와 비-어파인 예측(non-affine prediction)을 위한 모션 벡터 예측 인덱스(mvp_idx)를 구분하여 컨텍스트 모델링을 수행하는 방법을 제안한다.
[68]
다른 일실시예는, 어파인 예측과 관련된 신택스 엘리먼트에 대해 CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩을 수행하는 방법을 제안한다.
[69]
양자화부(130)로부터 출력된 양자화된 신호(quantized signal)는 예측 신호를 생성하기 위해 이용될 수 있다. 예를 들어, 양자화된 신호(quantized signal)는 루프 내의 역양자화부(140) 및 역변환부(150)를 통해 역양자화 및 역변환을 적용함으로써 레지듀얼 신호를 복원할 수 있다. 복원된 레지듀얼 신호를 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호(prediction signal)에 더함으로써 복원 신호(reconstructed signal)가 생성될 수 있다.
[70]
한편, 위와 같은 압축 과정에서 인접한 블록들이 서로 다른 양자화 파라미터에 의해 양자화됨으로써 블록 경계가 보이는 열화가 발생될 수 있다. 이러한 현상을 블록킹 열화(blocking artifacts)라고 하며, 이는 화질을 평가하는 중요한 요소 중의 하나이다. 이러한 열화를 줄이기 위해 필터링 과정을 수행할 수 있다. 이러한 필터링 과정을 통해 블록킹 열화를 제거함과 동시에 현재 픽쳐에 대한 오차를 줄임으로써 화질을 향상시킬 수 있게 된다.
[71]
필터링부(160)는 복원 신호에 필터링을 적용하여 이를 재생 장치로 출력하거나 복호 픽쳐 버퍼(170)에 전송한다. 복호 픽쳐 버퍼(170)에 전송된 필터링된 신호는 인터 예측부(180)에서 참조 픽쳐로 사용될 수 있다. 이처럼, 필터링된 픽쳐를 화면간 예측 모드에서 참조 픽쳐로 이용함으로써 화질 뿐만 아니라 부호화 효율도 향상시킬 수 있다.
[72]
복호 픽쳐 버퍼(170)는 필터링된 픽쳐를 인터 예측부(180)에서의 참조 픽쳐로 사용하기 위해 저장할 수 있다.
[73]
인터 예측부(180)는 복원 픽쳐(reconstructed picture)를 참조하여 시간적 중복성 및/또는 공간적 중복성을 제거하기 위해 시간적 예측 및/또는 공간적 예측을 수행한다. 여기서, 예측을 수행하기 위해 이용되는 참조 픽쳐는 이전 시간에 부호화/복호화 시 블록 단위로 양자화와 역양자화를 거친 변환된 신호이기 때문에, 블로킹 아티팩트(blocking artifact)나 링잉 아티팩트(ringing artifact)가 존재할 수 있다.
[74]
따라서, 인터 예측부(180)는 이러한 신호의 불연속이나 양자화로 인한 성능 저하를 해결하기 위해, 로우패스 필터(lowpass filter)를 적용함으로써 픽셀들 사이의 신호를 서브 픽셀 단위로 보간할 수 있다. 여기서, 서브 픽셀은 보간 필터를 적용하여 생성된 가상의 픽셀을 의미하고, 정수 픽셀은 복원된 픽쳐에 존재하는 실제 픽셀을 의미한다. 보간 방법으로는 선형 보간, 양선형 보간(bi-linear interpolation), 위너 필터(wiener filter) 등이 적용될 수 있다.
[75]
보간 필터는 복원 픽쳐(reconstructed picture)에 적용되어 예측의 정밀도를 향상시킬 수 있다. 예를 들어, 인터 예측부(180)는 정수 픽셀에 보간 필터를 적용하여 보간 픽셀을 생성하고, 보간 픽셀들(interpolated pixels)로 구성된 보간 블록(interpolated block)을 예측 블록(prediction block)으로 사용하여 예측을 수행할 수 있다.
[76]
상기 인터 예측부(180)는 어파인 플래그 및/또는 어파인 파라미터 플래그 중 적어도 하나에 기초하여 어파인 움직임 벡터 예측을 수행할 수 있다.
[77]
본 명세서에서, AF 모드(Affine mode)라 함은 어파인 움직임 모델(affine motion model)을 이용하는 어파인 움직임 예측 모드를 의미하며, 예를 들어, 어파인 머지 모드(affine merge mode) 또는 어파인 인터 모드(affine inter mode) 중 적어도 하나를 포함할 수 있고, 상기 어파인 인터 모드(affine inter mode)는 AF4 모드 또는 AF6 모드 중 적어도 하나를 포함할 수 있다.
[78]
상기 어파인 플래그는 어파인 예측 (어파인 움직임 예측, 또는 어파인 움직임 벡터 예측)이 수행되는지 여부를 나타낸다. 또는 AF 모드가 수행되는지 여부를 나타낼 수 있다. 예를 들어, 상기 어파인 플래그는 affine_flag 로 표현될 수 있다. 상기 affine_flag = 1 이면, 현재 블록에 대해 AF 모드가 수행되는 것을 나타내고, 상기 affine_flag = 0 이면, 현재 블록에 대해 AF 모드가 수행되지 않는 것을 나타낸다.
[79]
현재 블록에 대해 AF 모드가 수행되지 않을 때, 상기 디코더는 상기 AF 모드가 아닌 코딩 모드에 따라 디코딩(즉, 움직임 벡터 예측)을 수행할 수 있다. 예를 들어, 스킵 모드, 머지 모드 또는 인터 모드가 이용될 수 있다.
[80]
상기 어파인 파라미터 플래그는, 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그이다. 예를 들어, 상기 어파인 파라미터 플래그는 affine_param_flag 로 표현될 수 있다. 상기 affine_param_flag = 0 이면, AF4 모드에 따라 움직임 벡터 예측이 수행되고, 상기 affine_param_flag = 1 이면, AF6 모드에 따라 움직임 벡터 예측이 수행되는 것을 의미할 수 있으나, 본 발명은 이에 한정되지 않는다.
[81]
다른 예로, 상기 어파인 파라미터 플래그는 AF4_flag 및 AF6_flag 중 적어도 하나를 포함할 수 있다.
[82]
AF4_flag 는 현재 블록에 대해 AF4 모드가 수행되는지 여부를 나타낸다. AF4_flag = 1이면 현재 블록에 대해 AF4 모드가 수행되고, AF4_flag = 0이면 현재 블록에 대해 AF4 모드가 수행되지 않는다. 여기서, AF4 모드가 수행된다는 것은 4개의 파라미터로 표현되는 어파인 움직임 모델을 이용하여 움직임 벡터 예측을 수행하는 것을 의미한다.
[83]
AF6_flag 는 현재 블록에 대해 AF6 모드가 수행되는지 여부를 나타낸다. AF6_flag = 1이면 현재 블록에 대해 AF6 모드가 수행되고, AF6_flag = 0이면 현재 블록에 대해 AF6 모드가 수행되지 않는다. 여기서, AF6 모드가 수행된다는 것은 6개의 파라미터로 표현되는 어파인 움직임 모델을 이용하여 움직임 벡터 예측을 수행하는 것을 의미한다.
[84]
상기 어파인 플래그 및 상기 어파인 파라미터 플래그는 슬라이스, 최대 코딩 유닛, 코딩 유닛 또는 예측 유닛 중 적어도 하나의 레벨에서 정의될 수 있다. 예를 들어, AF_flag, AF4_flag 및 AF6_flag 중 적어도 하나는 슬라이스 레벨에서 정의되고, 다시 블록 레벨 또는 예측 유닛 레벨에서 정의될 수 있다.
[85]
인트라 예측부(185)는 현재 부호화를 진행하려고 하는 블록의 주변에 있는 샘플들을 참조하여 현재 블록을 예측할 수 있다. 상기 인트라 예측부(185)는 인트라 예측을 수행하기 위해 다음과 같은 과정을 수행할 수 있다. 먼저, 예측 신호를 생성하기 위해 필요한 참조 샘플을 준비할 수 있다. 그리고, 준비된 참조 샘플을 이용하여 예측 신호를 생성할 수 있다. 이후, 예측 모드를 부호화하게 된다. 이때, 참조 샘플은 참조 샘플 패딩 및/또는 참조 샘플 필터링을 통해 준비될 수 있다. 참조 샘플은 예측 및 복원 과정을 거쳤기 때문에 양자화 에러가 존재할 수 있다. 따라서, 이러한 에러를 줄이기 위해 인트라 예측에 이용되는 각 예측 모드에 대해 참조 샘플 필터링 과정이 수행될 수 있다.
[86]
상기 인터 예측부(180) 또는 상기 인트라 예측부(185)를 통해 생성된 예측 신호(prediction signal)는 복원 신호를 생성하기 위해 이용되거나 레지듀얼 신호를 생성하기 위해 이용될 수 있다.
[87]
[88]
도 2는 본 발명이 적용되는 실시예로서, 비디오 신호의 디코딩이 수행되는 디코더의 개략적인 블록도를 나타낸다.
[89]
도 2를 참조하면, 디코더(200)는 파싱부(미도시), 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 필터링부(240), 복호 픽쳐 버퍼(DPB: Decoded Picture Buffer Unit) (250), 인터 예측부(260), 인트라 예측부(265) 및 복원부(미도시)를 포함하여 구성될 수 있다.
[90]
디코더(200)는 도 1의 인코더(100)로부터 출력된 신호를 수신할 수 있고, 파싱부(미도시)를 통해 신택스 엘리먼트를 파싱 또는 획득할 수 있다. 파싱 또는 획득된 신호는 엔트로피 디코딩부(210)를 통해 엔트로피 디코딩될 수 있다. 이는 도 4 및 명세서에서 보다 상세히 설명하도록 한다.
[91]
예를 들어, 본 발명의 일실시예는 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행하는 방법을 제안한다.
[92]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[93]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부(조건1) 및/또는 어떠한 어파인 예측 모드가 적용되었는지 (조건 2) 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[94]
다른 일실시예는, 어파인 예측을 위한 모션 벡터 예측 인덱스(affine_mvp_idx) 와 비-어파인 예측(non-affine prediction)을 위한 모션 벡터 예측 인덱스(mvp_idx)를 구분하여 컨텍스트 모델링을 수행하는 방법을 제안한다.
[95]
다른 일실시예는, 어파인 예측과 관련된 신택스 엘리먼트에 대해 CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩을 수행하는 방법을 제안한다.
[96]
역양자화부(220)에서는 양자화 스텝 사이즈 정보를 이용하여 엔트로피 디코딩된 신호로부터 변환 계수(transform coefficient)를 획득한다.
[97]
역변환부(230)에서는 변환 계수를 역변환하여 레지듀얼 신호(residual signal)를 획득하게 된다.
[98]
복원부(미도시)는 획득된 레지듀얼 신호를 인터 예측부(260) 또는 인트라 예측부(265)로부터 출력된 예측 신호(prediction signal)에 더함으로써 복원 신호(reconstructed signal)를 생성한다.
[99]
필터링부(240)는 복원 신호(reconstructed signal)에 필터링을 적용하여 이를 재생 장치로 출력하거나 복호 픽쳐 버퍼부(250)에 전송한다. 복호 픽쳐 버퍼부(250)에 전송된 필터링된 신호는 인터 예측부(260)에서 참조 픽쳐로 사용될 수 있다.
[100]
본 명세서에서, 인코더(100)의 필터링부(160), 인터 예측부(180) 및 인트라 예측부(185)에서 설명된 실시예들은 각각 디코더의 필터링부(240), 인터 예측부(260) 및 인트라 예측부(265)에도 동일하게 적용될 수 있다.
[101]
상기 디코더(200)를 통해 출력된 복원 영상 신호(reconstructed video signal)는 재생 장치를 통해 재생될 수 있다.
[102]
[103]
도 3은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 인코딩부의 개략적인 블록도를 나타낸다.
[104]
본 발명이 적용되는 엔트로피 인코딩부(300)는 이진화부(310), 컨텍스트 모델링부(320), 이진 산술 인코딩부(330) 및 메모리(360)를 포함하고, 상기 이진 산술 인코딩부(330)는 정규 이진 인코딩부(regular binary encoding unit)(340) 및 바이패스 이진 인코딩부(bypass binary encoding unit)(350)를 포함한다. 여기서, 상기 정규 이진 인코딩부(regular binary encoding unit)(340) 및 상기 바이패스 이진 인코딩부(bypass binary encoding unit)(350)는 각각 정규 코딩 엔진, 바이패스 코딩 엔진이라 불릴 수 있다.
[105]
상기 이진화부(310)은 데이터 심볼들의 시퀀스를 수신하고 이진화를 수행함으로써 0 또는 1의 이진화된 값으로 구성된 이진 심볼(bin) 스트링을 출력할 수 있다. 상기 이진화부(310)은 신택스(syntax) 요소들을 이진 심볼들로 매핑할 수 있다. 서로 다른 여러 이진화 과정들, 예를 들어, 단항(unary: U), 끝이 잘린 단항(truncated unary: TU), k차 Exp-Golomb (EGk), 및 고정 길이(Fixed Length) 과정 등이 이진화를 위해 사용될 수 있다. 상기 이진화 과정은 신택스 요소의 유형을 기반으로 선택될 수 있다.
[106]
출력된 이진 심볼 스트링은 컨텍스트 모델링부(320)으로 전송된다.
[107]
상기 컨텍스트 모델링부(320)은 메모리로부터 현재 블록을 코딩하는데 필요한 확률 정보를 선택하여 상기 이진 산술 인코딩부(330)로 전송한다. 예를 들어, 코딩할 신택스 엘리먼트에 기초하여 컨텍스트 메모리를 선택하고 빈 인덱스(binIdx)를 통해 현재 신택스 엘리먼트 코딩에 필요한 확률 정보를 선택할 수 있다. 여기서, 컨텍스트는 심볼의 발생 확률에 관한 정보를 의미하고, 컨텍스트 모델링은 이진화 결과인 빈(bin)을 입력으로 하여 이진 산술 코딩에 필요한 빈(bin)의 확률을 추정하는 과정을 의미한다.
[108]
상기 컨텍스트 모델링부(320)는 높은 코딩 효율을 성취하기 위해 필요한 정확한 확률 추정을 제공할 수 있다. 이에 따라, 서로 다른 이진 심볼들에 대해 서로 다른 컨텍스트 모델들이 사용될 수 있고 이러한 컨텍스트 모델의 확률은 이전에 코딩된 이진 심볼의 값들을 기반으로 업데이트될 수 있다. 이때, 이전에 코딩된 이진 심볼의 값들은 상기 메모리(360)에 저장되고, 상기 컨텍스트 모델링부(320)는 이로부터 이전에 코딩된 이진 심볼의 값들을 이용할 수 있다.
[109]
유사한 분포를 가지는 이진 심볼들은 동일한 컨텍스트 모델을 공유할 수 있다. 이러한 각 이진 심볼에 대한 컨텍스트 모델은 확률 추정을 위해, 빈의 신택스 정보, 빈 스트링에서의 빈의 위치를 나타내는 빈 인덱스(binIdx), 빈이 들어 있는 블록의 이웃 블록에 포함된 빈의 확률 중 적어도 하나가 이용될 수 있다.
[110]
본 발명의 일실시예는, 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행하는 방법을 제안한다.
[111]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[112]
본 발명에 따라 컨텍스트 모델이 결정되면, 상기 이진 산술 인코딩부(330)는 상기 컨텍스트 모델에 기초하여 이진 산술 인코딩을 수행할 수 있다.
[113]
상기 이진 산술 인코딩부(330)는 정규 이진 인코딩부(regular binary encoding unit)(340) 및 바이패스 이진 인코딩부(bypass binary encoding unit)(350)를 포함하고, 출력된 스트링에 대한 엔트로피 인코딩을 수행하고 압축된 데이터 비트들을 출력한다.
[114]
상기 정규 이진 인코딩부(regular binary encoding unit)(340)는 재귀적 구간 분할(recursive interval division)을 기반으로 산술 코딩을 수행한다.
[115]
먼저, 0 내지 1의 초기값을 가지는 구간(또는 범위)이 이진 심볼의 확률을 기반으로 두 개의 하위 구간들로 분할된다. 인코딩된 비트들은 이진 분수로 변환되는 경우 디코딩된 이진 심볼의 값을 나타내는 두 개의 하위 구간 중 하나를 선택하는 오프셋을 제공한다.
[116]
디코딩된 모드의 이진 심볼 이후에, 상기 구간은 선택된 하위 구간을 동일하게 하기 위해 업데이트될 수 있으며, 상기 구간 분할 과정 자체가 반복된다. 상기 구간 및 오프셋은 제한된 비트 정밀도를 가지며, 따라서 상기 구간이 특정한 값 아래로 떨어질 때마다 오버플로우를 방지하기 위해 재정규화(renormalization)가 필요할 수 있다. 상기 재정규화(renormalization)는 각각의 이진 심볼이 디코딩된 이후에 발생할 수 있다.
[117]
상기 바이패스 이진 인코딩부(bypass binary encoding unit)(350)는 컨텍스트 모델 없이 인코딩을 수행하며, 현재 코딩되는 빈(bin)의 확률을 0.5로 고정하여 코딩을 수행한다. 이는 신택스의 확률을 결정하기 어렵거나 고속으로 코딩하고자 할 때 이용될 수 있다.
[118]
[119]
도 4는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)이 적용되는 엔트로피 디코딩부의 개략적인 블록도를 나타낸다.
[120]
본 발명이 적용되는 엔트로피 디코딩부(400)는 컨텍스트 모델링부(410), 이진 산술 디코딩부(420), 메모리(450) 및 역이진화부(460)를 포함하고, 상기 이진 산술 디코딩부(420)는 정규 이진 디코딩부(regular binary decoding unit)(430) 및 바이패스 이진 디코딩부(bypass binary decoding unit)(440)를 포함한다.
[121]
상기 엔트로피 디코딩부(400)는 비트스트림을 수신하고 그로부터 바이패스 플래그(bypass flag)를 확인할 수 있다. 여기서, 바이패스 플래그(bypass flag)는 바이패스 모드(bypass mode)인지 여부를 나타내고, 상기 바이패스 모드(bypass mode)는 컨텍스트 모델을 이용하지 않고, 현재 코딩되는 빈(bin)의 확률을 0.5로 고정하여 코딩을 수행하는 것을 의미한다.
[122]
상기 바이패스 플래그(bypass flag)에 따라 바이패스 모드(bypass mode)가 아닐 때, 상기 정규 이진 디코딩부(regular binary decoding unit)(430)는 정규 모드(regular mode)에 따라 이진 산술 디코딩을 수행한다.
[123]
이때, 상기 컨텍스트 모델링부(410)는 상기 메모리(450)로부터 현재 비트스트림을 디코딩하는데 필요한 확률 정보를 선택하여 상기 정규 이진 디코딩부(regular binary decoding unit)(430)로 전송한다.
[124]
본 발명의 일실시예는, 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행하는 방법을 제안한다.
[125]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정하는 방법을 제안한다.
[126]
본 발명에 따라 컨텍스트 모델이 결정되면, 상기 이진 산술 디코딩부(420)는 상기 컨텍스트 모델에 기초하여 이진 산술 디코딩을 수행할 수 있다.
[127]
한편, 상기 바이패스 플래그(bypass flag)에 따라 바이패스 모드(bypass mode)일 때, 상기 바이패스 이진 디코딩부(bypass binary decoding unit)(440)는 바이패스 모드(bypass mode)에 따라 이진 산술 디코딩을 수행한다.
[128]
상기 역이진화부(460)는 상기 이진 산술 디코딩부(420)에서 디코딩된 이진수 형태의 빈(bin)을 입력받아 정수 형태의 신택스 엘리먼트 값으로 변환 출력하게 된다.
[129]
[130]
도 5는 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 인코딩 흐름도를 나타낸다.
[131]
인코더는, 신택스 엘리먼트에 대해 이진화를 수행할 수 있다(S510).
[132]
상기 인코더는, 정규 모드에 따라 이진 산술 코딩을 수행할지 또는 바이패스 모드에 따라 이진 산술 코딩을 수행할지 여부를 확인할 수 있다(S520). 예를 들어, 상기 인코더는 바이패스 플래그(bypass flag)에 기초하여 정규 모드인지 바이패스 모드인지 여부를 확인할 수 있으며, 예를 들어 상기 바이패스 플래그(bypass flag)가 1이면 바이패스 모드를 나타내고, 0이면 정규 모드를 나타낼 수 있다.
[133]
정규 모드일 때, 상기 인코더는 확률 모델을 선택할 수 있고(S530), 상기 확률 모델에 기초하여 이진 산술 인코딩을 수행할 수 있다(S540). 그리고, 상기 인코더는, 확률 모델을 업데이트할 수 있으며(S550), 상기 S530 단계에서 업데이트된 확률 모델에 기초하여 다시 적합한 확률 모델을 선택할 수 있다.
[134]
본 발명의 일실시예는 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행할 수 있다.
[135]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정할 수 있다.
[136]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부(조건1) 및/또는 어떠한 어파인 예측 모드가 적용되었는지 (조건 2) 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정할 수 있다.
[137]
다른 일실시예는, 어파인 예측을 위한 모션 벡터 예측 인덱스(affine_mvp_idx) 와 비-어파인 예측(non-affine prediction)을 위한 모션 벡터 예측 인덱스(mvp_idx)를 구분하여 컨텍스트 모델링을 수행할 수 있다.
[138]
한편, 바이패스 모드일 때, 상기 인코더는 확률 0.5에 기초하여 이진 산술 인코딩을 수행할 수 있다(S560).
[139]
본 발명의 일실시예는 어파인 예측과 관련된 신택스 엘리먼트에 대해 CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩을 수행하는 방법을 제안한다.
[140]
[141]
도 6은 본 발명이 적용되는 실시예로서, CABAC(Context-based Adaptive Binary Arithmetic Coding)에 따라 수행되는 디코딩 흐름도를 나타낸다.
[142]
먼저, 디코더는 비트스트림을 수신할 수 있다(S610).
[143]
상기 디코더는 상기 비트스트림으로부터 바이패스 플래그(bypass flag)를 추출하여 정규 모드인지 바이패스 모드인지 여부를 확인할 수 있다(S620). 여기서, 상기 바이패스 플래그(bypass flag)는 신택스의 종류에 따라 사전에 결정되어 있을 수 있다.
[144]
예를 들어, 어파인 예측과 관련된 신택스 엘리먼트에 대해 CABAC(Context-based Adaptive Binary Arithmetic Coding) 바이패스 코딩을 수행하도록 할 수 있다.
[145]
상기 바이패스 플래그(bypass flag)가 정규 모드를 나타낼 때, 상기 디코더는 확률 모델을 선택할 수 있고(S630), 상기 확률 모델에 기초하여 이진 산술 디코딩을 수행할 수 있다(S640). 그리고, 상기 디코더는, 확률 모델을 업데이트할 수 있으며(S650), 상기 S630 단계에서 업데이트된 확률 모델에 기초하여 다시 적합한 확률 모델을 선택할 수 있다.
[146]
본 발명의 일실시예는 어파인 예측과 관련된 신택스 엘리먼트(affine_flag, affine_param_flag, affine_mvp_idx, mvp_idx, etc)에 대해 컨텍스트 모델링을 수행할 수 있다.
[147]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정할 수 있다.
[148]
다른 일실시예는, 이웃 블록이 어파인 코딩되었는지 여부(조건1) 및/또는 어떠한 어파인 예측 모드가 적용되었는지 (조건 2) 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정할 수 있다.
[149]
다른 일실시예는, 어파인 예측을 위한 모션 벡터 예측 인덱스(affine_mvp_idx) 와 비-어파인 예측(non-affine prediction)을 위한 모션 벡터 예측 인덱스(mvp_idx)를 구분하여 컨텍스트 모델링을 수행할 수 있다.
[150]
한편, 상기 바이패스 플래그(bypass flag)가 바이패스 모드를 나타낼 때, 상기 디코더는 확률 0.5에 기초하여 이진 산술 디코딩을 수행할 수 있다(S660).
[151]
상기 디코더는 디코딩된 빈스트링(bin string)에 대해 역이진화를 수행할 수 있다(S670). 예를 들어, 디코딩된 이진수 형태의 빈(bin)을 입력받아 정수 형태의 신택스 엘리먼트 값으로 변환 출력할 수 있다.
[152]
[153]
도 7은 본 발명이 적용되는 실시예로서, 이웃 블록에 기초하여 컨텍스트 모델을 선택하는 방법을 설명하기 위한 블록 관계도를 나타낸다.
[154]
CABAC 의 컨텍스트 모델은 통계적 특성에 따라 다양하게 고려될 수 있다. 예를 들어, 1 개의 컨텍스트 모델을 사용할 때 특별한 조건을 고려하지 않고 하나의 컨텍스트 모델이 이용될 수 있다. 그러나, 3 개의 컨텍스트 모델을 사용할 때에는 조건에 따라, 즉 이웃 블록의 신택스 요소에 기초하여 컨텍스트 모델이 설계될 수 있다.
[155]
상기 도 7을 살펴보면, 현재 블록을 C, 현재 블록에 인접한 좌측 블록을 L, 상측 블록을 A라 한다. 현재 블록 C의 신택스에 대한 컨텍스트 모델은 이웃 블록인 좌측 블록 (L) 이나 상측 블록 (A) 중 적어도 하나를 이용하여 결정될 수 있다. 다음 수학식 1은 상기 좌측 블록과 상기 상측 블록을 이용하여 컨텍스트 모델을 선택하는 방법을 나타낸다.
[156]
[수식1]


[157]
여기서, availableL과 availableA는 각각 좌측 블록과 상측 블록이 존재하는지 여부를 나타내며, condL과 condA는 각각 좌측 블록과 상측 블록에 대한 해당 신택스의 값을 의미한다.
[158]
상기 수학식 1에 따르면, 이웃 블록의 신택스 값에 따라서 3개의 컨텍스트 모델이 사용될 수 있다. 상기 컨텍스트 모델은 현재 블록의 크기 또는 이웃 블록의 크기에 상관없이 이웃 블록의 신택스 값에 따라 결정될 수 있다. 그러나, 이웃 블록의 어파인 예측 코딩과 관련된 정보에 따라 어파인 예측 관련 신택스 요소의 통계적인 특성이 다를 수 있다.
[159]
따라서, 본 발명에서는 이웃 블록의 어파인 예측 코딩과 관련된 정보에 기초하여 컨텍스트 모델을 결정하는 방법을 제안한다.
[160]
[161]
도 8은 본 발명이 적용되는 실시예로서, 좌측 블록과 상측 블록을 이용하여 컨텍스트 모델을 선택하는 방법을 나타내는 흐름도이다.
[162]
본 발명에 따라 컨텍스트 모델을 선택하는 방법은 인코더 및 디코더에서 모두 적용될 수 있으며, 설명의 편의상 디코더를 기준으로 설명하도록 한다.
[163]
먼저, 디코더는 현재 블록에 이웃하는 좌측 블록 및 상측 블록을 유도할 수 있다(S810). 즉, 현재 블록에 인접하는 좌측 블록 및 상측 블록이 이용가능한지 확인할 수 있다.
[164]
상기 좌측 블록 및 상기 상측 블록 중 적어도 하나가 이용가능할 때, 상기 디코더는 상기 좌측 블록 및 상기 상측 블록 중 적어도 하나로부터 신택스 값을 유도할 수 있다(S820).
[165]
그리고, 상기 디코더는 상기 좌측 블록 및 상기 상측 블록 중 적어도 하나의 신택스 값에 기초하여 컨텍스트 모델을 결정할 수 있다(S830).
[166]
상기 결정된 컨텍스트 모델에 기초하여, 상기 디코더는 컨텍스트 인덱스(CtxIdx) 값을 유도할 수 있다(S840).
[167]
상기 디코더는, 상기 컨텍스트 인덱스(CtxIdx) 값에 기초하여 이진 산술 디코딩을 수행할 수 있다(S850).
[168]
[169]
도 9는 본 발명이 적용되는 실시예로서, 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 과정을 나타내는 흐름도이다.
[170]
디코더는, 현재 블록에 이웃하는 좌측 블록 및/또는 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도할 수 있다(S910).
[171]
여기서, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이다. 예를 들어, 좌측 블록의 어파인 코딩 정보는 affine_L 로 표시하고, 상측 블록의 어파인 코딩 정보는 affine_A 로 표시할 수 있다.
[172]
상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이이다. 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타낸다. 예를 들어, 좌측 블록의 어파인 예측 모드 정보는 affine_param_L 로 표시하고, 상측 블록의 어파인 예측 모드 정보는 affine_ param_A 로 표시할 수 있다.
[173]
상기 디코더는, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정할 수 있다(S920).
[174]
상기 디코더는, 상기 컨텍스트 인덱스에 기초하여, 상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩할 수 있다(S930).
[175]
상기 엔트로피 디코딩된 어파인 예측 관련 신택스 요소는 어파인 움직임 벡터 예측을 위해 이용될 수 있다.
[176]
[177]
도 10은 본 발명이 적용되는 실시예로서, 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 장치의 개략적인 블록도이다.
[178]
본 발명이 적용되는 엔트로피 디코딩부는 이웃 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도하는 요소(1010), 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정하는 요소(1020) 및 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 요소(1030)를 포함할 수 있다.
[179]
상기 이웃 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도하는 요소(1010)는 현재 블록에 이웃하는 좌측 블록 및/또는 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도할 수 있다.
[180]
상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정하는 요소(1020)는 좌측 블록 및/또는 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정할 수 있다.
[181]
상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 요소(1030)는 컨텍스트 인덱스에 기초하여, 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩할 수 있다.
[182]
상기 엔트로피 디코딩된 어파인 예측 관련 신택스 요소는 어파인 움직임 벡터 예측을 위해 이용될 수 있다.
[183]
[184]
도 11은 본 발명이 적용되는 실시예로서, 이웃 블록의 어파인 예측 코딩 관련 정보에 기초하여 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 과정을 나타내는 흐름도이다.
[185]
디코더는, 현재 블록에 이웃하는 좌측 블록 및 상측 블록이 이용가능한지를 확인할 수 있다(S1110).
[186]
상기 디코더는, 상기 좌측 블록 및/또는 상기 상측 블록 중 적어도 하나가 이용가능할 때, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도할 수 있다(S1120).
[187]
여기서, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이다. 예를 들어, 좌측 블록의 어파인 코딩 정보는 affine_L 로 표시하고, 상측 블록의 어파인 코딩 정보는 affine_A 로 표시할 수 있다.
[188]
상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이이다. 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타낸다. 예를 들어, 좌측 블록의 어파인 예측 모드 정보는 affine_param_L 로 표시하고, 상측 블록의 어파인 예측 모드 정보는 affine_ param_A 로 표시할 수 있다.
[189]
상기 디코더는, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정할 수 있다(S1130).
[190]
일실시예로, 상기 어파인 예측 관련 신택스 요소가 어파인 플래그를 포함할 때, 상기 어파인 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 상기 상측 블록의 어파인 코딩 정보의 합에 기초하여 결정될 수 있다. 이때, 상기 어파인 플래그는 어파인 움직임 예측이 수행되었는지 여부를 나타낸다.
[191]
일실시예로, 상기 어파인 예측 관련 신택스 요소가 어파인 파라미터 플래그를 포함할 때, 상기 어파인 파라미터 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제1값 및 상기 상측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제2값의 합에 기초하여 결정될 수 있다. 이때, 상기 어파인 파라미터 플래그는 어파인 움직임 예측이 상기 AF4 모드 또는 상기 AF6 모드에 기초하여 수행되는지 여부를 나타낸다.
[192]
예를 들어, 상기 어파인 플래그에 기초하여 상기 좌측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 좌측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제1값은 1로 결정되고, 그렇지 않을 때 상기 제1값은 0으로 결정된다.
[193]
예를 들어, 상기 어파인 플래그에 기초하여 상기 상측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 상측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제2값은 1로 결정되고, 그렇지 않을 때 상기 제2값은 0으로 결정된다.
[194]
다른 예로, 상기 어파인 예측 관련 신택스 요소가 어파인 움직임 벡터 예측자 인덱스(affine motion vector predictor index) 및/또는 비-어파인 움직임 벡터 예측자 인덱스(non-affine motion vector predictor index)를 포함할 때, 상기 어파인 움직임 벡터 예측자 인덱스와 상기 비-어파인 움직임 벡터 예측자 인덱스는 서로 다른 테이블에 의해 정의될 수 있다. 이때, 상기 어파인 움직임 벡터 예측자 인덱스는 어파인 움직임 예측을 위해 이용되는 후보를 나타내고, 상기 상기 비-어파인 움직임 벡터 예측자 인덱스는 인터 예측을 위해 이용되는 후보를 나타낸다.
[195]
상기 디코더는, 상기 컨텍스트 인덱스에 기초하여, 상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩할 수 있다(S1140).
[196]
상기 엔트로피 디코딩된 어파인 예측 관련 신택스 요소는 어파인 움직임 벡터 예측을 위해 이용될 수 있다.
[197]
[198]
도 12는 본 발명이 적용되는 실시예로서, 어파인 플래그의 컨텍스트 인덱스를 결정하는 과정을 나타내는 흐름도이다.
[199]
본 발명의 일실시예는, 어파인 플래그(affine_flag)를 위한 컨텍스트 모델을 제안한다. 현재 블록 (C) 의 컨텍스트 모델은 이웃하는 좌측 블록 (L) 과 상측 블록 (A) 의 어파인 코딩 정보에 기초하여 3개의 컨텍스트 모델로 구성되며 다음 수학식 2와 같이 컨텍스트 인덱스를 결정할 수 있다. 여기서, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타낸다.
[200]
[수식2]


[201]
여기서, ctx_idx_for_affine_flag 는 어파인 플래그(affine_flag)를 위한 컨텍스트 인덱스이고, 이는 0~2 의 값을 가질 수 있다.
[202]
예를 들어, affine_L 는 좌측 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 나타내고, affine_A 는 상측 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 나타낸다. 어파인 움직임 예측이 수행될 때, affine_L 또는 affine_A 는 1값을 갖고, 어파인 움직임 예측이 수행되지 않을 때, affine_L 또는 affine_A 는 0값을 갖는다.
[203]
어파인 움직임 예측이 수행된 이웃 블록의 수가 많을수록 (즉, ctx_idx_for_affine_flag 값이 클수록) 현재 블록도 어파인 움직임 예측이 수행된 블록일 확률이 높다. 따라서, 각 컨텍스트 모델은 다음 표 1과 같이 구성될 수 있다.
[204]
[표1]
ctx_idx_for_affine_flag 0 1 2
Init_val N0 N1 N2

[205]
여기서, Init_val 는 초기값을 나타내며, 다음 수학식 3을 만족하는 임의의 값을 나타낸다.
[206]
[수식3]


[207]
여기서, p(N 0), p(N 1), p(N 2)는 각 초기값에서 어파인 플래그(affine_flag)가 참(true)일 확률값을 의미한다.
[208]
따라서, 상기 수학식 3은 어파인 움직임 예측이 수행된 이웃 블록의 수가 많을수록 현재 블록도 어파인 움직임 예측이 수행된 블록일 확률이 높다는 것을 의미한다.
[209]
상기 도 12를 살펴보면, 디코더는 현재 블록의 좌측 블록 및/또는 상측 블록의 어파인 코딩 정보를 유도할 수 있다(S1210).
[210]
상기 디코더는 상기 어파인 코딩 정보에 기초하여 좌측 블록 및/또는 상측 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 확인할 수 있다(S1220).
[211]
상기 좌측 블록에 대해 어파인 움직임 예측이 수행될 때, affine_L = 1 (제1값)로 결정될 수 있고, 상기 상측 블록에 대해 어파인 움직임 예측이 수행될 때, affine_A = 1 (제2값)로 결정될 수 있다(S1230).
[212]
반면, 상기 좌측 블록에 대해 어파인 움직임 예측이 수행되지 않을 때, affine_L = 0 (제1값)으로 결정될 수 있고, 상기 상측 블록에 대해 어파인 움직임 예측이 수행되지 않을 때, affine_A = 0 (제2값)으로 결정될 수 있다(S1240).
[213]
상기 디코더는 상기 좌측 블록에 대한 제1값과 상기 상측 블록에 대한 제2값의 합에 기초하여 어파인 플래그의 컨텍스트 인덱스를 결정할 수 있다(S1250).
[214]
즉, 상기 디코더는, 상기 좌측 블록의 어파인 코딩 정보와 상기 상측 블록의 어파인 코딩 정보의 합에 기초하여 상기 어파인 플래그의 컨텍스트 인덱스를 결정할 수 있다. 이때, 상기 어파인 플래그는 어파인 움직임 예측이 수행되었는지 여부를 나타낸다.
[215]
이와 같이, 본 발명은, 이웃 블록의 어파인 코딩 정보에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정함으로써, 현재 블록에 보다 적합한 컨텍스트 모델을 결정할 수 있고, 이를 통해 엔트로피 부호화/복호화에 대한 성능을 향상시킬 수 있다.
[216]
[217]
도 13은 본 발명이 적용되는 실시예로서, 어파인 파라미터 플래그의 컨텍스트 인덱스를 결정하는 과정을 나타내는 흐름도이다.
[218]
본 발명의 일실시예에 따르면, 어파인 예측 관련 신택스 요소가 어파인 파라미터 플래그를 포함할 때, 상기 어파인 파라미터 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제1값 및 상기 상측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제2값의 합에 기초하여 결정될 수 있다. 여기서, 상기 어파인 파라미터 플래그는 어파인 움직임 예측이 상기 AF4 모드 또는 상기 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그이다.
[219]
그리고, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이다.
[220]
상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이다. 여기서, 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타낸다.
[221]
다른 예로, 상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그일 수 있다. 예를 들어, affine_param_flag = 1 이면 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, affine_param_flag = 0 이면 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타낸다.
[222]
본 발명은, 어파인 파라미터 플래그(affine_param_flag)를 위한 컨텍스트 모델을 설명한다. 현재 블록 (C) 의 컨텍스트 모델은, 좌측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제1값 및 상측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제2값의 합에 기초하여 3 개의 컨텍스트 모델을 사용하며, 이는 다음 수학식 4와 같다.
[223]
[수식4]


[224]
여기서, ctx_idx_for_affine_param_flag 는 어파인 파라미터 플래그(affine_param_flag)를 위한 컨텍스트 인덱스이며, 0~2 의 값을 가질 수 있다.
[225]
예를 들어, affine_L 는 좌측 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 나타내고, affine_A 는 상측 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 나타낸다. 어파인 움직임 예측이 수행될 때, affine_L 또는 affine_A 는 1값을 갖고, 어파인 움직임 예측이 수행되지 않을 때, affine_L 또는 affine_A 는 0값을 갖는다.
[226]
예를 들어, affine_ param_L 는 좌측 블록에 대해 어파인 움직임 예측이 AF6 모드에 기초하여 수행되는지 여부를 나타내고, affine_ param_A 는 상측 블록에 대해 어파인 움직임 예측이 AF6 모드에 기초하여 수행되는지 여부를 나타낸다. 어파인 움직임 예측이 AF6 모드에 기초하여 수행될 때, affine_param_L 또는 affine_param_A 는 1값을 갖고, 어파인 움직임 예측이 AF6 모드에 기초하여 수행되지 않을 때, affine_param_L 또는 affine_param_A 는 0값을 갖는다.
[227]
[228]
상기 도 13을 살펴보면, 디코더는 현재 블록의 좌측 블록 및/또는 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도를 유도할 수 있다(S1310).
[229]
상기 디코더는 상기 어파인 코딩 정보에 기초하여 좌측 블록 및/또는 상측 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 확인할 수 있다(S1320).
[230]
상기 디코더는 상기 어파인 예측 모드 정보에 기초하여 어파인 움직임 예측이 AF6 모드에 기초하여 수행되었는지 또는 AF4 모드에 기초하여 수행되었는지 여부를 확인할 수 있다(S1330).
[231]
예를 들어, 어파인 움직임 예측이 수행되고, 어파인 움직임 예측이 AF6 모드에 기초하여 수행될 때, 좌측 블록의 경우 (제1값) affine_L && affine_param_L = 1 이 되고, 상측 블록의 경우 (제2값)affine_A && affine_param_A = 1 이 된다(S1340).
[232]
반면, 어파인 움직임 예측이 수행되지 않거나, 또는 어파인 움직임 예측이 AF6 모드에 기초하여 수행되지 않을 때에는, 좌측 블록의 경우 (제1값) affine_L && affine_param_L = 0 이 되고, 상측 블록의 경우 (제2값)affine_A && affine_param_A = 0 이 된다(S1350).
[233]
상기 디코더는 상기 제1값과 상기 제2값의 합에 기초하여 어파인 파라미터 플래그의 컨텍스트 인덱스를 결정할 수 있다. 예를 들어, 상기 어파인 파라미터 플래그의 컨텍스트 인덱스는 0~2 의 값을 가질 수 있다.
[234]
어파인 움직임 예측이 AF6 모드에 기초하여 수행된 이웃 블록의 수가 많을수록 (즉, ctx_idx_for_affine_param_flag 값이 클수록) 현재 블록도 어파인 움직임 예측이 AF6 모드에 기초하여 수행된 블록일 확률이 높다. 따라서, 각 컨텍스트 모델은 다음 표 2와 같이 구성될 수 있다.
[235]
[표2]
ctx_idx_for_affine_param_flag 0 1 2
Init_val N0 N1 N2

[236]
여기서, Init_val 는 초기값을 나타내며, 다음 수학식 5를 만족하는 임의의 값을 나타낸다.
[237]
[수식5]


[238]
여기서, p(N 0), p(N 1), p(N 2)는 각 초기값에서 어파인 파라미터 플래그(affine_param_flag)가 참(true)일 확률값을 의미한다.
[239]
따라서, 상기 수학식 5는 어파인 움직임 예측이 AF6 모드에 기초하여 수행된 이웃 블록의 수가 많을수록 현재 블록도 어파인 움직임 예측이 AF6 모드에 기초하여 수행된 블록일 확률이 높다는 것을 의미한다.
[240]
이와 같이, 본 발명은, 이웃 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 어파인 예측과 관련된 신택스 엘리먼트의 컨텍스트 인덱스를 결정함으로써, 현재 블록에 보다 적합한 컨텍스트 모델을 결정할 수 있고, 이를 통해 엔트로피 부호화/복호화에 대한 성능을 향상시킬 수 있다.
[241]
[242]
도 14는 본 발명이 적용되는 실시예로, affine_param_flag 를 부호화하기 위해 1개의 컨텍스트 모델을 이용하는 방법을 설명하기 위한 흐름도이다.
[243]
실제 부호화/복호화에서 affine_param_flag 의 발생 빈도가 매우 낮을 때, 3개의 컨텍스트 모델을 사용할 경우 실제 발생 확률과 확률 모델이 다를 수 있다. 예를 들어, 3개의 컨텍스트 모델을 이용하여 affine_param_flag 의 발생 확률을 구해보면 다음 표 3과 같을 수 있다.
[244]
[표3]
[245]
이 경우, 3개의 컨텍스트 모델에 따른 경향 및 QP 에 따른 경향을 발견하기 어렵다. 따라서, 본 발명은 다음 표 4와 같이 1개의 컨텍스트 모델을 구성하고 초기값은 QP 에 따라 일정한 확률을 갖는 값으로 결정할 수 있다.
[246]
[표4]
ctx_idx_for_affine_param_flag 0
Init_val N

[247]
상기 도 14를 살펴보면, 인코더/디코더는 현재 블록에 대해 어파인 움직임 예측이 수행되었는지 여부를 확인할 수 있다(S1410). 예를 들어, 이는 상기 도 12의 과정에 의해 결정될 수 있으며, 중복되는 설명은 생략하도록 한다.
[248]
상기 현재 블록에 대해 어파인 움직임 예측이 수행될 때, 상기 인코더/디코더는 기정의된 1개의 컨텍스트 모델에 기초하여 헌재 블록의 어파인 파라미터 플래그를 파싱할 수 있다(S1420). 이때, 컨텍스트 모델은 1개만 이용되기 때문에 컨텍스트 인덱스는 항상 0이 된다.
[249]
상기 인코더/디코더는 상기 파싱된 어파인 파라미터 플래그에 기초하여 컨텍스트 모델을 업데이트할 수 있다(S1430).
[250]
이와 같이, 1개의 컨텍스트 모델만을 이용함으로써 기존에 복수개의 컨텍스트 모델을 이용하는 것에 비하여, 신택스 요소를 보다 효과적으로 코딩/디코딩할 수 있게 된다.
[251]
[252]
본 발명이 적용되는 다른 실시예로, affine_param_flag 의 CABAC 바이패스 코딩을 통해 코딩 성능을 유지하면서 쓰루풋을 향상시킬 수 있다.
[253]
CABAC이 높은 코딩 성능을 나타내는 반면, 데이터 의존성은 특히 높은 비트율에서는 쓰루풋 장애(throughput bottleneck)를 초래한다. 높은 쓰루풋은 전력 절약을 제공하기 때문에, CABAC은 비디오 코딩/디코딩에 있어서 배터리 수명을 제한할 수 있다. 이는 스마트폰과 같은 포터블 디바이스의 경우에는 매우 중요하다. 따라서, 비디오 코딩 시스템을 설계함에 있어서 코딩 효율 뿐만 아니라 쓰루풋 향상도 매우 중요한 요소이다.
[254]
대부분의 쓰루풋 향상은 일정하게 분배된 빈들(uniform distributed bins)에 대한 확률 예측(probability estimation)의 바이패스(바이패스 코딩 모드)에 의해 수행될 수 있다.
[255]
따라서, 본 발명은 affine_param_flag 의 바이패스 코딩을 통해 코딩 성능을 유지하면서 쓰루풋을 향상시키는 방법을 제공한다. 구체적으로, 하나의 빈이 affine_param_flag 를 위해 이용되고, affine_param_flag의 하나의 빈이 바이패스 코딩되는 방법을 제공한다.
[256]
본 발명에 따른 affine_param_flag 의 바이패스 코딩에 따른 테스트 결과를 살펴보면 다음 표 5와 같다.
[257]
[표5]
[258]
또한, affine_mvp_idx 는 mvd_CPi 와 구분되어 디코딩될 수 있으며, 이는 도 15에서 설명하도록 한다. 이때, 상기 도 15의 mvp_idx 는 도 17의 mvd_CPi 로 대체되어 적용될 수 있다. 여기서, mvd_CPi 는 제어점 CPi 의 움직임 벡터 차이를 나타낸다.
[259]
[260]
도 15는 본 발명이 적용되는 실시예로서, 어파인 플래그에 기초하여 어파인 움직임 예측을 신택스 구조를 나타낸다.
[261]
본 발명은, mvp_idx 를 부호화하기 위한 컨텍스트 모델을 설명한다. 상기 도 15에서와 같이 MVP(Motion Vector Predictor) 후보자(candidate)는 어파인 움직임 예측 코딩되었는지 여부에 상관없이 인터 코딩에서 사용되기 때문에 어파인 움직임 예측과 그 이외의 인터 예측에서 이들을 구분하여 사용하지 않는다. 따라서, 본 발명에서는 mvp_idx 를 위한 1개의 컨텍스트 모델 및 초기값을 사용하는 방법을 제공한다.
[262]
디코더는 merge_flag를 획득하여, 현재 블록에 대해 머지 모드가 적용되는지 여부를 확인할 수 있다(S1510).
[263]
상기 현재 블록에 대해 머지 모드가 적용되지 않을 때, 상기 디코더는 affine_flag 를 획득할 수 있다(S1520). 여기서, affine_flag 는 AF 모드가 수행되는지 여부를 나타낸다.
[264]
상기 affine_flag = 1 이면, 즉 현재 블록에 대해 AF 모드가 수행되면, 상기 디코더는 affine_param_flag 를 획득할 수 있다(S1530). 여기서, affine_param_flag 는 AF6 모드가 수행되는지 여부(또는 AF4 모드가 수행되는지 여부)를 나타낸다.
[265]
그리고, 상기 디코더는 움직임 벡터 예측자 인덱스(mvp_idx)를 획득할 수 있다(S1540). 이때, mvp_idx 를 위한 1개의 컨텍스트 모델 및 초기값이 이용될 수 있다.
[266]
상기 디코더는 상기 움직임 벡터 예측자 인덱스(mvp_idx)에 기초하여 움직임 예측자를 획득할 수 있고, 상기 움직임 예측자에 기초하여 비디오 신호를 복원할 수 있다.
[267]
[268]
도 16은 본 발명이 적용되는 실시예로서, 어파인 예측을 위한 움직임 벡터 예측자 인덱스와 인터 예측을 위한 움직임 벡터 예측자 인덱스를 구분하여 디코딩하는 신택스 구조를 나타낸다.
[269]
본 발명은, 어파인 예측(affine prediction)을 위한 mvp_idx (affine_mvp_idx)와 비-어파인 예측(non-affine prediction)을 위한 mvp_idx를 구분하여 CABAC 컨텍스트 모델을 설계하는 방법을 설명한다.
[270]
여기서, affine_mvp_idx 는 어파인 예측을 위해 2개의 MVP 후보자들 중 사용할 후보자를 나타낸다. 예를 들어, affine_mvp_idx = 0 일 때 1st MVP 후보자를 사용하고 affine_mvp_idx = 1 일 때 2nd 후보자를 사용한다.
[271]
mvp_idx는 인터 예측을 위한 2 MVP 후보자들 중 사용한 후보자를 나타낸다. 예를 들어, mvp_idx = 0 일 때 1st MVP 후보자를 사용하고 mvp_idx = 1 일 때 2nd 후보자를 사용한다.
[272]
어파인 예측(affine prediction)과 비-어파인 예측(non-affine prediction)에 따른 mvp_idx = 0 일 때의 확률은 다음 표 6과 같다.
[273]
[표6]
[274]
상기 표 6을 살펴보면, 다음과 같은 사실을 알 수 있다.
[275]
1) 어파인 예측(affine prediction) 여부에 따른 mvp index 의 확률 분포는 상이하다.
[276]
2) P(0 | affine) 의 경우 QP 가 증가할수록 확률이 감소한다. 여기서, P(0 | affine) 는 어파인 예측(affine prediction)에 따른 mvp_idx = 0 일 때의 확률을 나타낸다.
[277]
3) P(0 | non affine) 의 경우 QP 가 증가할수록 확률이 증가한다. 여기서, P(0 | non affine) 는 비-어파인 예측(non-affine prediction)에 따른 mvp_idx = 0 일 때의 확률을 나타낸다.
[278]
따라서, 본 발명은 mvp index 를 어파인 예측(affine prediction) 여부에 따라 구분하여 디코딩하는 것을 제안한다.
[279]
디코더는 merge_flag를 획득하여, 현재 블록에 대해 머지 모드가 적용되는지 여부를 확인할 수 있다(S1610).
[280]
상기 현재 블록에 대해 머지 모드가 적용되지 않을 때, 상기 디코더는 affine_flag 를 획득할 수 있다(S1620). 여기서, affine_flag 는 AF 모드가 수행되는지 여부를 나타낸다.
[281]
상기 affine_flag = 1 이면, 즉 현재 블록에 대해 AF 모드가 수행되면, 상기 디코더는 affine_param_flag 및 affine_mvp_idx 를 획득할 수 있다(S1630, S1640). 여기서, affine_param_flag 는 AF6 모드가 수행되는지 여부(또는 AF4 모드가 수행되는지 여부)를 나타낸다. affine_mvp_idx 는 어파인 움직임 벡터 예측자 인덱스를 나타낸다.
[282]
반면, 상기 affine_flag = 0 이면, 상기 디코더는 mvp_idx 를 획득할 수 있다(S1650). 여기서, mvp_idx 는 인터 예측을 위한 움직임 벡터 예측자 인덱스를 의미한다.
[283]
상기 디코더는 상기 어파인 움직임 벡터 예측자 인덱스 또는 상기 인터 예측을 위한 움직임 벡터 예측자 인덱스에 기초하여 움직임 예측자를 획득할 수 있고, 상기 움직임 예측자에 기초하여 비디오 신호를 복원할 수 있다.
[284]
[285]
다른 실시예로, 표 7 및 표 8은 각각 affine_mvp_idx 및 mvp index 의 컨텍스트 모델 및 그 초기값을 나타낸다.
[286]
[표7]
affine_mvp_idx 0
Init_val Naffine_mvp_idx

[287]
[표8]
mvp_idx 0
Init_val Nmvp_idx

[288]
상기 표 7과 같이, affine_mvp_idx 의 초기값 N affine_mvp_idx 는 QP 가 증가할수록 affine_mvp_idx 가 0 인 확률이 감소하는 값으로 결정할 수 있다.
[289]
그리고, 상기 표 8과 같이, mvp_idx 의 초기값 N mvp_idx 는 QP 가 증가할수록 mvp_idx 가 0 인 확률이 증가하는 값으로 결정할 수 있다.
[290]
[291]
도 17은 본 발명이 적용되는 실시예로서, AF4 모드 또는 AF6 모드 중 적어도 하나에 기초하여 최적의 코딩 모드를 적응적으로 결정하는 흐름도를 나타낸다.
[292]
비디오 신호 처리 장치는 스킵 모드, 머지 모드, 또는 인터 모드 중 적어도 하나에 기초하여 예측을 수행할 수 있다(S1710). 여기서, 머지 모드를 일반적인 머지 모드 뿐만 아니라 앞서 설명한 AF 머지 모드를 포함할 수 있고, 인터 모드는 일반적인 인터 모드 뿐만 아니라 앞서 설명한 AF 인터 모드를 포함할 수 있다.
[293]
상기 비디오 신호 처리 장치는 AF4 모드 또는 AF6 모드 중 적어도 하나에 기초하여 움직임 벡터 예측을 수행할 수 있다(S1720). 여기서, 상기 S1710 단계와 상기 S1720 단계는 그 순서에 제한되지 않는다.
[294]
상기 비디오 신호 처리 장치는 상기 S1720 단계의 결과들을 비교하여, 상기 모드들 중 최적의 코딩 모드를 결정할 수 있다(S1730). 이때, 상기 S1720 단계의 결과들은 율-왜곡 비용(Rate-Distortion Cost)에 기초하여 비교될 수 있다.
[295]
이후, 상기 비디오 신호 처리 장치는 최적의 코딩 모드에 기초하여 현재 블록의 움직임 벡터 예측자를 생성할 수 있고, 상기 현재 블록의 움직임 벡터에서 상기 움직임 벡터 예측자를 감산하여 움직임 벡터 차이값을 획득할 수 있다.
[296]
이후, 상기 도 1 및 도 2에서 설명하였던 인코딩/디코딩 과정이 동일하게 적용될 수 있다.
[297]
[298]
도 18은 본 발명이 적용되는 실시예로서, AF4 모드 또는 AF6 모드에 기초하여 디코딩을 수행하는 신택스 구조를 나타낸다.
[299]
디코더는 merge_flag를 획득하여, 현재 블록에 대해 머지 모드가 적용되는지 여부를 확인할 수 있다(S1810).
[300]
상기 현재 블록에 대해 머지 모드가 적용되지 않을 때, 상기 디코더는 affine_flag 를 획득할 수 있다(S1820). 여기서, affine_flag 는 AF 모드가 수행되는지 여부를 나타낸다.
[301]
상기 affine_flag = 1 이면, 즉 현재 블록에 대해 AF 모드가 수행되면, 상기 디코더는 affine_param_flag 를 획득할 수 있다(S1830). 여기서, affine_param_flag 는 AF4 모드가 수행되는지 여부(또는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는지 여부)를 나타낸다.
[302]
상기 affine_param_flag = 0 이면, 즉 AF4 모드에 따라 움직임 벡터 예측이 수행되면, 상기 디코더는 2개의 움직임 벡터 차이값인, mvd_CP0 및 mvd_CP1을 획득할 수 있다(S1840). 여기서, mvd_CP0 는 제어점 0에 대한 움직임 벡터 차이값을 나타내고, mvd_CP1 은 제어점 1에 대한 움직임 벡터 차이값을 나타낸다.
[303]
그리고, 상기 affine_param_flag = 1 이면, 즉 AF6 모드에 따라 움직임 벡터 예측이 수행되면, 상기 디코더는 3개의 움직임 벡터 차이값인, mvd_CP0, mvd_CP1 및 mvd_CP2를 획득할 수 있다(S1850).
[304]
[305]
도 19는 본 발명이 적용되는 실시예로서, 조건 A(condition A)에 기초하여 AF4 모드 또는 AF6 모드를 포함하는 움직임 벡터 예측 모드들 중 최적의 코딩 모드를 적응적으로 결정하는 흐름도를 나타낸다.
[306]
인코더는 스킵 모드, 머지 모드, 또는 인터 모드 중 적어도 하나에 기초하여 예측을 수행할 수 있다(S1910).
[307]
상기 인코더는, 움직임 벡터 예측을 위한 최적의 코딩 모드를 결정하기 위해 현재 블록에 대해 조건 A가 만족되는지 여부를 확인할 수 있다(S1920).
[308]
여기서, 상기 조건 A는 블록 크기에 대한 조건을 의미할 수 있다. 예를 들어, 상기 조건 A는 상기 현재 블록의 픽셀 개수(pixNum)가 임계값(TH1)보다 큰지 여부를 나타낸다. 또는, 상기 조건 A는 상기 현재 블록의 너비(width) 및 높이(height)가 모두 임계값(TH1)보다 큰지 여부를 나타낸다. 또는, 상기 조건 A는 상기 현재 블록의 너비(width)가 임계값(TH1)보다 크거나 또는 상기 현재 블록의 높이(height)가 임계값(TH1)보다 큰지 여부를 나타낸다.
[309]
상기 조건 A가 만족될 때, 상기 인코더는 AF4 모드 또는 AF6 모드 중 적어도 하나에 기초하여 움직임 벡터 예측을 수행할 수 있다(S1930).
[310]
상기 인코더는 상기 S1910 및 상기 S1930 단계들의 결과들을 비교하여, AF4 모드 또는 AF6 모드를 포함하는 움직임 벡터 예측 모드들 중 최적의 코딩 모드를 결정할 수 있다(S1940).
[311]
한편, 상기 조건 A가 만족되지 않을 때, 상기 인코더는 AF 모드가 아닌 모드들 중에서 최적의 코딩 모드를 결정할 수 있다(S1940).
[312]
이후, 상기 인코더는 최적의 코딩 모드에 기초하여 현재 블록의 움직임 벡터 예측자를 생성할 수 있고, 상기 현재 블록의 움직임 벡터에서 상기 움직임 벡터 예측자를 감산하여 움직임 벡터 차이값을 획득할 수 있다.
[313]
이후, 상기 도 1 및 도 2에서 설명하였던 인코딩/디코딩 과정이 동일하게 적용될 수 있다.
[314]
[315]
도 20은 본 발명이 적용되는 실시예로서, 조건 A(condition A)에 기초하여 AF4 모드 또는 AF6 모드에 따라 적응적으로 디코딩을 수행하는 흐름도를 나타낸다.
[316]
디코더는 비트스트림을 수신할 수 있다(S2010). 상기 비트스트림은 비디오 신호 내 현재 블록의 코딩 모드에 대한 정보를 포함할 수 있다.
[317]
상기 디코더는, 움직임 벡터 예측을 위한 최적의 코딩 모드를 결정하기 위해 현재 블록에 대해 조건 A가 만족되는지 여부를 확인할 수 있다(S2020). 여기서, 상기 조건 A는 블록 크기에 대한 조건을 의미할 수 있다. 예를 들어, 상기 도 18의 실시예들이 적용될 수 있다.
[318]
상기 조건 A가 만족될 때, 상기 디코더는 상기 현재 블록의 코딩 모드가 AF 모드인지 여부를 확인할 수 있다(S2030). 여기서, 상기 AF 모드는 어파인 움직임 모델(affine motion model)을 이용하는 어파인 움직임 예측 모드를 의미하며, 본 명세서에서 설명한 실시예들이 적용될 수 있다.
[319]
이때, 상기 S2030 단계는 AF 모드가 수행되는지 여부를 나타내는 어파인 플래그에 의해 확인될 수 있다. 예를 들어, 상기 어파인 플래그는 affine_flag 로 표현될 수 있다. 상기 affine_flag = 1 이면, 현재 블록에 대해 AF 모드가 수행되는 것을 나타내고, 상기 affine_flag = 0 이면, 현재 블록에 대해 AF 모드가 수행되지 않는 것을 나타낸다.
[320]
상기 조건 A가 만족되지 않을 때거나, 상기 현재 블록에 대해 AF 모드가 수행되지 않을 때, 상기 디코더는 상기 AF 모드가 아닌 코딩 모드에 따라 디코딩(즉, 움직임 벡터 예측)을 수행할 수 있다(S2040). 예를 들어, 스킵 모드, 머지 모드 또는 인터 모드가 이용될 수 있다.
[321]
상기 현재 블록에 대해 AF 모드가 수행될 때, 상기 디코더는 상기 현재 블록에 대해 AF4 모드가 적용되는지 여부를 확인할 수 있다(S2050).
[322]
이때, 상기 S1950 단계는 AF4 모드가 수행되는지 여부(또는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는지 여부)를 나타내는 어파인 파라미터 플래그에 의해 확인될 수 있다. 예를 들어, 상기 어파인 파라미터 플래그는 affine_param_flag 로 표현될 수 있다. 상기 affine_param_flag = 0 이면, AF4 모드에 따라 움직임 벡터 예측이 수행되고(S2060), 상기 affine_param_flag = 1 이면, AF6 모드에 따라 움직임 벡터 예측이 수행되는 것을 의미할 수 있으나(S2070), 본 발명은 이에 한정되지 않는다.
[323]
[324]
도 21은 본 발명이 적용되는 비디오 코딩 시스템을 나타낸다.
[325]
비디오 코딩 시스템은 소스 디바이스(source device) 및 수신 디바이스(receiving device)를 포함할 수 있다. 소스 디바이스는 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스로 전달할 수 있다.
[326]
상기 소스 디바이스는 비디오 소스(video source), 인코딩 장치(encoding apparatus), 전송부(transmitter)를 포함할 수 있다. 상기 수신 디바이스는 수신부(receiver), 디코딩 장치(decoding apparatus) 및 렌더러(renderer)를 포함할 수 있다. 상기 인코딩 장치는 비디오/영상 인코딩 장치라고 불릴 수 있고, 상기 디코딩 장치는 비디오/영상 디코딩 장치라고 불릴 수 있다. 송신기는 인코딩 장치에 포함될 수 있다. 수신기는 디코딩 장치에 포함될 수 있다. 렌더러는 디스플레이부를 포함할 수도 있고, 디스플레이부는 별개의 디바이스 또는 외부 컴포넌트로 구성될 수도 있다.
[327]
비디오 소스는 비디오/영상의 캡쳐, 합성 또는 생성 과정 등을 통하여 비디오/영상을 획득할 수 있다. 비디오 소스는 비디오/영상 캡쳐 디바이스 및/또는 비디오/영상 생성 디바이스를 포함할 수 있다. 비디오/영상 캡쳐 디바이스는 예를 들어, 하나 이상의 카메라, 이전에 캡쳐된 비디오/영상을 포함하는 비디오/영상 아카이브 등을 포함할 수 있다. 비디오/영상 생성 디바이스는 예를 들어 컴퓨터, 타블렛 및 스마트폰 등을 포함할 수 있으며 (전자적으로) 비디오/영상을 생성할 수 있다. 예를 들어, 컴퓨터 등을 통하여 가상의 비디오/영상이 생성될 수 있으며, 이 경우 관련 데이터가 생성되는 과정으로 비디오/영상 캡쳐 과정이 갈음될 수 있다.
[328]
인코딩 장치는 입력 비디오/영상을 인코딩할 수 있다. 인코딩 장치는 압축 및 코딩 효율을 위하여 예측, 변환, 양자화, 엔트로피 인코딩 등 일련의 절차를 수행할 수 있다. 인코딩된 데이터(인코딩된 비디오/영상 정보)는 비트스트림(bitstream) 형태로 출력될 수 있다. 여기서, 엔트로피 인코딩을 수행함에 있어서 본 명세서의 실시예들이 적용될 수 있다.
[329]
전송부는 비트스트림 형태로 출력된 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스의 수신부로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 전송부는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘리먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘리먼트를 포함할 수 있다. 수신부는 상기 비트스트림을 추출하여 디코딩 장치로 전달할 수 있다.
[330]
디코딩 장치는 인코딩 장치의 동작에 대응하는 엔트로피 디코딩, 역양자화, 역변환, 예측 등 일련의 절차를 수행하여 비디오/영상을 디코딩할 수 있다. 여기서, 엔트로피 디코딩을 수행함에 있어서 본 명세서의 실시예들이 적용될 수 있다.
[331]
렌더러는 디코딩된 비디오/영상을 렌더링할 수 있다. 렌더링된 비디오/영상은 디스플레이부를 통하여 디스플레이될 수 있다.
[332]
[333]
도 22는 본 발명이 적용되는 컨텐츠 스트리밍 시스템을 나타낸다.
[334]
상기 도 22를 살펴보면, 본 발명이 적용되는 컨텐츠 스트리밍 시스템은 크게 인코딩 서버, 스트리밍 서버, 웹 서버, 미디어 저장소, 사용자 장치 및 멀티미디어 입력 장치를 포함할 수 있다.
[335]
상기 인코딩 서버는 스마트폰, 카메라, 캠코더 등과 같은 멀티미디어 입력 장치들로부터 입력된 컨텐츠를 디지털 데이터로 압축하여 비트스트림을 생성하고 이를 상기 스트리밍 서버로 전송하는 역할을 한다. 다른 예로, 스마트폰, 카메라, 캠코더 등과 같은 멀티미디어 입력 장치들이 비트스트림을 직접 생성하는 경우, 상기 인코딩 서버는 생략될 수 있다.
[336]
상기 비트스트림은 본 발명이 적용되는 인코딩 방법 또는 비트스트림 생성 방법에 의해 생성될 수 있고, 상기 스트리밍 서버는 상기 비트스트림을 전송 또는 수신하는 과정에서 일시적으로 상기 비트스트림을 저장할 수 있다.
[337]
상기 스트리밍 서버는 웹 서버를 통한 사용자 요청에 기초하여 멀티미디어 데이터를 사용자 장치에 전송하고, 상기 웹 서버는 사용자에게 어떠한 서비스가 있는지를 알려주는 매개체 역할을 한다. 사용자가 상기 웹 서버에 원하는 서비스를 요청하면, 상기 웹 서버는 이를 스트리밍 서버에 전달하고, 상기 스트리밍 서버는 사용자에게 멀티미디어 데이터를 전송한다. 이때, 상기 컨텐츠 스트리밍 시스템은 별도의 제어 서버를 포함할 수 있고, 이 경우 상기 제어 서버는 상기 컨텐츠 스트리밍 시스템 내 각 장치 간 명령/응답을 제어하는 역할을 한다.
[338]
상기 스트리밍 서버는 미디어 저장소 및/또는 인코딩 서버로부터 컨텐츠를 수신할 수 있다. 예를 들어, 상기 인코딩 서버로부터 컨텐츠를 수신하게 되는 경우, 상기 컨텐츠를 실시간으로 수신할 수 있다. 이 경우, 원활한 스트리밍 서비스를 제공하기 위하여 상기 스트리밍 서버는 상기 비트스트림을 일정 시간동안 저장할 수 있다.
[339]
상기 사용자 장치의 예로는, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(personal digital assistants), PMP(portable multimedia player), 네비게이션, 슬레이트 PC(slate PC), 태블릿 PC(tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(wearable device, 예를 들어, 워치형 단말기 (smartwatch), 글래스형 단말기 (smart glass), HMD(head mounted display)), 디지털 TV, 데스크탑 컴퓨터, 디지털 사이니지 등이 있을 수 있다.
[340]
상기 컨텐츠 스트리밍 시스템 내 각 서버들은 분산 서버로 운영될 수 있으며, 이 경우 각 서버에서 수신하는 데이터는 분산 처리될 수 있다.
[341]
[342]
상기 기술된 것과 같이, 본 발명에서 설명한 실시예들은 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다. 예를 들어, 본 명세서 도면들에서 도시한 기능 유닛들은 컴퓨터, 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다.
[343]
또한, 본 발명이 적용되는 디코더 및 인코더는 멀티미디어 방송 송수신 장치, 모바일 통신 단말, 홈 시네마 비디오 장치, 디지털 시네마 비디오 장치, 감시용 카메라, 비디오 대화 장치, 비디오 통신과 같은 실시간 통신 장치, 모바일 스트리밍 장치, 저장 매체, 캠코더, 주문형 비디오(VoD) 서비스 제공 장치, 인터넷 스트리밍 서비스 제공 장치, 3차원(3D) 비디오 장치, 화상 전화 비디오 장치, 및 의료용 비디오 장치 등에 포함될 수 있으며, 비디오 신호 및 데이터 신호를 처리하기 위해 사용될 수 있다.
[344]
또한, 본 발명이 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 발명에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트 스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.

산업상 이용가능성

[345]
이상, 전술한 본 발명의 바람직한 실시예는, 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.

청구범위

[청구항 1]
현재 블록을 포함하는 비디오 신호에 대해 엔트로피 디코딩을 수행하는 방법에 있어서, 상기 현재 블록에 이웃하는 좌측 블록 및 상측 블록이 이용가능한지를 확인하는 단계; 상기 좌측 블록 및/또는 상기 상측 블록 중 적어도 하나가 이용가능할 때, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도하는 단계; 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정하는 단계; 및 상기 컨텍스트 인덱스에 기초하여, 상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 단계를 포함하되, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이고, 상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이고, 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내는 방법.
[청구항 2]
제1항에 있어서, 상기 어파인 예측 관련 신택스 요소가 어파인 플래그를 포함할 때, 상기 어파인 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 상기 상측 블록의 어파인 코딩 정보의 합에 기초하여 결정되고, 상기 어파인 플래그는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 플래그인 방법.
[청구항 3]
제1항에 있어서, 상기 어파인 예측 관련 신택스 요소가 어파인 파라미터 플래그를 포함할 때, 상기 어파인 파라미터 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제1값 및 상기 상측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제2값의 합에 기초하여 결정되고, 상기 어파인 파라미터 플래그는 어파인 움직임 예측이 상기 AF4 모드 또는 상기 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그인 방법.
[청구항 4]
제3항에 있어서, 상기 어파인 플래그에 기초하여 상기 좌측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 좌측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제1값은 1로 결정되고, 그렇지 않을 때 상기 제1값은 0으로 결정되는 방법.
[청구항 5]
제3항에 있어서, 상기 어파인 플래그에 기초하여 상기 상측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 상측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제2값은 1로 결정되고, 그렇지 않을 때 상기 제2값은 0으로 결정되는 방법.
[청구항 6]
제1항에 있어서, 상기 어파인 예측 관련 신택스 요소가 어파인 움직임 벡터 예측자 인덱스(affine motion vector predictor index) 및/또는 비-어파인 움직임 벡터 예측자 인덱스(non-affine motion vector predictor index)를 포함할 때, 상기 어파인 움직임 벡터 예측자 인덱스와 상기 비-어파인 움직임 벡터 예측자 인덱스는 서로 다른 테이블에 의해 정의되고, 상기 어파인 움직임 벡터 예측자 인덱스는 어파인 움직임 예측을 위해 이용되는 후보를 나타내고, 상기 상기 비-어파인 움직임 벡터 예측자 인덱스는 인터 예측을 위해 이용되는 후보를 나타내는 방법.
[청구항 7]
현재 블록을 포함하는 비디오 신호에 대해 엔트로피 디코딩을 수행하는 장치에 있어서, 상기 현재 블록에 이웃하는 좌측 블록 및 상측 블록이 이용가능한지를 확인하고, 상기 좌측 블록 및/또는 상기 상측 블록 중 적어도 하나가 이용가능할 때, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보를 유도하고, 상기 좌측 블록 및/또는 상기 상측 블록의 어파인 코딩 정보 및/또는 어파인 예측 모드 정보 중 적어도 하나에 기초하여 상기 현재 블록의 어파인 예측 관련 신택스 요소의 컨텍스트 인덱스를 결정하는 컨텍스트 모델링부; 및 상기 컨텍스트 인덱스에 기초하여, 상기 현재 블록의 어파인 예측 관련 신택스 요소를 엔트로피 디코딩하는 이진 산술 디코딩부를 포함하되, 상기 어파인 코딩 정보는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 정보이고, 상기 어파인 예측 모드 정보는 어파인 움직임 예측이 AF4 모드 또는 AF6 모드에 기초하여 수행되는지 여부를 나타내는 정보이고, 상기 AF4 모드는 4개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내고, 상기 AF6 모드는 6개의 파라미터에 의해 어파인 움직임 예측이 수행되는 것을 나타내는 장치.
[청구항 8]
제7항에 있어서, 상기 어파인 예측 관련 신택스 요소가 어파인 플래그를 포함할 때, 상기 어파인 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 상기 상측 블록의 어파인 코딩 정보의 합에 기초하여 결정되고, 상기 어파인 플래그는 어파인 움직임 예측이 수행되었는지 여부를 나타내는 플래그인 장치.
[청구항 9]
제7항에 있어서, 상기 어파인 예측 관련 신택스 요소가 어파인 파라미터 플래그를 포함할 때, 상기 어파인 파라미터 플래그의 컨텍스트 인덱스는 상기 좌측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제1값 및 상기 상측 블록의 어파인 코딩 정보와 어파인 예측 모드 정보에 의해 결정된 제2값의 합에 기초하여 결정되고, 상기 어파인 파라미터 플래그는 어파인 움직임 예측이 상기 AF4 모드 또는 상기 AF6 모드에 기초하여 수행되는지 여부를 나타내는 플래그인 장치.
[청구항 10]
제9항에 있어서, 상기 어파인 플래그에 기초하여 상기 좌측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 좌측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제1값은 1로 결정되고, 그렇지 않을 때 상기 제1값은 0으로 결정되는 장치.
[청구항 11]
제9항에 있어서, 상기 어파인 플래그에 기초하여 상기 상측 블록에 대해 어파인 움직임 예측이 수행되고, 상기 어파인 파라미터 플래그에 기초하여 상기 상측 블록이 상기 AF6 모드에 기초하여 코딩될 때, 상기 제2값은 1로 결정되고, 그렇지 않을 때 상기 제2값은 0으로 결정되는 장치.
[청구항 12]
제7항에 있어서, 상기 어파인 예측 관련 신택스 요소가 어파인 움직임 벡터 예측자 인덱스(affine motion vector predictor index) 및/또는 비-어파인 움직임 벡터 예측자 인덱스(non-affine motion vector predictor index)를 포함할 때, 상기 어파인 움직임 벡터 예측자 인덱스와 상기 비-어파인 움직임 벡터 예측자 인덱스는 서로 다른 테이블에 의해 정의되고, 상기 어파인 움직임 벡터 예측자 인덱스는 어파인 움직임 예측을 위해 이용되는 후보를 나타내고, 상기 상기 비-어파인 움직임 벡터 예측자 인덱스는 인터 예측을 위해 이용되는 후보를 나타내는 장치.

도면

[도1]

[도2]

[도3]

[도4]

[도5]

[도6]

[도7]

[도8]

[도9]

[도10]

[도11]

[도12]

[도13]

[도14]

[도15]

[도16]

[도17]

[도18]

[도19]

[도20]

[도21]

[도22]