KR20190114913A - 디코더 사이드 움직임 유도 기반의 영상 부호화/복호화 방법 및 장치 - Google Patents

디코더 사이드 움직임 유도 기반의 영상 부호화/복호화 방법 및 장치 Download PDF

Info

Publication number
KR20190114913A
KR20190114913A KR1020190037349A KR20190037349A KR20190114913A KR 20190114913 A KR20190114913 A KR 20190114913A KR 1020190037349 A KR1020190037349 A KR 1020190037349A KR 20190037349 A KR20190037349 A KR 20190037349A KR 20190114913 A KR20190114913 A KR 20190114913A
Authority
KR
South Korea
Prior art keywords
block
motion information
information
sad
prediction
Prior art date
Application number
KR1020190037349A
Other languages
English (en)
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 KR20190114913A publication Critical patent/KR20190114913A/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/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/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

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

Abstract

본 발명에 따른 영상 부호화/복호화 방법 및 장치는, 현재 블록의 초기 움직임 정보를 결정하고, 현재 블록의 델타 움직임 정보를 결정하며, 델타 움직임 정보를 이용하여, 현재 블록의 초기 움직임 정보를 개선하고, 개선된 움직임 정보를 이용하여 현재 블록의 움직임 보상을 수행할 수 있다.

Description

