KR20160072836A - 인터 예측 방법 및 그 장치 - Google Patents

인터 예측 방법 및 그 장치 Download PDF

Info

Publication number
KR20160072836A
KR20160072836A KR1020160070892A KR20160070892A KR20160072836A KR 20160072836 A KR20160072836 A KR 20160072836A KR 1020160070892 A KR1020160070892 A KR 1020160070892A KR 20160070892 A KR20160070892 A KR 20160070892A KR 20160072836 A KR20160072836 A KR 20160072836A
Authority
KR
South Korea
Prior art keywords
motion information
block
reference picture
encoder
decoder
Prior art date
Application number
KR1020160070892A
Other languages
English (en)
Other versions
KR101801256B1 (ko
Inventor
김휘용
박광훈
김경용
김상민
임성창
이진호
최진수
김진웅
Original Assignee
한국전자통신연구원
경희대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원, 경희대학교 산학협력단 filed Critical 한국전자통신연구원
Publication of KR20160072836A publication Critical patent/KR20160072836A/ko
Application granted granted Critical
Publication of KR101801256B1 publication Critical patent/KR101801256B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명에 따른 영상 복호화 장치는, L0 움직임 정보 및 L1 움직임 정보를 포함하는 움직임 정보로서 현재 블록의 움직임 정보를 도출하는 움직임 예측부, L0 움직임 정보 및 L1 움직임 정보 중에서 적어도 하나를 기반으로 현재 블록에 대해 움직임 보상을 수행함으로써, 현재 블록에 대응하는 예측 블록을 생성하는 움직임 보상부 및 예측 블록을 기반으로 현재 블록에 대응하는 복원 블록을 생성하는 복원 블록 생성부를 포함한다. 본 발명에 의하면, 영상 부호화 효율이 향상될 수 있다.

Description

인터 예측 방법 및 그 장치 {METHOD FOR INTER PREDICTION AND APPARATUS THEREOF}
본 발명은 영상 처리에 관한 것으로서, 보다 상세하게는 인터 예측 방법 및 그 장치에 관한 것이다.
최근 HD(High Definition) 해상도를 가지는 방송 서비스가 국내뿐만 아니라 세계적으로 확대되면서, 많은 사용자들이 고해상도, 고화질의 영상에 익숙해지고 있으며 이에 따라 많은 기관들이 차세대 영상기기의 개발에 박차를 가하고 있다. 또한 HDTV와 더불어 HDTV의 4배 이상의 해상도를 갖는 UHD(Ultra High Definition)에 대한 관심이 증대되면서 보다 높은 해상도, 고화질의 영상에 대한 압축기술이 요구되고 있다.
영상 압축을 위해, 시간적으로 이전 및/또는 이후의 픽쳐로부터 현재 픽쳐에 포함된 픽셀값을 예측하는 인터(inter) 예측 기술, 현재 픽쳐 내의 픽셀 정보를 이용하여 현재 픽쳐에 포함된 픽셀값을 예측하는 인트라(intra) 예측 기술, 출현 빈도가 높은 심볼(symbol)에 짧은 부호를 할당하고 출현 빈도가 낮은 심볼에 긴 부호를 할당하는 엔트로피 부호화 기술 등이 사용될 수 있다.
본 발명의 기술적 과제는 영상 부호화 효율을 향상시킬 수 있는 영상 부호화 방법 및 그 장치를 제공함에 있다.
본 발명의 다른 기술적 과제는 영상 부호화 효율을 향상시킬 수 있는 영상 복호화 방법 및 그 장치를 제공함에 있다.
본 발명의 또 다른 기술적 과제는 영상 부호화 효율을 향상시킬 수 있는 인터 예측 방법 및 그 장치를 제공함에 있다.
본 발명의 또 다른 기술적 과제는 영상 부호화 효율을 향상시킬 수 있는 움직임 정보 도출 방법 및 그 장치를 제공함에 있다.
본 발명의 또 다른 기술적 과제는 영상 부호화 효율을 향상시킬 수 있는 시간적 움직임 정보 도출 방법 및 그 장치를 제공함에 있다.
본 발명의 일 실시 형태는 영상 복호화 장치이다. 상기 장치는, L0 움직임 정보 및 L1 움직임 정보를 포함하는 움직임 정보로서 현재 블록의 움직임 정보를 도출하는 움직임 예측부, 상기 L0 움직임 정보 및 상기 L1 움직임 정보 중에서 적어도 하나를 기반으로 상기 현재 블록에 대해 움직임 보상을 수행함으로써, 상기 현재 블록에 대응하는 예측 블록을 생성하는 움직임 보상부 및 상기 예측 블록을 기반으로 상기 현재 블록에 대응하는 복원 블록을 생성하는 복원 블록 생성부를 포함하되, 상기 움직임 보상부는, 상기 L0 움직임 정보 및 상기 L1 움직임 정보의 동일성 여부를 기반으로 상기 움직임 보상을 수행한다.
상기 L0 움직임 정보는 L0 움직임 벡터 및 L0 참조 픽쳐 번호를 포함하고, 상기 L0 참조 픽쳐 번호는 L0 참조 픽쳐에 할당된 POC(Picture Order Count)를 지시하고, 상기 L1 움직임 정보는 L1 움직임 벡터 및 L1 참조 픽쳐 번호를 포함하고, 상기 L1 참조 픽쳐 번호는 L1 참조 픽쳐에 할당된 POC(Picture Order Count)를 지시할 수 있다.
상기 L0 움직임 벡터 및 상기 L1 움직임 벡터가 동일하고 상기 L0 참조 픽쳐 번호 및 상기 L1 참조 픽쳐 번호가 동일한 경우, 상기 움직임 보상부는, 상기 L0 움직임 정보 및 상기 L1 움직임 정보 중에서 상기 L0 움직임 정보를 기반으로 하여 단예측(uni prediction)을 수행할 수 있다.
상기 L0 움직임 벡터 및 상기 L1 움직임 벡터가 서로 동일하지 않거나 상기 L0 참조 픽쳐 번호 및 상기 L1 참조 픽쳐 번호가 서로 동일하지 않은 경우, 상기 움직임 보상부는, 상기 L0 움직임 정보 및 상기 L1 움직임 정보를 기반으로 하여 쌍예측(bi prediction)을 수행할 수 있다.
본 발명의 다른 실시 형태는 영상 복호화 장치이다. 상기 장치는, L0 움직임 정보 및 L1 움직임 정보를 포함하는 움직임 정보로서 현재 블록의 움직임 정보를 도출하는 움직임 예측부, 상기 L0 움직임 정보 및 상기 L1 움직임 정보 중에서 적어도 하나를 기반으로 상기 현재 블록에 대해 움직임 보상을 수행함으로써, 상기 현재 블록에 대응하는 예측 블록을 생성하는 움직임 보상부 및 상기 예측 블록을 기반으로 상기 현재 블록에 대응하는 복원 블록을 생성하는 복원 블록 생성부를 포함하되, 상기 움직임 보상부는, 상기 현재 블록의 크기를 기반으로 상기 움직임 보상을 수행한다.
상기 현재 블록의 크기가 소정의 크기보다 작은 경우, 상기 움직임 보상부는, 상기 L0 움직임 정보 및 상기 L1 움직임 정보 중에서 상기 L0 움직임 정보를 기반으로 하여 단예측(uni prediction)을 수행할 수 있다.
상기 소정의 크기는 8x8일 수 있다.
본 발명의 또 다른 실시 형태는 영상 복호화 장치이다. 상기 장치는, 이미 복원된 픽쳐로부터 움직임 정보를 도출하는 움직임 예측부, 상기 도출된 움직임 정보를 기반으로 현재 블록에 대응하는 예측 블록을 생성하는 움직임 보상부 및 상기 예측 블록을 기반으로 상기 현재 블록에 대응하는 복원 블록을 생성하는 복원 블록 생성부를 포함하되, 상기 움직임 정보는 움직임 벡터 및 참조 픽쳐 인덱스(reference picture index)를 포함하고, 상기 움직임 예측부는, 상기 참조 픽쳐 인덱스를 0으로 설정하고, 상기 이미 복원된 픽쳐 내에서 상기 현재 블록에 대응하는 콜 블록(col block)을 기반으로 상기 움직임 벡터를 도출한다.
상기 현재 블록의 부호화 모드는 머지(merge) 모드이고, 상기 움직임 보상부는, 상기 시간적 움직임 정보를 상기 현재 블록의 움직임 정보로 선택하고, 상기 선택된 움직임 정보를 기반으로 움직임 보상을 수행함으로써, 상기 현재 블록에 대응하는 예측 블록을 생성할 수 있다.
본 발명에 따른 영상 부호화 방법에 의하면, 영상 부호화 효율이 향상될 수 있다.
본 발명에 따른 영상 복호화 방법에 의하면, 영상 부호화 효율이 향상될 수 있다.
본 발명에 따른 인터 예측 방법에 의하면, 영상 부호화 효율이 향상될 수 있다.
본 발명에 따른 움직임 정보 도출 방법에 의하면, 영상 부호화 효율이 향상될 수 있다.
본 발명에 따른 시간적 움직임 정보 도출 방법에 의하면, 영상 부호화 효율이 향상될 수 있다.
도 1은 본 발명이 적용되는 영상 부호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 2는 본 발명이 적용되는 영상 복호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 3은 인터 예측 방법의 일 실시예를 개략적으로 나타내는 흐름도이다.
도 4는 양방향 예측이 적용되는 경우, 인터 예측 방법의 실시예를 개략적으로 나타내는 도면이다.
도 5는 부호화된 영상의 움직임 정보의 일 실시예를 개략적으로 나타내는 도면이다.
도 6은 본 발명에 따른 현재 블록의 시간적 움직임 정보 도출 방법의 일 실시예를 개략적으로 나타내는 흐름도이다.
도 7은 L1 시간적 움직임 정보의 재설정을 위해 사용되는 복원된 주변 블록의 실시예를 개략적으로 나타내는 도면이다.
도 8은 도 6의 실시예에 따른 시간적 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다.
도 9는 본 발명에 따른 현재 블록의 시간적 움직임 정보 도출 방법의 다른 실시예를 개략적으로 나타내는 흐름도이다.
도 10은 L1 시간적 움직임 정보의 재설정을 위해 사용되는 제2 콜 블록의 실시예를 개략적으로 나타내는 도면이다.
도 11은 도 9의 실시예에 따른 시간적 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다.
도 12는 본 발명에 따른 현재 블록의 움직임 정보 도출 방법의 실시예를 개략적으로 나타내는 도면이다.
도 13은 도 12의 실시예에 따른 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다.
도 14는 본 발명에 따른 현재 블록의 시간적 움직임 정보 도출 방법의 또 다른 실시예를 개략적으로 나타내는 흐름도이다.
도 15는 도 14의 실시예에 따른 시간적 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다.
이하, 도면을 참조하여 본 발명의 실시 형태에 대하여 구체적으로 설명한다. 본 명세서의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
어떤 구성 요소가 다른 구성 요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있으나, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 아울러, 본 발명에서 특정 구성을 “포함”한다고 기술하는 내용은 해당 구성 이외의 구성을 배제하는 것이 아니며, 추가적인 구성이 본 발명의 실시 또는 본 발명의 기술적 사상의 범위에 포함될 수 있음을 의미한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
또한 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리범위에 포함된다.
또한, 일부의 구성 요소는 본 발명에서 본질적인 기능을 수행하는 필수적인 구성 요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성 요소일 수 있다. 본 발명은 단지 성능 향상을 위해 사용되는 구성 요소를 제외한 본 발명의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 단지 성능 향상을 위해 사용되는 선택적 구성 요소를 제외한 필수 구성 요소만을 포함한 구조도 본 발명의 권리범위에 포함된다.
도 1은 본 발명이 적용되는 영상 부호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 1을 참조하면, 상기 영상 부호화 장치(100)는 움직임 예측부(111), 움직임 보상부(112), 인트라 예측부(120), 스위치(115), 감산기(125), 변환부(130), 양자화부(140), 엔트로피 부호화부(150), 역양자화부(160), 역변환부(170), 가산기(175), 필터부(180) 및 참조 픽쳐 버퍼(190)를 포함한다.
영상 부호화 장치(100)는 입력 영상에 대해 인트라(intra) 모드 또는 인터(inter) 모드로 부호화를 수행하고 비트스트림을 출력할 수 있다. 인트라 예측은 화면 내 예측, 인터 예측은 화면 간 예측을 의미한다. 인트라 모드인 경우 스위치(115)가 인트라로 전환되고, 인터 모드인 경우 스위치(115)가 인터로 전환될 수 있다. 영상 부호화 장치(100)는 입력 영상의 입력 블록에 대한 예측 블록을 생성한 후, 입력 블록과 예측 블록의 차분(residual)을 부호화할 수 있다.
인트라 모드인 경우, 인트라 예측부(120)는 현재 블록 주변의 이미 부호화된 블록의 픽셀값을 이용하여 공간적 예측을 수행하여 예측 블록을 생성할 수 있다.
인터 모드인 경우, 움직임 예측부(motion estimator)(111)는, 움직임 예측 과정에서 참조 픽쳐 버퍼(190)에 저장되어 있는 참조 영상에서 입력 블록과 가장 매치가 잘 되는 영역을 찾아 움직임 벡터를 구할 수 있다. 움직임 보상부(112)는 움직임 벡터를 이용하여 움직임 보상을 수행함으로써 예측 블록을 생성할 수 있다.
감산기(125)는 입력 블록과 생성된 예측 블록의 차분에 의해 잔차 블록(residual block)을 생성할 수 있다. 변환부(130)는 잔차 블록에 대해 변환(transform)을 수행하여 변환 계수(transform coefficient)를 출력할 수 있다. 그리고 양자화부(140)는 입력된 변환 계수를 양자화 파라미터에 따라 양자화하여 양자화된 계수(quantized coefficient)를 출력할 수 있다.
엔트로피 부호화부(150)는, 양자화부(140)에서 산출된 값(예를 들어, 양자화된 계수)들 및/또는 부호화 과정에서 산출된 부호화 파라미터 값 등을 기초로 엔트로피 부호화를 수행하여 비트스트림(bit stream)을 출력할 수 있다.
엔트로피 부호화가 적용되는 경우, 높은 발생 확률을 갖는 심볼(symbol)에 적은 수의 비트가 할당되고 낮은 발생 확률을 갖는 심볼에 많은 수의 비트가 할당되어 심볼이 표현됨으로써, 부호화 대상 심볼들에 대한 비트열의 크기가 감소될 수 있다. 따라서 엔트로피 부호화를 통해서 영상 부호화의 압축 성능이 높아질 수 있다. 엔트로피 부호화부(150)는 엔트로피 부호화를 위해 지수 골룸(exponential golomb), CAVLC(Context-Adaptive Variable Length Coding), CABAC(Context-Adaptive Binary Arithmetic Coding)과 같은 부호화 방법을 사용할 수 있다.
도 1의 실시예에 따른 영상 부호화 장치는 인터 예측 부호화, 즉 화면 간(inter-frame) 예측 부호화를 수행하므로, 현재 부호화된 영상은 참조 영상으로 사용되기 위해 복호화되어 저장될 필요가 있다. 따라서 양자화된 계수는 역양자화부(160)에서 역양자화되고 역변환부(170)에서 역변환된다. 역양자화, 역변환된 계수는 가산기(175)를 통해 예측 블록과 더해지고 복원 블록이 생성된다.
복원 블록은 필터부(180)를 거치고, 필터부(180)는 디블록킹 필터(deblocking filter), SAO(Sample Adaptive Offset), ALF(Adaptive Loop Filter) 중 적어도 하나 이상을 복원 블록 또는 복원 픽쳐에 적용할 수 있다. 필터부(180)는 적응적 인루프(in-loop) 필터로 불릴 수도 있다. 디블록킹 필터는 블록 간의 경계에 생긴 블록 왜곡 및/또는 블록킹 아티팩트(blocking artifact)를 제거할 수 있다. SAO는 코딩 에러를 보상하기 위해 픽셀값에 적정 오프셋(offset) 값을 더해줄 수 있다. ALF는 복원된 영상과 원래의 영상을 비교한 값을 기초로 필터링을 수행할 수 있으며, 고효율이 적용되는 경우에만 수행될 수도 있다. 필터부(180)를 거친 복원 블록은 참조 픽쳐 버퍼(190)에 저장될 수 있다.
도 2는 본 발명이 적용되는 영상 복호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 2를 참조하면, 상기 영상 복호화 장치(200)는 엔트로피 복호화부(210), 역양자화부(220), 역변환부(230), 인트라 예측부(240), 움직임 보상부(250), 가산기(255), 필터부(260) 및 참조 픽쳐 버퍼(270)를 포함한다.
영상 복호화 장치(200)는 부호화기에서 출력된 비트스트림을 입력 받아 인트라 모드 또는 인터 모드로 복호화를 수행하고 재구성된 영상, 즉 복원 영상을 출력할 수 있다. 인트라 모드인 경우 스위치가 인트라로 전환되고, 인터 모드인 경우 스위치가 인터로 전환될 수 있다. 영상 복호화 장치(200)는 입력 받은 비트스트림으로부터 잔차 블록(residual block)을 얻고 예측 블록을 생성한 후 잔차 블록과 예측 블록을 더하여 재구성된 블록, 즉 복원 블록을 생성할 수 있다.
엔트로피 복호화부(210)는, 입력된 비트스트림을 확률 분포에 따라 엔트로피 복호화하여, 양자화된 계수(quantized coefficient) 형태의 심볼을 포함한 심볼들을 생성할 수 있다. 엔트로피 복호화 방법은 상술한 엔트로피 부호화 방법과 유사하다.
엔트로피 복호화 방법이 적용되는 경우, 높은 발생 확률을 갖는 심볼에 적은 수의 비트가 할당되고 낮은 발생 확률을 갖는 심볼에 많은 수의 비트가 할당되어 심볼이 표현됨으로써, 각 심볼들에 대한 비트열의 크기가 감소될 수 있다. 따라서 엔트로피 복호화 방법을 통해서 영상 복호화의 압축 성능이 높아질 수 있다.
양자화된 계수는 역양자화부(220)에서 역양자화되고 역변환부(230)에서 역변환되며, 양자화된 계수가 역양자화/역변환 된 결과, 잔차 블록(residual block)이 생성될 수 있다.
인트라 모드인 경우, 인트라 예측부(240)는 현재 블록 주변의 이미 복호화된 블록의 픽셀값을 이용하여 공간적 예측을 수행하여 예측 블록을 생성할 수 있다. 인터 모드인 경우, 움직임 보상부(250)는 움직임 벡터 및 참조 픽쳐 버퍼(270)에 저장되어 있는 참조 영상을 이용하여 움직임 보상을 수행함으로써 예측 블록을 생성할 수 있다.
잔차 블록과 예측 블록은 가산기(255)를 통해 더해지고, 더해진 블록은 필터부(260)를 거칠 수 있다. 필터부(260)는 디블록킹 필터, SAO, ALF 중 적어도 하나 이상을 복원 블록 또는 복원 픽쳐에 적용할 수 있다. 필터부(260)는 재구성된 영상, 즉 복원 영상을 출력할 수 있다. 복원 영상은 참조 픽쳐 버퍼(270)에 저장되어 인터 예측에 사용될 수 있다.
이하, 블록은 영상 부호화 및 복호화의 단위를 의미한다. 영상 부호화 및 복호화 시 부호화 혹은 복호화 단위는, 영상을 분할하여 부호화 혹은 복호화 할 때 그 분할된 단위를 의미하므로, 부호화 유닛 (CU: Coding Unit), 예측 유닛 (PU: Prediction Unit), 변환 유닛(TU: Transform Unit), 변환 블록(transform block) 등으로 불릴 수 있다. 하나의 블록은 크기가 더 작은 하위 블록으로 더 분할될 수 있다. 또한, 본 명세서에서 “픽쳐”는 문맥에 따라 “프레임”, “필드” 및/또는 “슬라이스”로 대체되어 사용될 수 있으며, 이러한 구분은 해당 기술 분야에서 통상의 지식을 가진 자라면 용이하게 할 수 있을 것이다. 예를 들어, 후술되는 P 픽쳐, B 픽쳐, 순방향 B 픽쳐는 문맥에 따라 각각 P 슬라이스, B 슬라이스, 순방향 B 슬라이스로 대체되어 사용될 수 있다.
도 3은 인터 예측 방법의 일 실시예를 개략적으로 나타내는 흐름도이다.
도 3을 참조하면, 부호화기 및 복호화기는 현재 블록에 대한 움직임 정보를 도출할 수 있다(S310).
인터 모드에서 부호화기 및 복호화기는 현재 블록의 움직임 정보를 도출한 후, 상기 도출된 움직임 정보에 기반하여 인터 예측 및/또는 움직임 보상을 수행할 수 있다. 이 때, 부호화기 및 복호화기는 복원된 주변 블록(neighboring block) 및/또는 이미 복원된 콜(col) 픽쳐(collocated picture) 내에서 현재 블록에 대응되는 콜(col) 블록(collocated block)의 움직임 정보를 이용함으로써, 부호화/복호화 효율을 향상시킬 수 있다. 여기서, 복원된 주변 블록은 이미 부호화 및/또는 복호화되어 복원된 현재 픽쳐 내의 블록으로서, 현재 블록에 인접한 블록 및/또는 현재 블록의 외부 코너에 위치한 블록을 포함할 수 있다. 또한 부호화기 및 복호화기는, 콜 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 블록을 기준으로 소정의 상대적인 위치를 결정할 수 있고, 상기 결정된 소정의 상대적인 위치(상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록의 내부 및/또는 외부의 위치)를 기반으로 상기 콜 블록을 도출할 수 있다. 여기서, 일례로 콜 픽쳐는 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다.
한편, 움직임 정보 도출 방식은 현재 블록의 예측 모드에 따라 달라질 수 있다. 인터 예측을 위해 적용되는 예측 모드에는 AMVP(Advanced Motion Vector Predictor), 머지(merge) 등이 있을 수 있다.
일례로, AMVP(Advanced Motion Vector Predictor)가 적용되는 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 벡터 및/또는 콜 블록의 움직임 벡터를 이용하여, 예측 움직임 벡터 후보 리스트를 생성할 수 있다. 즉, 복원된 주변 블록의 움직임 벡터 및/또는 콜 블록의 움직임 벡터는 예측 움직임 벡터 후보로 사용될 수 있다. 부호화기는 상기 리스트에 포함된 예측 움직임 벡터 후보 중에서 선택된 최적의 예측 움직임 벡터를 지시하는 예측 움직임 벡터 인덱스를 복호화기로 전송할 수 있다. 이 때, 복호화기는 상기 예측 움직임 벡터 인덱스를 이용하여, 예측 움직임 벡터 후보 리스트에 포함된 예측 움직임 벡터 후보 중에서, 현재 블록의 예측 움직임 벡터를 선택할 수 있다.
부호화기는 현재 블록의 움직임 벡터와 예측 움직임 벡터 간의 움직임 벡터 차분(MVD: Motion Vector Difference)을 구할 수 있고, 이를 부호화하여 복호화기로 전송할 수 있다. 이 때, 복호화기는 수신된 움직임 벡터 차분을 복호화할 수 있고, 복호화된 움직임 벡터 차분과 예측 움직임 벡터의 합을 통해 현재 블록의 움직임 벡터를 도출할 수 있다.
다른 예로, 머지(merge)가 적용되는 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 및/또는 콜 블록의 움직임 정보를 이용하여, 머지 후보 리스트를 생성할 수 있다. 즉, 부호화기 및 복호화기는 복원된 주변 블록 및/또는 콜 블록의 움직임 정보가 존재하는 경우, 이를 현재 블록에 대한 머지 후보로 사용할 수 있다.
부호화기는 머지 후보 리스트에 포함된 머지 후보 중에서 최적의 부호화 효율을 제공할 수 있는 머지 후보를 현재 블록에 대한 움직임 정보로 선택할 수 있다. 이 때, 상기 선택된 머지 후보를 지시하는 머지 인덱스가 비트스트림에 포함되어 복호화기로 전송될 수 있다. 복호화기는 상기 전송된 머지 인덱스를 이용하여, 머지 후보 리스트에 포함된 머지 후보 중에서 하나를 선택할 수 있으며, 상기 선택된 머지 후보를 현재 블록의 움직임 정보로 결정할 수 있다. 따라서, 머지 모드가 적용되는 경우, 복원된 주변 블록 및/또는 콜 블록의 움직임 정보가 현재 블록의 움직임 정보로 그대로 사용될 수 있다.
상술한 AMVP 및 머지 모드에서는, 현재 블록의 움직임 정보를 도출하기 위해, 복원된 주변 블록의 움직임 정보 및/또는 콜 블록의 움직임 정보가 사용될 수 있다. 이하, 후술되는 실시예들에서, 복원된 주변 블록으로부터 도출되는 움직임 정보는 공간적 움직임 정보라 하고, 콜 블록을 기반으로 도출되는 움직임 정보는 시간적 움직임 정보라 한다. 예를 들어, 복원된 주변 블록으로부터 도출되는 움직임 벡터는 공간적 움직임 벡터, 콜 블록을 기반으로 도출되는 움직임 벡터는 시간적 움직임 벡터로 불릴 수 있다.
다시 도 3을 참조하면, 부호화기 및 복호화기는 상기 도출된 움직임 정보에 기반하여 현재 블록에 대한 움직임 보상을 수행함으로써, 현재 블록의 예측 블록을 생성할 수 있다(S320). 여기서, 예측 블록은 현재 블록에 대한 움직임 보상 수행 결과 생성된, 움직임 보상된 블록을 의미할 수 있다. 또한, 복수의 움직임 보상된 블록은 하나의 움직임 보상된 영상을 구성할 수 있다. 따라서, 후술되는 실시예들에서 예측 블록은 문맥에 따라 ‘움직임 보상된 블록’ 및/또는 ‘움직임 보상된 영상’으로 지칭될 수 있으며, 이러한 구분은 해당 기술 분야에서 통상의 지식을 가진 자라면 용이하게 할 수 있을 것이다.
한편, 인터 예측이 수행되는 픽쳐에는 P 픽쳐 및 B 픽쳐가 있을 수 있다. P 픽쳐는 하나의 참조 픽쳐를 이용한 단방향 예측이 수행되는 픽쳐를 의미할 수 있고, B 픽쳐는 하나 이상, 예를 들어 두 개의 참조 픽쳐를 이용한 순방향, 역방향 또는 양방향 예측이 수행될 수 있는 픽쳐를 의미할 수 있다. 예를 들어, B 픽쳐에서는 1개의 순방향 참조 픽쳐(과거 픽쳐) 및 1개의 역방향 참조 픽쳐(미래 픽쳐)를 이용하여 인터 예측이 수행될 수 있다. 또한, B 픽쳐에서는 2개의 순방향 참조 픽쳐를 이용하여 예측이 수행되거나, 2개의 역방향 참조 픽쳐를 이용하여 예측이 수행될 수도 있다.
여기서, 참조 픽쳐들은 참조 픽쳐 리스트(reference picture list)에 의해 관리될 수 있다. P 픽쳐에서는 1개의 참조 픽쳐가 사용되고, 상기 참조 픽쳐는 참조 픽쳐 리스트0(L0 또는 List0)에 할당될 수 있다. B 픽쳐에서는 2개의 참조 픽쳐가 사용되고, 상기 2개의 참조 픽쳐는 각각 참조 픽쳐 리스트0 및 참조 픽쳐 리스트1(L1 또는 List1)에 할당될 수 있다. 이하, L0 참조 픽쳐 리스트는 참조 픽쳐 리스트0과 동일한 의미를 가질 수 있으며, L1 참조 픽쳐 리스트는 참조 픽쳐 리스트1과 동일한 의미를 가질 수 있다.
일반적으로 순방향 참조 픽쳐는 참조 픽쳐 리스트0에 할당되고 역방향 참조 픽쳐는 참조 픽쳐 리스트1에 할당될 수 있다. 그러나, 참조 픽쳐의 할당 방법은 이에 한정되는 것이 아니며, 순방향 참조 픽쳐가 참조 픽쳐 리스트1에 할당될 수도 있고, 역방향 참조 픽쳐가 참조 픽쳐 리스트0에 할당될 수도 있다. 이하, 참조 픽쳐 리스트0에 할당된 참조 픽쳐는 L0 참조 픽쳐, 참조 픽쳐 리스트1에 할당된 참조 픽쳐는 L1 참조 픽쳐라 한다.
참조 픽쳐들은 일반적으로 참조 픽쳐 번호에 따라, 내림차순으로 참조 픽쳐 리스트에 할당될 수 있다. 여기서, 참조 픽쳐 번호는 각 참조 픽쳐에 POC(Picture Order Count) 순서로 할당된 번호를 의미할 수 있으며, 상기 POC 순서는 픽쳐의 표시 순서 및/또는 시간 순서를 의미할 수 있다. 예를 들어, 참조 픽쳐 번호가 동일한 2개의 참조 픽쳐는 서로 동일한 참조 픽쳐에 해당될 수 있다. 참조 픽쳐 리스트에 할당된 참조 픽쳐들은 참조 픽쳐 리스트 재배열(RPLR: Reference Picture List Reordering) 또는 메모리 관리 컨트롤(MMCO: Memory Management Control Operation) 명령에 의해 재배열될 수 있다.
상술한 바와 같이, P 픽쳐에서는 1개의 L0 참조 픽쳐를 이용한 단방향 예측이 수행될 수 있고, B 픽쳐에서는 1개의 L0 참조 픽쳐 및 1개의 L1 참조 픽쳐, 즉 2개의 참조 픽쳐를 이용한 순방향, 역방향 또는 양방향 예측이 수행될 수 있다. 1개의 참조 픽쳐를 이용한 예측은 단예측(uni-prediction)으로 불릴 수 있고, L0 참조 픽쳐 및 L1 참조 픽쳐를 포함한 2개의 참조 픽쳐를 이용한 예측은 쌍예측(bi-prediction)으로 불릴 수 있다.
쌍예측은 순방향 예측, 역방향 예측 및 양방향 예측을 모두 포함하는 개념으로 사용될 수 있으나, 후술되는 실시예들에서는 편의상 2개의 참조 픽쳐(L0 참조 픽쳐 및 L1 참조 픽쳐)를 이용한 예측은 양방향 예측이라 한다. 즉, 후술되는 실시예들에서 양방향 예측은 쌍예측을 의미할 수 있고, 2개의 참조 픽쳐(L0 참조 픽쳐 및 L1 참조 픽쳐)를 이용한 순방향, 역방향, 양방향 예측을 모두 포함하는 개념으로 이해될 수 있다. 또한 쌍예측이 수행되는 경우에도 순방향 예측 또는 역방향 예측이 수행될 수 있으나, 후술되는 실시예들에서는 편의상 1개의 참조 픽쳐만을 이용한 예측을 단방향 예측이라 한다. 즉, 후술되는 실시예들에서 단방향 예측은 단예측을 의미할 수 있고, 1개의 참조 픽쳐를 이용한 예측만을 포함하는 개념으로 이해되어야 할 것이다. 또한, 이하 예측이 수행되는 블록에 대해 단방향 예측(단예측)이 적용되는지 또는 양방향 예측(쌍예측)이 적용되는지 여부를 지시하는 정보는 예측 방향 정보라 한다.
도 4는 양방향 예측이 적용되는 경우, 인터 예측 방법의 실시예를 개략적으로 나타내는 도면이다.
상술한 바와 같이, 부호화기 및 복호화기는 인터 예측시 단방향 예측뿐만 아니라 양방향 예측을 수행할 수 있다. 양방향 예측이 적용되는 경우, 예측이 수행되는 각각의 블록은 두 개의 참조 픽쳐(L0 참조 픽쳐 및 L1 참조 픽쳐)를 가질 수 있다. 또한 이 때, 양방향 예측이 수행되는 각각의 블록은 두 개의 움직임 정보를 가질 수 있다. 여기서, 움직임 정보는 참조 픽쳐 번호 및 움직임 벡터 등을 포함할 수 있다.
양방향 예측이 수행되는 경우, 부호화기 및 복호화기는 참조 픽쳐 리스트0 및 참조 픽쳐 리스트1에서 각각 하나의 참조 픽쳐를 선택하여 예측에 사용할 수 있다. 즉, L0 참조 픽쳐 및 L1 참조 픽쳐를 포함하는 2 개의 참조 픽쳐가 양방향 예측에 사용될 수 있다. 이하, L0 참조 픽쳐에 대응되는 움직임 정보는 L0 움직임 정보라 하고, L1 참조 픽쳐에 대응되는 움직임 정보는 L1 움직임 정보라 한다. 또한, L0 움직임 정보를 이용한 움직임 보상은 L0 움직임 보상이라 하고, L1 움직임 정보를 이용한 움직임 보상은 L1 움직임 보상이라 한다.
도 4를 참조하면, 부호화기 및 복호화기는 L0 움직임 정보 및 L0 참조 픽쳐 리스트를 이용하여 현재 블록에 대한 L0 움직임 보상(410)을 수행함으로써, L0 움직임 보상된 블록을 생성할 수 있다. 또한, 부호화기 및 복호화기는 L1 움직임 정보 및 L1 참조 픽쳐 리스트를 이용하여 L1 움직임 보상(420)을 수행함으로써, L1 움직임 보상된 블록을 생성할 수 있다. 이 때, L0 움직임 보상(410) 및 L1 움직임 보상(420) 과정은 서로 독립적으로 수행될 수 있다.
부호화기 및 복호화기는 L0 움직임 보상된 블록 및 L1 움직임 보상된 블록에 대해 가중치 평균(430)을 수행하여, 최종적으로 하나의 움직임 보상된 블록을 생성할 수 있다. 일례로, 상기 가중치 평균(430)은 L0 움직임 보상된 블록 및 L1 움직임 보상된 블록 내의 픽셀 단위로 수행될 수 있다. 이 때, 최종적으로 생성된 하나의 움직임 보상된 블록은 현재 블록의 예측 블록에 해당될 수 있다.
이하, 양방향 예측시에 적용되는 움직임 보상은 양방향 움직임 보상이라 한다. 이에 대응하여, 단방향 예측시에 적용되는 움직임 보상은 단방향 움직임 보상으로 불릴 수 있다.
도 5는 부호화된 영상의 움직임 정보의 일 실시예를 개략적으로 나타내는 도면이다. 도 5는 부호화된 영상을 구성하는 복수의 블록 및 상기 복수의 블록 각각의 움직임 정보를 도시한다.
도 5에서 부호화된 영상은 BasketballDrill에 해당된다. 여기서, BasketballDrill은 영상 부호화/복호화 실험에 사용되는 테스트 시퀀스(test sequence)의 명칭을 나타낸다. 부호화된 영상의 크기는 832x480이고, POC(Picture Order Count)는 2이다. 또한, 도 5의 영상에 적용된 양자화 파라미터(QP: Quantization Parameter) 값은 32이다.
부호화기 및 복호화기는 저지연 응용 환경에서의 인터 예측 효율을 높이기 위해, 순방향 B 픽쳐를 이용할 수 있다. 여기서, 순방향 B 픽쳐는 순방향 예측만이 수행되는 B 픽쳐를 의미할 수 있다. 순방향 B 픽쳐가 사용되는 경우, 예측이 수행되는 각각의 블록은 두 개의 움직임 정보(L0 움직임 정보, L1 움직임 정보)를 가질 수 있다. 순방향 B 픽쳐에서는 일반적으로 L0 참조 픽쳐 리스트 및 L1 참조 픽쳐 리스트가 동일하게 설정될 수 있다. 이하 본 명세서에서, 순방향 B 픽쳐가 사용되는 경우에는 L0 참조 픽쳐 리스트 및 L1 참조 픽쳐 리스트가 동일하다고 가정한다.
복호화기는 L0 참조 픽쳐 리스트 및 L1 참조 픽쳐 리스트를 기반으로, 현재 픽쳐가 순방향 B 픽쳐인지 여부를 직접 판단할 수도 있으나, 부호화기로부터 전송된 정보를 기반으로 현재 픽쳐가 순방향 B 픽쳐인지 여부를 판단할 수도 있다. 예를 들어, 부호화기는 L0 참조 픽쳐 리스트 및 L1 참조 픽쳐 리스트가 동일한지 여부를 지시하는 플래그를 부호화하여 복호화기로 전송할 수 있다. 이 때, 복호화기는 상기 플래그를 수신하여 복호화한 후, 복호화된 플래그를 기반으로, 현재 픽쳐가 순방향 B 픽쳐인지 여부를 판단할 수 있다. 또 다른 예로, 부호화기는 순방향 B 픽쳐에 해당하는 NAL 유닛 타입 값 또는 슬라이스 타입 값을 복호화기로 전송할 수 있고, 복호화기는 상기 값을 수신하여 이를 기반으로 순방향 B 픽쳐 여부를 판단할 수도 있다.
도 5에 도시된 영상은 순방향 B 픽쳐를 사용하여 부호화된 영상이다. 따라서, 부호화된 영상 내의 각각의 블록은 최대 두 개의 움직임 정보를 가질 수 있다. 여기서, 움직임 정보는 참조 픽쳐 번호, 움직임 벡터 등을 포함할 수 있다. 도 5을 참조하면, 두 개의 움직임 정보를 갖는 블록들 중에서 L0 움직임 정보(예를 들어, 참조 픽쳐 번호, 움직임 벡터)와 L1 움직임 정보(예를 들어, 참조 픽쳐 번호, 움직임 벡터)가 동일한 블록이 다수 존재할 수 있다.
순방향 B 픽쳐에서 L0 움직임 정보(예를 들어, 참조 픽쳐 번호, 움직임 벡터)와 L1 움직임 정보(예를 들어, 참조 픽쳐 번호, 움직임 벡터)가 동일한 블록은, 시간적 움직임 정보 도출 방법에 기인하여 발생할 수 있다. 상술한 바와 같이, 시간적 움직임 정보는 이미 복원된 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 움직임 정보로부터 도출될 수 있다. 예를 들어, 현재 블록의 L0 시간적 움직임 정보를 도출할 때, 부호화기 및 복호화기는 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 L0 움직임 정보를 사용할 수 있다. 그러나, 상기 콜 블록에 L0 움직임 정보가 존재하지 않는 경우, 부호화기 및 복호화기는 상기 콜 블록의 L1 움직임 정보를 현재 블록의 L0 시간적 움직임 정보로 사용할 수 있다. 반대로, 현재 블록의 L1 시간적 움직임 정보를 도출할 때, 부호화기 및 복호화기는 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 L1 움직임 정보를 사용할 수 있다. 그러나, 상기 콜 블록에 L1 움직임 정보가 존재하지 않는 경우, 부호화기 및 복호화기는 상기 콜 블록의 L0 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 상술한 프로세스 수행 결과, 현재 블록의 L0 움직임 정보와 L1 움직임 정보가 동일해지는 현상이 발생할 수 있다. 따라서, 본 명세서에서 L0 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)와 L1 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)가 동일한 경우, 및/또는 L0 시간적 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)와 L1 시간적 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)가 동일한 경우는, 이미 복원된 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 움직임 정보가 L0 움직임 정보 및 L1 움직임 정보 중에서 하나만을 갖는 경우를 포함할 수 있다.
또한, L0 움직임 정보와 L1 움직임 정보가 동일한 블록이 발생된 경우, 상기 블록은 이후에 부호화되는 블록에 영향을 미칠 수 있다. 예를 들어, 머지(merge)가 적용되는 경우, 복원된 주변 블록 및/또는 콜 블록의 움직임 정보(L0 움직임 정보 및 L1 움직임 정보)가 현재 블록의 움직임 정보로 그대로 사용될 수 있다. 따라서, L0 움직임 정보와 L1 움직임 정보가 동일한 블록이 발생된 경우, L0 움직임 정보와 L1 움직임 정보가 동일한 다른 블록이 더 많이 발생될 수 있다.
L0 움직임 정보와 L1 움직임 정보가 동일한 블록에 대해 움직임 보상이 수행되는 경우에는, 하나의 블록에서 동일한 프로세스가 두 번 반복하여 수행될 수 있다. 이는 부호화 관점에서 매우 비효율적이므로, 상술한 문제점을 해결하여 계산 복잡도를 감소시키고 부호화 효율을 향상시킬 수 있는 인터 예측 방법 및/또는 움직임 보상 방법이 제공될 수 있다. 일례로, L0 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)와 L1 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)가 동일한 경우, 부호화기 및 복호화기는 움직임 보상 과정을 한 번만 수행함으로써 계산 복잡도를 감소시킬 수 있다. 다른 예로, L0 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)와 L1 움직임 정보(예를 들어, 참조 픽쳐 번호 및 움직임 벡터)가 동일한 경우, 부호화기 및 복호화기는 L0 움직임 정보 및/또는 L1 움직임 정보를 다시 설정함으로써 부호화 효율을 증가시킬 수도 있다.
도 6은 본 발명에 따른 현재 블록의 시간적 움직임 정보 도출 방법의 일 실시예를 개략적으로 나타내는 흐름도이다.
후술되는 실시예들은 시간적 움직임 정보를 중심으로 서술되지만 본 발명은 이에 한정되는 것은 아니다. 예를 들어, 도 6의 실시예에 따른 방법들은 머지 모드 및/또는 AMVP 모드에서의 시간적 움직임 정보뿐만 아니라, 머지 모드에서 머지 후보 리스트를 기반으로 도출된 현재 블록의 움직임 정보 및/또는 AMVP 모드에서 예측 움직임 벡터 후보 리스트를 기반으로 도출된 현재 블록의 움직임 정보에도 동일하거나 유사한 방식으로 적용될 수 있다.
상술한 바와 같이, 시간적 움직임 정보는 이미 복원된 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 움직임 정보를 기반으로 도출될 수 있다. 여기서, 상기 콜 픽쳐는 일례로 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다. 부호화기 및 복호화기는, 콜 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 블록을 기준으로 소정의 상대적인 위치를 결정할 수 있고, 상기 결정된 소정의 상대적인 위치(예를 들어, 상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록의 내부 및/또는 외부의 위치)를 기반으로 상기 콜 블록을 도출할 수 있다. 콜 블록을 기반으로 도출되는 시간적 움직임 정보는 예측 방향 정보, L0 참조 픽쳐 번호, L1 참조 픽쳐 번호, L0 움직임 벡터 및 L1 움직임 벡터 등을 포함할 수 있다.
도 6을 참조하면, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 시간적 움직임 정보에서 L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한지 여부, 즉 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하고 L0 움직임 벡터와 L1 움직임 벡터가 동일한지 여부를 판단할 수 있다(S610).
L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일하지 않은 경우, 즉 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하지 않거나 및/또는 L0 움직임 벡터와 L1 움직임 벡터가 동일하지 않은 경우, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 시간적 움직임 정보를 그대로 현재 블록에 대한 시간적 움직임 정보로 사용할 수 있다. AMVP가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 예측 움직임 벡터 후보로 결정되거나 등록될 수 있다. 또한, 머지가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 머지 후보로 결정되거나 등록될 수 있다.
L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보가 존재하는지 여부를 판단할 수 있다(S620). 예를 들어, 이 때 부호화기 및 복호화기는 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 복원된 주변 블록 중에서 움직임 정보를 갖는 블록이 존재하는지 여부를 판단할 수 있다. 여기서, 복원된 주변 블록은 이미 부호화 및/또는 복호화되어 복원된 현재 픽쳐 내의 블록으로서, 현재 블록에 인접한 블록 및/또는 현재 블록의 외부 코너에 위치한 블록을 포함할 수 있다.
복원된 주변 블록의 움직임 정보가 존재하지 않는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 복원된 주변 블록 중에서 움직임 정보를 갖는 블록이 존재하지 않는 경우), 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다(S630). 또한 이 때, 부호화기 및 복호화기는 L0 시간적 움직임 정보만을 현재 블록의 시간적 움직임 정보로 사용할 수 있다.
복원된 주변 블록의 움직임 정보가 존재하는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 복원된 주변 블록 중에서 움직임 정보를 갖는 블록이 존재하는 경우), 부호화기 및 복호화기는 상기 복원된 주변 블록의 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다(S640). 즉, 이 때 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보를 상기 복원된 주변 블록의 움직임 정보로 재설정할 수 있다. L1 시간적 움직임 정보의 설정을 위해 사용되는 복원된 주변 블록의 구체적인 실시예는 후술하기로 한다.
상술한 실시예에서 현재 블록의 시간적 움직임 정보 도출 방법은 일련의 단계로서 순서도를 기초로 설명되고 있으나, 순서도의 하나 또는 그 이상의 단계는 삭제될 수도 있다. 예를 들어, 상술한 실시예에서 S620 및 S640의 단계는 생략될 수도 있다. 이 때, L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한 경우, 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다(S630). 또한 이 때, 부호화기 및 복호화기는 L0 시간적 움직임 정보만을 현재 블록의 시간적 움직임 정보로 사용할 수 있다.
한편, 상술한 실시예에서는 L0 시간적 움직임 정보와 L1 시간적 움직임 정보의 동일성을 기반으로 S620 내지 S640 과정의 수행 여부가 결정되지만, 부호화기 및 복호화기는 다른 조건을 기반으로 S620 내지 S640 과정의 수행 여부를 결정할 수도 있다.
일 실시예로, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 시간적 움직임 정보에서, L0 참조 픽쳐 번호 및 L1 참조 픽쳐 번호의 동일성을 기반으로 S620 내지 S640 과정의 수행 여부를 결정할 수 있다. 일례로, 부호화기 및 복호화기는 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일한 경우에 S620 내지 S640 과정을 수행할 수 있다.
다른 실시예로, 부호화기 및 복호화기는 콜 블록의 예측 방향을 기반으로 S620 내지 S640 과정의 수행 여부를 결정할 수 있다. 상술한 바와 같이, 예측 방향 정보는 예측이 수행되는 블록에 대해 단방향 예측이 적용되는지 또는 양방향 예측이 적용되는지 여부를 지시하는 정보를 의미할 수 있다. 따라서, 상기 예측 방향은 단방향 예측 또는 양방향 예측에 해당될 수 있다. 일례로, 부호화기 및 복호화기는 콜 블록의 움직임 정보(예측 방향)가 양방향 예측이 아닌 단방향 예측인 경우에 S620 내지 S640 과정을 수행할 수 있다. 이는 콜 블록의 예측 방향이 단방향 예측인 경우, 결과적으로 콜 블록을 기반으로 도출되는 시간적 움직임 정보에서, L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일할 수 있기 때문이다.
또 다른 실시예로, 부호화기 및 복호화기는 콜 블록에 움직임 정보가 존재하는지 여부에 관한 정보를 기반으로 S620 내지 S640 과정의 수행 여부를 결정할 수도 있다. 일례로, 부호화기 및 복호화기는 콜 블록에 움직임 정보가 존재하지 않는 경우에 S620 내지 S640 과정을 수행할 수 있다. 이 경우, 상술한 S640 단계에서는 L1 시간적 움직임 정보가 아닌 L0 시간적 움직임 정보가 재설정될 수 있다. 즉, 부호화기 및 복호화기는 L0 시간적 움직임 정보를 복원된 주변 블록의 움직임 정보로 설정할 수 있으며, 현재 블록에 대해 양방향 예측이 아닌 단방향 예측을 수행할 수 있다. 또한, 콜 블록에 움직임 정보가 존재하지 않는 경우, 상술한 S640 단계에서 부호화기 및 복호화기는 L0 시간적 움직임 정보와 L1 시간적 움직임 정보를 모두 재설정할 수도 있다. 즉, 부호화기 및 복호화기는 L0 시간적 움직임 정보 및 L1 시간적 움직임 정보를 복원된 주변 블록의 움직임 정보로 설정할 수 있으며, 현재 블록에 대해 양방향 예측을 수행할 수도 있다.
또 다른 실시예로, 부호화기 및 복호화기는 현재 블록의 크기를 기반으로 S620 내지 S640 과정의 수행 여부를 결정할 수도 있다. 일례로, 부호화기 및 복호화기는 현재 블록의 크기가 소정의 크기보다 작은지 여부를 판단할 수 있다. 여기서, 상기 현재 블록은 CU, PU 및/또는 TU일 수 있으며, 상기 소정의 크기는 예를 들어 8x8, 16x16 또는 32x32 등 중에서 하나일 수 있다. 이 때, 부호화기 및 복호화기는 현재 블록의 크기가 소정의 크기보다 작은 경우에 S620 내지 S640 과정을 수행할 수 있다.
또 다른 실시예로, 부호화기 및 복호화기는 콜 블록의 움직임 정보에서 L0 움직임 벡터 및/또는 L1 움직임 벡터가 영 벡터(0,0)에 해당되는 경우에 S620 내지 S640 과정을 수행할 수도 있다. 이 경우, 상술한 S640 단계에서 부호화기 및 복호화기는 영 벡터(0,0)에 해당되는 움직임 벡터(들)를 재설정할 수 있다. 일례로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 복원된 주변 블록의 움직임 벡터로 설정될 수 있으며, 다른 예로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 콜 블록의 주변에 위치한 블록의 움직임 벡터로 설정될 수도 있다. 또 다른 실시예로, 부호화기 및 복호화기는 콜 블록의 움직임 정보에서 L0 움직임 벡터 및/또는 L1 움직임 벡터가 영 벡터(0,0)에 해당되지 않는 경우에 S620 내지 S640 과정을 수행할 수도 있다. 이 경우, 상술한 S640 단계에서 부호화기 및 복호화기는 영 벡터(0,0)에 해당되지 않는 움직임 벡터(들)을 재설정할 수 있으며, 상기 영 벡터(0,0)에 해당되지 않는 움직임 벡터(들)은 복원된 주변 블록의 움직임 벡터로 재설정될 수 있다.
상기 S620 내지 S640 과정의 수행 여부가 결정되는 조건은 상술한 실시예에 한정되지 않으며, 조건 및/또는 필요에 따라 다양한 조건이 적용될 수 있다.
한편, AMVP가 적용되는 경우 부호화기 및/또는 복호화기는 예측 움직임 벡터 후보 리스트 내의 예측 움직임 벡터 후보 중에서 현재 블록의 움직임 벡터와 가장 차이가 적은 후보를 현재 블록의 예측 움직임 벡터로 사용할 수 있고, 머지가 적용되는 경우 부호화기 및/또는 복호화기는 머지 후보 리스트 내의 머지 후보 중에서 최적의 부호화 효율을 제공할 수 있는 머지 후보를 현재 블록에 대한 움직임 정보로 사용할 수 있다. 예측 움직임 벡터 후보 리스트 및 머지 후보 리스트는 각각 시간적 움직임 정보 및/또는 공간적 움직임 정보를 포함할 수 있으므로, 결과적으로 현재 블록의 움직임 정보(예를 들어, 참조 픽쳐 번호, 움직임 정보 등)는 복원된 주변 블록의 움직임 정보를 기반으로 도출될 수 있다. 따라서, 상술한 L1 시간적 움직임 정보 재설정 단계(S640)에서, 부호화기 및 복호화기는 현재 블록의 예측 움직임 벡터 후보 리스트 및/또는 현재 블록의 머지 후보 리스트를 기반으로 L1 시간적 움직임 정보를 재설정할 수 있다. 이 경우, 상술한 복원된 주변 블록의 존재 유무를 판단하는 단계(S630)는 생략될 수 있다. 이하, 후술되는 실시예에서 움직임 정보 후보 리스트는 예측 움직임 벡터 후보 리스트 및 머지 후보 리스트를 포함하는 개념으로 이해될 수 있다.
상술한 바와 같이, 부호화기 및 복호화기는 현재 블록의 움직임 정보 후보 리스트를 기반으로, 현재 블록의 L1 시간적 움직임 정보를 재설정할 수 있다. 즉, 부호화기 및 복호화기는 현재 블록의 움직임 정보 후보 리스트에 포함된 움직임 정보 후보 중에서 하나를 L1 시간적 움직임 정보로 사용할 수 있다. 현재 블록의 움직임 정보 후보 리스트에서 L1 시간적 움직임 정보로 사용되는 움직임 정보는 다양한 방법으로 결정될 수 있다.
일 실시예로, 부호화기 및 복호화기는 움직임 정보 후보 리스트 내의 움직임 정보 후보들을 첫 번째 움직임 정보 후보에서 마지막 움직임 정보 후보까지 순서대로 검색할 수 있다. 이 때, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 L1 시간적 움직임 정보의 L1 참조 픽쳐 번호와 동일한 참조 픽쳐 번호를 갖는 첫 번째 움직임 정보 후보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 부호화기 및 복호화기는 상기 L1 참조 픽쳐 번호와 동일한 참조 픽쳐 번호를 갖는 첫 번째 움직임 정보 후보의 L0 움직임 정보를 사용할 수도 있고, 상기 L1 참조 픽쳐 번호와 동일한 참조 픽쳐 번호를 갖는 첫 번째 움직임 정보 후보의 L1 움직임 정보를 사용할 수도 있다. 한편, 움직임 정보 후보 리스트에, 콜 블록을 기반으로 도출된 L1 시간적 움직임 정보의 L1 참조 픽쳐 번호와 동일한 참조 픽쳐 번호를 갖는 움직임 정보가 존재하지 않을 수도 있다. 이 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 중에서 상기 L1 참조 픽쳐 번호와 동일한 참조 픽쳐 번호를 갖는 움직임 정보를 움직임 정보 후보 리스트에 추가할 수도 있다. 이 때, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보가 추가된 움직임 정보 후보 리스트를 기반으로 현재 블록의 L1 시간적 움직임 정보를 재설정할 수 있다.
다른 실시예로, 부호화기 및 복호화기는 움직임 정보 후보 리스트 내에서 가용한 움직임 벡터를 갖는 첫 번째 움직임 정보 후보의 움직임 벡터를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 부호화기 및 복호화기는 상기 첫 번째 움직임 정보 후보의 L0 움직임 정보를 사용할 수도 있고, 상기 첫 번째 움직임 정보 후보의 L1 움직임 정보를 사용할 수도 있다.
또 다른 실시예로, 부호화기 및 복호화기는 움직임 정보 후보 리스트 내에서 가용한 첫 번째 움직임 정보 후보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 경우, L1 시간적 움직임 정보의 L1 참조 픽쳐 번호는 상기 첫 번째 움직임 정보 후보의 참조 픽쳐 번호로 변경되거나 설정되고, L1 시간적 움직임 정보의 L1 움직임 벡터는 상기 첫 번째 움직임 정보 후보의 움직임 벡터로 변경되거나 설정될 수 있다. 이 때, 부호화기 및 복호화기는 상기 첫 번째 움직임 정보 후보의 L0 움직임 정보를 사용할 수도 있고, 상기 첫 번째 움직임 정보 후보의 L1 움직임 정보를 사용할 수도 있다.
현재 블록의 움직임 정보 후보 리스트에서 L1 시간적 움직임 정보로 사용되는 움직임 정보 후보를 결정하는 방법은 상술한 실시예에 한정되지 않으며, 조건 및/또는 필요에 따라 다양한 조건이 적용될 수 있다.
상술한 실시예들에서, 현재 블록의 움직임 정보 후보 리스트에 가용한 움직임 정보가 없을 수도 있다. 이 경우, 일례로 부호화기 및 복호화기는 상술한 S640 단계에서와 같이, 복원된 주변 블록의 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로 이 경우 부호화기 및 복호화기는, 복원된 주변 블록의 움직임 정보를 움직임 정보 후보 리스트에 추가할 수도 있으며, 영 벡터(0,0)를 움직임 정보 후보 리스트에 추가할 수도 있다. 이 때, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보가 추가된 움직임 정보 후보 리스트 또는 영 벡터(0,0)가 추가된 움직임 정보 후보 리스트를 기반으로 현재 블록의 L1 시간적 움직임 정보를 재설정할 수 있다.
상술한 실시예들에서 L0 시간적 움직임 정보 및 L1 시간적 움직임 정보는 시간적으로 도출된 움직임 정보이므로, 객체의 이동에 의한 움직임 정보에 해당될 가능성이 높다. 따라서, 부호화기 및 복호화기는 복원된 주변 블록 및/또는 움직임 정보 후보 리스트에서 현재 블록의 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색할 때, 영 벡터(0,0)를 갖는 움직임 정보는 선택하지 않고 영 벡터(0,0)를 갖지 않는 움직임 정보를 선택할 수도 있다. 이는 영 벡터(0,0)에 해당되는 움직임 정보를 갖는 블록은, 객체가 아닌 배경에 해당될 가능성이 높기 때문이다.
한편, 재설정된 L1 시간적 움직임 정보는 현재 블록의 L0 시간적 움직임 정보와 동일할 수도 있다. 따라서, 부호화기 및 복호화기는 복원된 주변 블록 및/또는 움직임 정보 후보 리스트에서 현재 블록의 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색할 때, L0 시간적 움직임 정보와 동일하지 않은 움직임 정보를 선택할 수 있다. 예를 들어, 상술한 S640에서와 같이, 복원된 주변 블록을 기반으로 현재 블록의 L1 시간적 움직임 정보를 도출하는 경우, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보와 다른 움직임 정보를 갖는 블록을 상기 L1 시간적 움직임 정보 도출에 사용되는 블록으로 결정할 수 있다. 이 때, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보와의 차이가 소정의 임계값(threshold) 이하인 움직임 정보만을, 현재 블록의 L1 시간적 움직임 정보로 사용될 움직임 정보로 선택할 수도 있다. 여기서, 상기 소정의 임계값은 현재 블록의 모드 정보, 현재 블록의 움직임 정보, 주변 블록의 모드 정보 및/또는 주변 블록의 움직임 정보 등을 기반으로 정해질 수 있으며, 다양한 방식으로 결정될 수 있다.
또한, 상술한 실시예들에서, 복원된 주변 블록의 움직임 정보 및 움직임 정보 후보 리스트로부터 선택된 움직임 정보는 각각 L0 움직임 정보 및 L1 움직임 정보를 모두 포함할 수 있다. 이 경우, 부호화기 및 복호화기는 상기 L0 움직임 정보 및 L1 움직임 정보 중에서 하나의 움직임 정보를, 현재 블록의 L1 시간적 움직임 정보로 사용될 움직임 정보로 결정할 수 있다. 일례로, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 및/또는 움직임 정보 후보 리스트로부터 선택된 움직임 정보에서 L0 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 복원된 주변 블록의 움직임 정보 및/또는 움직임 정보 후보 리스트로부터 선택된 움직임 정보에 L0 움직임 정보가 존재하지 않는 경우, 부호화기 및 복호화기는 L1 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 및/또는 움직임 정보 후보 리스트로부터 선택된 움직임 정보에서 L1 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 복원된 주변 블록의 움직임 정보 및/또는 움직임 정보 후보 리스트로부터 선택된 움직임 정보에 L1 움직임 정보가 존재하지 않는 경우, 부호화기 및 복호화기는 L0 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다.
한편, 부호화기 및 복호화기는 상술한 S640 단계에서 현재 블록의 L1 시간적 움직임 정보(예를 들어, L1 움직임 벡터)를 재설정하기 위해, 복원된 주변 블록의 움직임 정보 및/또는 움직임 정보 후보 리스트를 사용하지 않을 수도 있다. 이 때, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보(예를 들어, L0 움직임 벡터)를 기반으로 현재 블록의 L1 시간적 움직임 정보(예를 들어, L1 움직임 벡터)를 재설정할 수 있다. 이하, 이와 관련된 실시예들이 서술되며 이는 움직임 벡터를 기준으로 서술하기로 한다.
일 실시예로, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보(L0 움직임 벡터)가 지시하는 위치에서 소정의 거리 및/또는 방향을 기반으로 이동된 상대적인 위치를 지시하는 움직임 정보를 현재 블록의 L1 시간적 움직임 정보(L1 움직임 벡터)로 사용할 수 있다. 일례로, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보가 지시하는 위치에서 수직 및/또는 수평 방향으로 1/4 픽셀 크기(예를 들어, (-1,0), (1,0), (0,-1), (0,1), (-1,-1), (-1,1), (1,-1), (1,1) 등. 여기서, 1/4 픽셀 단위는 1에 해당됨.)만큼 이동된 위치를 지시하는 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보가 지시하는 위치에서 수직 및/또는 수평 방향으로 1/2 픽셀 크기(예를 들어, (-2,0), (2,0), (0,-2), (0,2), (-2,-2), (-2,2), (2,-2), (2,2) 등. 여기서, 1/4 픽셀 단위는 1에 해당됨.)만큼 이동된 위치를 지시하는 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보가 지시하는 위치에서 수직 및/또는 수평 방향으로 정수 픽셀 크기(예를 들어, (-4,0), (4,0), (0,-4), (0,4), (-4,-4), (-4,4), (4,-4), (4,4) 등. 여기서, 1/4 픽셀 단위는 1에 해당됨.)만큼 이동된 위치를 지시하는 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수도 있다. 한편, 움직임 벡터는 수직 방향 성분 및 수평 방향 성분을 포함하므로, 상술한 방법들(1/4 픽셀 크기만큼 이동, 1/2 픽셀 크기만큼 이동, 정수 픽셀 크기만큼 이동)은 수평 방향 성분 및 수직 방향 성분에 대해 각각 독립적으로 적용될 수도 있다. 이 때, 수평 방향의 이동 거리 및 수직 방향의 이동 거리는 서로 다를 수도 있다.
다른 실시예로, 부호화기 및 복호화기는 현재 블록의 L0 시간적 움직임 정보(L0 움직임 벡터)의 값을 다른 픽셀 단위의 값으로 변경한 후 변경된 값을 현재 블록의 L1 시간적 움직임 정보(L1 움직임 벡터)로 사용할 수 있다. 일례로, 현재 블록의 L0 시간적 움직임 정보의 값이 1/4 픽셀 단위의 값인 경우, 부호화기 및 복호화기는 쉬프트 연산 등을 기반으로 상기 L0 시간적 움직임 정보의 값을 1/2 픽셀 단위의 값으로 변경할 수 있고, 상기 변경된 값을 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로, 현재 블록의 L0 시간적 움직임 정보의 값이 1/2 픽셀 단위의 값인 경우, 부호화기 및 복호화기는 쉬프트 연산 등을 기반으로 상기 L0 시간적 움직임 정보의 값을 정수 픽셀 단위의 값으로 변경할 수 있고, 상기 변경된 값을 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다.
현재 블록의 L0 시간적 움직임 정보(예를 들어, L0 움직임 벡터)를 기반으로 현재 블록의 L1 시간적 움직임 정보(예를 들어, L1 움직임 벡터)를 재설정하는 방법은 상술한 실시예에 한정되지 않으며, 구현 및/또는 필요에 따라 다양한 형태로 적용될 수 있다.
한편, 상술한 실시예에서 시간적 움직임 정보 재설정 전 S610 단계로 입력되는 시간적 움직임 정보는 움직임 벡터뿐만 아니라 참조 픽쳐 인덱스(reference picture index)도 포함할 수 있다. 여기서, L0 움직임 벡터 및 L1 움직임 벡터는 상술한 바와 같이 콜 블록을 기반으로 시간적으로 도출된 움직임 벡터일 수 있고, L0 참조 픽쳐 인덱스 및 L1 참조 픽쳐 인덱스는 복원된 주변 블록으로부터 공간적으로 도출된 참조 픽쳐 인덱스일 수 있다. 이 때, 상기 L0 참조 픽쳐 인덱스 및 상기 L1 참조 픽쳐 인덱스는, 복원된 주변 블록의 참조 픽쳐 인덱스 중에서 음수가 아닌 가장 작은 값으로 설정될 수 있다. 한편, 다른 예로 L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는 복원된 주변 블록의 움직임 정보에 관계 없이 0으로 설정될 수도 있다.
L1 시간적 움직임 정보의 L1 움직임 벡터가 복원된 주변 블록을 기반으로 재설정되는 경우, L1 시간적 움직임 정보의 L1 참조 픽쳐 인덱스에 대해서도 재설정 과정이 수행될 수 있다.
이하, 후술되는 도 6 내지 도 8의 실시예에 한하여 설명의 편의상 시간적 움직임 정보 재설정 전 S610 단계로 입력되는 시간적 움직임 정보는 입력 시간적 움직임 정보(L0 입력 시간적 움직임 정보, L1 입력 시간적 움직임 정보)라 한다. 또한 입력 시간적 움직임 정보에 포함된 움직임 벡터는 입력 움직임 벡터(L0 입력 움직임 벡터, L1 입력 움직임 벡터), 입력 시간적 움직임 정보에 포함된 참조 픽쳐 인덱스는 입력 참조 픽쳐 인덱스(L0 입력 참조 픽쳐 인덱스, L1 입력 참조 픽쳐 인덱스), 입력 시간적 움직임 정보에 포함된 참조 픽쳐 번호는 입력 참조 픽쳐 번호(L0 입력 참조 픽쳐 번호, L1 입력 참조 픽쳐 번호)라 한다.
상술한 바와 같이, L1 입력 움직임 벡터가 재설정되는 경우, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스에 대해서도 재설정 과정을 수행할 수 있다. 이하, L1 입력 참조 픽쳐 인덱스에 대한 재설정 과정의 실시예들이 서술된다.
일 실시예로, 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 L1 입력 참조 픽쳐 인덱스를 재설정할 수 있다. 상술한 바와 같이, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스를 상기 복원된 주변 블록의 참조 픽쳐 인덱스로 재설정함으로써 최종 L1 참조 픽쳐 인덱스를 도출할 수 있다. 다른 실시예로, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스 값을 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정함으로써 최종 L1 참조 픽쳐 인덱스를 도출할 수도 있다.
또 다른 실시예로, L0 입력 시간적 움직임 정보(예를 들어, L0 입력 움직임 벡터, L0 입력 참조 픽쳐 인덱스 등) 와 L1 입력 시간적 움직임 정보(예를 들어, L1 입력 움직임 벡터, L1 입력 참조 픽쳐 인덱스 등)가 동일한 경우, 부호화기 및 복호화기는 L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스를 모두 0의 값으로 재설정하여 최종 시간적 움직임 정보로 사용할 수도 있다. 이는, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, L0 참조 픽쳐 인덱스 및 L1 참조 픽쳐 인덱스가 모두 0일 확률이 높기 때문이다.
또 다른 실시예로, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스를 L0 입력 참조 픽쳐 인덱스와 동일한 값으로 재설정할 수 있다. 반면, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스 값을 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스 값으로 재설정할 수도 있다. 일례로, 복원된 주변 블록이 갖는 참조 픽쳐 인덱스 중에 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스가 존재할 수 있다. 이 때, 예를 들어 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스의 재설정을 위해, 상기 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스 중에서 가장 자주 사용된 참조 픽쳐 인덱스를 사용할 수 있다. 다른 예로, 이 때 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스의 재설정을 위해, 상기 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스 중에서 음수가 아닌 가장 작은 값을 갖는 참조 픽쳐 인덱스를 사용할 수도 있다.
한편, 상술한 바와 같이 부호화기 및 복호화기는 L1 입력 시간적 움직임 정보에서 L1 입력 움직임 벡터 값을 복원된 주변 블록의 움직임 벡터와 동일한 값으로 재설정함으로써 최종 L1 시간적 움직임 벡터를 도출할 수 있다. 이 때, 상기 복원된 주변 블록의 움직임 벡터는 L1 입력 참조 픽쳐 인덱스 및/또는 재설정된 L1 참조 픽쳐 인덱스에 따라 스케일링되어 사용될 수도 있다. L1 입력 시간적 움직임 정보에서 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수도 있고, 상술한 실시예에서와 같이 재설정 과정을 거쳐 최종 L1 시간적 움직임 정보로 사용될 수도 있다. 이 때, 복원된 주변 블록의 움직임 벡터에 대응하는 참조 픽쳐, 및 최종 L1 참조 픽쳐 인덱스가 지시하는 참조 픽쳐는 서로 다를 수 있다. 이 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 벡터에 대한 스케일링을 수행하고 스케일링된 움직임 벡터를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다.
상술한 실시예들은 움직임 벡터의 재설정 과정 및 참조 픽쳐 인덱스(예를 들어, RefIdxLX, X=0,1)의 재설정 과정에 따라 다양한 방법으로 조합되어 적용될 수 있다. 이하, 후술되는 실시예들에서 L1 입력 움직임 벡터는 복원된 주변 블록을 기반으로 재설정된다고 가정한다. 즉, 부호화기 및 복호화기는 L1 입력 움직임 벡터를 복원된 주변 블록의 움직임 벡터 중에서 하나의 값으로 재설정한다고 가정한다.
일 실시예로, 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 복원된 주변 블록의 움직임 벡터 중에서 영 벡터(0,0)가 아닌 움직임 벡터만을 사용할 수 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 복원된 주변 블록이 갖는 참조 픽쳐 인덱스 값으로 재설정될 수 있고, 재설정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 이들 각각에 대한 구체적인 실시예는 상술한 바 있으므로, 여기서는 생략하기로 한다.
다른 실시예로, 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 복원된 주변 블록의 움직임 벡터를 스케일링하여 사용할 수 있다. 이 경우, 상기 스케일링된 움직임 벡터가 최종 L1 시간적 움직임 정보로 사용될 수 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 복원된 주변 블록이 갖는 참조 픽쳐 인덱스 값으로 재설정될 수 있고, 재설정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 이들 각각에 대한 구체적인 실시예는 상술한 바 있으므로, 여기서는 생략하기로 한다.
또 다른 실시예로, 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 복원된 주변 블록의 움직임 벡터 중에서 현재 블록의 L0 시간적 움직임 정보(L0 움직임 벡터)와의 차이가 소정의 임계값 이하인 움직임 벡터만을 사용할 수 있다. 이 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 벡터 중에서 현재 블록의 L0 시간적 움직임 정보(L0 움직임 벡터)와 동일하지 않은 움직임 벡터만을 사용할 수도 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 복원된 주변 블록이 갖는 참조 픽쳐 인덱스 값으로 재설정될 수 있고, 재설정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 이들 각각에 대한 구체적인 실시예는 상술한 바 있으므로, 여기서는 생략하기로 한다.
움직임 벡터의 재설정 과정 및 참조 픽쳐 인덱스의 재설정 과정의 실시예들의 조합은 상술한 실시예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 상술한 실시예들 뿐만 아니라 다양한 형태의 조합이 제공될 수 있다.
한편, 상술한 바와 같이 재설정된 L1 시간적 움직임 정보는 현재 블록의 L0 시간적 움직임 정보와 동일할 수 있다. 따라서, 재설정된 L1 시간적 움직임 정보가 현재 블록의 L0 시간적 움직임 정보와 동일한 경우, 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다. 이 때, 부호화기 및 복호화기는 L0 시간적 움직임 정보만을 현재 블록의 시간적 움직임 정보로 사용할 수 있다. 이러한 방법은 상술한 실시예들과 결합된 조합으로서 본 발명에 적용될 수 있다.
도 7은 L1 시간적 움직임 정보의 재설정을 위해 사용되는 복원된 주변 블록의 실시예를 개략적으로 나타내는 도면이다. 도 7에서 블록 710은 현재 블록(X)을 나타낸다.
상술한 바와 같이, 복원된 주변 블록은 이미 부호화 및/또는 복호화되어 복원된 현재 픽쳐 내의 블록으로서, 현재 블록(710)에 인접한 블록 및/또는 현재 블록의 외부 코너에 위치한 블록을 포함할 수 있다. 도 7의 실시예에서 현재 블록(710) 외부의 좌측 하단 코너에 위치한 블록은 좌측 하단 코너 블록(A)이라 하고, 현재 블록(710) 외부의 좌측 상단 코너에 위치한 블록은 좌측 상단 코너 블록(E)이라 하며, 현재 블록(710) 외부의 우측 상단 코너에 위치한 블록은 우측 상단 코너 블록(C)이라 한다. 또한 현재 블록(710) 좌측에 인접한 블록 중에서 가장 상단에 위치한 블록은 좌측 최상단 블록(F), 현재 블록(710) 좌측에 인접한 블록 중에서 가장 하단에 위치한 블록은 좌측 최하단 블록(A), 현재 블록(710) 상단에 인접한 블록 중에서 가장 좌측에 위치한 블록은 상단 최좌측 블록(G), 현재 블록(710) 상단에 인접한 블록 중에서 가장 우측에 위치한 블록은 상단 최우측 블록(B)이라 한다.
도 6의 실시예에서 상술한 바와 같이, 부호화기 및 복호화기는 소정의 조건에 따라 복원된 주변 블록의 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보 값을 복원된 주변 블록의 움직임 정보 값으로 재설정할 수 있다. 이 때, 현재 블록의 L1 시간적 움직임 정보로 사용되는 움직임 정보는 다양한 방법으로 도출될 수 있다.
일 실시예로, 부호화기 및 복호화기는 복원된 주변 블록 중에서 소정의 위치에 존재하는 한 개의 블록으로부터 L1 시간적 움직임 정보로 사용되는 움직임 정보를 도출할 수 있다. 이 때, 상기 소정의 위치의 블록은 좌측 최하단 블록(A), 상단 최우측 블록(B), 우측 상단 코너 블록(C), 좌측 하단 코너 블록(D),좌측 상단 코너 블록(E), 좌측 최상단 블록(F) 및 상단 최좌측 블록(G) 중에서 하나에 해당될 수 있다.
다른 실시예로, 부호화기 및 복호화기는 복원된 주변 블록 중에서 소정의 위치에 존재하는 복수 개의 블록을 소정의 순서로 스캔할 수 있다. 이 때, 부호화기 및 복호화기는 스캔 순서상 움직임 정보가 존재하는 첫 번째 블록의 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 스캔 대상 블록 및 스캔 순서는 다양한 형태로 정해질 수 있다. 일례로, 부호화기 및 복호화기는 좌측 최상단 블록(F), 상단 최좌측 블록(B) 및 상단 최우측 블록(B) 순으로 주변 블록을 스캔할 수 있다. 다른 예로, 부호화기 및 복호화기는 좌측 최상단 블록(F), 상단 최좌측 블록(G), 우측 상단 코너 블록(C), 좌측 하단 코너 블록(D) 및 좌측 상단 코너 블록(E) 순으로 주변 블록을 스캔할 수도 있다. 또 다른 예로, 부호화기 및 복호화기는 좌측 최하단 블록(A), 상단 최우측 블록(B) 및 좌측 상단 코너 블록(E) 순으로 주변 블록을 스캔할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 좌측 최하단 블록(A), 상단 최우측 블록(B), 우측 상단 코너 블록(C), 좌측 하단 코너 블록(D) 및 좌측 상단 코너 블록(E) 순으로 주변 블록을 스캔할 수도 있다. 또 다른 예로 부호화기 및 복호화기는 좌측 최하단 블록(A), 상단 최우측 블록(B), 우측 상단 코너 블록(C), 좌측 하단 코너 블록(D),좌측 상단 코너 블록(E), 좌측 최상단 블록(F) 및 상단 최좌측 블록(G) 순으로 주변 블록을 스캔할 수도 있다.
또 다른 실시예로, 부호화기 및 복호화기는 복원된 주변 블록 중에서 소정의 위치에 존재하는 복수 개의 블록의 움직임 정보에 대해 중간 값을 도출할 수 있고, 상기 도출된 중간 값을 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 예를 들어, 상기 복수 개의 블록은 좌측 최상단 블록(F), 상단 최좌측 블록(G), 우측 상단 코너 블록(C), 좌측 하단 코너 블록(D) 및 좌측 상단 코너 블록(E)일 수 있다.
복원된 주변 블록으로부터 현재 블록의 L1 시간적 움직임 정보를 도출하는 방법은 상술한 실시예에 한정되는 것이 아니며, 현재 블록의 L1 시간적 움직임 정보는 구현 및/또는 필요에 따라 다양한 방법으로 도출될 수 있다.
이하, 복호화기 입장에서 도 6 및 도 7의 실시예에 따른 시간적 움직임 정보 도출 과정의 실시예가 서술된다.
상기 시간적 움직임 정보 도출 프로세스를 위한 입력에는, 현재 블록의 최좌상단 샘플의 위치 (xP, yP), 입력 움직임 벡터(mvLXCol) 및 입력 참조 픽쳐 번호(RefPicOrder(currPic, refIdxLX, LX)) 등이 있을 수 있다. 여기서, currPic는 현재 픽쳐를 의미할 수 있다. 상기 프로세스의 출력은 최종 시간적 움직임 정보로 사용되는 움직임 벡터(mvLXCol) 및 최종 시간적 움직임 정보의 존재 유무를 나타내는 정보(availableFlagLXCol)일 수 있다. 여기서, X는 0 또는 1의 값을 가질 수 있다. 예를 들어, X가 0인 경우, mvLXCol, refIdxLX, LX는 mvL0Col, refIdxL0, L0을 나타낼 수 있으며, 이는 L0 시간적 움직임 정보와 관련된 변수들을 의미할 수 있다. 또한, mvLX는 움직임 벡터를 나타낼 수 있고, mvLX[0]은 x 성분의 움직임 벡터, mvLX[1]은 y 성분의 움직임 벡터를 의미할 수 있다. refIdxLX는 참조 픽쳐들이 저장된 LX 참조 픽쳐 리스트 내의 참조 픽쳐를 지시하는 LX 참조 픽쳐 인덱스를 나타낼 수 있다. refIdxLX 값이 0인 경우, refIdxLX는 LX 참조 픽쳐 리스트 내의 첫 번째 참조 픽쳐를 지시할 수 있고, refIdxLX 값이 -1인 경우, refIdxLX는 참조 픽쳐 리스트 내에 참조 픽쳐가 존재하지 않음을 나타낼 수 있다. 또한, 후술되는 predFlagLX는 예측 블록 생성시에 움직임 보상이 수행되는지 여부를 나타낼 수 있다. 예를 들어, predFlagLX 값이 1인 경우, 부호화기 및 복호화기는 예측 블록 생성시에 움직임 보상을 수행할 수 있다.
만일 입력 움직임 벡터 mvL0Col 및 mvL1Col이 동일하고, RefPicOrder(currPic, refIdxL0, L0)과 RefPicOrder(currPic, refIdxL1, L1)이 동일하다면(즉, L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하다면), 부호화기 및 복호화기는 다음 과정을 수행할 수 있다.
만일, 현재 블록의 좌측에 인접한 좌측 최상단 블록(A(xP-1, yP))이 존재하고, 상기 좌측 최상단 블록이 인트라 모드로 부호화된 블록이 아니고, predFlagL0A이 ‘1’이고 mvL0A가 (0,0)이 아니면, 부호화기 및 복호화기는 다음 과정을 수행할 수 있다. 여기서, A는 predFlagL0A 및 mvL0A가 좌측 최상단 블록(A)에 관한 정보임을 나타낼 수 있다.
mvL1Col = mvL0A
그렇지 않고, 만일 현재 블록의 상단에 인접한 상단 최좌측 블록(B(xP, yP-1))이 존재하고, 상기 상단 최좌측 블록이 인트라 모드로 부호화된 블록이 아니고, predFlagL0B이 ‘1’이고 mvL0B가 (0,0)이 아니면, 부호화기 및 복호화기는 다음 과정을 수행할 수 있다. 여기서, B는 predFlagL0B 및 mvL0B가 좌측 최상단 블록(B)에 관한 정보임을 나타낼 수 있다.
mvL1Col = mvL0B
그렇지 않고, 만일 현재 블록 외부의 좌측 상단 코너에 위치한 좌측 상단 코너 블록(E(xP-1, yP-1))이 존재하고, 상기 상단 최좌측 블록이 인트라 모드로 부호화된 블록이 아니고, predFlagL0E이 ‘1’이고 mvL0E가 (0,0)이 아니면, 부호화기 및 복호화기는 다음 과정을 수행할 수 있다. 여기서, E는 predFlagL0E 및 mvL0E가 좌측 최상단 블록(E)에 관한 정보임을 나타낼 수 있다.
mvL1Col = mvL0E
이 때 만일, mvL0Col과 mvL1Col이 동일하면, 부호화기 및 복호화기는 다음 과정을 수행할 수 있다.
avilableFlagL1Col = 0
그리고, 부호화기 및 복호화기는 다음 과정을 수행할 수 있다.
availableFlagCol = availableFlagL0Col || availableFlagL1Col
predFlagLXCol = availableFlagLXCol
여기서, availableFlagCol은 시간적 움직임 정보가 도출되었는지 여부를 나타내고, predFlagLXCol은 L0 시간적 움직임 정보 및 L1 시간적 움직임 정보 각각에 대한 최종 시간적 움직임 정보의 존재 유무를 나타낼 수 있다.
도 8은 도 6의 실시예에 따른 시간적 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다. 도 8의 실시예에 따른 인터 예측 장치는 시간적 움직임 정보 판단부(810), 복원된 주변 블록 움직임 정보 판단부(820), 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(830) 및 L1 시간적 움직임 정보 재설정부(840)를 포함할 수 있다.
도 8을 참조하면, 시간적 움직임 정보 판단부(810)는 입력 시간적 움직임 정보에서 L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한지 여부, 즉 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하고 L0 움직임 벡터와 L1 움직임 벡터가 동일한지 여부를 판단할 수 있다.
L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일하지 않은 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있다. AMVP가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 예측 움직임 벡터 후보로 결정되거나 등록될 수 있다. 또한, 머지가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 머지 후보로 결정되거나 등록될 수 있다. L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한 경우에는 복원된 주변 블록 움직임 정보 판단부(820)에 의한 판단 과정이 수행될 수 있다.
한편, 도 6에서 상술한 바와 같이 시간적 움직임 정보 판단부(810)는 L0 시간적 움직임 정보와 L1 시간적 움직임 정보의 동일성 여부가 아닌, L0 참조 픽쳐 번호 및 L1 참조 픽쳐 번호의 동일성 여부 또는 콜 블록의 예측 방향을 판단할 수도 있다. 예를 들어, L0 참조 픽쳐 번호 및 L1 참조 픽쳐 번호가 동일하지 않은 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있고, L0 참조 픽쳐 번호 및 L1 참조 픽쳐 번호가 동일한 경우 복원된 주변 블록 움직임 정보 판단부(820)에 의한 판단 과정이 수행될 수 있다. 다른 예로, 콜 블록의 예측 방향이 양방향 예측인 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있고, 콜 블록의 예측 방향이 단방향 예측인 경우 복원된 주변 블록 움직임 정보 판단부(820)에 의한 판단 과정이 수행될 수도 있다.
복원된 주변 블록 움직임 정보 판단부(820)는 복원된 주변 블록의 움직임 정보가 존재하는지 여부를 판단할 수 있다. 복원된 주변 블록의 움직임 정보가 존재하지 않는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 복원된 주변 블록 중에서 움직임 정보를 갖는 블록이 존재하지 않는 경우), 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(830)에 의한 예측 방향 정보 재설정 및 L0 움직임 정보 설정 과정이 수행될 수 있다. 또한, 복원된 주변 블록의 움직임 정보가 존재하는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 복원된 주변 블록 중에서 움직임 정보를 갖는 블록이 존재하는 경우), L1 시간적 움직임 정보 재설정부(840)에 의한 재설정 과정이 수행될 수 있다.
복원된 주변 블록의 움직임 정보가 존재하지 않는 경우, 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(830)는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다. 또한 이 때, 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(830)는 입력 시간적 움직임 정보 중에서 L0 시간적 움직임 정보만을 현재 블록의 최종 시간적 움직임 정보로 설정할 수 있다.
복원된 주변 블록의 움직임 정보가 존재하는 경우, L1 시간적 움직임 정보 재설정부(840)는 현재 블록의 L1 시간적 움직임 정보를 복원된 주변 블록의 움직임 정보로 재설정할 수 있다. 즉, 인터 예측 장치는 복원된 주변 블록의 움직임 정보를 현재 블록의 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 일례로 L1 시간적 움직임 정보 재설정부(840)는 복원된 주변 블록에서 현재 블록의 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색할 때, 영 벡터(0,0)를 갖는 움직임 정보는 선택하지 않고 영 벡터(0,0)를 갖지 않는 움직임 정보만을 선택할 수도 있다. 한편, L1 시간적 움직임 정보 재설정부(840)는 현재 블록의 움직임 정보 후보 리스트를 기반으로 현재 블록의 L1 시간적 움직임 정보를 재설정할 수도 있다. 상술한 각각의 방법에 대한 구체적인 실시예는 도 6 및 도 7에서 상술한 바 있으므로, 여기서는 생략하기로 한다.
도 9는 본 발명에 따른 현재 블록의 시간적 움직임 정보 도출 방법의 다른 실시예를 개략적으로 나타내는 흐름도이다.
후술되는 실시예들은 시간적 움직임 정보를 중심으로 서술되지만 본 발명은 이에 한정되는 것은 아니다. 예를 들어, 도 9의 실시예에 따른 방법들은 머지 모드 및/또는 AMVP 모드에서의 시간적 움직임 정보뿐만 아니라, 머지 모드에서 머지 후보 리스트를 기반으로 도출된 현재 블록의 움직임 정보 및/또는 AMVP 모드에서 예측 움직임 벡터 후보 리스트를 기반으로 도출된 현재 블록의 움직임 정보에도 동일하거나 유사한 방식으로 적용될 수 있다.
상술한 바와 같이, 시간적 움직임 정보는 이미 복원된 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 움직임 정보를 기반으로 도출될 수 있다. 여기서, 상기 콜 픽쳐는 일례로 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다. 부호화기 및 복호화기는, 콜 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 블록을 기준으로 소정의 상대적인 위치를 결정할 수 있고, 상기 결정된 소정의 상대적인 위치(예를 들어, 상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록의 내부 및/또는 외부의 위치)를 기반으로 상기 콜 블록을 도출할 수 있다. 콜 블록을 기반으로 도출되는 시간적 움직임 정보는 예측 방향 정보, L0 참조 픽쳐 번호, L1 참조 픽쳐 번호, L0 움직임 벡터 및 L1 움직임 벡터 등을 포함할 수 있다.
도 9를 참조하면, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 시간적 움직임 정보에서 L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한지 여부, 즉 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하고 L0 움직임 벡터와 L1 움직임 벡터가 동일한지 여부를 판단할 수 있다(S910). 이하, 후술되는 도 9 내지 도 11의 실시예에 한하여, 설명의 편의상 시간적 움직임 정보 재설정 전 S910 단계로 입력되는 시간적 움직임 정보는 입력 시간적 움직임 정보(L0 입력 시간적 움직임 정보, L1 입력 시간적 움직임 정보)라 한다. 또한 입력 시간적 움직임 정보에 포함된 움직임 벡터는 입력 움직임 벡터(L0 입력 움직임 벡터, L1 입력 움직임 벡터), 입력 시간적 움직임 정보에 포함된 참조 픽쳐 인덱스는 입력 참조 픽쳐 인덱스(L0 입력 참조 픽쳐 인덱스, L1 입력 참조 픽쳐 인덱스), 입력 시간적 움직임 정보에 포함된 참조 픽쳐 번호는 입력 참조 픽쳐 번호(L0 입력 참조 픽쳐 번호, L1 입력 참조 픽쳐 번호)라 한다.
L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일하지 않은 경우, 즉 L0 입력 참조 픽쳐 번호와 L1 입력 참조 픽쳐 번호가 동일하지 않거나 및/또는 L0 입력 움직임 벡터와 L1 입력 움직임 벡터가 동일하지 않은 경우, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있다. AMVP가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록의 예측 움직임 벡터 후보로 결정되거나 등록될 수 있다. 또한, 머지가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록의 머지 후보로 결정되거나 등록될 수 있다.
L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 부호화기 및 복호화기는 콜 블록의 움직임 정보가 존재하는지 여부를 판단할 수 있다(S920). 여기서, 상기 콜 블록은 입력 시간적 움직임 정보 도출을 위해 사용되는 콜 블록이 아닌 새로이 도출된 콜 블록일 수 있다. 예를 들어, 부호화기 및 복호화기는 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 콜 블록 중에서 움직임 정보를 갖는 블록이 존재하는지 여부를 판단할 수 있다.
이하, 도 9 내지 도 11의 실시예에 한하여, 설명의 편의상 입력 시간적 움직임 정보 도출을 위해 사용되는 콜 블록은 제1 콜 블록이라 하고, S920 단계에서와 같이 움직임 정보 존재 여부의 판단 대상이 되면서 후술되는 S940 단계에서와 같이 L1 입력 시간적 움직임 정보의 재설정을 위해 사용되는 콜 블록은 제2 콜 블록이라 한다. 또한, 제1 콜 블록을 포함하는 콜 픽쳐는 제1 콜 픽쳐라 하고, 제2 콜 블록을 포함하는 콜 픽쳐는 제2 콜 픽쳐라 한다. 여기서, 일례로 제1 콜 픽쳐 및 제2 콜 픽쳐는 각각 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다.
제2 콜 블록의 움직임 정보가 존재하지 않는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 제2 콜 블록 중에서 움직임 정보를 갖는 블록이 존재하지 않는 경우), 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다(S930). 또한 이 때, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보만을 현재 블록의 시간적 움직임 정보로 사용할 수 있다.
제2 콜 블록의 움직임 정보가 존재하는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 제2 콜 블록 중에서 움직임 정보를 갖는 블록이 존재하는 경우), 부호화기 및 복호화기는 상기 제2 콜 블록의 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다(S940). 즉, 이 때 부호화기 및 복호화기는 현재 블록의 L1 입력 시간적 움직임 정보를 상기 제2 콜 블록의 움직임 정보로 재설정할 수 있다. L1 입력 시간적 움직임 정보의 재설정을 위해 사용되는 제2 콜 픽쳐 및 제2 콜 블록의 구체적인 실시예는 후술하기로 한다.
상술한 실시예에서 현재 블록의 시간적 움직임 정보 도출 방법은 일련의 단계로서 순서도를 기초로 설명되고 있으나, 순서도의 하나 또는 그 이상의 단계는 삭제될 수도 있다. 예를 들어, 상술한 실시예에서 S920 및 S940의 단계는 생략될 수도 있다. 이 때, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다(S930). 또한 이 때, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보만을 현재 블록의 최종 시간적 움직임 정보로 사용할 수 있다.
한편, 상술한 실시예에서는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보의 동일성을 기반으로 S920 내지 S940 과정의 수행 여부가 결정되지만, 부호화기 및 복호화기는 다른 조건을 기반으로 S920 내지 S940 과정의 수행 여부를 결정할 수도 있다.
일 실시예로, 부호화기 및 복호화기는 L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호의 동일성을 기반으로 S920 내지 S940 과정의 수행 여부를 결정할 수 있다. 일례로, 부호화기 및 복호화기는 L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호가 동일한 경우에 S920 내지 S940 과정을 수행할 수 있다.
다른 실시예로, 부호화기 및 복호화기는 제1 콜 블록의 예측 방향을 기반으로 S920 내지 S940 과정의 수행 여부를 결정할 수 있다. 상술한 바와 같이, 예측 방향 정보는 예측이 수행되는 블록에 대해 단방향 예측이 적용되는지 또는 양방향 예측이 적용되는지 여부를 지시하는 정보를 의미할 수 있다. 따라서, 상기 예측 방향은 단방향 예측 또는 양방향 예측에 해당될 수 있다. 일례로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보(예측 방향)가 양방향 예측이 아닌 단방향 예측인 경우에 S920 내지 S940 과정을 수행할 수 있다. 이는 제1 콜 블록의 예측 방향이 단방향 예측인 경우, 결과적으로 제1 콜 블록으로부터 도출되는 입력 시간적 움직임 정보에서, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일할 수 있기 때문이다.
또 다른 실시예로, 부호화기 및 복호화기는 제1 콜 블록에 움직임 정보가 존재하는지 여부에 관한 정보를 기반으로 S920 내지 S940 과정의 수행 여부를 결정할 수도 있다. 일례로, 부호화기 및 복호화기는 제1 콜 블록에 움직임 정보가 존재하지 않는 경우에 S920 내지 S940 과정을 수행할 수 있다. 이 경우, 상술한 S940 단계에서는 L1 입력 시간적 움직임 정보가 아닌 L0 입력 시간적 움직임 정보가 재설정될 수 있다. 즉, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보를 제2 콜 블록의 움직임 정보로 설정할 수 있으며, 현재 블록에 대해 양방향 예측이 아닌 단방향 예측을 수행할 수 있다. 또한, 제1 콜 블록에 움직임 정보가 존재하지 않는 경우, 상술한 S940 단계에서 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보를 모두 재설정할 수도 있다. 즉, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보 및 L1 입력 시간적 움직임 정보를 모두 제2 콜 블록의 움직임 정보로 재설정할 수 있으며, 현재 블록에 대해 양방향 예측을 수행할 수도 있다.
또 다른 실시예로, 부호화기 및 복호화기는 현재 블록의 크기를 기반으로 S920 내지 S940 과정의 수행 여부를 결정할 수도 있다. 일례로, 부호화기 및 복호화기는 현재 블록의 크기가 소정의 크기보다 작은지 여부를 판단할 수 있다. 여기서, 상기 현재 블록은 CU, PU 및/또는 TU일 수 있으며, 상기 소정의 크기는 예를 들어 8x8, 16x16 또는 32x32 등 중에서 하나일 수 있다. 이 때, 부호화기 및 복호화기는 현재 블록의 크기가 소정의 크기보다 작은 경우에 S920 내지 S940 과정을 수행할 수 있다.
또 다른 실시예로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보에서 L0 움직임 벡터 및/또는 L1 움직임 벡터가 영 벡터(0,0)에 해당되는 경우에 S920 내지 S940 과정을 수행할 수도 있다. 이 경우, 상술한 S940 단계에서 부호화기 및 복호화기는 영 벡터(0,0)에 해당되는 움직임 벡터(들)를 재설정할 수 있다. 일례로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 제2 콜 블록의 움직임 벡터로 설정될 수 있고, 다른 예로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 복원된 주변 블록의 움직임 벡터로 설정될 수도 있으며, 또 다른 예로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 제1 콜 블록의 주변에 위치한 블록의 움직임 벡터로 설정될 수도 있다. 또 다른 실시예로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보에서 L0 움직임 벡터 및/또는 L1 움직임 벡터가 영 벡터(0,0)에 해당되지 않는 경우에 S920 내지 S940 과정을 수행할 수도 있다. 이 경우, 상술한 S940 단계에서 부호화기 및 복호화기는 영 벡터(0,0)에 해당되지 않는 움직임 벡터(들)을 재설정할 수 있으며, 상기 영 벡터(0,0)에 해당되지 않는 움직임 벡터(들)은 제2 콜 블록의 움직임 벡터로 재설정될 수 있다.
상기 S920 내지 S940 과정의 수행 여부가 결정되는 조건은 상술한 실시예에 한정되지 않으며, 조건 및/또는 필요에 따라 다양한 조건이 적용될 수 있다.
상술한 실시예들에서 L0 입력 시간적 움직임 정보 및 L1 입력 시간적 움직임 정보는 시간적으로 도출된 움직임 정보이므로, 객체의 이동에 의한 움직임 정보에 해당될 가능성이 높다. 따라서, 부호화기 및 복호화기는 제2 콜 블록에서 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색할 때, 영 벡터(0,0)를 갖는 움직임 정보는 선택하지 않고 영 벡터(0,0)를 갖지 않는 움직임 정보를 선택할 수도 있다. 이는 영 벡터(0,0)에 해당되는 움직임 정보를 갖는 블록은, 객체가 아닌 배경에 해당될 가능성이 높기 때문이다.
한편, 재설정된 최종 L1 시간적 움직임 정보는 현재 블록의 L0 입력 시간적 움직임 정보와 동일할 수도 있다. 따라서, 부호화기 및 복호화기는 제2 콜 블록에서 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색할 때, L0 입력 시간적 움직임 정보와 동일하지 않은 움직임 정보를 선택할 수 있다. 예를 들어, S940에서와 같이, 제2 콜 블록을 기반으로 현재 블록의 최종 L1 시간적 움직임 정보를 도출하는 경우, 부호화기 및 복호화기는 현재 블록의 L0 입력 시간적 움직임 정보와 다른 움직임 정보를 갖는 블록을 상기 최종 L1 시간적 움직임 정보 도출에 사용되는 블록으로 결정할 수 있다. 이 때, 부호화기 및 복호화기는 현재 블록의 L0 입력 시간적 움직임 정보와의 차이가 소정의 임계값(threshold) 이하인 움직임 정보만을, 최종 L1 시간적 움직임 정보로 사용될 움직임 정보로 선택할 수도 있다. 여기서, 상기 소정의 임계값은 현재 블록의 모드 정보, 현재 블록의 움직임 정보, 주변 블록의 모드 정보 및/또는 주변 블록의 움직임 정보 등을 기반으로 정해질 수 있으며, 다양한 방식으로 결정될 수 있다.
또한, 상술한 실시예들에서, 제2 콜 블록의 움직임 정보는 L0 움직임 정보 및 L1 움직임 정보를 모두 포함할 수 있다. 이 경우, 부호화기 및 복호화기는 상기 L0 움직임 정보 및 상기 L1 움직임 정보 중에서 하나의 움직임 정보를, 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 움직임 정보로 결정할 수 있다. 일례로, 부호화기 및 복호화기는 제2 콜 블록의 L0 움직임 정보를 현재 블록에 대한 최종 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 제2 콜 블록에 L0 움직임 정보가 존재하지 않는 경우, 부호화기 및 복호화기는 제2 콜 블록의 L1 움직임 정보를 현재 블록에 대한 최종 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로, 부호화기 및 복호화기는 제2 콜 블록의 L1 움직임 정보를 현재 블록에 대한 최종 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 제2 콜 블록에 L1 움직임 정보가 존재하지 않는 경우, 부호화기 및 복호화기는 제2 콜 블록의 L0 움직임 정보를 현재 블록에 대한 최종 L1 시간적 움직임 정보로 사용할 수 있다.
한편, 부호화기 및 복호화기는 상술한 S940 단계에서 현재 블록의 L1 입력 시간적 움직임 정보(예를 들어, L1 입력 움직임 벡터)를 재설정하기 위해, 제2 콜 블록의 움직임 정보를 사용하지 않을 수도 있다. 이 때, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보(예를 들어, 움직임 벡터)를 기반으로 현재 블록의 L1 입력 시간적 움직임 정보(예를 들어, L1 입력 움직임 벡터)를 재설정할 수 있다. 이하, 이와 관련된 실시예들이 서술되며 이는 움직임 벡터를 기준으로 서술하기로 한다.
일 실시예로, 부호화기 및 복호화기는 제1 콜 픽쳐 내에서, 제1 콜 블록의 움직임 정보(움직임 벡터)가 지시하는 위치에서 소정의 거리 및/또는 방향을 기반으로 이동된 상대적인 위치를 지시하는 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보(L1 움직임 벡터)로 사용할 수 있다. 일례로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보가 지시하는 위치에서 수직 및/또는 수평 방향으로 1/4 픽셀 크기 (예를 들어, (-1,0), (1,0), (0,-1), (0,1), (-1,-1), (-1,1), (1,-1), (1,1) 등. 여기서, 1/4 픽셀 단위는 1에 해당됨.)만큼 이동된 위치를 지시하는 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보가 지시하는 위치에서 수직 및/또는 수평 방향으로 1/2 픽셀 크기(예를 들어, (-2,0), (2,0), (0,-2), (0,2), (-2,-2), (-2,2), (2,-2), (2,2) 등. 여기서, 1/4 픽셀 단위는 1에 해당됨.)만큼 이동된 위치를 지시하는 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보가 지시하는 위치에서 수직 및/또는 수평 방향으로 정수 픽셀 크기(예를 들어, (-4,0), (4,0), (0,-4), (0,4), (-4,-4), (-4,4), (4,-4), (4,4) 등. 여기서, 1/4 픽셀 단위는 1에 해당됨.)만큼 이동된 위치를 지시하는 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수도 있다. 한편, 움직임 벡터는 수직 방향 성분 및 수평 방향 성분을 포함하므로, 상술한 방법들(1/4 픽셀 크기만큼 이동, 1/2 픽셀 크기만큼 이동, 정수 픽셀 크기만큼 이동)은 수평 방향 성분 및 수직 방향 성분에 대해 각각 독립적으로 적용될 수도 있다. 이 때, 수평 방향의 이동 거리 및 수직 방향의 이동 거리는 서로 다를 수도 있다.
다른 실시예로, 부호화기 및 복호화기는 제1 콜 블록의 움직임 정보(움직임 벡터) 값을 다른 픽셀 단위의 값으로 변경한 후 변경된 값을 현재 블록의 최종 L1 시간적 움직임 정보(L1 움직임 벡터)로 사용할 수 있다. 일례로, 제1 콜 블록의 움직임 정보 값이 1/4 픽셀 단위의 값인 경우, 부호화기 및 복호화기는 쉬프트 연산 등을 기반으로 상기 제1 콜 블록의 움직임 정보 값을 1/2 픽셀 단위의 값으로 변경할 수 있고, 상기 변경된 값을 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 다른 예로, 제1 콜 블록의 움직임 정보 값이 1/2 픽셀 단위의 값인 경우, 부호화기 및 복호화기는 쉬프트 연산 등을 기반으로 상기 제1 콜 블록의 움직임 정보 값을 정수 픽셀 단위의 값으로 변경할 수 있고, 상기 변경된 값을 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다.
제1 콜 블록의 움직임 정보(예를 들어, 움직임 벡터)를 기반으로 현재 블록의 L1 입력 시간적 움직임 정보(예를 들어, L1 입력 움직임 벡터)를 재설정하는 방법은 상술한 실시예에 한정되지 않으며, 구현 및/또는 필요에 따라 다양한 형태로 적용될 수 있다. 또한, 상술한 실시예에 따른 방법들은 도 9의 S940 단계에서와 같이 제2 콜 블록의 움직임 정보를 기반으로 L1 입력 시간적 움직임 정보를 재설정하는 경우에도 동일하거나 유사한 방식으로 적용될 수 있다.
한편, 상술한 실시예에서 S910 단계로 입력되는 입력 시간적 움직임 정보는 입력 움직임 벡터뿐만 아니라 입력 참조 픽쳐 인덱스도 포함할 수 있다. 여기서, L0 입력 움직임 벡터 및 L1 입력 움직임 벡터는 상술한 바와 같이 제1 콜 블록을 기반으로 시간적으로 도출된 움직임 벡터일 수 있고, L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는 복원된 주변 블록으로부터 공간적으로 도출된 참조 픽쳐 인덱스일 수 있다. 이 때, L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는, 복원된 주변 블록의 참조 픽쳐 인덱스 중에서 음수가 아닌 가장 작은 값으로 설정될 수 있다. 한편, 다른 예로 L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는 복원된 주변 블록의 움직임 정보에 관계 없이 0으로 설정될 수도 있다.
L1 입력 움직임 벡터가 제2 콜 블록을 기반으로 재설정되는 경우, L1 입력 참조 픽쳐 인덱스에 대해서도 재설정 과정이 수행될 수 있다. 이하, L1 입력 참조 픽쳐 인덱스에 대한 재설정 과정의 실시예들이 서술된다.
일 실시예로, 부호화기 및 복호화기는 제2 콜 블록을 기반으로 L1 입력 참조 픽쳐 인덱스를 재설정할 수 있다. 상술한 바와 같이, 부호화기 및 복호화기는 제2 콜 블록의 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스를 상기 제2 콜 블록의 참조 픽쳐 인덱스로 재설정함으로써 최종 L1 참조 픽쳐 인덱스를 도출할 수 있다. 다른 실시예로, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스 값을 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정함으로써 최종 L1 참조 픽쳐 인덱스를 도출할 수도 있다.
또 다른 실시예로, L0 입력 시간적 움직임 정보(예를 들어, L0 입력 움직임 벡터, L0 입력 참조 픽쳐 인덱스 등) 와 L1 입력 시간적 움직임 정보(예를 들어, L1 입력 움직임 벡터, L1 입력 참조 픽쳐 인덱스 등)가 동일한 경우, 부호화기 및 복호화기는 L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스를 모두 0의 값으로 재설정하여 최종 시간적 움직임 정보로 사용할 수도 있다. 이는, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, L0 참조 픽쳐 인덱스 및 L1 참조 픽쳐 인덱스가 모두 0일 확률이 높기 때문이다.
또 다른 실시예로, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스 값을 L0 입력 참조 픽쳐 인덱스 값과 동일한 값으로 재설정할 수 있다. 반면, 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스 값을 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스 값으로 재설정할 수도 있다. 복원된 주변 블록이 갖는 참조 픽쳐 인덱스 중에는 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스가 존재할 수 있다. 이 때, 예를 들어 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스의 재설정을 위해, 상기 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스 중에서 가장 자주 사용된 참조 픽쳐 인덱스를 사용할 수 있다. 다른 예로, 이 때 부호화기 및 복호화기는 L1 입력 참조 픽쳐 인덱스의 재설정을 위해, 상기 L0 입력 참조 픽쳐 인덱스와 동일하지 않은 참조 픽쳐 인덱스 중에서 음수가 아닌 가장 작은 값을 갖는 참조 픽쳐 인덱스를 사용할 수도 있다.
한편, 상술한 바와 같이 부호화기 및 복호화기는 L1 입력 움직임 벡터 값을 제2 콜 블록의 움직임 벡터와 동일한 값으로 재설정함으로써 최종 L1 시간적 움직임 벡터를 도출할 수 있다. 이 때, 상기 제2 콜 블록의 움직임 벡터는 L1 입력 참조 픽쳐 인덱스 및/또는 재설정된 L1 참조 픽쳐 인덱스에 따라 스케일링되어 사용될 수도 있다. L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 참조 픽쳐 인덱스로 사용될 수도 있고, 상술한 실시예에서와 같이 재설정 과정을 거쳐 최종 L1 참조 픽쳐 인덱스로 사용될 수도 있다. 이 때, 제2 콜 블록의 움직임 벡터에 대응하는 참조 픽쳐, 및 최종 L1 참조 픽쳐 인덱스가 지시하는 참조 픽쳐는 서로 다를 수 있다. 이 경우, 부호화기 및 복호화기는 제2 콜 블록의 움직임 벡터에 대한 스케일링을 수행하고 상기 스케일링된 움직임 벡터를 현재 블록의 최종 L1 시간적 움직임 벡터로 사용할 수 있다.
상술한 실시예들은 움직임 벡터의 재설정 과정 및 참조 픽쳐 인덱스(예를 들어, RefIdxLX, X=0,1)의 재설정 과정에 따라 다양한 방법으로 조합되어 적용될 수 있다. 이하, 후술되는 실시예들에서 L1 입력 움직임 벡터는 제2 콜 블록을 기반으로 재설정된다고 가정한다. 즉, 부호화기 및 복호화기는 L1 입력 움직임 벡터를 제2 콜 블록의 움직임 벡터 중에서 하나의 값으로 재설정한다고 가정한다.
일 실시예로, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보 도출에 사용된 제1 콜 픽쳐를 그대로 제2 콜 픽쳐로 사용할 수 있고, 제2 콜 블록은 상기 제2 콜 픽쳐에서 도출될 수 있다. 이 때, 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 상기 제2 콜 블록의 움직임 벡터를 스케일링하여 사용할 수 있다. 이 경우, 상기 스케일링된 움직임 벡터가 최종 L1 시간적 움직임 정보로 사용될 수 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 L1 입력 참조 픽쳐 인덱스를 그대로 할당할 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 소정의 고정된 참조 픽쳐 인덱스 값을 할당할 수 있으며, 상기 소정의 고정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다.
다른 실시예로, 부호화기 및 복호화기는 상술한 실시예에서와 같이 L0 입력 시간적 움직임 정보 도출에 사용된 제1 콜 픽쳐를 그대로 제2 콜 픽쳐로 사용할 수 있고, 제2 콜 블록은 상기 제2 콜 픽쳐에서 도출될 수 있다. 이 때, 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 제2 콜 블록의 움직임 벡터 중에서 L0 입력 움직임 벡터와 동일하지 않으면서 L0 입력 움직임 벡터와의 차이가 소정의 임계값 이하인 움직임 벡터를 도출할 수 있다. 부호화기 및 복호화기는 상기 도출된 움직임 벡터에 대한 스케일링을 수행할 수 있으며, 스케일링된 움직임 벡터는 최종 L1 시간적 움직임 정보로 사용될 수 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 L1 입력 참조 픽쳐 인덱스를 그대로 할당할 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 소정의 고정된 참조 픽쳐 인덱스 값을 할당할 수 있으며, 상기 소정의 고정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다.
또 다른 실시예로, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보 도출에 사용된 제1 콜 픽쳐와 동일하지 않은 참조 픽쳐를 제2 콜 픽쳐로 사용할 수도 있다. 여기서, 상기 제2 콜 픽쳐는 일례로 제1 콜 픽쳐와 동일하지 않은 L1 참조 픽쳐 리스트 내의 참조 픽쳐 중에서 가장 최근에 복호화된 참조 픽쳐일 수 있다. 다른 예로, 부호화기 및 복호화기는 복원된 주변 블록의 참조 픽쳐 번호를 기반으로 가장 사용 빈도가 높은 참조 픽쳐를 제2 콜 픽쳐로 선택할 수도 있다. 제2 콜 블록은 상기 제2 콜 픽쳐에서 도출될 수 있으며, 이 때 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 상기 제2 콜 블록의 움직임 벡터를 스케일링하여 사용할 수 있다. 이 경우, 상기 스케일링된 움직임 벡터가 최종 L1 시간적 움직임 정보로 사용될 수 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 L1 입력 참조 픽쳐 인덱스를 그대로 할당할 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 소정의 고정된 참조 픽쳐 인덱스 값을 할당할 수 있으며, 상기 소정의 고정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다.
또 다른 실시예로, 부호화기 및 복호화기는 상술한 실시예에서와 같이 L0 입력 시간적 움직임 정보 도출에 사용된 제1 콜 픽쳐와 동일하지 않은 참조 픽쳐를 제2 콜 픽쳐로 사용할 수 있으며, 제2 콜 블록은 상기 제2 콜 픽쳐에서 도출될 수 있다. 여기서, 상기 제2 콜 픽쳐는 일례로 제1 콜 픽쳐와 동일하지 않은 L1 참조 픽쳐 리스트 내의 참조 픽쳐 중에서 가장 최근에 복호화된 참조 픽쳐일 수 있다. 다른 예로, 부호화기 및 복호화기는 복원된 주변 블록의 참조 픽쳐 번호를 기반으로 가장 사용 빈도가 높은 참조 픽쳐를 제2 콜 픽쳐로 선택할 수도 있다. 이 때, 부호화기 및 복호화기는 L1 입력 움직임 벡터의 재설정을 위해, 제2 콜 블록의 움직임 벡터 중에서 L0 입력 움직임 벡터와 동일하지 않으면서 L0 입력 움직임 벡터와의 차이가 소정의 임계값 이하인 움직임 벡터를 도출할 수 있다. 부호화기 및 복호화기는 상기 도출된 움직임 벡터에 대한 스케일링을 수행할 수 있으며, 스케일링된 움직임 벡터는 최종 L1 시간적 움직임 정보로 사용될 수 있다. 이 때, 일례로 L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 시간적 움직임 정보로 사용될 수 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 L1 입력 참조 픽쳐 인덱스를 그대로 할당할 수 있다. 또 다른 예로, L1 입력 참조 픽쳐 인덱스 값은 소정의 고정된 참조 픽쳐 인덱스 값으로 재설정될 수도 있다. 즉, 부호화기 및 복호화기는 현재 블록의 L1 시간적 움직임 정보에 소정의 고정된 참조 픽쳐 인덱스 값을 할당할 수 있으며, 상기 소정의 고정된 참조 픽쳐 인덱스가 최종 L1 시간적 움직임 정보로 사용될 수 있다.
움직임 벡터의 재설정 과정 및 참조 픽쳐 인덱스의 재설정 과정의 실시예들의 조합은 상술한 실시예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 상술한 실시예들 뿐만 아니라 다양한 형태의 조합이 제공될 수 있다.
한편, 재설정된 L1 시간적 움직임 정보는 현재 블록의 L0 시간적 움직임 정보와 동일할 수 있다. 따라서, 재설정된 L1 시간적 움직임 정보가 현재 블록의 L0 시간적 움직임 정보와 동일한 경우, 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수도 있다. 이 때, 부호화기 및 복호화기는 L0 시간적 움직임 정보만을 현재 블록의 시간적 움직임 정보로 사용할 수 있다. 이러한 방법은 상술한 실시예들과 결합된 조합으로서 본 발명에 적용될 수도 있다.
도 10은 L1 시간적 움직임 정보의 재설정을 위해 사용되는 제2 콜 블록의 실시예를 개략적으로 나타내는 도면이다.
부호화기 및 복호화기는 제2 콜 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 동일 위치 블록을 기준으로 제2 콜 블록을 결정할 수 있다. 도 10에서 블록 1010은 현재 블록을 나타내고, 블록 1020은 제2 콜 픽쳐 내의 동일 위치 블록을 나타낸다. 여기서, 상기 제2 콜 픽쳐는 다양한 방식으로 결정될 수 있다.
일 실시예로, 부호화기 및 복호화기는 L0 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 일례로, 부호화기 및 복호화기는 L0 참조 픽쳐 리스트 내의 첫 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 다른 예로, 부호화기 및 복호화기는 L0 참조 픽쳐 리스트 내의 두 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 L0 참조 픽쳐 리스트 내의 세 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 L0 참조 픽쳐 리스트 내의 네 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수도 있다.
다른 실시예로, 부호화기 및 복호화기는 L1 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 일례로, 부호화기 및 복호화기는 L1 참조 픽쳐 리스트 내의 첫 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 다른 예로, 부호화기 및 복호화기는 L1 참조 픽쳐 리스트 내의 두 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 L1 참조 픽쳐 리스트 내의 세 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수 있다. 또 다른 예로, 부호화기 및 복호화기는 L1 참조 픽쳐 리스트 내의 네 번째 참조 픽쳐를 제2 콜 픽쳐로 결정할 수도 있다.
또 다른 실시예로, 부호화기 및/또는 복호화기는 L0 참조 픽쳐 리스트 및 L1 참조 픽쳐 리스트 내의 모든 참조 픽쳐(및/또는 소정의 조건에 따라 결정된 일부 참조 픽쳐) 중에서 가장 높은 부호화 효율을 제공하는 참조 픽쳐를 제2 콜 픽쳐로 사용할 수 있다. 여기서, 부호화 효율은 각 참조 픽쳐 내에서 제2 콜 블록에 대응되는 위치에 존재하는 블록의 움직임 정보를 기반으로 결정될 수 있다. 이 때, 부호화기는 부호화 효율에 기반하여 제2 콜 픽쳐를 도출할 수 있고, 상기 제2 콜 픽쳐를 지시하는 제2 콜 픽쳐 정보를 복호화기로 전송할 수 있다. 복호화기는 상기 전송된 제2 콜 픽쳐 정보를 기반으로 제2 콜 픽쳐를 결정할 수 있다.
상술한 실시예들에서, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보 도출에 사용된 제1 콜 픽쳐와 동일하지 않은 참조 픽쳐만을 제2 콜 픽쳐로 결정할 수도 있다. 이러한 경우에는 제1 콜 픽쳐와 동일하지 않은 참조 픽쳐만이 현재 블록의 최종 L1 시간적 움직임 정보 도출에 사용될 수 있다.
제2 콜 픽쳐 결정 방법은 상술한 실시예에 한정되는 것은 아니며, 제2 콜 픽쳐는 구현 및/또는 필요에 따라 다른 방식으로 결정될 수도 있다.
한편, 도 10의 실시예에서, 동일 위치 블록(1020) 내부의 센터에 위치한 블록은 블록 D, 동위 위치 블록(1020) 내부의 좌측 상단 코너에 위치한 블록은 블록 S, 동일 위치 블록(1020) 내부의 좌측 하단 코너에 위치한 블록은 블록 Q, 동일 위치 블록(1020) 내부의 우측 상단 코너에 위치한 블록은 블록 R, 동일 위치 블록(1020) 내부의 우측 하단 코너에 위치한 블록은 블록 C라 한다. 또한, 동일 위치 블록(1020)의 좌측에 인접한 블록 중에서 가장 상단에 위치한 블록은 블록 F, 동일 위치 블록(1020)의 좌측에 인접한 블록 중에서 가장 하단에 위치한 블록은 블록 J, 동일 위치 블록(1020)의 상단에 인접한 블록 중에서 가장 좌측에 위치한 블록은 블록 G, 동일 위치 블록(1020)의 상단에 인접한 블록 중에서 가장 우측에 위치한 블록은 블록 M, 동일 위치 블록(1020)의 우측에 인접한 블록 중에서 가장 상단에 위치한 블록은 블록 N, 동일 위치 블록(1020)의 우측에 인접한 블록 중에서 가장 하단에 위치한 블록은 블록 B, 동일 위치 블록(1020)의 하단에 인접한 블록 중에서 가장 좌측에 위치한 블록은 블록 K, 동일 위치 블록(1020)의 하단에 인접한 블록 중에서 가장 우측에 위치한 블록은 블록 A라 한다. 또한, 동일 위치 블록(1020) 외부의 좌측 상단 코너에 위치한 블록은 블록 E, 동일 위치 블록(1020) 외부의 좌측 하단 코너에 위치한 블록은 블록 I, 동일 위치 블록(1020) 외부의 우측 상단 코너에 위치한 블록은 블록 L, 동일 위치 블록(1020) 외부의 우측 하단 코너에 위치한 블록은 블록 H라 한다. 또한, 블록 B의 우측에 인접하여 위치한 블록은 블록 P, 블록 A의 하단에 인접하여 위치한 블록은 블록 O라 한다.
도 9의 실시예에서 상술한 바와 같이, 부호화기 및 복호화기는 소정의 조건에 따라 제2 콜 블록의 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 즉, 부호화기 및 복호화기는 L1 입력 시간적 움직임 정보 값을 제2 콜 블록의 움직임 정보 값으로 재설정할 수 있다. 이 때, 상기 제2 콜 블록 및/또는 최종 L1 시간적 움직임 정보로 사용되는 움직임 다양한 방법으로 도출될 수 있다.
일 실시예로, 부호화기 및 복호화기는 동일 위치 블록의 내부 및/또는 외부에 위치한 블록 중에서 동일 위치 블록을 기준으로 소정의 위치에 존재하는 한 개의 블록으로부터 최종 L1 시간적 움직임 정보로 사용되는 움직임 정보를 도출할 수 있다. 이 때, 상기 소정의 위치에 존재하는 한 개의 블록은 제2 콜 블록에 해당될 수 있다. 여기서, 상기 소정의 위치의 블록은 블록 A, 블록 B, 블록C, 블록D, 블록E, 블록F, 블록G, 블록H, 블록I, 블록J, 블록K, 블록L, 블록M, 블록N, 블록O, 블록P, 블록Q, 블록R 또는 블록S 일 수 있다.
다른 실시예로, 부호화기 및 복호화기는 동일 위치 블록의 내부 및/또는 외부에 위치한 블록 중에서 소정의 위치에 존재하는 복수 개의 블록을 소정의 순서로 스캔할 수 있다. 이 때, 부호화기 및 복호화기는 스캔 순서상 움직임 정보가 존재하는 첫 번째 블록의 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 여기서, 상기 움직임 정보가 존재하는 첫 번째 블록은 제2 콜 블록에 해당될 수 있다. 스캔 대상 블록 및 스캔 순서는 다양한 형태로 정해질 수 있다. 일례로, 부호화기 및 복호화기는 블록 H, 블록 D, 블록 A, 블록 B, 블록 C, 블록 I, 블록 J, 블록 F, 블록 G 및 블록 E 순으로 블록을 스캔할 수 있다.
또 다른 실시예로, 부호화기 및 복호화기는 동일 위치 블록의 내부 및/또는 외부에 위치한 블록 중에서 소정의 위치에 존재하는 복수 개의 블록의 움직임 정보에 대해 중간 값을 도출할 수 있고, 상기 도출된 중간 값을 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 예를 들어, 상기 복수 개의 블록은 블록 H, 블록 D, 블록 A, 블록 B, 블록 C, 블록 I, 블록 J, 블록 F, 블록 G 및 블록 E 일 수 있다.
제2 콜 블록으로부터 현재 블록의 L1 시간적 움직임 정보를 도출하는 방법은 상술한 실시예에 한정되는 것이 아니며, 현재 블록의 L1 시간적 움직임 정보는 구현 및/또는 필요에 따라 다양한 방법으로 도출될 수 있다.
도 11은 도 9의 실시예에 따른 시간적 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다. 도 11의 실시예에 따른 인터 예측 장치는 시간적 움직임 정보 판단부(1110), 제2 콜 블록 움직임 정보 판단부(1120), 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(1130) 및 L1 시간적 움직임 정보 재설정부(1140)를 포함할 수 있다.
도 11을 참조하면, 시간적 움직임 정보 판단부(1110)는 입력 시간적 움직임 정보에서 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한지 여부, 즉 L0 입력 참조 픽쳐 번호와 L1 입력 참조 픽쳐 번호가 동일하고 L0 입력 움직임 벡터와 L1 입력 움직임 벡터가 동일한지 여부를 판단할 수 있다.
L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일하지 않은 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있다. AMVP가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 예측 움직임 벡터 후보로 결정되거나 등록될 수 있다. 또한, 머지가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 머지 후보로 결정되거나 등록될 수 있다. L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우에는 제2 콜 블록 움직임 정보 판단부(1120)에 의한 판단 과정이 수행될 수 있다.
한편, 도 9에서 상술한 바와 같이 시간적 움직임 정보 판단부(1110)는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보의 동일성 여부가 아닌, L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호의 동일성 여부 또는 제1 콜 블록의 예측 방향을 판단할 수도 있다. 예를 들어, L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호가 동일하지 않은 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있고, L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호가 동일한 경우 제2 콜 블록 움직임 정보 판단부(1120)에 의한 판단 과정이 수행될 수 있다. 다른 예로, 제1 콜 블록의 예측 방향이 양방향 예측인 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있고, 제1 콜 블록의 예측 방향이 단방향 예측인 경우 제2 콜 블록 움직임 정보 판단부(1120)에 의한 판단 과정이 수행될 수도 있다.
제2 콜 블록 움직임 정보 판단부(1120)는 제2 콜 블록의 움직임 정보가 존재하는지 여부를 판단할 수 있다. 제2 콜 블록의 움직임 정보가 존재하지 않는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 제2 콜 블록 중에서 움직임 정보를 갖는 블록이 존재하지 않는 경우), 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(1130)에 의한 예측 방향 정보 재설정 및 L0 움직임 정보 설정 과정이 수행될 수 있다. 또한, 제2 콜 블록의 움직임 정보가 존재하는 경우(예를 들어, 소정의 위치 및/또는 소정의 방법으로 선택된 위치의 제2 콜 블록 중에서 움직임 정보를 갖는 블록이 존재하는 경우), L1 시간적 움직임 정보 재설정부(1140)에 의한 재설정 과정이 수행될 수 있다.
제2 콜 블록의 움직임 정보가 존재하지 않는 경우, 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(1130)는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다. 또한 이 때, 예측 방향 정보 재설정 및 L0 움직임 정보 설정부(1130)는 입력 시간적 움직임 정보 중에서 L0 입력 시간적 움직임 정보만을 현재 블록의 최종 시간적 움직임 정보로 설정할 수 있다.
제2 콜 블록의 움직임 정보가 존재하는 경우, L1 시간적 움직임 정보 재설정부(1140)는 현재 블록의 L1 입력 시간적 움직임 정보를 제2 콜 블록의 움직임 정보로 재설정할 수 있다. 즉, 인터 예측 장치는 제2 콜 블록의 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 제2 콜 블록의 움직임 정보가 영 벡터(0,0)를 포함하는 경우, L1 시간적 움직임 정보 재설정부(1140)는 제2 콜 블록의 주변에 위치한 블록의 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수도 있다. 상술한 각각의 방법에 대한 구체적인 실시예는 도 6 및 도 7에서 상술한 바 있으므로, 여기서는 생략하기로 한다.
도 12는 본 발명에 따른 현재 블록의 움직임 정보 도출 방법의 실시예를 개략적으로 나타내는 도면이다.
상술한 바와 같이, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 및/또는 콜 블록의 움직임 정보를 기반으로 현재 블록의 움직임 정보를 도출할 수 있다. 여기서, 복원된 주변 블록은 복원된 주변 블록은 이미 부호화 및/또는 복호화되어 복원된 현재 픽쳐 내의 블록으로서, 현재 블록에 인접한 블록 및/또는 현재 블록의 외부 코너에 위치한 블록을 포함할 수 있다. 또한, 콜 블록은 콜 픽쳐 내에서 현재 블록에 대응되는 블록을 의미할 수 있으며, 상기 콜 픽쳐는 일례로 참조 픽쳐 리스트 내의 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다. 이 때, 복원된 주변 블록으로부터 도출되는 움직임 정보는 공간적 움직임 정보, 콜 블록을 기반으로 도출되는 움직임 정보는 시간적 움직임 정보로 불릴 수 있다. 여기서, 공간적 움직임 정보 및 시간적 움직임 정보는 각각 정보는 예측 방향 정보, L0 참조 픽쳐 번호, L1 참조 픽쳐 번호, L0 움직임 벡터 및 L1 움직임 벡터 등을 포함할 수 있다.
한편, 영상 복호화 과정에서는 네트워크의 트래픽 과다로 인해, 현재 픽쳐(및/또는 복호화 대상 픽쳐)의 이전 픽쳐들 중에서 복호화되지 않은 픽쳐가 존재할 수 있다. 이 경우, 현재 픽쳐 내의 블록에 대한 시간적 움직임 정보를 도출 과정에서 잘못된 콜 블록이 사용될 수 있고, 정확한 시간적 움직임 정보가 도출되지 않을 수 있으므로 현재 픽쳐가 제대로 복호화되지 않을 수 있다. 따라서, 상기 문제점을 해결하기 위해, 부호화기 및 복호화기는 현재 블록의 움직임 정보를 도출함에 있어, L0 움직임 정보 및 L1 움직임 정보 중에서 하나는 복원된 주변 블록을 기반으로 공간적으로 도출하고 다른 하나는 콜 블록을 기반으로 시간적으로 도출할 수 있다. 즉, 부호화기 및 복호화기는 L0 움직임 정보 및 L1 움직임 정보를 각각 독립적으로 설정할 수 있다. 이 경우, 복호화되지 않은 이전 픽쳐가 존재하는 경우에도 부호화기 및 복호화기는 현재 픽쳐가 어느 정도 복원되도록 할 수 있다.
도 12를 참조하면, 부호화기 및 복호화기는 L0 움직임 정보를 설정할 수 있다(1210). 이 때, 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 공간적으로 도출된 움직임 정보(공간적 움직임 정보)를 L0 움직임 정보로 사용하거나, 또는 콜 블록을 기반으로 시간적으로 도출된 움직임 정보(시간적 움직임 정보)를 L0 움직임 정보로 사용할 수 있다. 즉, 상기 L0 움직임 정보는 복원된 주변 블록을 기반으로 공간적으로 도출되거나, 또는 콜 블록을 기반으로 시간적으로 도출될 수 있다.
다시 도 12를 참조하면, 부호화기 및 복호화기는 L1 움직임 정보를 설정할 수 있다(1220). 이 때, 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 공간적으로 도출된 움직임 정보(공간적 움직임 정보)를 L1 움직임 정보로 사용하거나, 또는 콜 블록을 기반으로 시간적으로 도출된 움직임 정보(시간적 움직임 정보)를 L1 움직임 정보로 사용할 수 있다. 즉, 상기 L1 움직임 정보는 복원된 주변 블록을 기반으로 공간적으로 도출되거나, 또는 콜 블록을 기반으로 시간적으로 도출될 수 있다.
일 실시예로, L0 움직임 정보가 콜 블록을 기반으로 시간적으로 도출된 움직임 정보인 경우, 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 도출된 공간적 움직임 정보를 L1 움직임 정보로 사용할 수 있다. 다른 실시예로, L0 움직임 정보가 복원된 주변 블록을 기반으로 공간적으로 도출된 움직임 정보인 경우, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 시간적 움직임 정보를 L1 움직임 정보로 사용할 수 있다.
한편, 상술한 실시예에서, 부호화기 및 복호화기는 L0 움직임 정보를 기반으로 L1 움직임 정보를 도출할 수도 있다. 일례로, L0 움직임 정보는 콜 블록을 기반으로 도출된 움직임 정보라 가정한다. 이 경우, 상술한 바와 같이 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 공간적으로 도출된 공간적 움직임 정보를 L1 움직임 정보로 사용할 수 있다. 이 때, 일례로 부호화기 및 복호화기는 L0 움직임 정보와 동일하거나 유사한 움직임 정보만을, L1 움직임 정보로 사용될 공간적 움직임 정보로서 도출할 수 있다. 다른 예로 부호화기 및 복호화기는 L0 움직임 정보와 동일하지 않은 움직임 정보만을, L1 움직임 정보로 사용될 공간적 움직임 정보로서 도출할 수도 있다. 이 때, 부호화기 및 복호화기는 L0 움직임 정보와의 차이가 소정의 임계값 이하인 움직임 정보만을 L1 움직임 정보로 사용될 공간적 움직임 저보로서 도출할 수도 있다. 여기서, 상기 소정의 임계값은 현재 블록의 모드 정보, 현재 블록의 움직임 정보, 주변 블록의 모드 정보 및/또는 주변 블록의 움직임 정보 등을 기반으로 정해질 수 있으며, 다양한 방식으로 결정될 수 있다.
L0 움직임 정보 및 L1 움직임 정보를 설정하는 방법은 상술한 실시예에 한정되지 않으며, 구현 및/또는 필요에 따라 달라질 수 있다.
한편, L0 움직임 정보 및/또는 L1 움직임 정보가 복원된 주변 블록의 움직임 정보를 기반으로 공간적으로 도출되는 경우, 복원된 주변 블록의 움직임 정보는 공간적으로 도출된 공간적 움직임 정보 및 시간적으로 도출된 시간적 움직임 정보를 모두 포함할 수도 있다. 이 때, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 중에서 공간적으로 도출된 공간적 움직임 정보만을 이용하여 현재 블록의 L0 움직임 정보 및/또는 현재 블록의 L1 움직임 정보를 도출할 수 있다.
다시 도 12를 참조하면, 부호화기 및 복호화기는 L0 움직임 정보 및 L1 움직임 정보를 통합함으로써, 현재 블록의 움직임 정보를 도출할 수 있다(1230).
한편, 상기 도출된 현재 블록의 움직임 정보에서 L0 움직임 정보 및 L1 움직임 정보는 서로 동일할 수도 있다. 따라서, 상기 L0 움직임 정보와 상기 L1 움직임 정보가 동일한 경우, 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수 있다. 이 때, 부호화기 및 복호화기는 L0 움직임 정보만을 현재 블록의 움직임 정보로 사용할 수 있다.
도 13은 도 12의 실시예에 따른 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다. 도 13의 실시예에 따른 인터 예측 장치는 L0 움직임 정보 설정부(1310), L1 움직임 정보 설정부(1320) 및 움직임 정보 통합부(1330)를 포함할 수 있다.
도 12의 실시예에서 상술한 바와 같이, 부호화기 및 복호화기는 L0 움직임 정보 및 L1 움직임 정보를 각각 독립적으로 설정할 수 있다. 이 때, 부호화기 및 복호화기는 L0 움직임 정보 및 L1 움직임 정보 중에서 하나는 복원된 주변 블록을 기반으로 공간적으로 도출하고 다른 하나는 콜 블록을 기반으로 시간적으로 도출할 수 있다.
도 13을 참조하면, L0 움직임 정보 설정부(1310)는 L0 움직임 정보를 설정할 수 있다. 이 때, 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 공간적으로 도출된 움직임 정보(공간적 움직임 정보)를 L0 움직임 정보로 사용하거나, 또는 콜 블록을 기반으로 시간적으로 도출된 움직임 정보(시간적 움직임 정보)를 L0 움직임 정보로 사용할 수 있다. 즉, 상기 L0 움직임 정보는 복원된 주변 블록을 기반으로 공간적으로 도출되거나, 또는 콜 블록을 기반으로 시간적으로 도출될 수 있다.
다시 도 13을 참조하면, L1 움직임 정보 설정부(1320)는 L1 움직임 정보를 설정할 수 있다. 이 때, 부호화기 및 복호화기는 복원된 주변 블록을 기반으로 공간적으로 도출된 움직임 정보(공간적 움직임 정보)를 L1 움직임 정보로 사용하거나, 또는 콜 블록을 기반으로 시간적으로 도출된 움직임 정보(시간적 움직임 정보)를 L1 움직임 정보로 사용할 수 있다. 즉, 상기 L1 움직임 정보는 복원된 주변 블록을 기반으로 공간적으로 도출되거나, 또는 콜 블록을 기반으로 시간적으로 도출될 수 있다.
L0 움직임 정보 및 L1 움직임 정보를 설정하는 방법의 구체적인 실시예는 도 12에서 상술한 바 있으므로, 여기서는 생략하기로 한다.
다시 도 13을 참조하면, 움직임 정보 통합부(1330)는 L0 움직임 정보 설정부(1310)에서 설정된 L0 움직임 정보 및 L1 움직임 정보 설정부(1320)에서 설정된 L1 움직임 정보를 통합함으로써, 현재 블록의 움직임 정보를 도출할 수 있다.
도 14는 본 발명에 따른 현재 블록의 시간적 움직임 정보 도출 방법의 또 다른 실시예를 개략적으로 나타내는 흐름도이다.
후술되는 실시예들은 시간적 움직임 정보를 중심으로 서술되지만 본 발명은 이에 한정되는 것은 아니다. 예를 들어, 도 14의 실시예에 따른 방법들은 머지 모드 및/또는 AMVP 모드에서의 시간적 움직임 정보뿐만 아니라, 머지 모드에서 머지 후보 리스트를 기반으로 도출된 현재 블록의 움직임 정보 및/또는 AMVP 모드에서 예측 움직임 벡터 후보 리스트를 기반으로 도출된 현재 블록의 움직임 정보에도 동일하거나 유사한 방식으로 적용될 수 있다.
상술한 바와 같이, 시간적 움직임 정보는 이미 복원된 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 움직임 정보를 기반으로 도출될 수 있다. 여기서, 상기 콜 픽쳐는 일례로 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다. 부호화기 및 복호화기는, 콜 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 블록을 기준으로 소정의 상대적인 위치를 결정할 수 있고, 상기 결정된 소정의 상대적인 위치(예를 들어, 상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록의 내부 및/또는 외부의 위치)를 기반으로 상기 콜 블록을 도출할 수 있다. 콜 블록을 기반으로 도출되는 시간적 움직임 정보는 예측 방향 정보, L0 참조 픽쳐 번호, L1 참조 픽쳐 번호, L0 움직임 벡터 및 L1 움직임 벡터 등을 포함할 수 있다.
도 14를 참조하면, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 시간적 움직임 정보에서 L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일한지 여부, 즉 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하고 L0 움직임 벡터와 L1 움직임 벡터가 동일한지 여부를 판단할 수 있다(S1410).
이하, 후술되는 도 14 내지 도 15의 실시예에 한하여, 설명의 편의상 시간적 움직임 정보 재설정 전 S1410 단계로 입력되는 시간적 움직임 정보는 입력 시간적 움직임 정보(L0 입력 시간적 움직임 정보, L1 입력 시간적 움직임 정보)라 한다. 이 때, 상기 입력 시간적 움직임 정보는 콜 블록을 기반으로 도출된 시간적 움직임 정보에 해당될 수 있다. 또한 입력 시간적 움직임 정보에 포함된 움직임 벡터는 입력 움직임 벡터(L0 입력 움직임 벡터, L1 입력 움직임 벡터), 입력 시간적 움직임 정보에 포함된 참조 픽쳐 인덱스는 입력 참조 픽쳐 인덱스(L0 입력 참조 픽쳐 인덱스, L1 입력 참조 픽쳐 인덱스), 입력 시간적 움직임 정보에 포함된 참조 픽쳐 번호는 입력 참조 픽쳐 번호(L0 입력 참조 픽쳐 번호, L1 입력 참조 픽쳐 번호)라 한다. 또한, 후술되는 실시예에서 L0 입력 참조 픽쳐 번호가 지시하는 참조 픽쳐는 L0 참조 픽쳐, L1 입력 참조 픽쳐 번호가 지시하는 참조 픽쳐는 L1 참조 픽쳐라 한다.
L0 시간적 움직임 정보와 L1 시간적 움직임 정보가 동일하지 않은 경우, 즉 L0 참조 픽쳐 번호와 L1 참조 픽쳐 번호가 동일하지 않거나 및/또는 L0 움직임 벡터와 L1 입력 움직임 벡터가 동일하지 않은 경우, 부호화기 및 복호화기는 콜 블록을 기반으로 도출된 입력 시간적 움직임 정보를 그대로 현재 블록의 최종 시간적 움직임 정보로 사용할 수 있다. AMVP가 적용되는 경우, 상기 최종 시간적 움직임 정보는 현재 블록의 예측 움직임 벡터 후보로 결정되거나 등록될 수 있다. 또한, 머지가 적용되는 경우, 상기 최종 시간적 움직임 정보는 현재 블록의 머지 후보로 결정되거나 등록될 수 있다.
L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 부호화기 및 복호화기는 L1 참조 픽쳐에서 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색하거나 도출할 수 있다(S1420). 여기서, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 서로 동일하므로, L1 참조 픽쳐는 L0 참조 픽쳐와 동일한 픽쳐에 해당될 수 있다. 따라서, 후술되는 실시예에서 L1 참조 픽쳐는 L0 참조 픽쳐와 동일한 픽쳐를 의미할 수 있다.
일례로 부호화기 및 복호화기는 동일한 방법으로 L1 참조 픽쳐에서 움직임 정보를 탐색하여 도출할 수 있다. 이 때, 부호화기는 L1 참조 픽쳐에서 도출된 움직임 정보를 복호화기로 전송하지 않을 수 있다. 다른 예로 부호화기는 소정의 방법에 의해 L1 참조 픽쳐에서 움직임 정보를 도출한 후, 도출된 움직임 정보를 비트스트림에 포함시켜 복호화기로 전송할 수 있다. 이 때, 복호화기는 전송된 움직임 정보를 기반으로 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 결정할 수 있다. 부호화기에서 도출된 움직임 정보는 참조 픽쳐 인덱스 및 움직임 벡터 등을 포함할 수 있고, 부호화기는 상기 참조 픽쳐 인덱스와 움직임 벡터를 각각 독립적으로 복호화기로 전송할 수 있다. 이 때, 부호화기는 현재 블록의 실제 움직임 벡터 및 L1 참조 픽쳐로부터 도출된 움직임 벡터의 차분 값을 구한 후, 그 차분 값을 복호화기로 전송할 수도 있다.
다시 도 14를 참조하면, 부호화기 및 복호화기는 L1 참조 픽쳐에서 도출된 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다(S1430). 즉, 이 때 부호화기 및 복호화기는 L1 입력 시간적 움직임 정보 값을 L1 참조 픽쳐에서 도출된 움직임 정보의 값으로 재설정할 수 있다.
이하, L1 참조 픽쳐에서 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 도출하는 방법의 실시예들이 서술된다.
일 실시예로, 부호화기 및 복호화기는 L1 참조 픽쳐 내에서, L0 입력 시간적 움직임 정보(움직임 벡터)가 지시하는 위치를 중심으로, 소정의 범위 내에 존재하는 위치를 지시하는 움직임 정보를 최종 L1 시간적 움직임 정보(L1 움직임 벡터)로 사용할 수 있다. 구체적으로, 상기 소정의 범위는 L1 참조 픽쳐 내에서 L0 입력 시간적 움직임 정보가 지시하는 위치를 중심으로, 수직 및/또는 수평 방향으로 +T 및/또는 -T 거리 이내의 위치를 포함하는 범위에 해당될 수 있다. 여기서, 일례로 T는 1/4 픽셀 단위의 거리를 나타내는 값일 수 있고, 다른 예로 T는 1/2 픽셀 단위의 거리를 나타내는 값일 수 있다. 또 다른 예로, T는 정수 픽셀 단위의 거리를 나타내는 값일 수도 있다. 정수 픽셀 단위가 사용되는 경우에는, 움직임 보상 시에 보간(interpolation) 과정이 수행되지 않을 수 있으므로, 계산 복잡도가 감소될 수 있다.
다른 예로, 부호화기는 L1 참조 픽쳐 내에서, 현재 블록에 대응하는 입력 블록(원본 블록)과 가장 잘 매칭되거나 유사한 영역을 도출할 수 있다. 이 때, 부호화기는 상기 도출된 영역을 기반으로 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 도출할 수 있다. 일례로, 부호화기는 상기 도출된 영역에 해당되는 블록의 위치 및 현재 블록의 위치를 기반으로 최종 L1 시간적 움직임 정보로 사용될 움직임 벡터를 도출할 수 있고, 상기 도출된 영역에 해당되는 블록을 기반으로 최종 L1 시간적 움직임 정보로 사용될 참조 픽쳐 인덱스(및/또는 참조 픽쳐 번호)를 도출할 수 있다. 도출된 움직임 정보는 비트스트림에 포함되어 부호화기로부터 복호화기로 전송될 수 있다. 이 때, 복호화기는 전송된 움직임 정보를 기반으로 L1 입력 시간적 움직임 정보를 재설정할 수 있다.
L1 참조 픽쳐에서 도출된 참조 픽쳐 인덱스(및/또는 참조 픽쳐 번호)는 L1 입력 참조 픽쳐 인덱스(및/또는 L1 입력 참조 픽쳐 번호)와 다를 수도 있다. 이 경우, 부호화기 및 복호화기는 L1 참조 픽쳐에서 도출된 참조 픽쳐 인덱스(및/또는 참조 픽쳐 번호)를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다.
L1 참조 픽쳐를 기반으로 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 도출하는 방법은 상술한 실시예에 한정되지 않으며, 부호화기 및 복호화기는 구현 및/또는 필요에 따라 다른 방식으로 움직임 정보를 도출할 수도 있다.
한편, 상술한 실시예에서는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보의 동일성을 기반으로 S1420 내지 S1430 과정의 수행 여부가 결정되지만, 부호화기 및 복호화기는 다른 조건을 기반으로 S1420 내지 S1430 과정의 수행 여부를 결정할 수도 있다.
일 실시예로, 부호화기 및 복호화기는 콜 블록의 예측 방향을 기반으로 S1420 내지 S1430 과정의 수행 여부를 결정할 수 있다. 상술한 바와 같이, 예측 방향 정보는 예측이 수행되는 블록에 대해 단방향 예측이 적용되는지 또는 양방향 예측이 적용되는지 여부를 지시하는 정보를 의미할 수 있다. 따라서, 상기 예측 방향은 단방향 예측 또는 양방향 예측에 해당될 수 있다. 일례로, 부호화기 및 복호화기는 콜 블록의 움직임 정보(예측 방향)가 양방향 예측이 아닌 단방향 예측인 경우에 S1420 내지 S1430 과정을 수행할 수 있다. 이는 제1 콜 블록의 예측 방향이 단방향 예측인 경우, 결과적으로 제1 콜 블록으로부터 도출되는 입력 시간적 움직임 정보에서, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일할 수 있기 때문이다.
다른 실시예로, 부호화기 및 복호화기는 콜 블록에 움직임 정보가 존재하는지 여부에 관한 정보를 기반으로 S1420 내지 S1430 과정의 수행 여부를 결정할 수도 있다. 일례로, 부호화기 및 복호화기는 콜 블록에 움직임 정보가 존재하지 않는 경우에 S1420 내지 S1430 과정을 수행할 수 있다. 이 경우, 상술한 S1430 단계에서는 L1 입력 시간적 움직임 정보가 아닌 L0 입력 시간적 움직임 정보가 재설정될 수 있다. 즉, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보를 L1 참조 픽쳐의 움직임 정보로 재설정할 수 있으며, 현재 블록에 대해 양방향 예측이 아닌 단방향 예측을 수행할 수 있다. 또한, 콜 블록에 움직임 정보가 존재하지 않는 경우, 상술한 S1430 단계에서 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보를 모두 재설정할 수도 있다. 즉, 부호화기 및 복호화기는 L0 입력 시간적 움직임 정보 및 L1 입력 시간적 움직임 정보를 모두 L1 참조 픽쳐의 움직임 정보로 재설정할 수 있으며, 현재 블록에 대해 양방향 예측을 수행할 수도 있다.
또 다른 실시예로, 부호화기 및 복호화기는 콜 블록의 움직임 정보에서 L0 움직임 벡터 및/또는 L1 움직임 벡터가 영 벡터(0,0)에 해당되는 경우에 S1420 내지 S1430 과정을 수행할 수도 있다. 이 경우, 상술한 S1430 단계에서 부호화기 및 복호화기는 영 벡터(0,0)에 해당되는 움직임 벡터(들)를 재설정할 수 있다. 일례로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 L1 참조 픽쳐의 움직임 벡터로 설정될 수 있고, 다른 예로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 복원된 주변 블록의 움직임 벡터로 설정될 수도 있으며, 또 다른 예로, 상기 영 벡터(0,0)에 해당되는 움직임 벡터(들)는 콜 블록의 주변에 위치한 블록의 움직임 벡터로 설정될 수도 있다. 또 다른 실시예로, 부호화기 및 복호화기는 콜 블록의 움직임 정보에서 L0 움직임 벡터 및/또는 L1 움직임 벡터가 영 벡터(0,0)에 해당되지 않는 경우에 S1420 내지 S1430 과정을 수행할 수도 있다. 이 경우, 상술한 S1430 단계에서 부호화기 및 복호화기는 영 벡터(0,0)에 해당되지 않는 움직임 벡터(들)을 재설정할 수 있으며, 상기 영 벡터(0,0)에 해당되지 않는 움직임 벡터(들)은 L1 참조 픽쳐의 움직임 벡터로 재설정될 수 있다.
S1420 내지 S1430 과정의 수행 여부가 결정되는 조건은 상술한 실시예에 한정되지 않으며, 조건 및/또는 필요에 따라 다양한 조건이 적용될 수 있다.
한편, L1 참조 픽쳐에서 도출되는 움직임 정보는 현재 블록의 L0 입력 시간적 움직임 정보와 동일할 수도 있다. 따라서, 부호화기 및 복호화기는 L1 참조 픽쳐에서 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색할 때, L0 입력 시간적 움직임 정보와 동일하지 않은 움직임 정보만을 찾을 수도 있다. 예를 들어, S1430에서와 같이, L1 참조 픽쳐를 기반으로 현재 블록의 최종 L1 시간적 움직임 정보를 도출하는 경우, 부호화기 및 복호화기는 현재 블록의 L0 입력 시간적 움직임 정보와 다른 움직임 정보만을 최종 L1 시간적 움직임 정보로 사용할 수 있다. 이 때, 부호화기 및 복호화기는 현재 블록의 L0 입력 시간적 움직임 정보와의 차이가 소정의 임계값(threshold) 이하인 움직임 정보만을, 최종 L1 시간적 움직임 정보로 사용될 움직임 정보로 선택할 수도 있다. 여기서, 상기 소정의 임계값은 현재 블록의 모드 정보, 현재 블록의 움직임 정보, 주변 블록의 모드 정보 및/또는 주변 블록의 움직임 정보 등을 기반으로 정해질 수 있으며, 다양한 방식으로 결정될 수 있다.
상술한 실시예에서 S1410 단계로 입력되는 입력 시간적 움직임 정보는 입력 움직임 벡터뿐만 아니라 입력 참조 픽쳐 인덱스도 포함할 수 있다. 여기서, L0 입력 움직임 벡터 및 L1 입력 움직임 벡터는 상술한 바와 같이 콜 블록을 기반으로 시간적으로 도출된 움직임 벡터일 수 있고, L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는 복원된 주변 블록으로부터 공간적으로 도출된 참조 픽쳐 인덱스일 수 있다. 이 때, L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는, 복원된 주변 블록의 참조 픽쳐 인덱스 중에서 음수가 아닌 가장 작은 값으로 설정될 수 있다. 한편, 다른 예로 L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스는 복원된 주변 블록의 움직임 정보에 관계 없이 0으로 설정될 수도 있다.
L1 입력 움직임 벡터가 L1 참조 픽쳐를 기반으로 재설정되는 경우, 입력 참조 픽쳐 인덱스에 대해서도 재설정 과정이 수행될 수 있다. 일례로, 입력 참조 픽쳐 인덱스는 상술한 바와 같이 L1 참조 픽쳐로부터 도출된 참조 픽쳐 인덱스를 기반으로 재설정될 수 있다. 다른 예로, L0 입력 시간적 움직임 정보(예를 들어, L0 입력 움직임 벡터, L0 입력 참조 픽쳐 인덱스 등) 와 L1 입력 시간적 움직임 정보(예를 들어, L1 입력 움직임 벡터, L1 입력 참조 픽쳐 인덱스 등)가 동일한 경우, 부호화기 및 복호화기는 L0 입력 참조 픽쳐 인덱스 및 L1 입력 참조 픽쳐 인덱스를 모두 0의 값으로 재설정하여 최종 시간적 움직임 정보로 사용할 수도 있다. 이는, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, L0 참조 픽쳐 인덱스 및 L1 참조 픽쳐 인덱스가 모두 0일 확률이 높기 때문이다.
한편, 상술한 바와 같이 부호화기 및 복호화기는 L1 입력 움직임 벡터 값을 L1 참조 픽쳐의 움직임 벡터와 동일한 값으로 재설정함으로써 최종 L1 시간적 움직임 벡터를 도출할 수 있다. 이 때, 상기 L1 참조 픽쳐의 움직임 벡터는 L1 입력 참조 픽쳐 인덱스 및/또는 재설정된 L1 참조 픽쳐 인덱스에 따라 스케일링되어 사용될 수도 있다. L1 입력 참조 픽쳐 인덱스는 재설정 과정 없이 그대로 최종 L1 참조 픽쳐 인덱스로 사용될 수도 있고, 상술한 실시예에서와 같이 재설정 과정을 거쳐 최종 L1 참조 픽쳐 인덱스로 사용될 수도 있다. 이 때, L1 참조 픽쳐의 움직임 벡터에 대응하는 참조 픽쳐, 및 최종 L1 참조 픽쳐 인덱스가 지시하는 참조 픽쳐는 서로 다를 수 있다. 이 경우, 부호화기 및 복호화기는 L1 참조 픽쳐의 움직임 벡터에 대한 스케일링을 수행하고 상기 스케일링된 움직임 벡터를 현재 블록의 최종 L1 시간적 움직임 벡터로 사용할 수 있다.
또한 상술한 실시예들에서, 재설정된 L1 시간적 움직임 정보는 현재 블록의 L0 시간적 움직임 정보와 동일할 수 있다. 따라서, 재설정된 L1 시간적 움직임 정보가 현재 블록의 L0 시간적 움직임 정보와 동일한 경우, 부호화기 및 복호화기는 현재 블록의 예측 방향 정보를 단방향 예측으로 다시 설정할 수도 있다. 이 때, 부호화기 및 복호화기는 L0 시간적 움직임 정보만을 현재 블록의 시간적 움직임 정보로 사용할 수 있다. 이러한 방법은 상술한 실시예들과 결합된 조합으로서 본 발명에 적용될 수 있다.
도 15는 도 14의 실시예에 따른 시간적 움직임 정보 도출 과정을 수행할 수 있는 인터 예측 장치의 일 실시예를 개략적으로 나타내는 블록도이다. 도 15의 실시예에 따른 인터 예측 장치는 시간적 움직임 정보 판단부(1510), 움직임 예측부(1520) 및 L1 시간적 움직임 정보 재설정부(1530)를 포함할 수 있다.
상술한 바와 같이, 시간적 움직임 정보는 이미 복원된 콜 픽쳐 내에서 현재 블록에 대응하는 콜 블록의 움직임 정보를 기반으로 도출될 수 있다. 여기서, 상기 콜 픽쳐는 일례로 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다. 부호화기 및 복호화기는, 콜 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 블록을 기준으로 소정의 상대적인 위치를 결정할 수 있고, 상기 결정된 소정의 상대적인 위치(예를 들어, 상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록의 내부 및/또는 외부의 위치)를 기반으로 상기 콜 블록을 도출할 수 있다. 콜 블록을 기반으로 도출되는 시간적 움직임 정보는 예측 방향 정보, L0 참조 픽쳐 번호, L1 참조 픽쳐 번호, L0 움직임 벡터 및 L1 움직임 벡터 등을 포함할 수 있다.
도 15를 참조하면, 도 11을 참조하면, 시간적 움직임 정보 판단부(1510)는 입력 시간적 움직임 정보에서 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한지 여부, 즉 L0 입력 참조 픽쳐 번호와 L1 입력 참조 픽쳐 번호가 동일하고 L0 입력 움직임 벡터와 L1 입력 움직임 벡터가 동일한지 여부를 판단할 수 있다.
L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일하지 않은 경우, 인터 예측 장치는 입력 시간적 움직임 정보를 그대로 현재 블록의 시간적 움직임 정보로 사용할 수 있다. AMVP가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 예측 움직임 벡터 후보로 결정되거나 등록될 수 있다. 또한, 머지가 적용되는 경우, 상기 현재 블록의 시간적 움직임 정보는 현재 블록에 대한 머지 후보로 결정되거나 등록될 수 있다. L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우에는 움직임 예측부(1520)에 의한 프로세스가 수행될 수 있다.
한편, 시간적 움직임 정보 판단부(1510)는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보의 동일성 여부가 아닌, L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호의 동일성 여부 또는 콜 블록의 예측 방향을 판단할 수도 있다. 예를 들어, L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호가 동일하지 않은 경우, 입력 시간적 움직임 정보가 그대로 현재 블록의 시간적 움직임 정보로 사용될 수 있고, L0 입력 참조 픽쳐 번호 및 L1 입력 참조 픽쳐 번호가 동일한 경우 움직임 예측부(1520)에 의한 프로세스가 수행될 수 있다. 다른 예로, 콜 블록의 예측 방향이 양방향 예측인 경우, 입력 시간적 움직임 정보가 그대로 현재 블록의 시간적 움직임 정보로 사용될 수 있고, 콜 블록의 예측 방향이 단방향 예측인 경우 움직임 예측부(1520)에 의한 프로세스가 수행될 수도 있다.
다시 도 15를 참조하면, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 움직임 예측부(1520)는 L1 참조 픽쳐에서 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 탐색하거나 도출할 수 있다.
일 실시예로, 움직임 예측부(1520)는 L1 참조 픽쳐 내에서, 현재 블록에 대응하는 입력 블록(원본 블록)과 가장 잘 매칭되거나 유사한 영역을 도출할 수 있다. 이 때, 움직임 예측부(1520)는 상기 도출된 영역을 기반으로 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 도출할 수 있다. 일례로, 움직임 예측부(1520)는 상기 도출된 영역에 해당되는 블록의 위치 및 현재 블록의 위치를 기반으로 최종 L1 시간적 움직임 정보로 사용될 움직임 벡터를 도출할 수 있고, 상기 도출된 영역에 해당되는 블록을 기반으로 최종 L1 시간적 움직임 정보로 사용될 참조 픽쳐 인덱스(및/또는 참조 픽쳐 번호)를 도출할 수 있다.
한편, 움직임 예측부(1520)가 부호화기측의 구성 요소에 해당되는 경우, 부호화기는 상기 방법에 의해 L1 참조 픽쳐에서 도출된 움직임 정보를 비트스트림에 포함시켜 복호화기로 전송할 수도 있다. L1 참조 픽쳐에서 도출된 움직임 정보는 참조 픽쳐 인덱스 및 움직임 벡터 등을 포함할 수 있고, 부호화기는 상기 참조 픽쳐 인덱스와 움직임 벡터를 각각 독립적으로 복호화기로 전송할 수 있다. 이 때, 부호화기는 현재 블록의 실제 움직임 벡터 및 L1 참조 픽쳐로부터 도출된 움직임 벡터의 차분 값을 구한 후, 그 차분 값을 복호화기로 전송할 수도 있다.
이 경우, 복호화기는 전송된 움직임 정보를 기반으로 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 결정할 수 있다. 즉, 움직임 예측부(1520)가 복호화기측의 구성 요소에 해당되는 경우, 상기 움직임 예측부(1520)는 외부로부터 입력된 움직임 정보(예를 들어, 부호화기로부터 전송된 움직임 정보)를 기반으로, 최종 L1 시간적 움직임 정보로 사용될 움직임 정보를 결정할 수 있다.
다시 도 15를 참조하면, L1 시간적 움직임 정보 재설정부(1530)는 L1 참조 픽쳐에서 도출된 움직임 정보를 현재 블록의 최종 L1 시간적 움직임 정보로 사용할 수 있다. 즉, 이 때 L1 시간적 움직임 정보 재설정부(1530)는 L1 입력 시간적 움직임 정보 값을 움직임 예측부(1520)에 의해 도출된 움직임 정보(L1 참조 픽쳐에서 도출된 움직임 정보)의 값으로 재설정할 수 있다.
상술한 도 6 내지 도 15의 실시예들은, 각각 개별적으로 적용될 수도 있으나, 각 블록의 부호화 모드에 따라 다양한 방법으로 조합되어 적용될 수도 있다. 이하, 후술되는 실시예들에서 부호화 모드가 머지 모드인 블록은 머지 블록이라 한다. 머지 블록이 아닌 블록에는, 예를 들어 부호화 모드가 AMVP 모드인 블록 등이 있을 수 있다. 또한, 후술되는 실시예들에서 현재 블록은 경우에 따라 머지 블록 또는 머지 블록이 아닌 블록 중 하나에 해당될 수 있다.
일 실시예로, 머지 블록에는 도 6 내지 도 8의 실시예에 따른 시간적 움직임 정보 도출 방법이 적용되고, 머지 블록이 아닌 블록에는 도 12 및 도 13에 따른 움직임 정보 도출 방법이 적용될 수 있다. 이 때, 머지 블록에서는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 복원된 주변 블록의 움직임 정보가 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 수 있다. 또한, 머지 블록이 아닌 블록에서는, 현재 블록의 L0 움직임 정보 및 현재 블록의 L1 움직임 정보가 각각 독립적으로 설정될 수 있다. 일례로, 현재 블록의 L0 움직임 정보 및 현재 블록의 L1 움직임 정보 중에서 하나는 복원된 주변 블록을 기반으로 공간적으로 도출되고 다른 하나는 콜 블록을 기반으로 시간적으로 도출될 수 있다.
다른 실시예로, 머지 블록에는 도 9 내지 도 11의 실시예에 따른 시간적 움직임 정보 도출 방법이 적용되고, 머지 블록이 아닌 블록에는 도 14 및 도 15에 따른 시간적 움직임 정보 도출 방법이 적용될 수 있다. 이 때, 머지 블록에서는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 입력 시간적 움직임 정보 도출에 사용된 콜 블록이 아닌 새로이 도출된 콜 블록의 움직임 정보가 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 수 있다. 또한, 머지 블록이 아닌 블록에서는, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, L1 참조 픽쳐의 움직임 정보가 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 수 있다.
또 다른 실시예로, 머지 블록에는 도 6 내지 8의 실시예에 따른 시간적 움직임 정보 도출 방법이 적용되고, 머지 블록이 아닌 블록에는 도 14 및 도 15에 따른 시간적 움직임 정보 도출 방법이 적용될 수 있다. 이 때, 머지 블록에서는 L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, 복원된 주변 블록의 움직임 정보가 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 수 있다. 또한, 머지 블록이 아닌 블록에서는, L0 입력 시간적 움직임 정보와 L1 입력 시간적 움직임 정보가 동일한 경우, L1 참조 픽쳐의 움직임 정보가 현재 블록의 최종 L1 시간적 움직임 정보로 사용될 수 있다.
도 6 내지 도 15의 실시예들의 조합은 상술한 실시예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 상술한 실시예들 뿐만 아니라 다양한 형태의 조합이 제공될 수 있다.
상술한 실시예들에서, 방법들은 일련의 단계 또는 블록으로서 순서도를 기초로 설명되고 있으나, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
상술한 실시예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.