디코더 사이드 움직임 유도 기반의 영상 부호화/복호화 방법 및 장치{METHOD AND APPARATUS FOR ENCODING/DECODING AN IMAGE BASED ON DECODER SIDE MOTION DERIVATION}
본 발명은 영상 부호화/복호화 방법 및 장치에 관한 것이다.
최근, 인터넷에서는 동영상과 같은 멀티미디어 데이터의 수요가 급격히 증가하고 있다. 하지만 채널(Channel)의 대역폭(Bandwidth)이 발전하는 속도는 급격히 증가하고 있는 멀티미디어 데이터의 양을 따라가기 힘든 상황이다. 이에 따라, 국제 표준화 기구인 ITU-T의 VCEG(Video Coding Expert Group)과 ISO/IEC의 MPEG(Moving Picture Expert Group)은 2014년 2월, 동영상 압축 표준인 HEVC(High Efficiency Video Coding) 버전1을 제정하였다.
HEVC에서는 화면 내 예측(또는 인트라 예측), 화면 간 예측(또는 인터 예측), 변환, 양자화, 엔트로피 부호화 및 인-루프 필터 등의 기술을 정의하고 있다.
본 발명은 영상 부호화/복호화 방법 및 장치에 관한 것으로, 화면 내 예측 또는 화면 간 예측 방법 및 장치를 제공하는데 목적이 있다.
본 발명은 디코더에서 움직임 정보를 유도하는 방법 및 장치를 제공하는데 목적이 있다.
본 발명은 블록 분할 방법 및 장치를 제공하는데 목적이 있다.
본 발명의 영상 부호화/복호화 방법 및 장치는, 현재 블록의 초기 움직임 정보를 결정하고, 상기 현재 블록의 델타 움직임 정보를 결정하며, 상기 델타 움직임 정보를 이용하여 상기 현재 블록의 초기 움직임 정보를 개선하고, 상기 개선된 움직임 정보를 이용하여 상기 현재 블록의 움직임 보상을 수행할 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 델타 움직임 정보를 결정하는 단계는, 상기 움직임 정보의 개선을 위한 탐색 영역을 결정하고, 상기 탐색 영역으로부터 SAD(sum of absolute difference) 리스트를 생성하며, 상기 SAD 리스트의 SAD 후보를 기반으로 상기 델타 움직임 정보를 갱신할 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, SAD 리스트는, 상기 탐색 영역 내의 탐색 위치 별 SAD 후보를 특정할 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 탐색 영역은, 참조 블록의 경계를 기준으로 N개의 샘플 라인만큼 확장된 영역을 포함하고, 상기 참조 블록은 상기 현재 블록의 초기 움직임 정보에 의해 지시되는 영역일 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 SAD 후보는 L0 블록과 L1 블록 간의 SAD 값으로 결정되고, 상기 SAD 값은 L0 및 L1 블록 내의 일부 샘플을 기초로 산출될 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 L0 블록의 위치는, 상기 현재 블록의 L0 참조 블록의 위치 및 소정의 오프셋에 기초하여 결정되고, 상기 오프셋은, 넌-방향성 오프셋 또는 방향성 오프셋 중 적어도 하나를 포함할 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 델타 움직임 정보의 갱신은, 기준 SAD 후보와 소정의 문턱값 간의 비교 결과에 기초하여 수행되고, 상기 기준 SAD 후보는, 상기 넌-방향성 오프셋에 대응하는 SAD 후보를 의미할 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 기준 SAD 후보가 상기 문턱값보다 크거나 같은 경우, 상기 SAD 리스트에 속한 SAD 후보 중 최소값을 가진 SAD 후보가 식별되고, 상기 식별된 SAD 후보에 대응하는 오프셋을 기반으로 상기 델타 움직임 정보가 갱신될수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 기준 SAD 후보가 상기 문턱값보다 작은 경우, 상기 SAD 리스트에 속한 SAD 후보 전부 또는 일부를 이용하여 산출된 파라미터를 기반으로, 상기 델타 움직임 정보가 갱신될 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 초기 움직임 정보의 개선은, 상기 현재 블록의 크기를 고려하여, 서브 블록의 단위로 수행될 수 있다.
본 발명의 영상 부호화/복호화 방법 및 장치에 있어서, 상기 초기 움직임 정보의 개선은, 상기 현재 블록의 크기, 현재 픽쳐와 참조 픽쳐 간의 거리, 인터 예측 모드, 예측 방향 또는 움직임 정보의 해상도 중 적어도 하나를 고려하여 선택적으로 수행될 수 있다.
본 발명에 따르면, 복원 영역 내에서 서로 다른 객체 간의 움직임의 경계점을 이용하여 예측 블록의 경계점을 보다 정확하게 찾을 수 있고, 압축 효율을 향상시킬 수 있다.
본 발명에 따르면, 움직임 정보의 개선을 통해 화면 간 예측의 정확도를 향상시킬 수 있다.
본 발명에 따르면, 효율적인 블록 분할을 통해 영상 부호화/복호화 효율을 향상시킬 수 있다.
도 1은 영상 부호화 장치를 간략하게 나타낸 흐름도이다.
도 2는 영상 부호화 장치의 블록 분할부를 상세히 설명하기 위한 도면이다.
도 3은 영상 부호화 장치의 예측부를 상세히 설명하기 위한 도면이다.
도 4는 영상 부호화 장치 내 예측부의 움직임 추정부를 설명하기 위한 도면이다.
도 5는 SKIP, Merge 모드의 후보 움직임정보를 유도하는 방법을 나타낸 흐름도이다.
도 6은 AMVP 모드의 후보 움직임정보를 유도하는 방법을 나타낸 흐름도이다.
도 7은 SKIP, Merge, AMVP 모드의 후보 움직임정보 중, 공간적/시간적 후보를 유도하기 위해서 사용되는 복원 블록들의 위치를 나타낸 도면이다.
도 8은 SKIP, Merge, AMVP 모드의 후보 움직임정보 중, 시간적 후보를 유도하는 방법을 설명하기 위한 도면이다.
도 9는 SKIP, Merge 모드의 후보 움직임정보 중, 결합된 양방향 후보 모드를 유도하는 방법을 설명하기 위한 도면이다.
도 10은 영상 부호화 장치 내 움직임 추정부 혹은 일 실시예에 따른 영상 부호화/복호화 장치 내 DMVD 움직임 추정부에서 사용되는 움직임 추정 패턴들을 나타낸 도면이다.
도 11은 분할 정보 및 예측 정보를 부호화하는 방법을 나타낸 흐름도이다.
도 12는 영상 복호화 장치를 간략하게 나타낸 흐름도이다.
도 13은 영상 복호화 장치의 블록 분할부를 설명하기 위한 도면이다.
도 14는 영상 복호화 장치의 예측부를 설명하기 위한 도면이다.
도 15는 분할 정보 및 예측 정보를 복호화하는 방법을 나타낸 흐름도이다.
도 16은 본 발명의 일 실시예에 따른 영상 부호화 장치의 블록 분할부를 설명하기 위한 도면이다.
도 17은 본 발명의 일 실시예에 따른 영상 복호화 장치의 블록 분할부를 설명하기 위한 도면이다.
도 18은 본 발명의 일 실시예에 따른 영상 부호화 장치의 예측부를 설명하기 위한 도면이다.
도 19는 본 발명의 일 실시예에 따른 영상 복호화 장치의 예측부를 설명하기 위한 도면이다.
도 20은 본 발명의 일 실시예에 따른 영상 부호화/복호화 장치 내 예측부의 DMVD 움직임 추정부를 설명하기 위한 도면이다.
도 21은 본 발명의 일 실시예에 따른 DMVD 모드를 설명하기 위한 도면이다.
도 22는 본 발명의 일 실시예에 따른 DMVD 모드에서 복원 영역 내 템플릿 블록을 결정하는 방법을 설명하기 위한 도면이다.
도 23은 본 발명의 일 실시예에 따른 블록의 분할 움직임 경계점을 탐색하기 방법을 설명하기 위한 도면이다.
도 24는 도 22의 움직임 경계점을 탐색하기 위한 고속화 알고리즘을 설명하기 위한 도면이다.
도 25는 본 발명의 일 실시예에 따른 영상 부호화/복호화 장치 내 예측부에서 DMVD 초기 움직임정보 탐색부를 설명하기 위한 도면이다.
도 26은 도 23의 고속화 알고리즘에서 라인 단위 비용값을 계산하는 방법을 설명하기 위한 도면이다.
도 27은 본 발명의 일 실시예에 따른 블록의 1개 혹은 2개의 분할 움직임 경계점을 기준으로 2분할 혹은 4분할된 블록의 예시를 설명하기 위한 도면이다.
도 28은 도 23, 24의 분할 움직임 경계점을 기준으로 복원 영역 내에서 현재 블록과 인접한 일부 영역만을 템플릿으로 이용하여 움직임정보를 탐색하는 방법을 나타낸 도면이다.
도 29는 도 23, 24의 분할 움직임 경계점을 기준으로 복원 영역 내에서 현재 블록과 인접한 전체 영역을 템플릿으로 이용하여 움직임정보를 탐색하는 방법을 나타낸 도면이다.
도 30은 본 발명의 일 실시예에 따른 분할 정보 및 예측 정보를 부호화하는 방법을 설명하기 위한 흐름도이다.
도 31은 본 발명의 일 실시예에 따른 분할 정보 및 예측 정보를 복호화하는 방법을 설명하기 위한 흐름도이다.
도 32는 본 발명의 일 실시예에 따른 부호화 블록의 분할 예시를 나타낸 것이다.
도 33은 본 발명의 일 실시예에 따른 영상 부호화/복호화 장치 내 예측부의 DMVD 움직임 추정부를 설명하기 위한 도면이다.
도 34는 본 발명의 일 실시예에 따른 움직임 경계선의 기울기를 결정하는 방법을 나타낸 흐름도이다.
도 35은 도 34의 움직임 경계 탐색 영역에서 움직임 경계선의 기울기를 결정하고 현재 블록을 분할하는 방법을 설명하기 위한 도면이다.
도 36은 본 발명의 일 실시예에 따른 현재 블록 직선 분할시의 필터링 방법을 설명하기 위한 도면이다.
도 37는 본 발명의 일 실시예에 따른 현재 블록 사선 분할시의 필터링 방법을 설명하기 위한 도면이다.
도 38은 본 발명의 일 실시예에 따른 예측 정보를 부호화하는 방법을 설명하기 위한 흐름도이다.
도 39은 본 발명의 일 실시예에 따른 예측 정보를 복호화하는 방법을 설명하기 위한 흐름도이다.
도 40은 본 발명이 적용되는 일실시예로서, 델타 움직임 정보를 결정하는 방법을 도시한 것이다.
본 명세서에 첨부된 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서 전체에서, 어떤 부분이 다른 부분과 '연결'되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다.
또한, 본 명세서 전체에서 어떤 부분이 어떤 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
또한, 본 명세서에서 설명되는 장치 및 방법에 관한 실시예에 있어서, 장치의 구성 일부 또는 방법의 단계 일부는 생략될 수 있다. 또한 장치의 구성 일부 또는 방법의 단계 일부의 순서가 변경될 수 있다. 또한 장치의 구성 일부 또는 방법의 단계 일부에 다른 구성 또는 다른 단계가 삽입될 수 있다.
또한, 본 발명의 제1 실시예의 일부 구성 또는 일부 단계는 본 발명의 제2 실시예에 부가되거나, 제2 실시예의 일부 구성 또는 일부 단계를 대체할 수 있다.
덧붙여, 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 기술되고, 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있다. 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리 범위에 포함된다.
이하, 첨부한 도면들을 참조하여, 본 발명의 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 영상 부호화 장치의 구성을 간략하게 나타낸 블록 흐름도이다. 영상 부호화 장치는 영상을 부호화하는 장치로써 크게 블록 분할부, 예측부, 변환부, 양자화부, 엔트로피 부호화부, 역 양자화부, 역 변환부, 가산부, 인루프 필터부, 메모리부, 감산부를 포함할 수 있다.
블록 분할부(101)는 최대 크기의 부호화 하고자 하는 블록(이하, 최대 부호화 블록이라 칭함)으로부터 최소 크기의 부호화 하고자 하는 블록(이하, 최소 부호화 블록이라 칭함)까지 분할해 나간다. 블록 분할 방법에는 다양한 방법이 있다. 쿼드-트리 분할(이하, QT(Quad-Tree) 분할이라 칭함)은 현재 부호화 블록을 정확히 사분하는 분할이다. 이진-트리 분할(이하, BT(Binary-Tree) 분할이라 칭함)은 부호화 블록을 가로 방향 혹은 세로 방향으로 정확히 이분하는 분할이다. 이 외에 다양한 분할 방법이 있을 수 있다. 또한, 여러 분할 방법들을 동시에 고려하여 분할해 나가는 방법도 가능하다.
도 2는 영상 부호화 장치에서 블록 분할부의 동작 흐름을 나타낸다. 상위 심도 블록에서 QT 분할(201) 혹은 BT 분할(203) 중 분할 방법이 선택 된다. QT 분할이 이루어질 경우, 상위 심도 블록을 정 사분(202)하여 하위 심도 블록을 생성하여 현재 블록을 결정한다. BT 분할이 이루어질 경우, 상위 심도 블록을 정 이분(204)하여 하위 심도 블록을 생성하여 현재 블록을 결정한다.
예측부(102)는 현재 원본 블록에서 현재 예측 하고자 하는 블록(이하, 예측 블록이라 칭함)의 주변 화소나 이전에 이미 부호화/복호화가 끝난 참조 픽쳐 내 화소들을 이용하여 예측 블록을 생성한다. 예측 블록은 부호화 블록 내에서 1개 혹은 그 이상의 예측 블록들이 생성될 수 있다. 부호화 블록 내 예측 블록이 1개일 경우, 예측 블록은 부호화 블록과 동일한 형태이다. 동영상 신호의 예측 기술에는 크게 화면 내 예측과 화면 간 예측으로 구성 되어 있는데, 화면 내 예측은 현재 블록의 주변 화소들을 이용하여 예측 블록을 생성하는 방식이고, 화면 간 예측은 이전에 이미 부호화/복호화가 끝난 참조 픽쳐에서 현재 블록과 가장 유사한 블록을 찾아서 예측 블록을 생성하는 방식이다. 그 후, 원본 블록과 예측 블록을 뺀 잔차 블록을 율-왜곡 최적화(RDO: Rate-Distortion Optimization) 등 다양한 기법을 이용하여 예측 블록의 최적 예측 모드를 결정한다. RDO 비용 계산식은 수학식 1과 같다.
Figure pat00001
D, R, J는 각각 양자화에 의한 열화, 압축 스트림의 레이트, RD 비용이고, Φ는 부호화 모드, λ는 라그랑지안 승수(Lagrangian multiplier)로 에러의 양과 비트량 간의 단위를 일치시키기 위한 스케일 보정용 계수로 사용한다. 부호화 과정에서 최적의 부호화 모드로 선택되기 위해서는 해당 모드를 적용했을 때의 J 즉, RD-비용값이 다른 모드를 적용했을 때보다 작아야 하는데, RD-비용값을 구하는 식에는 비트율과 에러를 동시에 고려하여 계산한다.
도 3은 영상 부호화 장치의 예측부 내의 흐름을 설명한 흐름도이다. 원본 정보와 복원 정보를 이용하여 화면 내 예측을 수행(301)하는 경우, 각 예측 모드 별로 최적 화면 내 예측 모드를 RD-비용값을 이용하여 결정(302)하고, 예측 블록을 생성한다. 복원 정보를 이용하여 화면 간 예측을 수행(303)하는 경우, SKIP 모드, Merge 모드, AMVP 모드에 대해서 RD-비용값을 계산한다. Merge 후보 탐색부(304)에서는 SKIP 모드와, Merge 모드를 위한 후보 움직임정보 세트를 구성한다. 해당 후보 움직임정보 세트 중, 최적 움직임정보를 RD-비용값을 이용하여 결정(305)한다. AMVP 후보 탐색부(306)에서는 AMVP 모드를 위한 후보 움직임정보 세트를 구성한다. 해당 후보 움직임정보 세트들을 이용하여 움직임 추정을 수행(307)하고, 최적 움직임정보를 결정한다. 각 모드들에서 결정된 최적 움직임정보를 이용하여 움직임보상을 수행(308)하여 예측 블록을 생성한다.
도 4는 상기 영상 부호화 장치 내 예측부에서 움직임 추정부의 흐름을 설명한 것이다. AMVP 모드의 후보 움직임정보를 이용하여 복원 픽쳐 내에서 움직임 추정 시작 지점을 결정(401)한다. 이 때, 움직임 추정의 시작 지점은 AMVP 후보 움직임 정보(즉, 이 정보가 Motion Vector Predictor를 의미함)를 이용하여 결정하지 않고, 기 설정된 임의의 시작 지점에서 움직임 추정을 시작할 수도 있다. 움직임 추정을 위한 움직임벡터의 탐색 최대/최소 정밀도(N, M)를 결정(402)하고, 현재 추정 정밀도 N에서의 움직임 추정 패턴을 결정하고 움직임 추정을 수행(403)한다. 여기서, 움직임 추정 패턴은 도 10을 참조한다. 도 10에서는 4가지의 움직임 추정 패턴에 대한 예시 그림을 나타낸 것이다. 각 예시 그림에서 R 표시가 된 화소 지점은 현재 추정중인 화소 지점을 의미한다. S1 표시가 된 화소 지점은 R 화소를 기준으로 인접한 화소 지점들 중, 각 패턴 별로 1단계 움직임 추정되는 화소 지점을 의미한다. S2 표시가 된 화조 지점은 S1 화소 지점들 중, 움직임 추정 비용값이 가장 작은 지점을 기준으로 동일한 패턴의 인접한 화소 지점들을 의미한다. 이와 같은 방법으로 SL(L=1, 2, ..)지점까지 움직임 추정을 반복 수행할 수 있다. 움직임 추정을 수행한 후, 현재 움직임 추정 정밀도 N을 세밀화(404)한다. 세밀화된 정밀도 N이 최소 추정 정밀도 M보다 작아진다면 현재 정밀도까지의 최적 움직임정보를 현재 블록의 최적 움직임정보로 결정하여 본 흐름도를 종료하고, 그렇지 않으면 403 단계로 돌아가서 전술한 과정을 반복한다.
상기 전술한 화면 간 예측은 3가지 모드(SKIP 모드, Merge 모드, AMVP 모드)로 구성되어 있을 수 있다. 각 예측 모드는 움직임정보(예측 방향 정보, 참조 픽쳐 정보, 움직임 벡터)를 이용하여 현재 블록의 예측 블록을 구하고, 움직임정보를 이용한 추가적인 예측 모드가 있을 수 있다.
SKIP 모드는 이미 복원된 영역의 움직임정보를 이용하여 최적 예측 정보를 결정한다. 복원된 영역 내에서 움직임정보 후보군을 구성하여 해당 후보군 중, RD-비용값이 최소인 후보를 예측 정보로 사용하여 예측 블록을 생성하는데, 여기서 움직임정보 후보군을 구성하는 방법은 하기 설명할 MERGE 모드의 움직임정보 후보군을 구성하는 방법과 동일하므로, 본 설명에서는 생략한다.
MERGE 모드는 이미 복원된 영역의 움직임정보를 이용하여 최적 예측 정보를 결정한다는 점에서 SKIP 모드와 동일하다. 그러나 SKIP 모드는 예측 에러가 0이 되도록 하는 움직임정보를 움직임정보 후보군에서 탐색하고, MERGE 모드는 예측 에러가 0이 아닌 움직임 정보를 움직임정보 후보군에서 탐색한다는 점에서 그 차이를 달리한다. SKIP 모드와 마찬가지로, 복원된 영역 내에서 움직임정보 후보군을 구성하여 해당 후보군 중, RD-비용값이 최소인 후보를 예측 정보로 사용하여 예측 블록을 생성한다.
도 5는 SKIP 모드와 MERGE 모드의 움직임정보 후보군을 생성하는 방법을 나타낸 것이다. 움직임정보 후보군의 최대 개수는 영상 부호화 장치와 영상 복호화 장치에서 동일하게 결정할 수도 있고, 영상 부호화 장치의 상위 헤더(상위 헤더란, 비디오 파라미터단, 시퀀스 파라미터단, 픽쳐 파라미터단 등 블록의 상위단에서 전송되는 파라미터들을 의미함)에서 해당 개수 정보가 기 전송될 수도 있다. S501 단계와 S502 단계의 설명에서 공간적 후보 블록과 시간적 후보 블록이 화면 간 예측 모드로 부호화 되었을 때에만, 해당 움직임정보를 이용하여 유도된 움직임정보를 움직임정보 후보군에 포함시킨다. S501 단계에서는 동일 픽쳐 내에서 현재 블록 주변의 공간적 후보 블록 5개 중, 4개 후보를 선택한다. 공간적 후보의 위치는 도 7을 참조하고, 각 후보들의 위치는 복원된 영역 내에서 어떤 블록으로든 변경 가능하다. 공간적 후보는 A1, A2, A3, A4, A5 순으로 고려하여 먼저 사용 가능한 공간적 후보 블록의 움직임정보를 공간적 후보로 결정한다. 중복되는 움직임정보가 있을 경우, 우선 순위가 높은 후보의 움직임정보만을 고려한다. S502 단계에서는 시간적 후보 블록 2개 중, 1개 후보를 선택한다. 시간적 후보의 위치는 도 7을 참조하고, 각 후보들의 위치는 Collocated 픽쳐 내에서 현재 픽쳐의 현재 블록 위치와 동일한 위치의 블록을 기준으로 결정된다. 여기서, Collocated 픽쳐는 복원 픽쳐 내에서 영상 부호화 장치와 영상 복호화 장치에서 동일한 조건으로 설정 가능하다. 시간적 후보는 B1, B2 블록 순으로 고려하여 먼저 사용 가능한 후보 블록의 움직임 정보를 시간적 후보로 결정한다. 시간적 후보의 움직임정보를 결정하는 방법은 도 8을 참조한다. Collocated 픽쳐 내의 후보 블록(B1, B2) 움직임정보는 참조 픽쳐 B에 있는 예측 블록을 가리키고 있다. (단, 각 후보 블록의 참조 픽쳐는 서로 다를 수 있음. 본 설명에서는 편의상 이를 모두 참조 픽쳐 B라고 표현함) 해당 움직임벡터를 Collocated 픽쳐와 참조 픽쳐 B의 거리 대비, 현재 픽쳐와 참조 픽쳐 A의 거리의 비율을 계산하여 해당 비율만큼 후보 블록의 움직임벡터를 스케일하여 시간적 후보 움직임정보의 움직임벡터를 결정한다. 수학식 2는 스케일링 수식을 의미한다.
Figure pat00002
MV는 시간적 후보 블록 움직임정보의 움직임벡터, MVscale은 스케일링된 움직임벡터, TB는 Collocated 픽쳐와 참조 픽쳐 B의 시간적 거리, TD는 현재 픽쳐와 참조 픽쳐 A의 시간적 거리를 의미한다. 또한, 참조 픽쳐 A, 참조 픽쳐 B는 동일한 참조 픽쳐일 수도 있다. 이렇게 스케일링된 움직임벡터를 시간적 후보의 움직임벡터로 결정하고, 시간적 후보 움직임정보의 참조 픽쳐 정보는 현재 픽쳐의 참조 픽쳐로 결정하여, 시간적 후보의 움직임정보를 유도한다. S503 단계는 S501, S502 단계에서 최대 움직임정보 후보군 개수를 채우지 못했을 경우에만 수행되며, 이전 단계에서 유도된 움직임정보 후보들의 조합으로 새로운 양방향 움직임정보 후보군을 추가하는 단계이다. 양방향 움직임정보 후보란, 이전까지 유도된 과거 혹은 미래 방향의 움직임정보들을 하나씩 가져와서 새로운 후보로 조합하여 만들어내는 것이다. 도 9의 표는 양방향 움직임정보 후보 조합의 우선순위를 나타낸 것이다. 본 표의 조합 이외에 추가적인 조합이 나올 수 있으며, 본 표는 하나의 예시를 나타낸 것이다. 양방향 움직임정보 후보를 이용하여도 최대 움직임정보 후보군 개수를 채우지 못했을 경우, S504 단계를 수행한다. S504 단계에서는 움직임정보 후보의 움직임벡터를 제로 움직임벡터로 고정하고, 예측 방향에 따른 참조 픽쳐를 달리하여서 최대 움직임정보 후보군의 개수를 채운다.
AMVP 모드는 예측 방향에 따른 참조 픽쳐 별로 움직임 추정을 거쳐 최적 움직임정보를 결정한다. 여기서, 예측 방향은 과거/미래 중 한 방향만을 사용하는 단방향 일수도 있고, 과거와 미래 방향 모두를 사용하는 양방향 일수도 있다. 움직임 추정을 통해 결정된 최적 움직임정보를 이용하여 움직임 보상을 수행하여 예측 블록을 생성한다. 여기서, 예측 방향에 따른 참조 픽쳐마다 움직임 추정을 위한 움직임정보 후보군을 유도한다. 해당 움직임정보 후보군은 움직임 추정의 시작 지점으로 사용된다. AMVP 모드의 움직임 추정을 위한 움직임정보 후보군을 유도하는 방법은 도 6을 참조한다.
움직임정보 후보군의 최대 개수는 영상 부호화 장치와 영상 복호화 장치에서 동일하게 결정할 수도 있고, 영상 부호화 장치의 상위 헤더에서 해당 개수 정보가 기 전송될 수도 있다. S601 단계와 S602 단계의 설명에서 공간적 후보 블록과 시간적 후보 블록이 화면 간 예측 모드로 부호화 되었을 때에만, 해당 움직임정보를 이용하여 유도된 움직임정보를 움직임정보 후보군에 포함시킨다. S601 단계에서는 도 5의 S501 단계의 설명과 다르게, 공간적 후보로서 유도되는 개수(2개)가 다를 수 있고, 공간적 후보를 선택하기 위한 우선 순위 또한 다를 수 있다. 나머지 설명은 S501 단계의 그것과 동일하다. S602 단계는 S502 단계의 설명과 동일하다. S603 단계에서는 현재까지 유도된 후보들 중, 중복되는 움직임정보가 있다면 제거한다. S604 단계는 S504 단계의 설명과 동일하다. 이렇게 유도된 움직임정보 후보들 중, RD-비용값이 최소인 움직임정보 후보를 최적 움직임정보 후보로 선택하여 해당 움직임정보를 기준으로 움직임 추정 과정을 거쳐 AMVP 모드의 최적 움직임정보를 구한다.
변환부(103)는 원본 블록과 예측 블록의 차이인 잔차 블록을 변환하여 변환 블록을 생성한다. 변환 블록은 변환 및 양자화 과정을 위해 사용되는 가장 작은 단위이다. 변환부는 잔차 신호를 주파수 영역으로 변환하여 변환 계수를 가지는 변환 블록을 생성한다. 여기서 잔차 신호를 주파수 영역으로 변환하는 방법으로는 이산 코사인 변환(DCT: Discrete Cosine Transform)기반 변환, 이산 사인 변환(DST: Discrete Sine Transform), KLT(Karhunen Loeve Transform) 등 다양한 변환 기법을 이용할 수 있으며, 이를 이용하여 잔차 신호가 주파수 영역으로 변환되어 변환 계수가 생성 된다. 변환 기법을 편하게 사용하기 위해 기저벡터(basis vector)를 이용하여 행렬 연산을 하게 되는데 예측 블록이 어떤 예측 모드로 부호화 되었는지에 따라서 행렬 연산 시 변환 기법들을 다양하게 섞어 사용할 수 있다. 예를 들어, 화면 내 예측 시 예측 모드에 따라 가로 방향으로는 이산 코사인 변환을 사용하고 세로 방향으로는 이산 사인 변환을 사용 할 수도 있다.
양자화부(104)는 변환 블록을 양자화 하여 양자화된 변환 블록을 생성한다. 즉, 양자화부는 변환부(103)로부터 생성되는 변환 블록의 변환 계수들을 양자화 하여 양자화된 변환 계수를 가지는 양자화된 변환 블록(Quantized Transform Coefficient)을 생성한다. 양자화 방법으로는 데드존 균일 경계 양자화(DZUTQ: Dead Zone Uniform Threshold Quantization) 또는 양자화 가중치 행렬 (Quantization Weighted Matrix) 등이 이용될 수 있지만, 이를 개량한 양자화 등 다양한 양자화 방법이 이용될 수 있다.
한편, 이상에서는 영상 부호화 장치가 변환부 및 양자화부를 포함하는 것을 도시하고 설명 했지만, 변환부 및 양자화부는 선택적으로 포함될 수 있다. 즉, 영상 부호화 장치는 잔차 블록을 변환하여 변환 블록을 생성하고 양자화 과정은 수행하지 않을 수 있으며, 잔차 블록을 주파수 계수로 변환하지 않고 양자화 과정만을 수행할 수 있을 뿐만 아니라, 심지어는 변환과 양자화 과정을 모두 수행하지 않을 수 있다. 영상 부호화 장치에서 변환부와 양자화부 중 일부 과정이 수행되지 않거나, 모든 과정이 수행 되지 않더라도 엔트로피 부호화부의 입력으로 들어가는 블록을 통상적으로 '양자화된 변환 블록'이라 일컫는다.
엔트로피 부호화부(105)는 양자화된 변환 블록을 부호화하여 비트스트림을 출력한다. 즉, 엔트로피 부호화부는 양자화부로부터 출력되는 양자화된 변환 블록의 계수들을 엔트로피 부호화(Entropy Encoding) 등 다양한 부호화 기법을 이용하여 부호화하고, 후술하는 영상 복호화 장치에서 해당 블록을 복호화 하는데 필요한 부가적인 정보들(예를 들면, 예측 모드에 대한 정보(예측 모드에 대한 정보란 예측부에서 결정된 움직임정보 혹은 화면 내 예측 모드 정보 등이 포함될 수 있음), 양자화 계수 등)을 포함하는 비트스트림을 생성하고 출력한다.
역 양자화부(106)는 양자화된 변환 블록에 대하여 양자화 시에 사용한 양자화 기법을 역으로 수행하여 역 양자화 변환 블록을 복원한다.
역 변환부(107)는 변환 시에 사용한 방법과 동일한 방법을 이용하여 역 양자화 변환 블록을 역 변환하여 잔차 블록을 복원하는데, 변환부에서 이용한 변환 기법을 역으로 수행하여 역 변환한다.
한편, 이상에서는 역 양자화부와 역 변환부는 양자화부와 변환부에서 사용한 양자화 방식과 변환 방식을 역으로 사용하여 역 양자화 및 역 변환 할 수 있다. 또한 변환부와 양자화부에서 양자화만을 수행하고 변환을 수행하지 않은 경우에는 역 양자화만을 수행하고 역 변환을 수행하지 않을 수 있다. 만약, 변환 및 양자화를 모두 수행하지 않은 경우, 역 양자화부와 역 변환부도 역 변환 및 역 양자화를 모두 수행하지 않거나 영상 부호화 장치에 포함되지 않고 생략 될 수 있다.
가산부(108)는 역 변환부에서 생성된 잔차 신호와, 예측을 통하여 생성된 예측 블록을 가산하여 현재 블록을 복원한다.
필터부(109)는 현재 픽쳐 내 모든 블록들이 복원된 이후, 픽쳐 전체에 걸쳐서 추가적으로 필터링 해주는 과정으로 디블로킹 필터링, SAO(Sample Adaptive Offset) 등이 있다. 디블로킹 필터링이란 영상을 블록 단위로 부호화하면서 발생하는 블록 왜곡을 감소시키는 작업을 말하며, SAO(Sample Adaptive Offset)란 복원 화소에 특정 값을 감산하거나 가산함으로써, 복원 영상과 원본 영상간 차이를 최소화시키는 작업을 말한다.
메모리(110)는 역 변환부에서 생성된 잔차 신호와, 예측을 통하여 생성된 예측 블록을 가산한 후, 인루프 필터부에서 추가적인 필터링을 거친 복원된 현재 블록을 저장하며, 다음 블록 또는 다음 사진 등을 예측하는데 활용 될 수 있다.
감산부(111)는 현재 원본 블록에서 예측 블록을 감산하여 잔차 블록을 생성한다.
도 11은 영상 부호화 장치에서 코딩 정보의 부호화 흐름을 나타낸 흐름도이다. S1101 단계에서는 현재 부호화 블록의 분할 여부를 알려주는 정보를 부호화한다. S1102 단계에서는 현재 부호화 블록의 분할 여부를 판단한다. S1102 단계에서 현재 부호화 블록이 분할이 되었다면 S1103 단계에서 QT 분할, BT 가로 분할, BT 세로 분할 중 어떤 분할 방법이 사용되었는지를 부호화한다. S1104 단계에서는 분할 방법에 맞게 현재 부호화 블록을 분할한다. S1105 단계에서는 현재 부호화 블록 내에서 분할된 첫 번째 서브 부호화 블록으로 이동한 후, S1101 단계로 되돌아간다. S1102 단계에서 현재 부호화 블록이 분할 되지 않았다면 S1106 단계에서 SKIP 모드의 동작 정보를 부호화한다. S1107 단계에서는 SKIP 모드의 동작 여부를 판단한다. S1107 단계에서 SKIP 모드가 동작한다면 S1113 단계에서 SKIP 모드를 위한 Merge 후보 색인 정보를 부호화한다. 이 후, S1123 단계로 넘어간다. 해당 설명은 하기 상세히 하기로 한다. S1107 단계에서 SKIP 모드가 동작하지 않는다면 S1108 단계에서 예측 모드를 부호화한다. S1109 단계에서는 예측 모드가 화면 간 예측인지 화면 내 예측 모드인지를 판단한다. S1109 단계에서 예측 모드가 화면 내 예측 모드였다면, S1110 단계에서 화면 내 예측 모드 정보들을 부호화하고, S1123 단계로 넘어간다. 해당 설명은 하기 상세히 하기로 한다. S1109 단계에서 예측 모드가 화면 간 예측 모드였다면, S1111 단계에서 Merge 모드의 동작 정보를 부호화한다. S1112 단계에서는 Merge 모드의 동작 여부를 판단한다. S1112 단계에서 Merge 모드가 동작한다면 S1113 단계로 넘어가서 Merge 모드를 위한 Merge 후보 색인 정보를 부호화한다. S1112 단계에서 Merge 모드가 동작하지 않는다면 S1114 단계에서 예측 방향을 부호화한다. 여기서 예측 방향은 과거 방향, 미래 방향, 양방향 중 하나일 수 있다. S1115 단계에서는 예측 방향이 미래방향인지 아닌지를 판단한다. S1115 단계에서 예측 방향이 미래 방향이 아니었다면 S1116 단계에서 과거 방향의 참조 픽쳐 색인 정보를 부호화한다. S1117 단계에서는 과거 방향의 MVD(Motion Vector Difference) 정보를 부호화한다. S1118 단계에서는 과거 방향의 MVP(Motion Vector Predictor) 정보를 부호화한다. S1115 단계에서 예측 방향이 미래 방향 혹은 양방향이거나 S1118 단계가 끝나면 S1119 단계에서 예측 방향이 과거 방향인지 아닌지를 판단한다. S1119 단계에서 예측 방향이 과거 방향이 아니었다면 S1120 단계에서 미래 방향 참조 픽쳐 색인 정보를 부호화한다. S1121 단계에서는 미래 방향의 MVD 정보를 부호화한다. S1122 단계에서는 미래 방향의 MVP 정보를 부호화한다. S1119 단계에서 예측 방향이 과거 방향 혹은 양방향이거나 S1122 단계가 끝나면 S1123 단계에서 모든 서브 부호화 블록의 부호화가 종료 되었는지를 판단한다. 여기서, S1113 단계가 종료된 후에도 본 단계의 과정이 수행된다. 종료 되었다면 본 흐름도를 종료하고, 종료되지 않았다면 S1124 단계에서 현재 서브 부호화 블록에서 다음 서브 부호화 블록으로 이동하고, S1101 단계에서부터 전술한 과정을 반복한다.
도 12는 영상 복호화 장치의 구성을 간략하게 나타낸 블록 흐름도이다. 영상 복호화 장치는 영상을 복호화하는 장치로써, 크게 블록 엔트로피 복호화부, 역 양자화부, 역 변환부, 예측부, 가산부, 인루프 필터부, 메모리부를 포함할 수 있다. 영상 부호화 장치에서 부호화 블록은 영상 복호화 장치에서 복호화 블록이라 칭한다.
엔트로피 복호화부(1201)는 영상 부호화 장치로부터 전송받은 비트스트림을 해석하여 해당 블록을 복호화 하는데 필요한 여러 정보들과 양자화된 변환 계수를 읽어 들인다.
역 양자화부(1202)는 엔트로피 복호화부에서 복호화한 양자화 계수에 대하여 양자화 시에 사용한 양자화 기법을 역으로 수행하여 역 양자화된 계수를 가지는 역 양자화되 블록을 복원한다.
역 변환부(1203)는 변환 시에 사용한 방법과 동일한 방법을 이용하여 역 양자화 변환 블록을 역 변환하여 차분 신호를 가지는 잔차 블록을 복원하는데, 변환부에서 이용한 변환 기법을 역으로 수행하여 역 변환한다.
예측부(1204)는 엔트로피 복호화부에서 복호화한 예측 모드 정보를 이용하여 예측 블록을 생성하는데, 이는 영상 부호화 장치의 예측부에서 수행했던 예측 방식과 동일한 방식을 이용한다.
가산부(1205)는 역 변환부에서 복원된 잔차 신호와, 예측을 통하여 생성된 예측 블록을 가산하여 현재 블록을 복원한다.
필터부(1206)는 현재 픽쳐 내 모든 블록을 복원한 이후, 픽쳐 전체에 걸쳐서 추가적인 필터링은 하는 과정으로 디블로킹 필터링, SAO(Sample Adaptive Offset) 등이 있으며, 상세한 내용은 기 전술한 영상 부호화 장치의 인루프 필터부에서 설명한 바와 동일하다.
메모리(1207)는 역 변환부에서 생성된 잔차 신호와, 예측을 통하여 생성된 예측 블록을 가산한 후, 인루프 필터부에서 추가적인 필터링을 거친 복원된 현재 블록을 저장하며, 다음 블록 또는 다음 사진 등을 예측하는데 활용 될 수 있다.
도 13은 영상 복호화 장치에서 블록 분할부의 동작 흐름을 나타낸다. 상위 심도 블록 레이어에서 분할 정보를 추출하고(1301) QT 분할(1302) 혹은 BT 분할(1304) 중 분할 방법이 선택 된다. QT 분할이 이루어질 경우, 상위 심도 블록을 정 사분(1303)하여 하위 심도 블록을 생성하여 현재 블록을 결정한다. BT 분할이 이루어질 경우, 상위 심도 블록을 정 이분(1305)하여 하위 심도 블록을 생성하여 현재 블록을 결정한다.
도 14는 영상 복호화 장치의 예측부 내의 흐름을 설명한 흐름도이다. 예측 모드가 화면 내 예측이라면, 최적 화면 내 예측 모드 정보를 결정(1401)하고, 화면 내 예측을 수행(1402)하여 예측 블록을 생성한다. 예측 모드가 화면 간 예측이라면, SKIP, Merge, AMVP 모드 중 최적 예측 모드를 결정(1403)한다. SKIP 모드 혹은 Merge 모드로 복호화할 경우, Merge 후보 탐색부(1404)에서 SKIP 모드와, Merge 모드를 위한 후보 움직임정보 세트를 구성한다. 해당 후보 움직임정보 세트 중, 최적 움직임정보를 결정(1405)한다. AMVP 모드로 복호화할 경우, AMVP 후보 탐색부(1406)에서는 AMVP 모드를 위한 후보 움직임정보 세트를 구성한다. 해당 후보 움직임정보 후보들 중, 전송된 MVP 정보를 이용하여 최적 움직임 정보를 결정(1407)한다. 이후, 각 모드들에서 결정된 최적 움직임정보를 이용하여 움직임 보상을 수행(1408)하여 예측 블록을 생성한다.
도 15는 영상 복호화 장치에서 코딩 정보의 복호화 흐름을 나타낸 흐름도이다. S1501 단계에서는 현재 복호화 블록의 분할 여부를 알려주는 정보를 복호화한다. S1502 단계에서는 현재 복호화 블록의 분할 여부를 판단한다. S1502 단계에서 현재 복호화 블록이 분할이 되었다면 S1503 단계에서 QT 분할, BT 가로 분할, BT 세로 분할 중 어떤 분할 방법이 사용되었는지를 복호화한다. S1504 단계에서는 분할 방법에 맞게 현재 복호화 블록을 분할한다. S1505 단계에서는 현재 복호화 블록 내에서 분할된 첫 번째 서브 복호화 블록으로 이동한 후, S1501 단계로 되돌아간다. S1502 단계에서 현재 복호화 블록이 분할 되지 않았다면 S1506 단계에서 SKIP 모드의 동작 정보를 복호화한다. S1507 단계에서는 SKIP 모드의 동작 여부를 판단한다. S1507 단계에서 SKIP 모드가 동작한다면 S1513 단계에서 SKIP 모드를 위한 Merge 후보 색인 정보를 복호화한다. 이 후, S1523 단계로 넘어간다. 해당 설명은 하기 상세히 하기로 한다. S1507 단계에서 SKIP 모드가 동작하지 않는다면 S1508 단계에서 예측 모드를 복호화한다. S1509 단계에서는 예측 모드가 화면 간 예측인지 화면 내 예측 모드인지를 판단한다. S1509 단계에서 예측 모드가 화면 내 예측 모드였다면, S1510 단계에서 화면 내 예측 모드 정보들을 복호화하고, S1523 단계로 넘어간다. 해당 설명은 하기 상세히 하기로 한다. S1509 단계에서 예측 모드가 화면 간 예측 모드였다면, S1511 단계에서 Merge 모드의 동작 정보를 복호화한다. S1512 단계에서는 Merge 모드의 동작 여부를 판단한다. S1512 단계에서 Merge 모드가 동작한다면 S1513 단계로 넘어가서 Merge 모드를 위한 Merge 후보 색인 정보를 복호화한다. S1512 단계에서 Merge 모드가 동작하지 않는다면 S1514 단계에서 예측 방향을 복호화한다. 여기서 예측 방향은 과거 방향, 미래 방향, 양방향 중 하나일 수 있다. S1515 단계에서는 예측 방향이 미래방향인지 아닌지를 판단한다. S1515 단계에서 예측 방향이 미래 방향이 아니었다면 S1516 단계에서 과거 방향의 참조 픽쳐 색인 정보를 복호화한다. S1517 단계에서는 과거 방향의 MVD(Motion Vector Difference) 정보를 복호화한다. S1518 단계에서는 과거 방향의 MVP(Motion Vector Predictor) 정보를 복호화한다. S1515 단계에서 예측 방향이 미래 방향 혹은 양방향이거나 S1518 단계가 끝나면 S1519 단계에서 예측 방향이 과거 방향인지 아닌지를 판단한다. S1519 단계에서 예측 방향이 과거 방향이 아니었다면 S1520 단계에서 미래 방향 참조 픽쳐 색인 정보를 복호화한다. S1521 단계에서는 미래 방향의 MVD 정보를 복호화한다. S1522 단계에서는 미래 방향의 MVP 정보를 복호화한다. S1519 단계에서 예측 방향이 과거 방향 혹은 양방향이거나 S1522 단계가 끝나면 S1523 단계에서 모든 서브 복호화 블록의 복호화가 종료 되었는지를 판단한다. 여기서, S1513 단계가 종료된 후에도 본 단계의 과정이 수행된다. 종료 되었다면 본 흐름도를 종료하고, 종료되지 않았다면 S1524 단계에서 현재 서브 복호화 블록에서 다음 서브 복호화 블록으로 이동하고, S1501 단계에서부터 전술한 과정을 반복한다.
본 실시예에서는 현재 부호화 블록의 주변 움직임 정보를 이용하여 현재 부호화 블록 경계에서 움직임 경계점을 탐색하여 현재 부호화 블록을 분할하는 방법을 설명하고, 각 서브 부호화 블록을 DMVD(Decoder-side Motion Vector Derivation) 모드를 이용하여 예측하는 방법에 대해서 설명할 것이다.
도 16은 일 실시예에 따른 영상 부호화 장치 내 블록 분할부이다. 상위 심도 블록에서 1601~1604 과정은 도 2의 201~204 과정과 동일한 과정을 거쳐 현재 블록을 결정한다. 상위 심도 블록을 MT(Motion Tree) 분할(1605)할 경우, 움직임 경계점을 탐색(1606)한다. 여기서, MT 분할이란 상위 심도 블록에서 움직임 경계점을 탐색하여, 해당 경계점에서 블록을 분할하는 방법을 나타낸다. 움직임 경계점을 탐색하는 방법은 하기 상세히 설명한다. 탐색된 움직임 경계점을 기준으로 상위 심도 블록을 분할(1607)하여 현재 블록을 결정한다. 상위 심도 블록을 분할하는 방법도 하기 상세히 설명한다.
도 17은 일 실시예에 따른 영상 복호화 장치 내 블록 분할부이다. 상위 심도 블록에서 분할 정보를 추출(1701)한다. 분할 정보를 통해 QT 분할인지 BT 분할인지를 MT 분할인지를 결정한다. 1702~1705 과정은 도 13의 1302~1305 과정과 동일한 과정을 거쳐 현재 블록을 결정한다. MT 분할(1706)인 경우, 움직임 경계점을 탐색(1707)한다. 움직임 경계점을 탐색하는 방법은 하기 상세히 설명한다. 탐색된 움직임 경계점을 기준으로 상위 심도 블록을 분할(1708)하여 현재 블록을 결정한다. 상위 심도 블록을 분할하는 방법도 하기 상세히 설명한다.
도 16, 17에서 QT, BT, MT 분할은 최대 부호화 블록에서 최소 부호화 블록까지 적용되어 사용될 수도 있지만, 부호화 블록의 크기 및 심도에 따라서 일부 분할 방법만을 사용하여 분할이 수행될 수도 있다. 예를 들어, 최대 부호화 블록의 크기가 64x64이고, 최소 부호화 블록의 크기가 4x4일 경우에 대해서 설명한다. QT 분할이 이루어질 수 있는 부호화 블록 크기는 64x64 ~ 16x16 이고, BT, MT 분할이 이루어질 수 있는 최대 부호화 블록 크기는 16x16, 분할 가능 심도가 3인 경우에 도 32를 참조한다. 도 32에서 실선은 QT 분할을 의미하고, 점선은 BT 분할, 점선 조합선은 MT 분할을 의미한다. 전술한 조건하에서 도 32처럼 부호화 블록 분할이 이루어질 수 있다. MT 분할이 발생할 경우, 현재 부호화 블록은 홀수 크기의 부호화 블록으로 분할 될 수 있다. 만약, 17x8 크기의 부호화 블록이 발생했을 때, 해당 부호화 블록에서 BT 분할이 이루어질 경우 9x4, 8x4 부호화 블록으로 분할하여 코딩 할 수 있다. 또한, 분할 방법 별 부호화 블록의 최대 크기, 최소 크기 및 분할 가능 심도 등은 상위헤더에서 기 전송될 수 있다.
도 18은 일 실시예에 따른 영상 부호화 장치 내 예측부이다. 1801~1807 과정은 도 3의 301~307 과정과 동일한 과정을 수행한다. 1801~1802 과정을 거쳐 결정된 최적 화면 내 예측 모드를 이용하여 예측 블록을 생성하거나, 1803~1807 과정을 거쳐 결정된 최적 움직임정보를 이용하여 움직임 보상(1810)을 수행하고 예측 블록을 생성할 수 있다. 추가적으로 화면 간 예측이 수행될 경우 DMVD 모드를 이용한 움직임정보 결정 방법이 있다. 영상 부호화/복호화 장치에서 동일하게 움직임 추정을 하기 위해 복원 영역의 움직임정보들을 이용하여 초기 움직임정보를 결정(1808)한다. 결정된 초기 움직임정보들을 이용하여 움직임 추정을 수행(1809)하여 최적 움직임정보를 결정하고, 움직임 보상(1810)을 수행하여 예측 블록을 생성한다.
도 19는 일 실시예에 따른 영상 복호화 장치 내 예측부이다. 1901~1907 과정은 도 14의 1401~1407 과정과 동일한 과정을 수행한다. 1901~1902 과정을 거쳐 결정된 최적 화면 내 예측 모드를 이용하여 예측 블록을 생성하거나, 1903~1907 과정을 거쳐 결정된 최적 움직임정보를 이용하여 움직임 보상(1910)을 수행하고 예측 블록을 생성할 수 있다. 추가적으로 화면 간 예측이 수행될 경우 DMVD 모드를 이용한 움직임정보 결정 방법이 있다. 영상 부호화/복호화 장치에서 동일하게 움직임 추정을 하기 위해 복원 영역의 움직임정보들을 이용하여 초기 움직임정보를 결정(1908)한다. 결정된 초기 움직임정보들을 이용하여 움직임 추정을 수행(1909)하여 최적 움직임정보를 결정하고, 움직임 보상(1910)을 수행하여 예측 블록을 생성한다.
도 18, 19의 DMVD 움직임 추정부(1809, 1909)에서 템플릿 블록을 이용한 움직임 추정을 통해 얻어진 최적 움직임정보를 현재 예측 블록에 적용할 수도 있지만, 템플릿 블록 내 복원된 움직임 정보를 그대로 현재 예측 블록의 최적 움직임정보로 결성할 수도 있다. 또한, 현재 부호화 블록이 상위 심도 블록에서 MT 분할되어 생성되었을 경우에는 현재 부호화 블록의 예측 모드는 DMVD 모드만을 사용할 수 있다. 또한, DMVD 모드로 유도된 최적 움직임정보를 AMVP 모드의 후보로써 사용할 수도 있다.
도 20은 영상 부호화/복호화 장치 내 예측부에서의 DMVD 움직임 추정부이다. 영상 부호화/복호화 장치 내의 DMVD 초기 움직임정보 탐색부에서 결정된 초기 움직임정보를 이용하여 DMVD 모드를 수행 후, 최적 움직임정보를 결정한다. DMVD 모드에는 템플릿을 사용하는 모드(이하, '템플릿 매칭 모드'라 칭함)와 템플릿을 사용하지 않는 모드(이하, '양방향 매칭 모드'라 칭함)가 있다. 양방향 매칭 모드를 이용(2001)할 경우, 각 초기 움직임정보들의 단방향 움직임벡터를 선형적으로 반대 예측 방향의 참조 픽쳐로 스케일링한다. 여기서, 움직임벡터의 스케일링은 현재 픽쳐와 각 방향의 참조 픽쳐들간의 거리에 비례하여 수행된다. 이렇게 양방향으로 움직임벡터를 결정(2002)한 후, 과거 방향과 미래 방향의 예측 블록 간 차이가 최소가 되게 하는 각 방향의 움직임벡터를 최적 움직임정보로 결정(2003)한다. 도 21의 2102 그림은 양방향 매칭 모드에서 현재 블록의 과거, 미래 방향의 움직임벡터가 선형적으로 생성된 후, 양방향의 두 예측 블록의 평균으로 현재 블록의 예측 블록을 생성하는 방법을 나타낸 것이다. 템플릿 매칭 모드를 이용(2004)할 경우, 현재 블록 주변의 복원 영역에서 템플릿 블록을 결정(2005)한다. 템플릿 블록은 도 22의 2201~2203의 예시 그림처럼 설정할 수 있다. 2201 그림은 템플릿 블록을 현재 블록의 좌하단(Template A), 좌상단(Template B), 상좌측(Template C), 상우측(Template D)에서 각각 결정한다. 각 템플릿 블록의 크기와 모양은 다양하게 결정할 수 있다. 2202 그림은 2201 그림의 방법과 마찬가지로 템플릿 블록을 현재 블록의 좌하단(Template A), 좌상단(Template B), 상좌측(Template C), 상우측(Template D)에서 결정할 수 있지만, 현재 블록과 인접한 좌측, 상단의 복원 영역을 모두 사용한다 점에서 그 차이를 달리한다. 2203 그림은 2201, 2202 그림의 템플릿 블록 생성 방법을 동시에 고려하여 템플릿 블록을 생성한 방법이다. 이 외에 현재 블록과 인접한 좌측, 상단의 복원 영역을 하나의 템플릿 블록으로 결정하여 사용할 수도 있는 등 다양한 방법으로 현재 블록 주변의 복원 영역에서 템플릿 블록을 생성할 수 있다. 단, 템플릿 블록의 모양 및 크기를 나타내는 정보를 영상 부호화 장치에서 전송하여 사용할 수도 있다. 결정된 각 템플릿 블록과 가장 유사한 예측 블록을 참조 픽쳐에서 탐색하는 움직임 추정(2006)을 수행한 후, 각 템플릿 블록에 최적인 움직임정보를 추정하고, 해당 움직임정보들 중 현재 블록에 가장 적합한 움직임정보를 탐색하여 최적 움직임 정보로 결정한다. 여기서, 템플릿 블록에 최적인 움직임정보를 추정할 때, 추정 패턴은 도 10에 도시된 움직임 추정 패턴 방법 4가지 중, 임의의 패턴을 선택하여 해당 방법으로 움직임 추정을 수행할 수 있다. 움직임 추정의 비용값은 예측 에러의 양과 움직임정보의 가상 비트량의 합을 의미한다. 예측 에러는 SAD(Sum of Absolute Difference), SATD(Sum of Absolute hadamard Trnasform Difference), SSD(Sum of Square Difference) 등 다양한 계산 방법을 통해서 얻을 수 있다. 수학식 (3), (4), (5)는 각각 SAD, SATD, SSD의 계산 방법을 나타낸 수식이다.
Figure pat00003
Figure pat00004
Figure pat00005
i, j는 화소의 위치 Template(i, j)는 템플릿 블록의 화소를 의미하고, PredBlk(i, j)는 예측 블록의 화소를 의미한다. 여기서, 수학식 4의 HT() 함수는 템플릿 블록과 예측 블록의 차이값 블록을 Hadamard 변환하여 얻어진 함수값을 의미한다. 움직임정보의 가상 비트량이란 실제로 전송되는 정보는 아니지만, 영상 부호화 장치와 영상 복호화 장치에서 동일하게 예상되는 움직임정보의 가상비트량을 계산한 것이다. 예를 들어, 초기 움직임정보의 움직임벡터와 현재 움직임 추정중인 움직임정보 내 움직임벡터의 차분벡터 크기량을 계산하여 가상비트량으로 결정할 수도 있다. 이 외에 참조 픽쳐 정보에 대한 비트량을 이용하여 움직임정보 가상비트량을 계산할 수도 있다. 도 21의 2101 그림은 현재 블록과 인접한 좌측, 상단의 복원 영역을 하나의 템플릿 블록으로 하였을 때, 템플릿 블록과 가장 유사한 템플릿 블록의 예측 블록을 탐색한 후, 해당 템플릿 블록과 인접한 블록을 현재 블록의 예측 블록으로 결정하는 방법을 나타낸 것이다.
도 23은 일 실시예에 따른 움직임 경계점을 탐색하는 방법을 나타낸 흐름도이다. 본 흐름도는 일 실시예에 따른 영상 부호화/복호화 장치 내 블록 분할부의 움직임 경계점 탐색(1606, 1707) 과정에서 수행된다. 최초, 움직임 경계점의 색인 정보(이하, 'MB Idx'라 칭함)를 -1로 초기화하고 템플릿 블록의 개수는 2NumOfMB 개로 초기화한다. NumOfMB는 움직임 경계점의 개수이다. 본 실시예에서는 움직임 경계점의 개수를 최대 2개까지로 제한하여 설명하지만 그 이상의 개수를 선택할 수도 있다. CostBuf[N] 버퍼에는 각 모든 인자를 무한대로 초기화하고, IdxBuf[N] 버퍼에는 각 모든 인자를 -1로 초기화한다. 이후, 초기 움직임정보 리스트를 결정(S2301)한다. 초기 움직임정보 리스트를 결정하는 방법은 도 25를 참조한다. 도 25 표의 색인은 초기 움직임정보 우선 순위를 의미한다. AMVP 모드의 후보 움직임정보, Merge 모드의 후보 움직임정보, 현재 블록 주변의 상단, 좌측, 좌상단, 우상단, 좌하단 방향에 있는 복원 영역 내 서브 블록이 가지고 있는 움직임정보, 제로 움직임정보 등을 초기 움직임정보로 고려할 수 있으며, 이외에 복원 정보를 이용하여 다양한 움직임정보 후보들을 이용할 수 있다. 이후, MB Idx를 1 증가 시켜줌으로써 MB Idx를 업데이트(S2302) 한다. 현재 움직임 경계점을 기준으로 복원 영역 내에서 템플릿 블록을 생성(S2303)하고, 각 템플릿 블록의 최적 움직임정보를 탐색(S2304)한다. S2303, S2304 단계의 상세한 설명을 위해 도 28, 29를 참조한다. 도 28, 29는 현재 움직임 경계점을 기준으로 복원 영역에서 템플릿 블록을 결정하고, 각 템플릿 블록에 최적 움직임정보를 유도하는 방법을 나타낸 그림이다. 도 28에서는 움직임 경계점을 기준으로 일부 복원 영역만을 템플릿 블록으로 생성한다. 템플릿 A 블록과 가장 유사한 예측 블록을 참조 픽쳐에서 탐색하고, 템플릿 B 블록도 마찬가지로 탐색한다. 템플릿 C 블록은 템플릿 A, B 블록을 합친 블록을 의미하고, 템플릿 C 블록과 가장 유사한 블록을 마찬가지로 참조 픽쳐에서 탐색한다. 도 29는 도 28과 달리 현재 블록과 인접한 좌측, 상단 영역의 복원 영역 내에서 움직임 경계점을 기준으로 템플릿 A, B, C 블록을 결정하고, 각 템플릿 블록과 가장 유사한 예측 블록을 참조 픽쳐에서 탐색한다. 이후, 각 템플릿 블록의 최적 움직임정보에 대한 비용값(SAD, SATD, SSD 비용값 등을 이용)을 이용하여 현재 움직임 경계점에서의 분할 비용값을 계산한다. 여기서 분할 비용값은 다양한 정보를 이용하여 결정할 수 있다. 분할 비용값을 결정하는 제 1 방법은 템플릿 A 블록의 비용값과 템플릿 B의 비용값의 합을 분할 비용값으로 결정하는 것이다. 이 때 템플릿 C 블록의 비용값은 이용하지 않는다. 분할 비용값을 결정하는 제 2 방법은 수학식 6을 참조한다.
Figure pat00006
수학식 6은 템플릿 C 블록의 비용값 대비 템플릿 A, B 블록의 비용값의 합의 변화율을 계산한 것이다.
현재 움직임 경계점에서의 분할 비용값이 CostBuf 버퍼 내 1개 이상의 원소값보다 작은지 아닌지를 판단(S2306)하고, 현재 분할 비용값이 Costbuf 버퍼 내 1개 이상의 원소값보다 작다면, CostBuf[N-1] 버퍼에 현재 분할 비용값을, IdxBuf[N-1] 버퍼에 현재 MB Idx를 저장(S2307)한다. 이후, CostBuf 버퍼 내 원소값을 오름차순 정렬(S2308)하고, IdxBuf 버퍼 내 원소값을 CostBuf 버퍼 정렬 순서에 따라 동일한 방법으로 정렬(S2309)한다. 예를 들어, N이 4일 때, CostBuf 버퍼 4개 원소가 {100, 200, 150, 180}로 저장되어 있고, IdxBuf 버퍼 4개 원소가 {0, 3, 2, 8}로 저장되어 있을 때, CostBuf는 {100, 150, 180, 200} 순으로 정렬되고, IdxBuf는 CostBuf 버퍼와 동일한 정렬 방법으로 {0, 2, 8, 3} 순으로 정렬된다. 현재 분할 비용값이 Costbuf 버퍼 내 어떤 원소보다도 크거나, S2309 단계가 끝나면 현재 MB Idx가 마지막 탐색 후보 분할 경계점인지를 판단(S2310)한다. 현재 움직임 경계점이 마지막 탐색 후보 분할 경계점 이었다면 본 흐름도를 종료하고, 그렇지 않다면 S2302 단계로 돌아가서 MB Idx를 업데이트하고 전술한 과정을 반복한다.
도 24는 일 실시예에 따른 움직임 경계점을 탐색하는 방법으로, 도 23 흐름도의 고속화 알고리즘이다. 본 흐름도는 도 23과 마찬가지로 일 실시예에 따른 영상 부호화/복호화 장치 내 블록 분할부의 움직임 경계점 탐색(1606, 1707) 과정에서 수행되거나, 예측부의 DMVD 움직임 추정부에 수행될 수 있다. 최초의 초기 정보는 도 23의 초기 정보들과 동일하다. 초기 움직임정보 리스트를 설정(S2401)하는 방법은 도 23의 S2301 단계의 설명과 동일하다. 복원 영역 내에서 현재 블록과 인접한 좌측, 상단 영역과 필요한 경우 좌상단, 우상단, 좌하단 영역의 인접하지 않은 일부 영역을 하나의 템플릿 블록으로 결정(S2402)한다. 템플릿 블록에 대해서 초기 움직임정보를 이용한 움직임추정 범위 내에서 모든 움직임정보의 비용값을 라인 단위로 계산하여 저장(S2403)한다. 여기서 라인 단위로 비용값을 저장하는 방법은 도 26을 참조한다. 도 26에서는 복원 영역 내에서 템플릿 블록으로 결정된 영역에서 라인 단위로 비용값을 저장하는 방법을 나타낸 것이다. H-Cost0 ~ H-CostH-1 의 의미는 현재 블록 좌측에서 각 움직임정보에 해당하는 비용값을 라인 단위로 저장한 것이고, W-Cost0 ~ W-CostW-1 의 의미는 현재 블록 상단에서 각 움직임정보에 해당하는 비용값을 라인 단위로 저장한 것이다. 이후, MB Idx를 업데이트(S2404)하는 과정은 도 23의 S2302 단계의 설명과 동일하다. 이후, 현재 움직임 경계점을 기준으로 복원 영역 내에서 템플릿 블록을 재생성(S2405)한다. 템플릿 블록을 재생성하는 방법은 도 23의 S2303 단계의 설명과 동일하다. 재생성된 템플릿 블록의 최적 움직임정보에 대한 라인 단위 비용값을 S2403 단계를 통해 기계산 하였으므로, 해당 라인 단위 비용값을 이용하여 현재 움직임 경계점에서의 분할 비용값을 계산한다. 여기서 분할 비용값을 계산하는 방법은 도 3의 S2305 단계에서 설명한 그것과 동일하다. S2407~S2410 단계는 도 23의 S2306~S2309 단계의 설명과 동일하다. S2411 단계에서 현재 MB Idx가 마지막 탐색 후보 분할 경계점이 아닌 경우에는 S2404 단계로 돌아가서 전술한 과정을 반복한다.
도 23, 24를 통해서 상위 심도 블록을 1개 혹은 2개의 움직임 경계점에서 분할 시킬 수 있다. 이 때, CostBuf 버퍼 내 상위 2개의 분할 비용값의 차이가 일정 임계치 이상 차이가 난다면 해당 블록은 1개의 움직임 경계점에서 분할하고, 그렇지 않고 상위 2개의 분할 비용값이 비슷한 경우에는 2개의 움직임 경계점에서 분할할 수 있다. 또한, 해당 움직임 경계점 정보를 영상 복호화 장치로 전송하여 영상 복호화 장치에서는 도 23, 24의 과정을 생략할 수 있다. 이후 설명할 영상 부호화/복호화 장치에서의 부호화/복호화 정보에는 움직임 경계점 정보를 전송하는 내용이 포함되어 있지는 않다. 모든 MB Idx 중 최적 MB Idx를 직접 전송할 수도 있지만, 후보 MB Idx를 M개 결정한 후 M개의 MB Idx 중 RD-비용값이 최적이 되는 움직임 경계점을 전송할 수도 있다.
도 27은 움직임 경계점 개수에 따라서 상위 심도 블록(현재 블록)을 분할하는 방법을 나타낸 것이다. 도 23, 24 과정을 거쳐서 분할 비용값이 작은 순서대로 MB Idx를 알고 있으므로, 움직임 경계점을 1개만 사용할 경우, 2701 그림처럼 분할 비용값이 가 장 작은 MB Idx에 해당하는 움직임 경계점을 분할 경계점으로 결정하여 현재 블록을 하위 심도 블록(예측 블록) A, B로 분할한다. 하위 심도 블록 B는 하위 심도 블록 A의 복원이 끝나고, 템플릿 A 블록과 하위 심도 블록 A의 하단 영역을 이용하여 움직임 추정을 다시 수행하여 최적 움직임 정보를 유도할 수 있다. 움직임 경계점을 2개 사용하고 도 23, 24의 IdxBuf 배열에 상단, 좌측 방향의 MB Idx가 최소 1개 이상씩 존재할 경우, 2702 그림처럼 상단 방향에서 분할 비용값이 가장 작았던 MB Idx에 해당하는 움직임 경계점, 좌측 방향에서 분할 비용값이 가장 작았던 MB Idx에 해당하는 움직임 경계점 2개를 분할 경계점으로 결정하여 현재 블록을 하위 심도 블록 A, B, C, D로 분할한다. 하위 심도 블록 B는 하위 심도 블록 A의 복원이 끝나고, 템플릿 D 블록과 하위 심도 블록 A의 우측 영역을 이용하여 움직임 추정을 다시 수행하여 최적 움직임 정보를 유도할 수 있고, 하위 심도 블록 C는 하위 심도 블록 A의 복원이 끝나고, 템플릿 A 블록과 하위 심도 블록 A의 하단 영역을 이용하여 움직임 추정을 다시 수행하여 최적 움직임 정보를 유도할 수 있고, 하위 심도 블록 D는 하위 심도 블록 B, C의 복원이 끝나고, 하위 심도 블록 C의 우측 영역과 하위 심도 블록 B의 하단 영역을 이용하여 움직임 추정을 다시 수행하여 최적 움직임 정보를 유도할 수 있다.
예측 블록 A는 템플릿 B, C 블록을 하나의 템플릿 블록으로 이용하여 전술한 DMVD 움직임 추정을 통해 얻어질 수 있다. 예측 블록 B응 템플릿 A 블록을 하나의 템플릿 블록으로 이용하여 전술한 DMVD 움직임 추정을 통해 얻어질 수 있다. 그러나, 변환/양자화 및 역양자화/역변환 과정을 현재 블록 단위가 아닌 예측 블록 단위로 수행하여 예측 블록 A를 먼저 복원할 경우, 예측 블록 B는 예측 블록 A의 복원 영역 템플릿 C' 블록과 템플릿 A 블록을 하나의 템플릿 블록으로 이용하여 DMVD 움직임 추정을 통해 얻어질 수도 있다. 움직임 경계점을 2개 사용하고 도 23, 24의 IdxBuf 배열에 상단, 좌측 방향의 MB Idx가 최소 1개 이상씩 존재할 경우, 2702 그림처럼 상단 방향에서 분할 비용값이 가장 작았던 MB Idx에 해당하는 움직임 경계점, 좌측 방향에서 분할 비용값이 가장 작았던 MB Idx에 해당하는 움직임 경계점 2개를 분할 경계점으로 결정하여 현재 블록을 하위 심도 블록 A, B, C, D로 분할한다.
블록 A는 템플릿 B, C 블록을 하나의 템플릿 블록으로 이용하여 전술한 DMVD 움직임 추정을 통해 얻어질 수 있다. 예측 블록 B는 템플릿 블록 D를 하나의 템플릿 블록으로, 예측 블록 C는 템플릿 블록 A를 하나의 템플릿 블록으로, 예측 블록 D는 예측 블록 D, A 블록을 하나의 템플릿 블록으로 이용하여 전술한 DMVD 움직임 추정을 통해 얻어질 수 있다. 그러나, 변환/양자화 및 역양자화/역변환 과정을 현재 블록 단위가 아닌 예측 블록 단위로 수행할 경우, 예측 블록 A를 복원한 후, 예측 블록 B는 템플릿 B' 블록과 템플릿 D 블록을 하나의 템플릿 블록으로 이용하여 예측 블록 B를 생성한 후 복원하고, 예측 블록 C는 템플릿 A 블록과 템플릿 C' 블록을 하나의 템플릿 블록으로 이용하여 예측 블록 C를 생성한 후 복원하고, 예측 블록 D는 템플릿 D' 블록과 템플릿 A' 블록을 하나의 템플릿 블록으로 이용하여 예측 블록 D를 생성한 후 복원한다
도 30은 영상 부호화 장치 내 엔트로피 부호화부에서 일부 코딩 정보를 부호화하는 흐름을 나타낸 흐름도이다. 본 실시예에서는 블록의 분할 정보 및 예측 정보들을 부호화하는 일 예시 방법을 설명할 것이다. 가장 먼저 부호화 블록의 분할 여부를 알려주는 정보를 부호화(S3001)한다. 부호화 블록의 분할 여부를 판단(S3002)하여, 분할이 참이라면 QT 분할, BT 분할, MT 분할 중 어떤 분할 방법으로 분할이 이루어졌는지를 알려주는 정보를 부호화(S3003)한다. 여기서, 움직임 경계점이 1개 혹은 2개 사용하는 것으로 고정되어 MT 분할이 이루어질 경우에는 추가 부호화 정보가 없지만, 움직임 경계점이 현재 블록의 특성에 따라 1개 혹은 2개를 적응적으로 선택하여 사용할 경우에는 움직임 경계점을 몇 개 사용 했는지에 대한 정보를 추가적으로 부호화한다. 또한, 각 분할 방법 별로 기 설정된 분할 범위를 벗어나는 경우에 대해서는 해0당 분할 방법은 제외한 나머지 분할 방법들 중 하나를 부호화하게 된다. 이후, 분할 경계점에서 분할 방법에 맞게 현재 부호화 블록을 분할(S3004)한 후 분할된 첫 번째 서브 부호화 블록으로 이동(S3005)한다. 이후, S3001 단계로 돌아가서 전술한 과정을 반복한다. S3002 단계에서 분할이 거짓이라면, 현재 부호화 블록이 MT 분할에 의해서 분할된 블록인지 아닌지를 판단(S3006)한다. 현재 부호화 블록이 MT 분할에 의해서 분할된 블록이 아니라면, SKIP 모드의 동작 정보를 부호화(S3007)한다. SKIP 모드의 동작 여부를 판단(S3008)하고, 해당 정보가 거짓이라면 예측 모드 정보를 부호화(S3009)한다. 예측 모드의 종류를 판단(S3010)하여, 해당 예측 모드가 화면 간 예측 모드가 아닌 경우에는 화면 내 예측 정보들을 부호화(S3011)한 후 S3030 단계로 넘어간다. 이후 내용은 하기 상세히 설명한다. S3008 단계에서 SKIP 모드가 동작한다고 판단되었다면, DMVD 모드 동작 정보를 부호화(S3012)한다. DMVD 모드의 동작 여부를 판단(S3013)한 후, 해당 정보가 참이었다면 템플릿 정보를 부호화(S3014)한다. 여기서, 템플릿 정보는 복원 영역 내 템플릿 블록들 중, 어떤 템플릿의 움직임정보를 이용하여 현재 블록을 예측하였는지를 알려주는 정보이다. 만약 템플릿 블록이 1개라면 해당 정보는 부호화되지 않을 수 있다. 이후 S3030 단계로 넘어가는데, 마찬가지로 이후 설명은 하기 상세히 설명한다. S3006 단계에서 현재 부호화 블록이 MT 분할에 의해서 분할된 블록이라면, 마찬가지로 템플릿 정보를 부호화(S3019)한 후 S3030 단계로 넘어간다. 이후 단계는 마찬가지로 하기 상세히 설명한다. S3013 단계에서 DMVD 모드의 동작이 거짓이었다면, SKIP 모드를 위한 Merge 후보 색인 정보를 부호화(S3020)한다. S3010 단계에서 예측 모드가 화면 간 예측 모드라면 Merge 모드의 동작 정보를 부호화(S3015)한다. Merge 모드의 동작 여부를 판단(S3016)한 후, 해당 정보가 참이라면 DMVD 모드 동작 정보를 부호화(S3017)한다. DMVD 모드의 동작 여부를 판단(S3018)한 후, 해당 정보가 참이면 템플릿 정보를 부호화(S3019)하고, 해당 정보가 거짓이라면 Merge 모드를 위한 Merge 후보 색인 정보를 부호화(S3020)한다. S3019, S3020 단계가 끝난 후, S3030 단계로 넘어간다. 이후 단계는 마찬가지로 하기 상세히 설명한다. S3016 단계에서 Merge 모드의 동작이 거짓이라면 예측 방향을 부호화(S3021)한다. 예측 방향은 과거 방향, 미래 방향, 양방향 중 한가지를 의미할 수 있다. 예측 방향이 미래 방향인지 아닌지를 판단(S3022)한다. 예측 방향이 미래 방향이 아니었다면 과거 방향의 참조 픽쳐 색인 정보, 과거 방향 MVD 정보, 과거 방향 MVP 정보를 부호화(S3023, S3024, S3025)한다. 예측 방향이 미래 방향이거나 S3025 단계가 끝난 후, 예측 방향이 과거 방향인지 아닌지를 판단(S3026)한다. 예측 방향이 과거 방향이 아니었다면 미래 방향의 참조 픽쳐 색인 정보, 미래 방향 MVD 정보, 미래 방향 MVP 정보를 부호화(S3027, S3028, S3029)한다. 예측 방향이 과거 방향이거나 S3029 단계가 끝난 후, S3030 단계로 넘어간다. 해당 단계에서는 모든 서브 부호화 블록의 부호화가 종료되었는지 아닌지를 판단(S3030)한다. 모든 서브 부호화 블록이 부호화가 종료되었다면 본 흐름도를 종료하고, 그렇지 않을 경우 다음 서브 부호화 블록으로 이동(S3031)한 후에 S3001 단계로 돌아가서 전술한 과정을 반복한다.
도 31은 영상 복호화 장치 내 엔트로피 복호화부에서 일부 코딩 정보를 복호화하는 흐름을 나타낸 흐름도이다. 본 실시예에서는 도 30의 영상 부호화 장치 내 엔트로피 부호화부에서 일부 코딩 정보의 부호화 정보들을 복호화하는 방법을 설명할 것이다. 가장 먼저 복호화 블록의 분할 여부를 알려주는 정보를 복호화(S3101)한다. 복호화 블록의 분할 여부를 판단(S3102)하여, 분할이 참이라면 QT 분할, BT 분할, MT 분할 중 어떤 분할 방법으로 분할이 이루어졌는지를 알려주는 정보를 복호화(S3103)한다. 움직임 경계점이 1개 혹은 2개 사용하는 것으로 고정되어 MT 분할이 이루어질 경우에는 추가 복호화 정보가 없지만, 움직임 경계점이 현재 블록의 특성에 따라 1개 혹은 2개를 적응적으로 선택하여 사용할 경우에는 움직임 경계점을 몇 개 사용 했는지에 대한 정보를 추가적으로 복호화한다. 이후, 분할 경계점에서 분할 방법에 맞게 현재 복호화 블록을 분할(S3104)한 후 분할된 첫 번째 서브 복호화 블록으로 이동(S3105)한다. 이후, S3101 단계로 돌아가서 전술한 과정을 반복한다. S3102 단계에서 분할이 거짓이라면, 현재 복호화 블록이 MT 분할에 의해서 분할된 블록인지 아닌지를 판단(S3106)한다. 현재 복호화 블록이 MT 분할에 의해서 분할된 블록이 아니라면, SKIP 모드의 동작 정보를 복호화(S3107)한다. SKIP 모드의 동작 여부를 판단(S3108)하고, 해당 정보가 거짓이라면 예측 모드 정보를 복호화(S3109)한다. 예측 모드의 종류를 판단(S3110)하여, 해당 예측 모드가 화면 간 예측 모드가 아닌 경우에는 화면 내 예측 정보들을 복호화(S3111)한 후 S3130 단계로 넘어간다. 이후 내용은 하기 상세히 설명한다. S3108 단계에서 SKIP 모드가 동작한다고 판단되었다면, DMVD 모드 동작 정보를 복호화(S3112)한다. DMVD 모드의 동작 여부를 판단(S3113)한 후, 해당 정보가 참이었다면 템플릿 정보를 복호화(S3114)한다. 이후 S3130 단계로 넘어가는데, 마찬가지로 이후 설명은 하기 상세히 설명한다. S3106 단계에서 현재 복호화 블록이 MT 분할에 의해서 분할된 블록이라면, 마찬가지로 템플릿 정보를 복호화(S3119)한 후 S3130 단계로 넘어간다. 이후 단계는 마찬가지로 하기 상세히 설명한다. S3113 단계에서 DMVD 모드의 동작이 거짓이었다면, SKIP 모드를 위한 Merge 후보 색인 정보를 복호화(S3120)한다. S3110 단계에서 예측 모드가 화면 간 예측 모드라면 Merge 모드의 동작 정보를 복호화(S3115)한다. Merge 모드의 동작 여부를 판단(S3116)한 후, 해당 정보가 참이라면 DMVD 모드 동작 정보를 복호화(S3117)한다. DMVD 모드의 동작 여부를 판단(S3118)한 후, 해당 정보가 참이면 템플릿 정보를 복호화(S3119)하고, 해당 정보가 거짓이라면 Merge 모드를 위한 Merge 후보 색인 정보를 복호화(S3120)한다. S3119, S3120 단계가 끝난 후, S3130 단계로 넘어간다. 이후 단계는 마찬가지로 하기 상세히 설명한다. S3116 단계에서 Merge 모드의 동작이 거짓이라면 예측 방향을 복호화(S3121)한다. 예측 방향은 과거 방향, 미래 방향, 양방향 중 한가지를 의미할 수 있다. 예측 방향이 미래 방향인지 아닌지를 판단(S3122)한다. 예측 방향이 미래 방향이 아니었다면 과거 방향의 참조 픽쳐 색인 정보, 과거 방향 MVD 정보, 과거 방향 MVP 정보를 복호화(S3123, S3124, S3125)한다. 예측 방향이 미래 방향이거나 S3125 단계가 끝난 후, 예측 방향이 과거 방향인지 아닌지를 판단(S3126)한다. 예측 방향이 과거 방향이 아니었다면 미래 방향의 참조 픽쳐 색인 정보, 미래 방향 MVD 정보, 미래 방향 MVP 정보를 복호화(S3127, S3128, S3129)한다. 예측 방향이 과거 방향이거나 S3129 단계가 끝난 후, S3130 단계로 넘어간다. 해당 단계에서는 모든 서브 복호화 블록의 복호화가 종료되었는지 아닌지를 판단(S3130)한다. 모든 서브 복호화 블록이 복호화가 종료되었다면 본 흐름도를 종료하고, 그렇지 않을 경우 다음 서브 복호화 블록으로 이동(S3131)한 후에 S3101 단계로 돌아가서 전술한 과정을 반복한다.
도 33은 영상 부호화/복호화 장치 내 예측부에서의 DMVD 움직임 추정부이다. 영상 부호화/복호화 장치 내의 DMVD 초기 움직임정보 탐색부에서 결정된 초기 움직임정보를 이용하여 DMVD 모드를 수행 후, 최적 움직임정보를 결정한다. DMVD 모드에는 템플릿을 사용하는 모드(이하, '템플릿 매칭 모드'라 칭함)와 템플릿을 사용하지 않는 모드(이하, '양방향 매칭 모드'라 칭함)가 있다. 양방향 매칭 모드를 이용(3301)할 경우, 각 초기 움직임정보들의 단방향 움직임벡터를 선형적으로 반대 예측 방향의 참조 픽쳐로 스케일링한다. 여기서, 움직임벡터의 스케일링은 현재 픽쳐와 각 방향의 참조 픽쳐들간의 거리에 비례하여 수행된다. 이렇게 양방향으로 움직임벡터를 결정(3302)한 후, 과거 방향과 미래 방향의 예측 블록 간 차이가 최소가 되게 하는 각 방향의 움직임벡터를 최적 움직임정보로 결정(3303)한다. 도 21의 2102 그림은 양방향 매칭 모드에서 현재 블록의 과거, 미래 방향의 움직임벡터가 선형적으로 생성된 후, 양방향의 두 예측 블록의 평균으로 현재 블록의 예측 블록을 생성하는 방법을 나타낸 것이다. 템플릿 매칭 모드를 이용(3304)할 경우, 복원 영역에서 템플릿 블록의 개수를 결정한다. 단일 템플릿 블록을 사용(3305)할 경우(이하, '단일 템플릿 매칭 모드'라 칭함) 현재 블록 주변과 인접한 좌측, 상단의 복원 영역을 템플릿 블록으로 결정하고, 해당 템플릿 블록을 이용한 움직임 추정(3306)을 통해 최적 움직임정보를 결정한다. 도 21의 2101 그림은 단일 템플릿 매칭 모드에서 템플릿 블록과 가장 유사한 템플릿 블록의 예측 블록을 탐색한 후, 해당 템플릿 블록과 인접한 블록을 현재 블록의 예측 블록으로 결정하는 방법을 나타낸 것이다. 여기서, 템플릿 블록에 최적인 움직임정보를 추정할 때, 추정 패턴은 도 10에 도시된 움직임 추정 패턴 방법 4가지 중, 임의의 패턴을 선택하여 해당 방법으로 움직임 추정을 수행할 수 있다. 움직임 추정의 비용값은 예측 에러의 양과 움직임정보의 가상 비트량의 합을 의미한다. 예측 에러는 SAD(Sum of Absolute Difference), SATD(Sum of Absolute hadamard Trnasform Difference), SSD(Sum of Square Difference) 등 다양한 계산 방법을 통해서 얻을 수 있다. 이는 도 20을 참조하여 살펴본 바와 같으며, 여기서 자세한 설명은 생략하기로 한다.
복수 템플릿 블록을 사용(3307)할 경우(이하, '복수 템플릿 매칭 모드'라 칭함) 복원 영역에서 복수의 템플릿 블록을 고정적으로 사용할 것인지 움직임 경계점을 이용하여 템플릿 블록을 적응적으로 생성할 것인지를 결정한다. 고정 템플릿 블록으로 사용(3308)할 경우, 템플릿 블록은 도 22의 2201~2203의 예시 그림처럼 설정할 수 있다. 2201 그림은 템플릿 블록을 현재 블록의 좌하단(Template A), 좌상단(Template B), 상좌측(Template C), 상우측(Template D)에서 각각 결정한다. 각 템플릿 블록의 크기와 모양은 다양하게 결정할 수 있다. 2202 그림은 2201 그림의 방법과 마찬가지로 템플릿 블록을 현재 블록의 좌하단(Template A), 좌상단(Template B), 상좌측(Template C), 상우측(Template D)에서 결정할 수 있지만, 현재 블록과 인접한 좌측, 상단의 복원 영역을 모두 사용한다 점에서 그 차이를 달리한다. 2203 그림은 2201, 2202 그림의 템플릿 블록 생성 방법을 동시에 고려하여 템플릿 블록을 생성한 방법이다. 이 외에 현재 블록과 인접한 좌측, 상단의 복원 영역을 하나의 템플릿 블록으로 결정하여 사용할 수도 있는 등 다양한 방법으로 현재 블록 주변의 복원 영역에서 템플릿 블록을 생성할 수 있다. 단, 템플릿 블록의 모양 및 크기를 나타내는 정보를 영상 부호화 장치에서 전송하여 사용할 수도 있다. 결정된 각 템플릿 블록과 가장 유사한 예측 블록을 참조 픽쳐에서 탐색하는 움직임 추정(3306)을 수행한 후, 각 템플릿 블록에 최적인 움직임정보를 추정하고, 해당 움직임정보들 중 현재 블록에 가장 적합한 움직임정보를 탐색하여 최적 움직임 정보로 결정한다. 고정 템플릿 블록이 아닌 움직임 경계점을 이용하여 템플릿 블록을 생성할 경우 움직임 경계점을 먼저 탐색(3309)한다. 움직임 경계점 탐색 방법은 하기 상세히 설명한다. 결정된 움직임 경계점을 기준으로 나뉜 각 템플릿 블록 별로 움직임 추정을 통해 각 템플릿 블록에 최적인 움직임정보를 추정(3310)하고, 움직임 경계점을 기준으로 나뉜 각 예측 블록 별로 인접한 템플릿 블록의 최적 움직임정보를 적용한다. 또한, 복수 템플릿 매칭 모드에서, 템플릿 블록을 이용한 움직임 추정을 통해 얻어진 최적 움직임정보를 현재 예측 블록에 적용할 수도 있지만, 템플릿 블록 내 복원된 움직임 정보를 그대로 현재 예측 블록의 최적 움직임정보로 결성할 수도 있다.
도 34는 결정된 움직임 경계점에서 현재 블록을 분할하는 움직임 경계선의 기울기를 결정하는 방법을 설명한 흐름도이다. 최초의 초기정보는 움직임 경계선 기울기 색인 정보(이하, 'MB Angle'이라 칭함)를 -1로 초기화하고 최적 분할 비용값(이하, 'PartCostBest'이라 칭함)을 무한대로 초기화한다. 현재 MB Angle을 1 증가 시켜줌으로써 MB Angle을 업데이트(S3401)한다. 여기서, MB Angle은 다양한 방법으로 영상 부호화/복호화 장치에서 동일하게 기 설정 될 수 있다. 이후, 움직임 경계 탐색 영역을 현재 MB Angle에 맞는 움직임 경계선 기울기 방향대로 분할하여 2개의 템플릿 블록으로 분할하고, 각 템플릿 블록 별로 DMVD 움직임 추정을 통해 최적 움직임정보에 대한 비용값을 계산(S3402)한다. 각 템플릿 블록의 최적 비용값을 이용하여 현재 MB Angle에 대한 분할 비용값(이하, 'PartCostMB Angle'라 칭함)을 계산한다. PartCostMB Angle을 계산하는 방법은 전술한 도 23 내에서의 방법과 동일하다. S3402, S3403 단계의 상세한 설명을 위해 도 35를 참조한다.
도 35는 현재 움직임 경계점을 기준으로 움직임 경계 탐색 영역에서 움직임 경계선의 기울기 방향으로 템플릿 블록을 결정하고, 각 템플릿 블록에 최적 움직임정보를 유도하는 방법을 나타낸 그림이다. 템플릿 A 블록과 가장 유사한 예측 블록을 참조 픽쳐에서 탐색하고, 템플릿 B 블록도 마찬가지로 탐색한다. 템플릿 C 블록은 템플릿 A, B 블록을 합친 블록을 의미하고, 템플릿 C 블록과 가장 유사한 블록을 마찬가지로 참조 픽쳐에서 탐색한다. 움직임 경계선 기울기 방향으로 현재 블록에 이어진 선을 가상 움직임 경계선이라 하고, 가상 움직임 경계선을 기준으로 해당 경계선에 걸친 화소들의 경우에는 어느 위치에 있는 예측 블록에 더 많은 화소 영역이 포함되어 있는지를 통해 실제 움직임 경계선을 결정할 수 있다. 현재 MB Angle에서의 PartCostMB Angle이 PartCostBest보다 작은지를 판단(S3404)한다. 현재 PartCostMB Angle이 PartCostBest보다 작으면, PartCostBest에 PartCostMB Angle을 저장하고, 최적 움직임 경계선 기울기 색인 정보에 현재 MB Angle을 저장(S3405)한다. 현재 PartCostMB Angle이 PartCostBest보다 크거나 같고, S3405 단계가 끝난 후, 현재 MB Angle이 마지막 탐색 후보 움직임 경계선 기울기 색인인지 아닌지를 판단(S3406)한다. 현재 MB Angle이 마지막 탐색 후보 움직임 경계선 기울기 색인이었다면 본 흐름도를 종료하고, 그렇지 않다면 S3401 단계로 돌아가서 전술한 과정을 반복한다.
움직임 경계점을 기준으로 나뉜 각 예측 블록 단위로 복원 과정을 먼저 수행하지 않는다면, 현재 블록에 예측 블록들을 생성한 후 예측 블록 경계에서 필터링 과정이 수행될 수 있다.
도 36에서는 움직임 경계점이 1개인 경우이면서 움직임 경계선이 사선 방향이 아닌 직선 방향으로 분할 되었을 경우의 예를 이용하여 필터링 방법을 설명한다. 예측 블록 경계에서의 필터링 방법은 다양할 수 있다. 예를 들어 필터링 영역 안에서 각 예측 블록의 인접한 화소끼리 가중합을 이용하여 필터링 될 수 있다. 수학식 7은 필터링 수식이다.
Figure pat00007
수학식 7에서 a', b'은 a, b 예측 화소의 필터링 된 값이다. W1~W4는 가중치 계수로써, 'W1+W2=1'이고, 'W3+W4=1'을 만족한다. 이 때, W1, W4에는 0.8을, W2, W3에는 0.2를 대입하여 a, b 예측 화소를 필터링할 수 있다. 이 외에 다양한 방법으로 필터링 할 수 있다.
도 37에서는 움직임 경계점이 1개인 경우이면서 움직임 경계선이 사선 방향으로 분할 되었을 경우의 예를 이용하여 필터링 방법을 설명한다. 3701 그림에서는 도 36의 설명과 유사한 방법으로 움직임 경계선에 인접한 각 예측 블록의 화소끼리 수학식 7의 가중합을 이용하여 필터링 될 수 있다. 3702 그림의 필터링 방법은 가상 움직임 경계선을 기준으로 예측 블록을 나눌 때, 가상 움직임 경계선을 관통하는 화소는 각 분할 블록(분할 블록 A, B)에 모두 포함시킨다. 이후, 각 분할된 블록마다 예측 블록을 생성한다. 필터링 시에는 실제 움직임 경계선이 아닌 가상 움직임 경계선을 기준으로 필터링이 수행될 수 있는데, 해당 경계선을 관통하는 각 화소 별로 어떤 예측 블록에 더 많은 화소 영역이 포함되어 있는지를 계산한다. 본 그림에서는 필터링 될 화소 S에서 가상 움직임 경계선이 관통하는 선을 기준으로 화소 영역 넓이 p, q를 계산하고, 수학식 8을 이용하여 화소 S를 필터링한다.
Figure pat00008
S'은 필터링된 S 화소이고, a 화소는 분할 블록 A의 예측 화소이고, b 화소는 분할 블록 B의 예측 화소이다. 이와 같이 3701, 3702 그림의 예시처럼 필터링 할 수도 있고, 이 외에 다양한 방법으로 필터링 할 수 있다.
도 38은 영상 부호화 장치 내 엔트로피 부호화부에서 예측 정보를 부호화하는 흐름을 나타낸 흐름도이다. 먼저 SKIP 모드의 동작 정보를 부호화(S3801)한다. SKIP 모드의 동작 여부를 판단(S3802)하고, 해당 정보가 거짓이면 예측 모드를 부호화(S3803)한다. 예측 모드가 화면 간 예측인지 아닌지를 판단(S3804)하고, 예측 모드가 화면 간 예측 모드가 아니었다면 화면 내 예측 정보들을 부호화하고 본 흐름도를 종료한다. S3802 단계에서 SKIP 모드 동작이 참이었다면 DMVD 모드 동작 정보를 부호화(S3806)한다. 여기서, DMVD 모드 동작 정보란 DMVD 모드가 동작을 안하는 경우, 양방향 매칭 모드인 경우, 템플릿 매칭 모드인 경우 중 어떤 상태인지를 나타내는 정보이다. 예를 들어, DMVD 모드가 동작을 안하면 0, 양방향 매칭 모드이면 10, 템플릿 매칭 모드이면 11을 부호화하여 어떤 상태인지를 알려줄 수 있다. DMVD 모드의 동작 여부를 판단(S3807)하고, 해당 정보가 참이라면(양방향 매칭 모드 혹은 템플릿 매칭 모드) 템플릿 정보를 부호화(S3808)한다. 여기서, 템플릿 정보는 템플릿 매칭 모드 중 복수 템플릿 매칭 모드인 경우에만 부호화되는 정보이다. 복수 템플릿 매칭 모드 중, 고정 템플릿 블록을 사용하는 경우에 어떤 템플릿 블록의 움직임정보를 이용하여 예측 블록을 생성하였는지를 나타내고, 움직임 경계점을 이용하는 경우에는 움직임 경계점을 기준으로 분할된 템플릿 블록 중, 현재 예측 블록에 어떤 템플릿 블록의 움직임정보를 이용하여 예측 블록을 생성하였는지를 나타낸다. 템플릿 정보를 부호화하면 본 흐름도를 종료한다. DMVD 모드 동작이 거짓이라면 SKIP 모드를 위한 Merge 후보 색인 정보를 부호화(S3809)하고 본 흐름도를 종료한다. S3804 단계에서 예측 모드가 화면 간 예측이었다면, Merge 모드 동작 정보를 부호화(S3810)한다. Merge 모드 동작 여부를 판단(S3811)하고, 해당 정보가 거짓이라면 예측 방향을 부호화(S3812)한다. 예측 방향은 과거 방향, 미래 방향, 양방향 중 한가지를 의미할 수 있다. 예측 방향이 미래 방향인지 아닌지를 판단(S3813)한다. 예측 방향이 미래 방향이 아니었다면 과거 방향의 참조 픽쳐 색인 정보, 과거 방향 MVD 정보, 과거 방향 MVP 정보를 부호화(S3814, S3815, S3816)한다. 예측 방향이 미래 방향이거나 S3816 단계가 끝난 후, 예측 방향이 과거 방향인지 아닌지를 판단(S3817)한다. 예측 방향이 과거 방향이 아니었다면 미래 방향의 참조 픽쳐 색인 정보, 미래 방향 MVD 정보, 미래 방향 MVP 정보를 부호화(S3818, S3819, S3820)하고, 본 흐름도를 종료하고, S3817 단계에서 예측 방향이 과거 방향 이었다면 본 흐름도를 종료한다. S3811 단계에서 Merge 모드 동작 정보가 참이라면, DMVD 모드 동작 정보를 부호화(S3821)한다. 해당 설명은 S3806 단계의 설명과 동일하다. DMVD 모드 동작 여부를 판단(S3822)하고, 해당 정보가 거짓이라면 Merge 모드를 위한 Merge 후보 색인 정보를 부호화하고 본 흐름도를 종료한다. S3822 단계에서 DMVD 모드 동작이 참이라면, 템플릿 정보를 부호화(S3823)하고 본 흐름도를 종료한다.
도 39는 영상 복호화 장치 내 엔트로피 복호화부에서 예측 정보를 복호화하는 흐름을 나타낸 흐름도이다. 먼저 SKIP 모드의 동작 정보를 복호화(S3901)한다. SKIP 모드의 동작 여부를 판단(S3902)하고, 해당 정보가 거짓이면 예측 모드를 복호화(S3903)한다. 예측 모드가 화면 간 예측인지 아닌지를 판단(S3904)하고, 예측 모드가 화면 간 예측 모드가 아니었다면 화면 내 예측 정보들을 복호화하고 본 흐름도를 종료한다. S3902 단계에서 SKIP 모드 동작이 참이었다면 DMVD 모드 동작 정보를 복호화(S3906)한다. DMVD 모드의 동작 여부를 판단(S3907)하고, 해당 정보가 참이라면(양방향 매칭 모드 혹은 템플릿 매칭 모드) 템플릿 정보를 복호화(S3908)하고 본 흐름도를 종료한다. DMVD 모드 동작이 거짓이라면 SKIP 모드를 위한 Merge 후보 색인 정보를 복호화(S3909)하고 본 흐름도를 종료한다. S3904 단계에서 예측 모드가 화면 간 예측이었다면, Merge 모드 동작 정보를 복호화(S3910)한다. Merge 모드 동작 여부를 판단(S3911)하고, 해당 정보가 거짓이라면 예측 방향을 복호화(S3912)한다. 예측 방향이 미래 방향인지 아닌지를 판단(S3913)한다. 예측 방향이 미래 방향이 아니었다면 과거 방향의 참조 픽쳐 색인 정보, 과거 방향 MVD 정보, 과거 방향 MVP 정보를 복호화(S3914, S3915, S3916)한다. 예측 방향이 미래 방향이거나 S3916 단계가 끝난 후, 예측 방향이 과거 방향인지 아닌지를 판단(S3917)한다. 예측 방향이 과거 방향이 아니었다면 미래 방향의 참조 픽쳐 색인 정보, 미래 방향 MVD 정보, 미래 방향 MVP 정보를 복호화(S3918, S3919, S3920)하고, 본 흐름도를 종료하고, S3917 단계에서 예측 방향이 과거 방향 이었다면 본 흐름도를 종료한다. S3911 단계에서 Merge 모드 동작 정보가 참이라면, DMVD 모드 동작 정보를 복호화(S3921)한다. 해당 설명은 S3906 단계의 설명과 동일하다. DMVD 모드 동작 여부를 판단(S3922)하고, 해당 정보가 거짓이라면 Merge 모드를 위한 Merge 후보 색인 정보를 복호화하고 본 흐름도를 종료한다. S3922 단계에서 DMVD 모드 동작이 참이라면, 템플릿 정보를 복호화(S3923)하고 본 흐름도를 종료한다.
디코더 사이드 움직임 유도(DMVD) 과정은, 초기 움직임 정보(MVrec)를 생성하는 과정 및 소정의 델타 움직임 정보(deltaMV)를 기반으로 초기 움직임 정보를 개선하는 과정을 포함할 수 있다.
상기 초기 움직임 정보는, 부호화 장치에서 시그날링되는 정보에 기초하여 생성될 수 있다. 템플릿 매칭 모드인 경우에는 초기 움직임 정보가 1개, 양방향 매칭 모드인 경우에는 초기 움직임 정보가 2개가 생성될 수 있다.상기 개선하는 과정은, 현재 블록의 L0 참조 블록과 L1 참조 블록 간의 화소 차이를 최소로 하는 델타 움직임 정보를 결정하고, 결정된 델타 움직임 정보를 기반으로 초기 움직임 정보를 개선할 수 있다. 상기 델타 움직임 정보를 결정하는 방법에 대해서 도 40을 참조하여 자세히 살펴 보기로 한다.
현재 블록은 상기 개선된 움직임 정보(MVref)를 이용하여 움직임 보상을 수행할 수 있다.
상기 현재 블록의 개선된 움직임 정보(MVref)는, 디코더의 버퍼에 저장되고, 현재 블록 이후에 복호화되는 블록(이하, 제1 블록이라 함)의 움직임 정보 예측치(predictor)로 이용될 수 있다. 상기 현재 블록은, 상기 제1 블록에 공간적/시간적으로 인접한 주변 블록일 수 있다. 상기 현재 블록은, 상기 제1 블록에 공간적/시간적으로 인접하지 않으나, 동일한 CTU, 타일 또는 타일 그룹에 속한 블록일 수 있다.
또는, 상기 현재 블록의 개선된 움직임 정보(MVref)는, 현재 블록의 움직임 보상에만 이용되고, 디코더의 버퍼에 저장되지 않을 수도 있다. 즉, 상기 제1 블록의 움직임 정보 예측치로 이용되지 않을 수도 있다.
또는, 초기 움직임 정보(MVrec)가 상기 현재 블록의 움직임 보상을 위해 이용되고, 상기 개선된 움직임 정보(MVref)가 디코더의 버퍼에 저장되어 제1 블록의 움직임 정보 예측치로 이용될 수도 있다.
상기 움직임 보상된 현재 블록에 소정의 인-루프 필터가 적용될 수 있다. 상기 인-루프 필터는, 디블록킹 필터, SAO(sample adaptive offset) 또는 ALF(adaptive loop filter) 중 적어도 하나를 포함할 수 있다. 상기 개선된 움직임 정보(MVref)는, 상기 인-루프 필터의 속성을 결정하는데 이용될 수 있다. 여기서, 속성은, 경계 강도(boundary strength, bs), 필터링 강도, 필터 계수, 필터 탭수, 필터 타입 등을 의미할 수 있다.
도 40은 본 발명이 적용되는 일실시예로서, 델타 움직임 정보를 결정하는 방법을 도시한 것이다.
설명의 편의를 위해, 디코더에서 델타 움직임 정보의 초기값은 0으로 설정됨을 가정한다.
디코더는, 현재 블록의 참조 블록의 위치를 기준으로 탐색을 수행하여 최적의 참조 블록을 결정할 수 있다. 여기서, 현재 블록의 참조 블록은 상기 초기 움직임 정보에 의해 지시되는 영역을 의미할 수 있다. 디코더는, 최적의 참조 블록의 위치를 기반으로 델타 움직임 정보를 갱신할 수 있다. 여기서, 참조 블록은 L0/L1 참조 블록을 포함할 수 있다. L0 참조 블록은, 참조 픽쳐 리스트0(L0)의 참조 픽쳐에 속한 참조 블록을 의미하고, L1 참조 블록은, 참조 픽쳐 리스트1(L1)의 참조 픽쳐에 속한 참조 블록을 의미할 수 있다.
도 40을 참조하면, 디코더는 움직임 정보의 개선을 위한 탐색 영역을 결정할 수 있다(S4000).
상기 탐색 영역은, 참조 블록 또는 상기 참조 블록의 인접 영역 중 적어도 하나를 포함하는 영역으로 결정될 수 있다. 이때, 상기 참조 블록의 좌상단 샘플의 위치가 탐색의 기준 위치가 될 수 있다. 탐색 영역은, L0 방향과 L1 방향에 대해서 각각 결정될 수 있다. 인접 영역은, 참조 블록의 경계(boundary)를 기준으로 N개의 샘플 라인만큼 확장된 영역을 의미할 수 있다. 여기서, N은 1, 2, 3 또는 그 이상의 정수일 수 있다.
인접 영역은, 참조 블록의 좌측, 상단, 우측, 하단, 좌상단, 좌하단, 우상단 또는 우하단 중 적어도 하나의 방향에 위치할 수 있다. 이때, 현재 블록이 WxH인 경우, 탐색 영역은 (W+2N)x(H+2N)으로 표현될 수 있다. 다만, 개선 과정의 복잡도를 줄이기 위해, 인접 영역은 전술한 방향 중 일부 방향에만 위치할 수도 있다. 예를 들어, 참조 블록의 좌측 및 상단에 인접한 영역으로 제한될 수도 있고, 참조 블록의 우측 및 하단에 인접한 영역으로 제한될 수도 있다.
샘플 라인의 개수(N)는, 디코더에 기-정의된 고정된 값일 수도 있고, 블록 속성을 고려하여 가변적으로 결정될 수도 있다. 여기서, 블록 속성은, 블록의 크기/형태, 블록 위치, 인터 예측 모드, 성분 타입 등을 의미할 수 있다. 상기 블록 위치는, 참조 블록이 픽쳐 또는 소정의 조각 영역의 경계에 접하는지 여부를 의미할 수 있다. 상기 조각 영역은, 타일, 코딩 트리 블록 열/행, 또는 코딩 트리 블록을 의미할 수 있다. 예를 들어, 블록 속성에 따라, 0개, 1개 또는 2개의 샘플 라인 중 어느 하나가 선택적으로 이용될 수 있다.
도 40을 참조하면, 디코더는, 탐색 영역 내의 탐색 위치 별 SAD(sum of absolute difference)를 결정할 수 있다(S4010).
구체적으로, 탐색 영역 내의 탐색 위치 별 SAD를 특정하는 리스트(이하, SAD 리스트라 함)를 결정할 수 있다. 여기서, SAD 리스트는, 복수의 SAD 후보를 포함할 수 있다. SAD 리스트를 구성하는 SAD 후보의 개수는 M개이며, M은 2보다 크거나 같은 정수일 수 있다. 상기 M은 최대 9개로 제한될 수도 있다.
SAD 후보는 L0 블록과 L1 블록 간의 SAD 값으로 결정될 수 있다. 이때, SAD 값은, L0/L1 블록에 속한 모든 샘플을 기초로 산출될 수도 있고, L0/L1 블록 내의 일부 샘플을 기초로 산출될 수도 있다. 여기서, 일부 샘플은 L0/L1 블록의 서브 블록을 의미하고, 서브 블록의 너비 또는 높이 중 적어도 하나는 L0/L1 블록의 너비 또는 높이의 절반일 수 있다. 즉, L0 및 L1 블록은 WxH의 크기를 가지며, 상기 일부 샘플은 WxH/2, W/2xH 또는 W/2xH/2의 크기를 가진 서브 블록일 수 있다. 이때, 일부 샘플이 WxH/2인 경우, 일부 샘플은 L0/L1 블록 내에서 상단 서브 블록(혹은 하단 서브 블록)일 수 있다. 일부 샘플이 W/2xH인 경우, 일부 샘플은 L0/L1 블록 내에서 좌측 서브 블록(혹은 우측 서브 블록)일 수 있다. 일부 샘플이 W/2xH/2인 경우, 일부 샘플은 L0/L1 블록 내에서 좌상단 서브 블록일 수 있으나, 이에 한정되지 아니한다. 또는, 일부 샘플은, L0/L1 블록의 짝수번째 또는 홀수번째 샘플 라인(수직 또는 수평 방향)의 그룹으로 정의될 수도 있다.
상기 L0 블록의 위치는, 현재 블록의 L0 참조 블록의 위치 및 소정의 오프셋에 기초하여 결정될 수 있다. 오프셋은, L0 참조 블록의 위치와 탐색 위치 간의 변이 벡터를 의미할 수 있다. 즉, 탐색 위치는, L0 참조 블록의 위치 (x0,y0)에서 x축 방향으로 p만큼, y축 방향으로 q만큼 쉬프트된 위치일 수 있다. 여기서, p와 q는 -1, 0, 또는 1 중 적어도 하나일 수 있다. 이때, p와 q의 조합으로 생성되는 변이 벡터가 오프셋을 의미할 수 있다. L0 블록의 위치는, L0 참조 블록의 위치 (x0,y0)에서 (p,q)만큼 쉬프트된 위치로 결정될 수 있다. 상기 p와 q의 크기(또는 절대값)은 0 또는 1이나, 이에 한정되지 아니한다. 예를 들어, 상기 p와 q의 크기는 2, 3, 또는 그 이상일 수 있다.
상기 오프셋은, 넌-방향성 오프셋 (0,0) 또는 방향성 오프셋 중 적어도 하나를 포함할 수 있다. 상기 방향성 오프셋은, 좌측, 우측, 상단, 하단, 좌상단, 우상단, 좌하단 또는 우하단 중 적어도 하나의 방향에 대한 오프셋을 포함할 수 있다. 예를 들어, 상기 방향성 오프셋은, (-1,0), (0,1), (0,-1), (0,1), (-1,-1), (-1,1), (1,-1) 또는 (1,1) 중 적어도 하나를 포함할 수 있다.
마찬가지로, 상기 L1 블록의 위치는, 현재 블록의 L1 참조 블록의 위치 및 소정의 오프셋에 기초하여 결정될 수 있다. 여기서, L1 블록의 오프셋은 L0 블록의 오프셋에 기초하여 결정될 수 있다. 예를 들어, L0 블록의 오프셋이 (p,q)인 경우, L1 블록의 오프셋은 (-p,-q)으로 결정될 수 있다.
전술한 오프셋의 크기 및/또는 방향에 관한 정보는, 디코더에 기-정의된 것일 수도 있고, 인코더에서 부호화되어 디코더로 시그날링될 수도 있다. 상기 정보는, 전술한 블록 속성을 고려하여 가변적으로 결정될 수도 있다.
일예로, 오프셋은 다음 표 1과 같이 정의될 수 있다.
i 0 1 2 3 4 5 6 7 8
dX[ i ] -1 0 1 -1 0 1 -1 0 1
dY[ i ] -1 -1 -1 0 0 0 1 1 1
표 1은, 인덱스 i 별로, 탐색 위치 결정을 위한 오프셋을 정의한다. 다만, 표 1은 인덱스 i에 대응하는 오프셋의 위치를 한정하는 것은 아니며, 인덱스 별 오프셋의 위치는 표 1과 상이할 수 있다. 표 1에 따른 오프셋은, 전술한 넌-방향성 오프셋 (0,0) 및 8개의 방향성 오프셋을 포함할 수 있다.
이 경우, 0번째 SAD 후보는, 참조 블록의 위치 (x,y)와 오프셋 (-1,-1)에 기초하여 결정될 수 있다. 구체적으로, L0 참조 블록의 위치 (x0,y0)에서 오프셋 (-1,-1)만큼 쉬프트된 위치를 탐색 위치로 설정하고, 해당 탐색 위치를 좌상단 샘플로 포함하는 WxH 블록을 L0 블록으로 결정할 수 있다.
마찬가지로, L1 참조 블록의 위치 (x1,y1)에서 오프셋 (1,1)만큼 쉬프트된 위치를 탐색 위치로 설정하고, 해당 탐색 위치를 좌상단 샘플로 포함하는 WxH 블록을 L1 블록으로 결정할 수 있다. 상기 L0 블록과 L1 블록 간의 SAD를 산출하여 0번째 SAD 후보를 결정할 수 있다.
전술한 과정을 통해, 1번째 내지 8번째의 SAD 후보를 결정하고, 9개의 SAD 후보를 포함한 SAD 리스트를 결정할 수 있다.
표 1은 움직임 정보 개선을 위한 오프셋의 개수를 한정하는 것은 아니다. 상기 9개의 오프셋 중 k개의 오프셋만이 이용될 수도 있다. 여기서, k는 2 내지 8 중 임의의 값일 수 있다. 예를 들어, 표 1에서, [0,4,8], [1,4,7], [2,4,6], [3,4,5] 등과 같은 3개의 오프셋이 이용될 수도 있고, [0,1,3,4], [4,5,7,8] 등과 같은 4개의 오프셋이 이용될 수도 있으며, [0,1,3,4,6,7,], [0,1,2,3,4,5,] 등과 같은 6개의 오프셋이 이용될 수도 있다.
일예로, 오프셋은 다음 표 2와 같이 정의될 수 있다. 즉, 오프셋은 넌-방향성 오프셋 (0,0), 수평 방향의 오프셋 ((-1,0), (1,0)) 및 수직 방향의 오프셋 ((0,-1), (0,1))만으로 구성될 수도 있다.
i 0 1 2 3 4
dX[ i ] 0 -1 0 1 0
dY[ i ] -1 0 0 0 1
이와 같이, 오프셋의 크기 및/또는 개수에 따라서, 전술한 탐색 영역의 크기 및/또는 형태는 가변적으로 결정될 수 있다. 탐색 영역은 사각형 이외에 기하학적인 형태를 가질 수도 있다.
도 40을 참조하면, 탐색 위치 별 SAD를 기반으로, 델타 움직임 정보를 갱신할 수 있다(S4020).
구체적으로, 전술한 SAD 리스트의 SAD 후보에 기초하여, 현재 블록의 움직임 정보의 개선을 위한 제1 방법 또는 제2 방법 중 어느 하나를 선택할 수 있다.
상기 선택은, 기준 SAD 후보와 소정의 문턱값 간의 비교 결과에 기초하여 수행될 수 있다(실시예 1).
상기 기준 SAD 후보는, 오프셋 (0,0)에 대응하는 SAD 후보를 의미할 수 있다. 또는, 상기 기준 SAD 후보는, 참조 블록의 위치 또는 후술하는 제1 방법에 의해 변경된 기준 위치에 대응하는 SAD 후보를 의미할 수 있다.
상기 문턱값은, 현재 블록 또는 참조 블록의 너비(W) 또는 높이(H) 중 적어도 하나에 기초하여 결정될 수 있다. 예를 들어, 상기 문턱값은, W*H, W*(H/2), (W/2)*H, 2*W*H, 4*W*H 등으로 결정될 수 있다.
상기 기준 SAD 후보가 문턱값보다 크거나 같은 경우, 제1 방법에 기초하여 델타 움직임 정보가 갱신되고, 그렇지 않은 경우, 제2 방법에 기초하여 델타 움직임 정보가 갱신될 수 있다.
(1) 제1 방법의 경우
SAD 리스트에 속한 SAD 후보 중에서 최소값을 가진 SAD 후보를 식별할 수 있다. 상기 식별 방법에 대해서는 후술하도록 한다. 상기 식별된 SAD 후보에 대응하는 오프셋을 기반으로, 델타 움직임 정보가 갱신될 수 있다.
그런 다음, 상기 식별된 SAD 후보에 대응하는 탐색 위치가 탐색을 위한 기준 위치로 변경될 수 있다. 변경된 기준 위치에 기반하여, 전술한 SAD 리스트 결정 및/또는 최소값의 SAD 후보 식별 과정을 재수행할 수 있으며, 중복된 설명은 생략하기로 한다. 재수행 결과에 기초하여, 상기 델타 움직임 정보가 갱신될 수 있다.
(2) 제2 방법의 경우
SAD 리스트에 속한 SAD 후보 전부 또는 일부를 이용하여 산출된 파라미터를 기반으로, 델타 움직임 정보가 갱신될 수 있다.
상기 파라미터는, x축 방향에 관한 파라미터(dX) 또는 y축 방향에 관한 파라미터(dY) 중 적어도 하나를 포함할 수 있다. 예를 들어, 상기 파라미터는, 다음과 같이 산출될 수 있으며, 설명의 편의를 위해 전술한 표 1를 기반으로 설명하기로 한다.
sadList[3]와 sadList[5]의 합이 (sadList[4]<<1)와 같은 경우, dX는 0으로 설정될 수 있다. 여기서, sadList[3]는 오프셋 (-1,0)에 대응하는 SAD 후보이고, sadList[5]는 오프셋 (1,0)에 대응하는 SAD 후보이며, sadList[4]는 오프셋 (0,0)에 대응하는 SAD 후보를 의미할 수 있다.
sadList[3]와 sadList[5]의 합이 (sadList[4]<<1)보다 큰 경우, dX는 다음 수학식 3과 같이 결정될 수 있다.
[수학식 3]
dX=((sadList[3]sadList[5])<<3)/(sadList[3]+sadList[5](sadList[4]<<1))
sadList[1]와 sadList[7]의 합이 (sadList[4]<<1)와 같은 경우, dY는 0으로 설정될 수 있다. 여기서, sadList[1]는 오프셋 (0,-1)에 대응하는 SAD 후보이고, sadList[7]는 오프셋 (0,1)에 대응하는 SAD 후보이며, sadList[4]는 오프셋 (0,0)에 대응하는 SAD 후보를 의미할 수 있다.
sadList[1]와 sadList[7]의 합이 (sadList[4]<<1)보다 큰 경우, dY는 다음 수학식 4과 같이 결정될 수 있다.
[수학식 4]
dY=((sadList[1]sadList[7])<<3)/(sadList[1]+sadList[7](sadList[4]<<1))
상기 산출된 파라미터에 기초하여, 델타 움직임 정보는 갱신될 수 있다.
또는, 전술한 S3의 선택은, 기준 SAD 후보가 SAD 리스트에 속한 SAD 후보 중 최소값인지 여부에 기초하여 수행될 수 있다(실시예 2).
예를 들어, SAD 리스트에 속한 SAD 후보 중 최소값이 기준 SAD 후보가 아닌 경우, 제1 방법에 기초하여 델타 움직임 정보가 갱신되고, 그렇지 않은 경우, 제2 방법에 기초하여 델타 움직임 정보가 갱신될 수 있다. 제1 방법 및 제2 방법은 전술한 바와 같은바, 자세한 설명은 생략하기로 한다.
또는, 전술한 S3의 선택은, 전술한 실시예1 및 실시예 2의 조합에 기초하여 수행될 수도 있다(실시예 3).
예를 들어, 상기 기준 SAD 후보가 문턱값보다 작은 경우, 전술한 제2 방법에 따른 파라미터를 이용하여 델타 움직임 정보가 갱신될 수 있다.
그러나, 상기 기준 SAD 후보가 문턱값보다 크거나 같은 경우, SAD 리스트에 속한 SAD 후보 중 최소값을 가진 SAD 후보를 식별할 수 있다. 식별된 SAD 후보가 기준 SAD 후보인 경우, 전술한 제2 방법에 따른 파라미터를 이용하여 델타 움직임 정보가 갱신될 수 있다. 반면, 식별된 SAD 후보가 기준 SAD 후보가 아닌 경우, 전술한 제1 방법에 따라 델타 움직임 정보가 갱신될 수 있다.
상기 최소값의 SAD 후보를 식별하는 방법을 살펴 보기로 한다. SAD 리스트에 속한 SAD 후보를 2개, 3개 또는 그 이상의 개수로 그룹핑할 수 있다. 이하 설명의 편의를 위해 SAD 후보를 2개의 그룹으로 그룹핑하는 경우를 살펴 보도록 한다.
복수의 SAD 후보는 제1 그룹과 제2 그룹으로 그룹핑될 수 있다. 각 그룹은 SAD 리스트 내의 SAD 후보 중 적어도 2개의 SAD 후보를 포함할 수 있다. 다만, 상기 그룹에는 기준 SAD 후보는 포함되지 않도록 제한될 수 있다. 각 그룹에 대해 minimum operation을 적용하여, 각 그룹 별로 최소값을 가진 SAD 후보를 추출할 수 있다.
제1 그룹으로부터 추출된 SAD 후보와 제2 그룹으로부터 추출된 SAD 후보 중 최소값을 가진 SAD 후보(이하, 임시 SAD 후보라 함)를 다시 추출할 수 있다.
상기 임시 SAD 후보와 기준 SAD 후보 간의 비교 결과에 기초하여, 상기 최소값의 SAD 후보를 식별할 수 있다. 예를 들어, 임시 SAD 후보가 기준 SAD 후보보다 작은 경우, 임시 SAD 후보가 SAD 리스트 내 최소값의 SAD 후보로 식별될 수 있다. 반면, 임시 SAD 후보가 기준 SAD 후보보다 크거나 같은 경우, 기준 SAD 후보가 SAD 리스트 내 최소값의 SAD 후보로 식별될 수 있다.
전술한 디코더 사이드 움직임 유도 방법(특히, 움직임 정보 개선 방법)은, 블록 크기에 기초하여 서브 블록 단위로 수행될 수 있다.
예를 들어, 현재 블록의 크기가 소정의 문턱크기보다 크거나 같은 경우, 상기 문턱크기의 단위로 움직임 정보 개선 방법이 수행될 수 있다. 반면, 현재 블록의 크기가 소정의 문턱크기보다 작은 경우, 현재 블록의 단위로 움직임 정보 개선 방법이 수행될 수 있다. 여기서, 문턱크기는, 블록 너비 또는 높이 중 적어도 하나가 T 값인 것으로 결정될 수 있다. T 값은 16, 32, 64 또는 그 이상의 정수일 수 있다.
전술한 디코더 사이드 움직임 유도 방법(특히, 움직임 정보 개선 방법)은, 블록 크기, 현재 픽쳐와 참조 픽쳐 간의 거리, 인터 예측 모드, 예측 방향, 움직임 정보의 단위 또는 해상도 등을 고려하여 제한적으로 수행될 수도 있다.
예를 들어, 현재 블록의 너비 또는 높이 중 어느 하나가 8, 16 또는 32보다 크거나 같은 경우에 한하여 움직임 정보 개선 방법이 수행될 수 있다. 또는, 현재 블록의 너비 및 높이가 8, 16 또는 32보다 크거나 같은 경우에 한하여 움직임 정보 개선 방법이 적용될 수 있다. 또는, 현재 블록의 넓이 또는 샘플 개수가 64, 128 또는 256보다 크거나 같은 경우에 한하여 움직임 정보 개선 방법이 적용될 수도 있다.
현재 픽쳐와 L0 참조 픽쳐 간의 POC 차이와 현재 픽쳐와 L1 참조 픽쳐 간의 POC 차이가 동일한 경우에 한하여 움직임 정보 개선 방법이 적용될 수 있다.
현재 블록의 인터 예측 모드가 머지 모드인 경우에 한하여 개선 방법이 적용될 수도 있고, 기타 다른 모드(e.g., 어파인 모드, AMVP 모드 등)인 경우에는 움직임 정보 개선 방법이 적용되지 않을 수 있다.
현재 블록이 양방향 예측을 수행하는 경우에 한하여 움직임 정보 개선 방법이 적용될 수 있다. 또한, 움직임 정보의 단위가 정수펠인 경우에 한하여 움직임 정보 개선 방법이 적용될 수도 있고, 쿼터펠 또는 하프펠 이하인 경우에 한하여 움직임 정보 개선 방법이 적용? 수도 있다.
본 개시의 다양한 실시 예는 모든 가능한 조합을 나열한 것이 아니고 본 개시의 대표적인 양상을 설명하기 위한 것이며, 다양한 실시 예에서 설명하는 사항들은 독립적으로 적용되거나 또는 둘 이상의 조합으로 적용될 수도 있다.
또한, 본 개시의 다양한 실시 예는 하드웨어, 펌웨어(firmware), 소프트웨어, 또는 그들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 범용 프로세서(general processor), 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
본 개시의 범위는 다양한 실시 예의 방법에 따른 동작이 장치 또는 컴퓨터 상에서 실행되도록 하는 소프트웨어 또는 머신-실행가능한 명령들(예를 들어, 운영체제, 애플리케이션, 펌웨어(firmware), 프로그램 등), 및 이러한 소프트웨어 또는 명령 등이 저장되어 장치 또는 컴퓨터 상에서 실행 가능한 비-일시적 컴퓨터-판독가능 매체(non-transitory computer-readable medium)를 포함한다.

Claims (10)

  1. 현재 블록의 초기 움직임 정보를 결정하는 단계;
    상기 현재 블록의 델타 움직임 정보를 결정하는 단계;
    상기 델타 움직임 정보를 이용하여, 상기 현재 블록의 초기 움직임 정보를 개선하는 단계; 및
    상기 개선된 움직임 정보를 이용하여, 상기 현재 블록의 움직임 보상을 수행하는 단계를 포함하는, 영상 복호화 방법.
  2. 제1항에 있어서, 상기 델타 움직임 정보를 결정하는 단계는,
    상기 움직임 정보의 개선을 위한 탐색 영역을 결정하는 단계;
    상기 탐색 영역으로부터 SAD(sum of absolute difference) 리스트를 생성하는 단계; 여기서, SAD 리스트는, 상기 탐색 영역 내의 탐색 위치 별 SAD 후보를 특정함,
    상기 SAD 리스트의 SAD 후보를 기반으로, 상기 델타 움직임 정보를 갱신하는 단계를 포함하는, 영상 복호화 방법.
  3. 제2항에 있어서,
    상기 탐색 영역은, 참조 블록의 경계를 기준으로 N개의 샘플 라인만큼 확장된 영역을 포함하고,
    상기 참조 블록은, 상기 현재 블록의 초기 움직임 정보에 의해 지시되는 영역인, 영상 복호화 방법.
  4. 제2항에 있어서,
    상기 SAD 후보는 L0 블록과 L1 블록 간의 SAD 값으로 결정되고,
    상기 SAD 값은, L0 및 L1 블록 내의 일부 샘플을 기초로 산출되는, 영상 복호화 방법.
  5. 제4항에 있어서,
    상기 L0 블록의 위치는, 상기 현재 블록의 L0 참조 블록의 위치 및 소정의 오프셋에 기초하여 결정되고,
    상기 오프셋은, 넌-방향성 오프셋 또는 방향성 오프셋 중 적어도 하나를 포함하는, 영상 복호화 방법.
  6. 제5항에 있어서,
    상기 델타 움직임 정보의 갱신은, 기준 SAD 후보와 소정의 문턱값 간의 비교 결과에 기초하여 수행되고,
    상기 기준 SAD 후보는, 상기 넌-방향성 오프셋에 대응하는 SAD 후보를 의미하는, 영상 복호화 방법.
  7. 제6항에 있어서,
    상기 기준 SAD 후보가 상기 문턱값보다 크거나 같은 경우, 상기 SAD 리스트에 속한 SAD 후보 중 최소값을 가진 SAD 후보가 식별되고, 상기 식별된 SAD 후보에 대응하는 오프셋을 기반으로 상기 델타 움직임 정보가 갱신되는, 영상 복호화 방법.
  8. 제6항에 있어서,
    상기 기준 SAD 후보가 상기 문턱값보다 작은 경우, 상기 SAD 리스트에 속한 SAD 후보 전부 또는 일부를 이용하여 산출된 파라미터를 기반으로, 상기 델타 움직임 정보가 갱신되는, 영상 복호화 방법.
  9. 제1항에 있어서,
    상기 초기 움직임 정보의 개선은, 상기 현재 블록의 크기를 고려하여, 서브 블록의 단위로 수행되는, 영상 복호화 방법.
  10. 제1항에 있어서,
    상기 초기 움직임 정보의 개선은, 상기 현재 블록의 크기, 현재 픽쳐와 참조 픽쳐 간의 거리, 인터 예측 모드, 예측 방향 또는 움직임 정보의 해상도 중 적어도 하나를 고려하여 선택적으로 수행되는, 영상 복호화 방법.