Claims (7)

  1. 콜 픽쳐 정보를 기반으로 현재 블록의 콜 픽쳐를 결정하는 단계;
    상기 콜 픽쳐 내에서 상기 현재 블록에 대응하는 콜 블록의 움직임 벡터를 기반으로 시간적 움직임 벡터를 도출하는 단계;
    상기 시간적 움직임 벡터를 이용하여 상기 현재 블록에 대한 예측 움직임 벡터 후보 리스트를 생성하는 단계;
    상기 예측 움직임 벡터 후보 리스트에 기반하여 상기 현재 블록의 움직임 벡터를 도출하는 단계; 및
    상기 도출된 움직임 벡터에 기반하여 상기 현재 블록에 대한 움직임 보상을 수행하는 단계를 포함하는 영상 복호화 방법.
  2. 제1항에 있어서, 상기 콜 픽쳐는 참조 픽쳐 리스트에 포함된 복수의 참조 픽쳐 중 어느 하나인 영상 복호화 방법.
  3. 제2항에 있어서, 상기 콜 픽쳐 정보는 상기 콜 픽쳐를 지시하기 위해 부호화기로부터 전송되는 영상 복호화 방법.
  4. 제3항에 있어서,
    부호화기로부터 상기 현재 블록의 예측 움직임 벡터를 지시하는 예측 움직임 벡터 인덱스를 수신하는 단계; 및
    상기 예측 움직임 벡터 인덱스를 이용하여, 상기 예측 움직임 벡터 후보 리스트에 포함된 예측 움직임 벡터 후보 중에서 상기 현재 블록의 예측 움직임 벡터를 선택하는 단계를 더 포함하는 영상 복호화 방법.
  5. 제1항에 있어서,
    상기 콜 블록은 상기 현재 블록의 우측-하단 픽셀의 위치를 포함하는 제1 블록 또는 상기 현재 블록의 중앙 위치를 포함하는 제2 블록 중 어느 하나로 결정되는 영상 복호화 방법.
  6. 제5항에 있어서,
    상기 콜 블록은 소정의 스캔 순서에 따라 상기 제1 블록과 상기 제2 블록을 스캐닝하여 결정되는 영상 복호화 방법.
  7. 제6항에 있어서,
    상기 스캐닝은 상기 제1 블록, 상기 제2 블록의 순으로 수행되는 영상 복호화 방법.