KR1020190037349A 2018-03-29 2019-03-29 디코더 사이드 움직임 유도 기반의 영상 부호화/복호화 방법 및 장치 KR20190114913A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20180036296 2018-03-29
KR20180036297 2018-03-29
KR1020180036296 2018-03-29
KR1020180036297 2018-03-29

Publications (1)

Publication Number Publication Date
KR20190114913A true KR20190114913A (ko) 2019-10-10

Family

ID=68060604

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020190037348A KR20190114912A (ko) 2018-03-29 2019-03-29 영상 부호화/복호화 방법 및 장치
KR1020190037349A KR20190114913A (ko) 2018-03-29 2019-03-29 디코더 사이드 움직임 유도 기반의 영상 부호화/복호화 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020190037348A KR20190114912A (ko) 2018-03-29 2019-03-29 영상 부호화/복호화 방법 및 장치

Country Status (5)

Country Link
US (3) US11539972B2 (ko)
EP (1) EP3780604A4 (ko)
KR (2) KR20190114912A (ko)
CN (1) CN111955008A (ko)
WO (1) WO2019190280A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022211492A1 (ko) * 2021-04-02 2022-10-06 현대자동차주식회사 디코더 측면의 움직임 보상을 이용하는 비디오 코딩방법 및 장치
WO2024010338A1 (ko) * 2022-07-05 2024-01-11 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8867854B2 (en) * 2008-10-01 2014-10-21 Electronics And Telecommunications Research Institute Image encoder and decoder using undirectional prediction
CN117544787A (zh) * 2018-03-19 2024-02-09 英迪股份有限公司 图像解码方法、图像编码方法和存储比特流的记录介质
CN117354510A (zh) * 2018-06-29 2024-01-05 英迪股份有限公司 对图像解码和编码的方法及非暂态计算机可读存储介质
WO2021133236A1 (en) 2019-12-24 2021-07-01 Telefonaktiebolaget Lm Ericsson (Publ) Virtual boundary processing for adaptive loop filtering
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
US11936899B2 (en) * 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101228020B1 (ko) * 2007-12-05 2013-01-30 삼성전자주식회사 사이드 매칭을 이용한 영상의 부호화 방법 및 장치, 그복호화 방법 및 장치
CA2756419C (en) * 2009-03-23 2016-05-17 Ntt Docomo, Inc. Image predictive encoding device, image predictive encoding method, image predictive encoding program, image predictive decoding device, image predictive decoding method, and image predictive decoding program
KR101742992B1 (ko) 2009-05-12 2017-06-02 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
KR20110068793A (ko) 2009-12-16 2011-06-22 한국전자통신연구원 영상 부호화 및 복호화를 위한 장치 및 방법
US9137544B2 (en) * 2010-11-29 2015-09-15 Mediatek Inc. Method and apparatus for derivation of mv/mvp candidate for inter/skip/merge modes
KR20130002242A (ko) * 2011-06-28 2013-01-07 주식회사 케이티 영상 정보의 부호화 방법 및 복호화 방법
WO2013109123A1 (ko) 2012-01-19 2013-07-25 삼성전자 주식회사 인트라 예측 처리 속도 향상을 위한 비디오의 부호화 방법 및 장치, 비디오의 복호화 방법 및 장치
US9485515B2 (en) * 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
WO2016148513A1 (ko) 2015-03-19 2016-09-22 엘지전자 주식회사 비디오 신호의 처리 방법 및 이를 위한 장치
US10958927B2 (en) * 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
US10360022B2 (en) 2016-01-13 2019-07-23 International Business Machines Corporation Software discovery scan optimization based on product priorities
CN117544787A (zh) * 2018-03-19 2024-02-09 英迪股份有限公司 图像解码方法、图像编码方法和存储比特流的记录介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022211492A1 (ko) * 2021-04-02 2022-10-06 현대자동차주식회사 디코더 측면의 움직임 보상을 이용하는 비디오 코딩방법 및 장치
WO2024010338A1 (ko) * 2022-07-05 2024-01-11 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Also Published As

Publication number Publication date
US20210021847A1 (en) 2021-01-21
US11539972B2 (en) 2022-12-27
US20240098289A1 (en) 2024-03-21
EP3780604A4 (en) 2021-12-22
US20230079191A1 (en) 2023-03-16
CN111955008A (zh) 2020-11-17
WO2019190280A1 (ko) 2019-10-03
EP3780604A1 (en) 2021-02-17
KR20190114912A (ko) 2019-10-10

Similar Documents

Publication Publication Date Title
KR20190114913A (ko) 디코더 사이드 움직임 유도 기반의 영상 부호화/복호화 방법 및 장치
CN107979759B (zh) 选择运动矢量预测值的方法和使用其的设备
EP3869800B1 (en) Method for encoding/decoding image signal and device therefor
JP7413401B2 (ja) ビデオコーディングのための方法及び装置
JP6233465B2 (ja) 映像復号装置、映像復号方法及びプログラム
CN114760471A (zh) 图像编码/解码方法及其设备
JP7423624B2 (ja) ビデオ信号符号化/復号方法及びその機器
KR102638065B1 (ko) 비디오 압축에서의 다중 라인 인트라 예측을 위한 방법 및 장치
KR20130002242A (ko) 영상 정보의 부호화 방법 및 복호화 방법
CN113491118A (zh) 视频编解码方法及装置
KR20190142749A (ko) 영상 부호화/복호화 방법 및 장치
KR20220158054A (ko) 비디오 코딩을 위한 방법 및 장치
KR20120045369A (ko) 쿼드 트리 기반으로 블록 필터 정보를 부호화/복호화하는 영상 부호화/복호화 장치 및 방법
KR20210040787A (ko) 인터 예측을 이용하여 비디오를 부호화 및 복호화하는 방법 및 장치
CN117041543A (zh) 用于对图像信号进行编码/解码的方法和设备
US20230308662A1 (en) Method and apparatus for video coding using block merging
US20240137490A1 (en) Video encoding/decoding method and apparatus
KR20240055802A (ko) 아핀 모션 정제를 위한 방법 및 장치
KR20240056589A (ko) 아핀 쌍방 정합에서의 아핀 모델 사용
KR20230090999A (ko) 움직임벡터 예측자들의 후보 리스트를 이용하는 비디오 코딩방법 및 장치
KR20230158623A (ko) 대칭 아핀 모드
WO2023149972A1 (en) Affine estimation in pre-analysis of encoder
CN117044213A (zh) 对非二元块的变换与量化
CN118202647A (zh) 合并模式下的帧间预测方向和bcw索引编码
KR20200005207A (ko) 움직임 보상 및 필터링을 처리하는 영상 복호화 및 부호화 방법

Legal Events

Date Code Title Description
A201 Request for examination