KR1020160070892A 2011-07-12 2016-06-08 인터 예측 방법 및 그 장치 KR101801256B1 (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
KR1020110069166 2011-07-12
KR20110069166 2011-07-12
KR20110071171 2011-07-18
KR1020110071171 2011-07-18
KR20110071658 2011-07-19
KR1020110071658 2011-07-19
KR20110082395 2011-08-18
KR1020110082395 2011-08-18

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020120075901A Division KR101769576B1 (ko) 2011-07-12 2012-07-12 인터 예측 방법 및 그 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020170154780A Division KR101891656B1 (ko) 2011-07-12 2017-11-20 인터 예측 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20160072836A true KR20160072836A (ko) 2016-06-23
KR101801256B1 KR101801256B1 (ko) 2017-11-27

Family

ID=47838553

Family Applications (15)

Application Number Title Priority Date Filing Date
KR1020120075901A KR101769576B1 (ko) 2011-07-12 2012-07-12 인터 예측 방법 및 그 장치
KR1020160070892A KR101801256B1 (ko) 2011-07-12 2016-06-08 인터 예측 방법 및 그 장치
KR1020170154780A KR101891656B1 (ko) 2011-07-12 2017-11-20 인터 예측 방법 및 그 장치
KR1020180096648A KR101990425B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096647A KR101990424B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096645A KR101990423B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096644A KR101990422B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096646A KR101965287B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020190069185A KR102094436B1 (ko) 2011-07-12 2019-06-12 인터 예측 방법 및 그 장치
KR1020200035119A KR102216320B1 (ko) 2011-07-12 2020-03-23 인터 예측 방법 및 그 장치
KR1020210018003A KR102320585B1 (ko) 2011-07-12 2021-02-09 인터 예측 방법 및 그 장치
KR1020210144396A KR102420426B1 (ko) 2011-07-12 2021-10-27 인터 예측 방법 및 그 장치
KR1020220084353A KR102515824B1 (ko) 2011-07-12 2022-07-08 인터 예측 방법 및 그 장치
KR1020230039525A KR102626368B1 (ko) 2011-07-12 2023-03-27 인터 예측 방법 및 그 장치
KR1020240005610A KR20240010747A (ko) 2011-07-12 2024-01-12 인터 예측 방법 및 그 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020120075901A KR101769576B1 (ko) 2011-07-12 2012-07-12 인터 예측 방법 및 그 장치

Family Applications After (13)

Application Number Title Priority Date Filing Date
KR1020170154780A KR101891656B1 (ko) 2011-07-12 2017-11-20 인터 예측 방법 및 그 장치
KR1020180096648A KR101990425B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096647A KR101990424B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096645A KR101990423B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096644A KR101990422B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020180096646A KR101965287B1 (ko) 2011-07-12 2018-08-20 인터 예측 방법 및 그 장치
KR1020190069185A KR102094436B1 (ko) 2011-07-12 2019-06-12 인터 예측 방법 및 그 장치
KR1020200035119A KR102216320B1 (ko) 2011-07-12 2020-03-23 인터 예측 방법 및 그 장치
KR1020210018003A KR102320585B1 (ko) 2011-07-12 2021-02-09 인터 예측 방법 및 그 장치
KR1020210144396A KR102420426B1 (ko) 2011-07-12 2021-10-27 인터 예측 방법 및 그 장치
KR1020220084353A KR102515824B1 (ko) 2011-07-12 2022-07-08 인터 예측 방법 및 그 장치
KR1020230039525A KR102626368B1 (ko) 2011-07-12 2023-03-27 인터 예측 방법 및 그 장치
KR1020240005610A KR20240010747A (ko) 2011-07-12 2024-01-12 인터 예측 방법 및 그 장치

Country Status (1)

Country Link
KR (15) KR101769576B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018066791A1 (ko) * 2016-10-05 2018-04-12 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
WO2018128228A1 (ko) * 2017-01-03 2018-07-12 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107370807B (zh) * 2017-07-12 2020-05-08 中南大学 基于透明服务平台数据访问的服务端及其缓存优化方法
US11425390B2 (en) 2018-01-26 2022-08-23 Electronics And Telecommunications Research Institute Method and apparatus for image encoding and image decoding using temporal motion information
WO2019147067A1 (ko) * 2018-01-26 2019-08-01 한국전자통신연구원 시간적 움직임 정보를 이용하는 영상 부호화 및 영상 복호화를 위한 방법 및 장치
JP2021516006A (ja) 2018-07-02 2021-06-24 エルジー エレクトロニクス インコーポレイティド インター予測モードに基づいた映像処理方法及びそのための装置
EP3833020A4 (en) 2018-07-27 2022-04-27 Samsung Electronics Co., Ltd. METHOD AND DEVICE FOR ENCODING THE IMAGE, AND METHOD AND DEVICE FOR DECODING THE IMAGE BASED ON SUB-BLOCKS

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100944333B1 (ko) * 2007-07-30 2010-03-02 한국과학기술원 스케일러블 비디오 부호화에서 계층간 예측모드 고속결정방법
JP5979405B2 (ja) 2011-03-11 2016-08-24 ソニー株式会社 画像処理装置および方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018066791A1 (ko) * 2016-10-05 2018-04-12 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
US10742971B2 (en) 2016-10-05 2020-08-11 Lg Electronics Inc. Inter prediction method and device that performs prediction by applying weights to motion information of a current block
WO2018128228A1 (ko) * 2017-01-03 2018-07-12 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치

Also Published As

Publication number Publication date
KR101965287B1 (ko) 2019-08-08
KR20210019047A (ko) 2021-02-19
KR20180095487A (ko) 2018-08-27
KR20170131321A (ko) 2017-11-29
KR20180095486A (ko) 2018-08-27
KR20190070313A (ko) 2019-06-20
KR101801256B1 (ko) 2017-11-27
KR102515824B1 (ko) 2023-03-30
KR102094436B1 (ko) 2020-03-30
KR102216320B1 (ko) 2021-02-18
KR102420426B1 (ko) 2022-07-14
KR20180095489A (ko) 2018-08-27
KR20200034701A (ko) 2020-03-31
KR20240010747A (ko) 2024-01-24
KR20180095488A (ko) 2018-08-27
KR20130008481A (ko) 2013-01-22
KR101990424B1 (ko) 2019-06-19
KR20220100847A (ko) 2022-07-18
KR102626368B1 (ko) 2024-01-17
KR101769576B1 (ko) 2017-08-18
KR101990423B1 (ko) 2019-06-19
KR102320585B1 (ko) 2021-11-02
KR20180095490A (ko) 2018-08-27
KR101891656B1 (ko) 2018-08-27
KR101990422B1 (ko) 2019-06-19
KR20210131299A (ko) 2021-11-02
KR20230043818A (ko) 2023-03-31
KR101990425B1 (ko) 2019-06-19

Similar Documents

Publication Publication Date Title
KR102485745B1 (ko) 영상 부호화/복호화 방법 및 장치
US11917193B2 (en) Inter prediction method and apparatus for same
KR101990422B1 (ko) 인터 예측 방법 및 그 장치
KR20140095607A (ko) 인터 예측 방법 및 그 장치
KR102503694B1 (ko) 인터 예측 방법 및 그 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant