KR20180005186A - 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치 - Google Patents

인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치 Download PDF

Info

Publication number
KR20180005186A
KR20180005186A KR1020177032853A KR20177032853A KR20180005186A KR 20180005186 A KR20180005186 A KR 20180005186A KR 1020177032853 A KR1020177032853 A KR 1020177032853A KR 20177032853 A KR20177032853 A KR 20177032853A KR 20180005186 A KR20180005186 A KR 20180005186A
Authority
KR
South Korea
Prior art keywords
current block
contour
sample
segment
coordinate
Prior art date
Application number
KR1020177032853A
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 KR20180005186A publication Critical patent/KR20180005186A/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/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/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/11Selection of coding mode or of prediction mode among a plurality of spatial 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/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • 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
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission

Abstract

현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 획득하는 단계; 상기 윤곽의 모드 정보에 기초하여, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하는 단계; 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 단계; 및 상기 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행하는 단계를 포함하는 비디오 복호화 방법이 개시된다.

Description

인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치
인트라 예측을 수행하는 영상 복호화 방법 및 장치와 인트라 예측을 수행하는 영상 부호화 방법 및 장치에 관한다.
고해상도 또는 고화질 비디오 컨텐트를 재생, 저장할 수 있는 하드웨어의 개발 및 보급에 따라, 고해상도 또는 고화질 비디오 컨텐트를 효과적으로 부호화하거나 복호화하는 비디오 코덱의 필요성이 증대하고 있다. 기존의 비디오 코덱에 따르면, 비디오는 트리 구조의 부호화 단위에 기반하여 제한된 부호화 방식에 따라 부호화되고 있다.
변환을 이용하여 공간 영역의 영상 데이터는 주파수 영역의 계수들로 변환된다. 비디오 코덱은, 변환의 빠른 연산을 위해 영상을 소정 크기의 블록들로 분할하고, 블록마다 DCT 변환을 수행하여, 블록 단위의 주파수 계수들을 부호화한다. 공간 영역의 영상 데이터에 비해 주파수 영역의 계수들이, 압축하기 쉬운 형태를 가진다. 특히 비디오 코덱의 인터 예측 또는 인트라 예측을 통해 공간 영역의 영상 화소값은 예측 오차로 표현되므로, 예측 오차에 대해 변환이 수행되면 많은 데이터가 0으로 변환될 수 있다. 비디오 코덱은 연속적으로 반복적으로 발생하는 데이터를 작은 크기의 데이터로 치환함으로써, 데이터량을 절감하고 있다.
비디오 부호화 및 복호화 과정에서 예측 영상을 생성하기 위하여 좀 더 정밀하고 간단한 예측 방법이 요구된다.
일 실시예에 따라, 예측 영상의 생성을 위해 인트라 예측을 수행하는 때 좀 더 정밀하고 간단한 예측 방법을 제공하여 부호화 효율을 높일 수 있으며 전송 효율 또한 높일 수 있다.
본 발명의 기술적 과제들은 이상에서 언급한 특징으로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당해 기술분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
일 실시예에 따른 비디오 복호화 방법은, 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 획득하는 단계; 상기 윤곽의 모드 정보에 기초하여, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하는 단계; 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 단계; 및 상기 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행하는 단계를 포함한다.
도 1a 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 부호화 장치의 블록도이다.
도 1b 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 부호화 방법의 흐름도이다.
도 2a는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 복호화 장치의 블록도이다.
도 2b 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 복호화 방법의 흐름도이다.
도 3은 일 실시예에 따른 부호화 단위에 기초한 영상 부호화부의 블록도를 도시한다.
도 4는 일 실시예에 따른 부호화 단위에 기초한 영상 복호화부의 블록도를 도시한다.
이하, 도 5a 내지 도 5c는 다양한 실시예에 따른 현재 블록으로부터 예측 부호화를 위한 예측 단위인 세그먼트를 결정하는 방법을 도시한다.
도 6은 다양한 실시예에 따라 물체의 경계에 따른 윤곽을 이용하여 현재 블록으로부터 예측 부호화를 위한 세그먼트를 결정하는 방법을 나타낸다.
도 7a 및 도 7b는 다양한 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드를 설명하기 위한 도면이다.
도 8은 도 7a의 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드의 예시들을 나타낸다.
도 9는 도 8의 윤곽의 모드를 나타내는 윤곽의 모드 정보의 예시들을 나타낸다.
도 10은 일 실시예에 따른 현재 블록을 나타낸다.
도 11은 일 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 결정하는 방법을 나타낸다.
도 12 내지 도 14은 다양한 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 결정하는 방법을 나타낸다.
도 15 내지 도 16b는 다양한 실시예에 따른 윤곽의 좌표를 샘플의 정밀도에 따라 결정하는 방법을 나타낸다.
도 17은 일 실시예에 따른 현재 블록을 구성하는 세그먼트들의 나타내는 마스크의 일 예시를 나타낸다.
도 18은 도 17의 현재 블록의 경계 영역에 포함되는 샘플의 마스크값을 결정하는 다양한 방법의 예시들을 나타낸다.
도 19 및 20은 다양한 실시예에 따른 현재 블록의 마스크를 생성하는 방법의 예시들을 나타낸다.
도 21은 일 실시예에 따른 현재 블록의 마스크를 생성하는 방법의 예시를 나타낸다.
도 22는 일 실시예에 따른 현재 블록의 세그먼트에 대하여 예측을 수행하는 방법을 나타낸다.
도 23은 일 실시예에 따른 현재 블록의 세그먼트에 대하여 예측을 수행하는 방법을 나타낸다.
도 24는 다양한 실시예에 따른 현재 블록의 세그먼트들의 샘플값을 전송하는 방법을 설명하기 위한 도면이다.
도 25 및 도 26는 다양한 실시예에 따른 현재 블록의 주변 샘플들을 이용하여 현재 블록의 세그먼트의 샘플값을 생성하는 방법을 나타낸다.
도 27은 일 실시예에 따른 현재 블록으로부터 분할되는 세그먼트의 개수에 따른 현재 블록의 예측 방법의 흐름도를 나타낸다.
도 28은 일 실시예에 따른 현재 블록의 변환 단위에 따른 현재 블록의 레지듀얼 데이터의 부호화 및 복호화 과정을 설명하기 위한 도면이다.
도 29 내지 도 31은 다양한 실시예에 따른 현재 블록의 윤곽을 현재 블록의 주변 블록으로부터 획득하는 방법을 나타낸다.
도 32 및 도 33은 다양한 실시예에 따른 현재 블록의 서브 블록을 이용하여 예측을 수행하는 방법을 나타낸다.
도 34는 일 실시예에 따른 현재 블록으로부터 세 개의 세그먼트를 결정하는 방법을 나타낸다.
도 35는 일 실시예에 따른 현재 블록의 윤곽에 기초하여 현재 블록의 서브 블록을 이용하여 세그먼트들을 결정하는 방법을 나타낸다.
도 36은 일 실시예에 따른 현재 블록의 윤곽을 결정하는 방법을 나타낸다.
도 37은 일 실시예에 따른 현재 블록의 예측값을 획득하는 방법을 수도 코드(pseudo code)로 나타낸 일 예시이다.
도 38은 일 실시예에 따른 현재 블록에 대하여 예측을 수행하는 방법을 나타낸다.
도 39는 일 실시예에 따른 현재 블록에 대하여 참조 샘플을 이용하여 예측을 수행하는 상세한 과정을 나타낸다.
도 40a 내지 도 40c는 다양한 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
도 41은 다양한 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
도 42는 일 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
도 43 및 도 44는 다양한 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
도 45는 일 실시예에 따른 인트라 예측 수행을 위한 신택스 엘리먼트들을 나타낸다.
도 46 는 다양한 실시예에 따른 심도별 부호화 단위 및 예측 단위를 도시한다.
도 47은 다양한 실시예에 따른, 부호화 단위 및 변환 단위의 관계를 도시한다.
도 48은 다양한 실시예에 따른 부호화 정보들을 도시한다.
발명의 실시를 위한 최선의 형태
일 실시예에 따른 비디오 복호화 방법은, 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 획득하는 단계; 상기 윤곽의 모드 정보에 기초하여, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하는 단계; 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 단계; 및 상기 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행하는 단계를 포함한다.
또한, 상기 적어도 하나의 세그먼트를 결정하는 단계는, 상기 윤곽의 모드 정보에 따라 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표 중 적어도 하나가 유도 가능하지 않은 경우, 비트스트림으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표 중 적어도 하나를 획득하는 것을 특징으로 할 수 있다.
또한, 상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 우측에 위치하는 경우, 상기 제 1 좌표를 비트스트림으로부터 획득하는 단계; 및 상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 하단에 위치하는 경우, 상기 제 2 좌표를 비트스트림으로부터 획득하는 단계를 더 포함할 수 있다.
또한, 상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 상단에 위치하는 경우, 상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계; 및 상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 좌측에 위치하는 경우, 상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계를 더 포함할 수 있다.
또한, 상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계는, 상기 현재 블록의 상단 블록의 최하단 샘플들의 샘플값을 이용하여 상기 윤곽의 제 1 좌표를 유도하고, 상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계는, 상기 현재 블록의 좌측 블록의 최우측 샘플들의 샘플값을 이용하여 상기 윤곽의 제 2 좌표를 유도하는 것을 특징으로 할 수 있다.
또한, 상기 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보는 상기 현재 블록의 상변, 우변, 하변 및 좌변 중 적어도 두 변을 나타내는 정보를 포함할 수 있다.
또한, 상기 현재 블록으로부터 결정되는 적어도 하나의 세그먼트의 개수에 관한 정보를 획득하는 단계; 및 상기 적어도 하나의 세그먼트의 개수에 관한 정보가 상기 현재 블록이 하나의 세그먼트로 결정됨을 나타내는 경우, 상기 하나의 세그먼트에 대한 예측 모드를 나타내는 정보를 획득하는 단계를 더 포함할 수 있다.
또한, 상기 적어도 하나의 세그먼트에 대하여 예측을 수행하는 단계는, 상기 현재 블록을 구성하는 세그먼트들의 경계를 나타내는 상기 현재 블록의 마스크를 생성하는 단계; 상기 현재 블록의 주변 샘플을 이용하여 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계; 및 상기 생성된 마스크 및 상기 결정된 샘플 값에 기초하여, 상기 적어도 하나의 세그먼트의 예측 값을 결정하는 단계를 포함할 수 있다.
또한, 상기 현재 블록의 마스크를 생성하는 단계는, 상기 현재 블록으로부터 적어도 하나의 세그먼트를 결정하는 윤곽과 상기 현재 블록의 샘플 간의 위치 관계에 기초하여 상기 현재 블록의 샘플의 마스크 값을 결정함으로써 상기 현재 블록의 마스크를 생성하는 것을 특징으로 할 수 있다.
또한, 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계는, 상기 획득된 윤곽의 모드 정보에 기초하여 상기 현재 블록의 주변 블록에 포함된 참조 샘플을 결정하는 단계; 및 상기 결정된 참조 샘플을 이용하여 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계를 포함할 수 있다.
다른 일 실시예에 따른 비디오 부호화 방법은, 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드를 결정하는 단계; 상기 윤곽의 모드에 기초하여, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하는 단계; 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 단계; 상기 적어도 하나의 세그먼트를 이용하여 상기 현재 블록에 대하여 예측을 수행하는 단계; 및 상기 윤곽의 모드를 나타내는 상기 윤곽의 모드 정보를 부호화하는 단계를 포함할 수 있다.
또한, 상기 적어도 하나의 세그먼트를 결정하는 단계는, 상기 윤곽의 모드 정보에 따라 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표 중 적어도 하나가 유도 가능하지 않은 경우, 상기 현재 블록의 가장자리에 위치한 샘플들을 이용하여 결정되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 것을 특징으로 할 수 있다.
또한, 상기 현재 블록의 가장자리에 위치한 샘플들 중 상기 현재 블록의 상단 샘플들 또는 상기 현재 블록의 우측 샘플들을 이용하여 상기 윤곽의 제 1 좌표를 결정하는 단계; 및 상기 현재 블록의 가장자리에 위치한 샘플들 중 상기 현재 블록의 하단 샘플들 또는 상기 현재 블록의 좌측 샘플들을 이용하여 상기 윤곽에 대한 제 2 좌표를 결정하는 단계를 더 포함할 수 있다.
또한, 상기 결정된 윤곽의 모드에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 우측에 위치하는 경우, 상기 현재 블록 내의 우측 샘플들을 이용하여 결정되는 상기 윤곽의 제 1 좌표를 결정하는 단계; 및 상기 결정된 윤곽의 모드에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 하단에 위치하는 경우, 상기 현재 블록 내의 하단 샘플들을 이용하여 상기 윤곽의 제 2 좌표를 결정하는 단계를 포함할 수 있다.
또한, 상기 결정된 윤곽의 모드에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 상단에 위치하는 경우, 상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계; 및 상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 좌측에 위치하는 경우, 상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계를 더 포함할 수 있다.
또한, 상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계는, 상기 현재 블록의 상단 블록의 최하단 샘플들을 샘플값을 이용하여 상기 윤곽의 제 1 좌표를 유도하고, 상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계는, 상기 현재 블록의 좌측 블록의 최우측 샘플들의 샘플값을 이용하여 상기 윤곽의 제 2 좌표를 유도하는 것을 특징으로 할 수 있다.
또한, 상기 현재 블록으로부터 결정되는 적어도 하나의 세그먼트의 개수를 결정하는 단계; 및 상기 현재 블록이 하나의 세그먼트로 결정되는 경우, 상기 적어도 하나의 세그먼트의 개수에 관한 정보 및 상기 하나의 세그먼트에 대한 예측 모드를 나타내는 정보를 부호화하는 단계를 더 포함할 수 있다.
또한, 상기 현재 블록을 구성하는 세그먼트들의 경계를 나타내는 상기 현재 블록의 마스크를 생성하는 단계; 상기 현재 블록의 주변 샘플을 이용하여 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계; 및 상기 생성된 마스크 및 상기 결정된 샘플 값에 기초하여, 상기 적어도 하나의 세그먼트의 예측 값을 결정하는 단계를 더 포함할 수 있다.
또한, 상기 현재 블록의 마스크를 생성하는 단계는, 상기 현재 블록으로부터 적어도 하나의 세그먼트를 결정하는 윤곽과 상기 현재 블록의 샘플 간의 위치 관계에 기초하여 상기 현재 블록의 샘플의 마스크 값을 결정함으로써 상기 현재 블록의 마스크를 생성하는 것을 특징으로 할 수 있다.
또 다른 일 실시예에 따른 비디오 복호화 장치는, 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 획득하고, 상기 윤곽의 모드 정보에 기초하여 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하고, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 세그먼트 결정부; 및 상기 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행하는 예측 수행부를 포함할 수 있다.
발명의 실시를 위한 형태
이하 도 1a 내지 도 45을 참조하여, 일 실시예에 따른 윤곽을 기반으로한 인트라 예측 부호화(contour-based intra prediction coding) 방법 및 윤곽을 기반으로한 인트라 복호화 방법이 제안된다. 또한, 도 46 내지 도 48을 참조하여, 앞서 제안한 윤곽을 기반으로한 인트라 예측 비디오 부호화 방법이 사용되지 않는 경우의 일 실시예에 따른 계층적 구조의 부호화 단위에 기초한 비디오 부호화 방법 및 비디오 복호화 방법이 개시된다.
이하, '영상'은 비디오의 정지영상이거나 동영상, 즉 비디오 그 자체를 나타낼 수 있다.
이하 '샘플'은, 영상의 샘플링 위치에 할당된 데이터로서 프로세싱 대상이 되는 데이터를 의미한다. 예를 들어, 공간영역의 영상에서 픽셀 값들 또는 블록의 레지듀얼이 샘플들일 수 있다.
이하 ‘현재 블록(Current Block)’은, 부호화 또는 복호화 하고자 하는 영상의 블록을 의미할 수 있다.
이하 ‘주변 블록(Neighboring Block)’은, 현재 블록에 이웃하는 부호화되었거나 또는 복호화된 적어도 하나의 블록을 나타낸다. 예를 들어, 주변 블록은 현재 블록의 상단, 현재 블록의 우측 상단, 현재 블록의 좌측, 또는 현재 블록의 좌측 상단에 위치할 수 있다. 또한 공간적으로 이웃하는 블록뿐 아니라 시간적으로 이웃하는 블록도 포함할 수 있다. 예를 들어, 시간적으로 이웃하는 주변 블록은 참조 픽쳐의 현재 블록과 동일한 위치(co-located) 블록 혹은 동일한 위치 블록의 주변 블록을 포함할 수 있다.
먼저, 도 1a 내지 도 45를 참조하여, 일 실시예에 따른 윤곽 기반 인트라 예측을 수행하기 위한 비디오 복호화 및 비디오 부호화 장치(10)와 비디오 복호화 및 부호화 방법 이 개시된다.
도 1a 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 부호화 장치(10)의 블록도이다. 도 1b 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 부호화 방법의 흐름도이다.
도 1a를 참조하면, 일 실시예에 따른 비디오 부호화 장치(10)는 세그먼트 결정부(12), 예측 수행부(14) 및 비트스트림 생성부(16)를 포함할 수 있다.
일 실시예에 따른 비디오에 포함된 현재 픽처들은 최대 크기의 부호화 단위인 최대 부호화 단위로 구획될 수 있다. 예를 들어, 현재 픽처가 최대 부호화 단위보다 크다면, 현재 픽처의 영상 데이터는 적어도 하나의 최대 부호화 단위로 분할될 수 있다. 일 실시예에 따른 최대 부호화 단위는 크기 16x16, 32x32, 64x64, 128x128, 256x256 등의 데이터 단위로, 가로 및 세로 크기가 8보다 큰 2의 제곱승인 정사각형의 데이터 단위일 수 있다. 또 다른 일 실시예에 따른 최대 부호화 단위는 MxN 크기의 데이터 단위일 수도 있다. 이때, M과 N은 각각 2보다 큰 2의 제곱승일 수 있다.
일 실시예에 따른 부호화 단위는 최대 크기 및 심도에 따라 결정될 수 있다. 심도란 최대 부호화 단위로부터 부호화 단위가 공간적으로 분할한 횟수를 나타내며, 심도가 깊어질수록 심도별 부호화 단위는 최대 부호화 단위로부터 최소 부호화 단위까지 분할될 수 있다. 최대 부호화 단위의 심도가 최상위 심도이며 최소 부호화 단위의 심도가 부호화 심도일 수 있다. 최대 부호화 단위는 심도가 깊어짐에 따라 심도별 부호화 단위의 크기는 감소하므로, 상위 심도의 부호화 단위는 복수 개의 하위 심도의 부호화 단위를 포함할 수 있다.
전술한 바와 같이 부호화 단위의 최대 크기에 따라, 현재 픽처의 영상 데이터를 최대 부호화 단위로 분할하며, 각각의 최대 부호화 단위는 심도별로 분할되는 부호화 단위들을 포함할 수 있다. 일 실시예에 따른 최대 부호화 단위는 심도별로 분할되므로, 최대 부호화 단위에 포함된 공간 영역(spatial domain)의 영상 데이터가 심도에 따라 계층적으로 분류될 수 있다.
최대 부호화 단위의 높이 및 너비를 계층적으로 분할할 수 있는 총 횟수를 제한하는 최대 심도 및 부호화 단위의 최대 크기가 미리 설정되어 있을 수 있다.
일 실시예에 따른 최대 부호화 단위 내의 영상 데이터는 최대 심도 이하의 적어도 하나의 심도에 따라 심도별 부호화 단위에 기반하여 부호화되고, 각각의 심도별 부호화 단위에 기반한 부호화 결과가 비교된다. 심도별 부호화 단위의 부호화 오차의 비교 결과 부호화 오차가 가장 작은 심도가 선택될 수 있다. 각각의 최대화 부호화 단위마다 적어도 하나의 부호화 심도가 결정될 수 있다.
일 실시예에 따른 최대 부호화 단위의 크기는 심도가 깊어짐에 따라 부호화 단위가 계층적으로 분할되며 부호화 단위의 개수는 증가한다. 또한, 하나의 최대 부호화 단위에 포함되는 동일한 심도의 부호화 단위들이라 하더라도, 각각의 데이터에 대한 부호화 오차를 측정하고 하위 심도로의 분할 여부가 결정된다. 따라서, 하나의 최대 부호화 단위에 포함되는 데이터라 하더라도 위치에 따라 심도별 부호화 오차가 다르므로 위치에 따라 부호화 심도가 달리 결정될 수 있다. 따라서, 하나의 최대 부호화 단위에 대해 부호화 심도가 하나 이상 설정될 수 있으며, 최대 부호화 단위의 데이터는 하나 이상의 부호화 심도의 부호화 단위에 따라 구획될 수 있다.
따라서, 일 실시예에 따른 현재 최대 부호화 단위에 포함되는 트리 구조에 따른 부호화 단위들이 결정될 수 있다. 일 실시예에 따른 '트리 구조에 따른 부호화 단위들'은, 현재 최대 부호화 단위에 포함되는 모든 심도별 부호화 단위들 중, 부호화 심도로 결정된 심도의 부호화 단위들을 포함한다. 부호화 심도의 부호화 단위는, 최대 부호화 단위 내에서 동일 영역에서는 심도에 따라 계층적으로 결정되고, 다른 영역들에 대해서는 독립적으로 결정될 수 있다. 마찬가지로, 현재 영역에 대한 부호화 심도는, 다른 영역에 대한 부호화 심도와 독립적으로 결정될 수 있다.
일 실시예에 따른 최대 심도는 최대 부호화 단위로부터 최소 부호화 단위까지의 분할 횟수와 관련된 지표이다. 일 실시예에 따른 제 1 최대 심도는, 최대 부호화 단위로부터 최소 부호화 단위까지의 총 분할 횟수를 나타낼 수 있다. 일 실시예에 따른 제 2 최대 심도는 최대 부호화 단위로부터 최소 부호화 단위까지의 심도 레벨의 총 개수를 나타낼 수 있다. 예를 들어, 최대 부호화 단위의 심도가 0이라고 할 때, 최대 부호화 단위가 1회 분할된 부호화 단위의 심도는 1로 설정되고, 2회 분할된 부호화 단위의 심도가 2로 설정될 수 있다. 이 경우, 최대 부호화 단위로부터 4회 분할된 부호화 단위가 최소 부호화 단위라면, 심도 0, 1, 2, 3 및 4의 심도 레벨이 존재하므로 제 1 최대 심도는 4, 제 2 최대 심도는 5로 설정될 수 있다.
또한, 최대 부호화 단위의 예측 부호화 및 변환이 수행될 수 있다. 예측 부호화 및 변환도 마찬가지로, 최대 부호화 단위마다, 최대 심도 이하의 심도마다 심도별 부호화 단위를 기반으로 수행된다.
최대 부호화 단위가 심도별로 분할될 때마다 심도별 부호화 단위의 개수가 증가하므로, 심도가 깊어짐에 따라 생성되는 모든 심도별 부호화 단위에 대해 예측 부호화 및 변환을 포함한 부호화가 수행되어야 한다. 이하 설명의 편의를 위해 적어도 하나의 최대 부호화 단위 중 현재 심도의 부호화 단위인 현재 블록에 대한 예측 부호화 및 변환을 설명하겠다.
일 실시예에 따른 비디오 부호화 장치(10)는, 영상 데이터의 부호화를 위한 데이터 단위의 크기 또는 형태를 다양하게 선택할 수 있다. 영상 데이터의 부호화를 위해서는 예측 부호화, 변환, 엔트로피 부호화 등의 단계를 거치는데, 모든 단계에 걸쳐서 동일한 데이터 단위가 사용될 수도 있으며, 단계별로 데이터 단위가 변경될 수도 있다.
예를 들어 비디오 부호화 장치(10)는, 영상 데이터의 부호화를 위한 부호화 단위뿐만 아니라, 부호화 단위의 영상 데이터의 예측 부호화를 수행하기 위해, 부호화 단위와 다른 데이터 단위를 선택할 수 있다.
최대 부호화 단위의 예측 부호화를 위해서는, 일 실시예에 따른 부호화 심도의 부호화 단위, 즉 더 이상한 분할되지 않는 부호화 단위를 기반으로 예측 부호화가 수행될 수 있다. 이하, 예측 부호화의 기반이 되는 더 이상한 분할되지 않는 부호화 단위를 '예측 단위'라고 지칭한다.
일 실시예에 따른 원본 영상은 직선 등으로 나타내는 물체(object)의 경계(boundary)를 원본 영상의 내에 포함할 수 있고, 영상의 현재 블록은 물체의 경계에 따라 현재 블록의 윤곽을 결정할 수 있다. 예를 들어, 현재 블록의 윤곽은 현재 블록의 샘플들의 값에 의하여 표현되는 물체의 경계에 따라 직선, 곡선, 꺽인선 등이 될 수 있다. 결정된 현재 블록의 윤곽을 이용하여 현재 블록의 예측 단위인 세그먼트들로 분할될 수 있다.
예측 단위의 예측 모드는, 인트라 모드, 인터 모드 및 스킵 모드 중 적어도 하나일 수 있다. 부호화 단위 이내의 하나의 예측 단위마다 독립적으로 부호화가 수행되어 부호화 오차가 가장 작은 예측 모드가 선택될 수 있다.
구체적으로, 일 실시예에 따른 세그먼트 결정부(12)는 현재 블록에 대하여 윤곽에 기반한 예측(contour-based prediction)을 수행할지 여부를 결정할 수 있다. 즉, 일 실시예에 따른 세그먼트 결정부(12)는 현재 블록의 예측을 수행하기 위한 예측 단위를 현재 블록에 포함된 물체의 경계에 따른 윤곽에 기초하여 결정할지 여부를 결정할 수 있다.
예를 들어, 윤곽 기반의 예측을 수행하는 것으로 결정되면, 일 실시예에 따른 세그먼트 결정부(12)는 현재 블록의 샘플값들에 따른 윤곽에 기초하여 현재 블록을 다양한 형태의 복수 개의 세그먼트들로 분할 수 있다. 또한, 윤곽 기반의 예측을 수행하지 않는 것으로 결정되면, 일 실시예에 따른 세그먼트 결정부(12)는 현재 블록의 소정의 파티션 타입들 중 하나의 파티션 타입으로 분할할 수 있다.
윤곽 기반의 예측이 수행되는 경우, 일 실시예에 따른 세그먼트 결정부(12)는 현재 블록에 대한 예측을 수행하기 위하여, 현재 블록으로부터 현재 블록의 윤곽에 기초하여 분할되는 세그먼트들을 결정할 수 있다. 일 실시예에 따른 현재 블록의 윤곽은 현재 블록에 포함된 물체의 경계에 대응하여 결정될 수 있다. 예를 들어, 일 실시예에 따른 현재 블록의 윤곽은 현재 블록의 샘플들의 값에 기초하여, 또는, 현재 블록의 주변 블록을 이용하여, 결정될 수 있다.
일 실시예에 따른 세그먼트 결정부(12)는, 현재 블록의 윤곽에 따라 현재 블록의 윤곽의 모드를 결정할 수 있다. 예를 들어, 현재 블록의 윤곽의 모드는 현재 블록 내에서의 윤곽의 방향을 나타낼 수 있다.
일 실시예에 따른 현재 블록으로부터 예측을 위한 세그먼트들을 결정하기 위한 윤곽이 직선 윤곽인 경우, 현재 블록의 각각의 변(side)들 중 윤곽이 지나는 변을 가리키는 윤곽의 모드가 결정될 수 있다. 예를 들어, 현재 블록이 상변, 우변, 하변 및 좌변을 갖는 경우, 현재 블록의 윤곽의 모드는 현재 블록의 상변, 우변, 하변 및 좌변 중 윤곽이 닿는 적어도 두 면을 나타낼 수 있다.
일 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드는 제 1 모드 내지 제 6 모드 중 하나의 모드로 결정될 수 있다. 예를 들어, 비디오 부호화 장치(10)는 RDO(rate-distortion optimization) 방법을 이용해, 제 1 모드 내지 제 6 모드에 따라 현재 블록의 부복호화를 모두 수행하여 제 1 모드 내지 제 6 모드 중 최선의 RD cost를 갖는 모드를 선택할 수 있다.
또한, 일 실시예에 따른 세그먼트 결정부(12)는, 결정된 현재 블록의 윤곽의 모드에 따라 윤곽의 모드 정보를 결정할 수 있다. 예를 들어, 세그먼트 결정부(12)는 현재 블록의 각 변에 숫자를 할당하고, 현재 블록의 윤곽의 모드가 나타내는 변에 대응하는 숫자의 조합을 현재 블록의 윤곽의 모드 정보로 결정할 수 있다. 다양한 실시예에 따른 현재 블록의 윤곽과 윤곽의 모드 정보를 결정하는 더욱 구체적인 방법은 이하 도 6 내지 도 9를 참조하여 후술하도록 한다.
일 실시예에 따른 세그먼트 결정부(12)는, 현재 블록의 윤곽의 좌표에 관한 정보를 현재 블록의 주변 블록으로부터 유도할지 여부를 결정할 수 있다. 윤곽의 좌표에 관한 정보는 윤곽의 위치를 특정하기 위한 정보로서, 윤곽의 x축 및 y축의 좌표를 나타낼 수 있다. 예를 들어, 일 실시예에 따른 현재 블록의 윤곽이 단일 직선 윤곽인 경우, 현재 블록의 윤곽의 좌표에 관한 정보는 단일 직선 윤곽의 시작점을 나타내는 제 1 좌표 및 윤곽의 끝점을 나타내는 제 2 좌표를 나타내는 정보일 수 있다.
구체적으로, 일 실시예에 따른 세그먼트 결정부(12)는, 현재 블록의 윤곽의 좌표에 관한 정보가 현재 블록의 주변 블록으로부터 유도 가능한 경우, 현재 블록의 윤곽의 좌표에 관한 정보를 주변 블록으로부터 획득할 수 있다. 또는, 일 실시예에 따른 세그먼트 결정부(12)는, 현재 블록의 윤곽의 좌표에 관한 정보가 현재 블록의 주변 블록으로부터 유도 가능하지 않은 경우, 현재 블록의 내부의 샘플들을 이용하여 윤곽의 좌표에 관한 정보를 결정할 수 있다.
예를 들어, 일 실시예에 따른 세그먼트 결정부(12)는, 현재 블록의 윤곽의 모드가 가리키는 현재 블록의 변의 외부에 인접하는 주변 샘플이 사용 가능한 경우, 현재 블록의 해당 변에 위치하는 윤곽의 좌표를 인접하는 주변 샘플로부터 유도할 수 있다. 예를 들어, 현재 블록의 외부에 인접하는 주변 샘플들 중 사용 가능한 샘플은, 현재 블록의 상측 또는 좌측에 위치하는 샘플일 수 있다.
또한, 일 실시예에 따른 세그먼트 결정부(12)는, 현재 블록의 윤곽의 모드가 나타내는 현재 블록의 변의 외부에 인접하는 주변 샘플이 사용 가능하지 않은 경우, 현재 블록의 해당 변에 위치하는 윤곽의 좌표를 현재 블록의 내부의 샘플로부터 결정할 수 있다. 예를 들어, 현재 블록의 외부에 인접하는 주변 샘플들 중 사용 가능하지 않은 샘플은, 현재 블록의 하측 또는 우측에 위치하는 샘플일 수 있다. 현재 블록의 윤곽의 모드가 나타내는 현재 블록의 변의 외부에 인접하는 주변 샘플이 사용 가능하지 않은 경우, 이용되는 현재 블록 내부의 샘플들은 현재 블록의 변의 내부에 인접하는 샘플들일 수 있으며, 결정되는 윤곽의 좌표는 주변 블록으로부터 유도될 수 없으므로 비디오 복호화 장치(20)로 전송될 수 있다.
다양한 실시예에 따른 현재 블록의 윤곽의 좌표를 결정하는 더욱 구체적인 방법은, 이하 도 10 내지 도 16b에서 후술하도록 한다.
일 실시예에 따른 세그먼트 결정부(12)는, 결정된 현재 블록의 윤곽의 좌표에 관한 정보에 기초하여 현재 블록으로부터 예측을 위한 적어도 하나의 세그먼트를 결정할 수 있다.
일 실시예에 따른 현재 블록의 예측을 위한 적어도 하나의 세그먼트가 결정되면, 세그먼트 간의 경계를 나타내는 현재 블록의 마스크가 생성될 수 있다.
일 실시예에 따른 현재 블록의 마스크는 현재 블록으로부터 분할되는 적어도 하나의 세그먼트의 영역 및 세그먼트들 간의 경계를 판단하기 위한 데이터로서, 현재 블록의 각 샘플들에 대응하는 마스크값들의 배열로 구성될 수 있다. 일 실시예에 따른 현재 블록의 마스크의 값은 현재 블록의 윤곽과 현재 블록의 각 샘플 값의 위치 관계에 기초하여 생성될 수 있다.
다양한 실시예에 따른 현재 블록의 마스크를 결정하는 구체적인 방법은, 이하 도 17 내지 도 21를 참조하여 후술한다.
일 실시예에 따른 예측 수행부(14)는 현재 블록의 세그먼트들에 대하여 윤곽에 기반한 인트라 예측을 수행할 수 있다.
예를 들어, 일 실시예에 따른 예측 수행부(14)는 현재 블록의 주변 샘플 및 생성된 현재 블록의 마스크를 이용하여 현재 블록에 대하여 예측을 수행할 수 있다.
구체적으로, 일 실시예에 따른 예측 수행부(14)는 현재 블록의 세그먼트의 샘플값의 예측값을 현재 블록의 주변 샘플을 이용하여 생성할 수 있다. 이때, 세그먼트의 샘플값은 세그먼트 영역에 포함된 각각의 샘플들의 샘플값일 수 있다. 예를 들어, DC 모드 등의 인트라 예측 방식이 이용될 수 있다. 참조할 현재 블록의 주변 샘플의 위치는, 현재 블록의 윤곽의 모드에 기초하여 결정될 수 있다.
일 실시예에 따른 예측 수행부(14)는 생성된 현재 블록의 세그먼트의 샘플값에 현재 블록의 마스크를 적용함으로써 현재 블록의 세그먼트의 예측값을 생성될 수 있다. 이때, 세그먼트의 예측값은 세그먼트 영역에 포함된 각각의 샘플들의 예측값일 수 있으며, 현재 블록의 세그먼트의 샘플값과 현재 블록의 마스크 값의 가중합(weighted sum)을 이용하여 생성될 수 있다.
다양한 실시예에 따른 현재 블록에 대하여 예측을 수행하는 더욱 구체적인 방법은, 이하 도 22 내지 도 26를 참조하여 후술한다.
또한, 일 실시예에 따른 예측이 수행된 현재 블록에 대하여 필터링이 수행될 수 있다. 예를 들어, 현재 블록의 현재 블록의 세그먼트들 간의 경계에 위치하는 샘플들의 예측값에 대하여 필터링이 수행될 수 있다.
다양한 실시예에 따른 예측이 수행된 현재 블록에 대하여 필터링을 수행하는 더욱 구체적인 방법은, 이하 도 37을 참조하여 후술한다.
또한, 일 실시예에 따른 비디오 부호화 장치(10)는, 영상 데이터의 부호화를 위한 부호화 단위뿐만 아니라, 부호화 단위와 다른 데이터 단위를 기반으로 부호화 단위의 영상 데이터의 변환을 수행할 수 있다.
부호화 단위의 변환을 위해서는, 부호화 단위보다 작거나 같은 크기의 데이터 단위를 기반으로 변환이 수행될 수 있다. 예를 들어, 변환을 위한 데이터 단위는, 인트라 모드를 위한 데이터 단위 및 인터 모드를 위한 데이터 단위를 포함할 수 있다.
이하, 변환의 기반이 되는 데이터 단위는 '변환 단위'라고 지칭될 수 있다. 부호화 단위와 유사한 방식으로, 부호화 단위 내의 변환 단위도 재귀적으로 더 작은 크기의 변환 단위로 분할되면서, 부호화 단위의 레지듀얼 데이터가 변환 심도에 따라 트리 구조에 따른 변환 단위에 따라 구획될 수 있다.
일 실시예에 따른 변환 단위에 대해서도, 부호화 단위의 높이 및 너비가 분할하여 변환 단위에 이르기까지의 분할 횟수를 나타내는 변환 심도가 설정될 수 있다. 예를 들어, 크기 2Nx2N의 현재 부호화 단위의 변환 단위의 크기가 2Nx2N이라면 변환 심도 0, 변환 단위의 크기가 NxN이라면 변환 심도 1, 변환 단위의 크기가 N/2xN/2이라면 변환 심도 2로 설정될 수 있다. 즉, 변환 단위에 대해서도 변환 심도에 따라 트리 구조에 따른 변환 단위가 설정될 수 있다.
부호화 심도별 부호화 정보는, 부호화 심도 뿐만 아니라 예측 관련 정보 및 변환 관련 정보가 필요하다. 따라서, 최소 부호화 오차를 발생시킨 부호화 심도 뿐만 아니라, 예측 단위를 파티션으로 분할한 파티션 타입, 예측 단위별 예측 모드, 변환을 위한 변환 단위의 크기 등이 결정될 수 있다.
심도별 부호화 단위의 부호화 오차가 라그랑지 곱(Lagrangian Multiplier) 기반의 율-왜곡 최적화 기법(Rate-Distortion Optimization)을 이용하여 측정될 수 있다.
일 실시예에 따른 비트스트림 생성부(16)는, 결정된 현재 블록 부호화 및 복호화에 필요한 정보들을 포함하는 비트스트림을 생성할 수 있다. 예를 들어, 비트스트림 생성부(16)는 현재 블록에 대하여 윤곽에 기반한 예측을 수행할지 여부를 나타내는 정보를 포함하는 비트스트림을 생성할 수 있다.
또한, 일 실시예에 따른 비트스트림 생성부(16)는 현재 블록의 윤곽의 모드를 나타내는 윤곽의 모드 정보를 포함하는 비트스트림을 생성할 수 있다.
또한, 일 실시예에 따른 비트스트림 생성부(16)는 현재 블록의 윤곽의 모드 정보에 따라 현재 블록의 윤곽의 좌표에 관한 정보를 포함하는 비트스트림을 생성할 수 있다. 예를 들어, 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능함을 나타내는 경우, 현재 블록의 윤곽의 좌표에 관한 정보가 비트스트림에 포함되지 않을 수 있다. 또한, 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능하지 않음을 나타내는 경우, 현재 블록의 윤곽의 좌표에 관한 정보가 비트스트림에 포함될 수 있다.
또한, 일 실시예에 따른 현재 블록에 대하여 경계의 방향에 따라 예측을 수행할지 여부를 나타내는 정보, 현재 블록의 경계 영역의 폭에 관한 정보, 현재 블록의 예측값에 대하여 필터링을 수행할지 여부를 타나내는 정보 등이 비트스틀미에 더 포함될 수 있다.
또한, 일 실시예에 부호화 심도에 관한 정보, 심도별 부호화 모드에 관한 정보, 예측 단위의 파티션 타입 정보, 예측 모드 정보, 변환 단위의 크기 정보 등이 비트스트림에 더 포함될 수 있다.
전술한 바와 같이 비디오 부호화 장치(10)는 윤곽에 기반한 인트라 예측을 수행함으로써 복원 영상의 품질을 향상시키는 동시에 영상의 예측에 필요한 정보의 양을 줄임으로써 전송 효율 및 부호화 효율을 향상시킬 수 있다.
이하, 윤곽 기반의 인트라 예측을 수행하는 비디오 부호화 장치(10)의 동작을 도 1b를 참조하여 상술한다.
도 1b 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 부호화 방법의 흐름도이다.
11 단계에서, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드를 결정할 수 있다.
예를 들어, 비디오 부호화 장치(10)는 현재 블록의 샘플들의 샘플값에 기초하여 현재 블록의 윤곽을 결정할 수 있다. 또는 비디오 부호화 장치(10)는 현재 블록의 주변 블록을 이용하여 현재 블록의 윤곽을 결정할 수도 있다. 일 실시예에 따른 비디오 부호화 장치(10)는 복수 개의 모드들 중 최선의 RD cost를 갖는 모드를 선택할 수 있다.
13 단계에서, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 모드에 기초하여, 현재 블록의 주변 블록으로부터 윤곽의 좌표가 유도 가능한지 여부를 결정할 수 있다.
예를 들어, 비디오 부호화 장치(10)는 현재 블록의 윤곽의 모드가 가리키는 현재 블록의 변이 현재 블록의 상측 또는 좌측인 경우, 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능한 것으로 결정할 수 있다.
또한, 비디오 부호화 장치(10)는 현재 블록의 윤곽의 모드가 가리키는 현재 블록의 변이 현재 블록의 하측 또는 우측인 경우, 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능하지 않은 것으로 결정할 수 있다.
일 실시예에 따른 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능한지 여부는, 윤곽의 복수 개의 좌표에 대하여 각각 결정될 수 있다.
15 단계에서, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능한 경우, 현재 블록의 주변 블록으로부터 윤곽의 좌표를 유도할 수 있다. 일 실시예에 따른 비디오 부호화 장치(10)는 주변 블록으로부터 유도 가능하지 않은 윤곽의 좌표는 현재 블록 내의 샘플들을 이용하여 결정할 수 있다. 이용되는 현재 블록 내의 샘플들은 현재 블록의 윤곽이 가리키는 변에 인접하고 현재 블록의 내부에 위치하는 샘플들일 수 있다.
구체적으로, 일 실시예에 따른 비디오 부호화 장치(10)는 주변 블록의 샘플들에 대한 샘플값의 변화량(gradient) 또는 현재 블록 내의 샘플들에 대한 샘플값의 변화량에 기초하여 현재 블록의 윤곽의 좌표를 결정할 수 있다.
또한, 일 실시예에 따른 비디오 부호화 장치(10)는 윤곽의 좌표에 기초하여 현재 블록으로부터 예측 수행을 위한 적어도 하나의 세그먼트를 결정할 수 있다. 예를 들어, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록이 단일 직선 윤곽에 기초하여 분할되는 경우, 두 개의 세그먼트를 결정할 수 있다.
17 단계에서, 일 실시예에 따른 비디오 부호화 장치(10)는 결정된 적어도 하나의 세그먼트를 이용하여 현재 블록에 대하여 예측을 수행할 수 있다.
19 단계에서, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 모드 정보를 부호화할 수 있다. 또한, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 모드 정보에 따라 현재 블록의 윤곽의 좌표에 관한 정보를 부호화할 수 있다.
예를 들어, 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능함을 나타내는 경우, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 좌표에 관한 정보를 부호화 하지 않을 수 있다. 또한, 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능하지 않음을 나타내는 경우, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 좌표에 관한 정보를 부호화할 수 있다.
일 실시예에 따른 비디오 부호화 장치(10)는 세그먼트 결정부(12), 예측 수행부(14) 및 비트스트림 생성부(16)를 총괄적으로 제어하는 중앙 프로세서(미도시)를 포함할 수 있다. 또는, 세그먼트 결정부(12), 예측 수행부(14) 및 비트스트림 생성부(16)가 각각의 자체 프로세서(미도시)에 의해 작동되며, 프로세서(미도시)들이 상호 유기적으로 작동함에 따라 비디오 부호화 장치(10)가 전체적으로 작동될 수도 있다. 또는, 비디오 부호화 장치(10)의 외부 프로세서(미도시)의 제어에 따라, 세그먼트 결정부(12), 예측 수행부(14) 및 비트스트림 생성부(16)가 제어될 수도 있다.
일 실시예에 따른 비디오 부호화 장치(10)는 세그먼트 결정부(12), 예측 수행부(14) 및 비트스트림 생성부(16)의 입출력 데이터가 저장되는 하나 이상의 데이터 저장부(미도시)를 포함할 수 있다. 또한, 일 실시예에 따른 비디오 부호화 장치(10)는 데이터 저장부(미도시)의 데이터 입출력을 관할하는 메모리 제어부(미도시)를 포함할 수도 있다.
일 실시예에 따른 비디오 부호화 장치(10)는 비디오 부호화 결과를 출력하기 위해, 내부에 탑재된 비디오 인코딩 프로세서 또는 외부 비디오 인코딩 프로세서와 연계하여 작동함으로써, 변환을 포함한 비디오 부호화 동작을 수행할 수 있다. 일 실시예에 따른 비디오 부호화 장치(10)의 내부 비디오 인코딩 프로세서는, 별개의 프로세서로서 비디오 부호화 동작을 구현할 수 있다. 또한, 비디오 부호화 장치(10) 또는 중앙 연산 장치, 그래픽 연산 장치가 비디오 인코딩 프로세싱 모듈을 포함함으로써 기본적인 비디오 부호화 동작을 구현하는 경우도 가능하다.
도 2a는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 복호화 장치(20)의 블록도(20)이다. 도 2b 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 복호화 방법의 흐름도이다.
도 2a를 참조하면, 비디오 복호화 장치(20)는 세그먼트 결정부(22) 및 예측 수행부(24)를 포함할 수 있다.
또한, 비디오 복호화 장치(20)는 부호화된 비디오에 대한 비트스트림을 수신하여 파싱하는 수신부(미도시)를 더 포함할 수 있다. 예를 들어, 일 실시예에 따른 비디오 복호화 장치(20)는 부호화 단위 별로 부호화된 영상 데이터와 부호화 단위의 부호화 및 복호화에 필요한 정보들을 파싱할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 비디오의 최대 부호화 단위별 부호화 심도 및 부호화 모드에 관한 정보에 기초하여 각각의 최대 부호화 단위의 영상 데이터를 복호화하여 현재 픽처를 복원한다. 즉, 비디오 복호화 장치(20)는 최대 부호화 단위에 포함되는 부호화 단위들 가운데 각각의 부호화 단위마다, 결정된 예측 단위, 예측 모드, 변환 단위 등에 관한 정보에 기초하여 부호화된 영상 데이터를 복호화할 수 있다. 복호화 과정은 인트라 예측 및 움직임 보상을 포함하는 예측 과정, 및 역변환 과정을 포함할 수 있다.
구체적으로, 일 실시예에 따른 세그먼트 결정부(22)는 부호화 심도의 부호화 단위에 해당하는 현재 블록에 대하여, 윤곽에 기반한 예측을 수행할지 여부를 결정할 수 있다. 즉, 일 실시예에 따른 세그먼트 결정부(22)는 현재 블록의 예측을 수행하기 위한 예측 단위가 되는 세그먼트들을 현재 블록에 포함된 물체의 경계에 따른 윤곽에 기초하여 결정할지 여부를 결정할 수 있다.
일 실시예에 따른 세그먼트 결정부(22)는 비디오 부호화 장치(10)로부터 수신되는 예측 모드를 나타내는 정보를 이용하여 현재 블록에 대하여 윤곽에 기반한 예측을 수행할지 여부를 결정할 수 있다. 예를 들어, 현재 블록에 대한 예측 모드를 나타내는 정보는, 현재 블록을 정사각형 또는 직사각형의 예측 단위를 이용하는 일반적인 인트라 모드를 이용할지 또는 현재 블록에 포함된 물체의 경계에 따른 윤곽을 이용하여 분할되는 예측 단위인 세그먼트를 이용하는 윤곽 기반 인트라 예측 모드를 이용할지 여부를 나타내는 정보를 포함할 수 있다.
일 실시예에 따른 세그먼트 결정부(22)는, 윤곽 기반의 예측을 수행하는 것으로 결정되면, 현재 블록의 윤곽에 기초하여 현재 블록을 다양한 형태의 복수 개의 세그먼트들로 분할할 수 있다. 또한, 일 실시예에 따른 세그먼트 결정부 (22)는, 윤곽 기반의 예측을 수행하지 않는 것으로 결정되면, 현재 블록을 현재 블록의 소정의 파티션 타입들 중 하나의 파티션 타입으로 분할할 수 있다.
윤곽 기반의 예측이 수행되는 경우, 일 실시예에 따른 세그먼트 결정부 (22)는 비트스트림으로부터 획득되는 현재 블록의 세그먼트의 개수에 관한 정보에 기초하여 현재 블록의 세그먼트의 개수를 결정할 수 있다. 예를 들어, 현재 블록의 세그먼트의 개수에 관한 정보가 현재 블록으로부터 분할되는 세그먼트가 1개임을 나타내는 경우, 현재 블록은 분할되지 않을 수 있다.
또한, 일 실시예에 따른 세그먼트 결정부(22)는 비트스트림으로부터 획득되는 현재 블록의 윤곽에 관한 정보를 이용하여 현재 블록으로부터 적어도 하나의 세그먼트를 결정할 수 있다. 예를 들어, 현재 블록의 윤곽에 관한 정보는 윤곽의 모드 정보 및 윤곽의 좌표에 관한 정보를 포함할 수 있다.
구체적으로, 일 실시예에 따른 세그먼트 결정부(22)는 현재 블록의 윤곽의 모드 정보에 기초하여 현재 블록의 윤곽의 모드를 결정하고, 현재 블록의 윤곽의 좌표에 관한 정보를 비트스트림으로부터 파싱할지 여부를 결정할 수 있다. 예를 들어, 현재 블록의 윤곽의 좌표에 관한 정보는 현재 블록의 윤곽의 제 1 좌표 정보 및 제 2 좌표 정보를 포함할 수 있다.
일 실시예에 따른 세그먼트 결정부(22)는 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능한 윤곽의 모드를 가리키는 경우, 현재 블록의 윤곽의 좌표에 관한 정보를 파싱하지 않을 수 있다. 예를 들어, 세그먼트 결정부(22)는 현재 블록의 윤곽의 모드에 따른 윤곽의 제 1 좌표 또는 제 2 좌표가 현재 블록의 상변 또는 좌변에 위치하는 경우, 현재 블록의 윤곽의 제 1 좌표 또는 제 2 좌표를 파싱하지 않을 수 있다.
또한, 일 실시예에 따른 세그먼트 결정부(22)는 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능하지 않은 윤곽의 모드를 가리키는 경우, 현재 블록의 내부의 샘플들을 이용하여 윤곽의 좌표를 결정할 수 있다. 예를 들어, 세그먼트 결정부(22)는 현재 블록의 윤곽의 모드에 따른 윤곽의 제 1 좌표 또는 제 2 좌표가 현재 블록의 하변 또는 우변에 위치하는 경우, 현재 블록의 윤곽의 제 1 좌표 또는 제 2 좌표를 비트스트림으로부터 파싱할 수 있다.
예를 들어, 일 실시예에 따른 세그먼트 결정부(22)는, 윤곽의 제 1 좌표를 현재 블록의 상측의 외부에 인접하는 주변 블록으로부터 유도하는 경우, 현재 블록에 인접하는 상측 주변 블록의 최하단의 일련의 샘플들의 샘플값을 이용하여 윤곽의 제 1 좌표를 유도할 수 있다. 또한, 일 실시예에 따른 세그먼트 결정부(22)는, 윤곽의 제 2 좌표를 현재 블록의 좌측에 위치하는 주변 블록으로부터 유도하는 경우, 현재 블록에 인접하는 좌측 블록의 최우측의 일련의 샘플들의 샘플값을 이용하여 윤곽의 제 2 좌표를 유도할 수 있다. 예를 들어, 현재 블록의 윤곽의 좌표는 주변 블록의 일련의 샘플들의 샘플값들의 변화량에 기초하여 결정될 수 있다.
또한, 일 실시예에 따른 세그먼트 결정부(22)는, 현재 블록의 주변 블록으로부터 현재 블록의 윤곽의 좌표를 유도하지 않는 경우, 비트스트림으로부터 획득되는 윤곽의 좌표 정보에 기초하여 현재 블록의 윤곽의 좌표를 결정할 수 있다.
다양한 실시예에 따른 현재 블록의 윤곽의 좌표를 결정하는 더욱 구체적인 방법은, 이하 도 10 내지 도 16b에서 후술하도록 한다.
일 실시예에 따른 세그먼트 결정부(22)는 결정된 현재 블록의 윤곽에 기초하여 현재 블록으로부터 예측을 위한 적어도 하나의 세그먼트를 결정할 수 있다.
일 실시예에 따른 현재 블록의 예측을 위한 적어도 하나의 세그먼트가 결정되면, 세그먼트 간의 경계를 판단하기 위한 현재 블록의 마스크가 생성될 수 있다.
구체적으로, 일 실시예에 따른 예측 수행부(24)는 현재 블록의 각각의 샘플들과 현재 블록의 윤곽 간의 위치 관계에 기초하여 현재 블록의 각각의 샘플들에 대한 마스크 값을 결정할 수 있다. 일 실시예에 따른 현재 블록의 마스크는 현재 블록의 세그먼트들의 영역 및 세그먼트들 간의 경계를 나타낼 수 있다.
다양한 실시예에 따른 현재 블록의 마스크를 결정하는 더욱 구체적인 방법은, 이하 도 17 내지 도 21를 참조하여 후술한다.
일 실시예에 따른 예측 수행부(24)는 현재 블록의 주변 샘플 및 생성된 현재 블록의 마스크를 이용하여 현재 블록에 대하여 예측을 수행할 수 있다.
구체적으로, 일 실시예에 따른 예측 수행부(24)는 현재 블록의 주변 샘플을 이용하여 현재 블록의 세그먼트의 샘플값의 예측값을 생성할 수 있다. 이때, 세그먼트의 샘플값은 세그먼트 영역에 포함된 각각의 샘플들의 샘플값일 수 있다. 예를 들어, DC 모드 등의 인트라 예측 방식이 이용될 수 있다. 참조할 현재 블록의 주변 샘플의 위치는 현재 블록의 윤곽의 모드에 기초하여 결정될 수 있다.
또한, 일 실시예에 따른 예측 수행부(24)는 생성된 세그먼트 영역에 포함된 샘플들의 샘플값에 현재 블록의 세그먼트들의 영역 및 경계를 나타내는 마스크를 적용함으로써 현재 블록의 세그먼트의 예측값을 생성할 수 있다. 이때, 세그먼트의 예측값은 세그먼트 영역에 포함된 각각의 샘플들의 예측값일 수 있다.
다양한 실시예에 따른 현재 블록의 예측값을 생성하는 더욱 구체적인 방법은, 이하 도 22 내지 도 26를 참조하여 후술한다.
또한, 일 실시예에 따른 예측 수행부(24)는 예측이 수행된 현재 블록에 대하여 필터링을 수행할 수 있다. 예를 들어, 현재 블록의 현재 블록의 세그먼트들 간의 경계에 위치하는 샘플들의 예측값에 대하여 필터링이 수행될 수 있다.
일 실시예에 따른 예측 수행부(24)는 비트스트림으로부터 파싱되는 필터링 수행 여부를 나타내는 정보를 이용하여, 현재 블록의 예측값에 대하여 필터링을 수행할지 여부를 결정할 수 있다. 또는, 현재 블록의 주변 블록을 이용하여 필터링 수행 여부를 결정할 수도 있다. 또는, 필터링을 항상 수행할 수도 있다.
다양한 실시예에 따른 예측이 수행된 현재 블록에 대하여 필터링을 수행하는 구체적인 방법은, 이하 도 37을 참조하여 후술한다.
일 실시예에 따른 현재 블록에 대하여 예측이 수행되어 예측 블록이 생성되면, 비디오 복호화 장치(20)는 예측된 데이터를 이용하여 움직임 보상을 수행함으로써 비디오를 복원할 수 있다. 움직임 보상은, 예측 데이터와 레지듀얼 데이터를 합성하여 복원 영상을 재구성하는 동작을 의미할 수 있다.
이하, 윤곽 기반의 인트라 예측을 수행하는 비디오 복호화 장치(20)의 동작을 도 2b를 참조하여 후술하도록 한다.
도 2b 는 일 실시예에 따른 윤곽 기반의 인트라 예측을 수행하는 비디오 복호화 방법의 흐름도이다.
21 단계에서, 일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 비트스트림으로부터 획득할 수 있다.
예를 들어, 일 실시예에 따른 비디오 복호화 장치(20)는 비트스트림으로부터 획득되는 현재 블록에 대한 예측 모드를 나타내는 정보를 이용하여, 현재 블록에 대하여 윤곽에 기반한 예측을 수행할지 여부를 결정할 수 있다. 예를 들어, 현재 블록에 대한 예측 모드를 나타내는 정보는, 현재 블록을 정사각형 또는 직사각형의 예측 단위를 이용하는 일반적인 인트라 모드를 이용할지 또는 현재 블록에 포함된 물체의 경계에 따른 윤곽을 이용하여 분할되는 예측 단위인 세그먼트를 이용하는 윤곽 기반 인트라 예측 모드를 이용할지 여부를 나타내는 정보를 포함할 수 있다.
현재 블록에 대하여 윤곽에 기반한 예측을 수행하는 것으로 결정된 경우, 일 실시예에 따른 비디오 복호화 장치(20)는 비트스트림으로부터 현재 블록의 윤곽의 모드 정보를 획득할 수 있다.
23 단계에서, 일 실시예에 따른 비디오 복호화 장치(20)는 획득된 현재 블록의 윤곽의 모드 정보에 기초하여, 현재 블록의 주변 블록으로부터 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정할 수 있다.
예를 들어, 일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 상측 또는 좌측에 위치하는 모드를 가리키는 경우, 현재 블록의 해당 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능한 것으로 판단할 수 있다. 또한, 일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 윤곽의 모드 정보가 현재 블록의 윤곽의 좌표가 현재 블록의 하측 또는 우측에 위치하는 모드를 가리키는 경우, 현재 블록의 해당 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능하지 않은 것으로 판단할 수 있다.
25 단계에서, 일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 주변 블록으로부터 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 현재 블록의 주변 블록으로부터 유도되는 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 현재 블록으로부터 적어도 하나의 세그먼트를 결정할 수 있다.
일 실시예에 따른 현재 블록의 주변 블록은 현재 블록의 상측 또는 좌측에 인접하는 블록을 포함할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 윤곽의 모드가 가리키는 현재 블록의 변이 상측 또는 좌측인 경우, 현재 블록의 윤곽의 좌표를 현재 블록의 주변 블록으로부터 유도 가능한 것으로 결정할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 주변 블록으로부터 윤곽의 제 1 좌표 또는 제 2 좌표가 유도 가능하지 않은 경우, 유도 가능하지 않은 윤곽의 좌표에 관한 정보를 비트스트림으로부터 획득할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 비트스트림으로부터 획득된 현재 블록의 윤곽의 좌표에 관한 정보와 윤곽의 모드 정보를 이용하여 현재 블록으로부터 적어도 하나의 세그먼트를 결정할 수 있다.
27 단계에서, 일 실시예에 따른 비디오 복호화 장치(20)는 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 예측을 위한 적어도 하나의 세그먼트가 결정되면, 세그먼트 간의 경계를 나타내는 현재 블록의 마스크를 생성될 수 있다. 일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록으로부터 적어도 하나의 세그먼트를 결정하는 윤곽과 현재 블록의 샘플 간의 위치 관계에 기초하여 현재 블록의 샘플의 마스크 값을 결정할 수 있다.
또한, 일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 주변 샘플 및 생성된 현재 블록의 마스크를 이용하여 현재 블록에 대하여 예측을 수행할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 현재 블록의 주변 샘플을 이용하여 현재 블록의 세그먼트 영역에 포함된 샘플들의 샘플값을 생성할 수 있다. 예를 들어, DC 모드 등의 인트라 예측 방식이 이용될 수 있다.
또한, 일 실시예에 따른 비디오 복호화 장치(20)는 생성된 세그먼트 영역에 포함된 샘플들의 샘플값에 현재 블록의 세그먼트들의 영역 및 경계를 나타내는 마스크를 적용함으로써 현재 블록의 세그먼트의 예측값을 생성할 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는 예측이 수행된 현재 블록에 대하여 필터링을 수행할 수 있다. 예를 들어, 현재 블록의 현재 블록의 세그먼트들 간의 경계에 위치하는 샘플들의 예측값에 대하여 필터링이 수행될 수 있다. 일 실시예에 따른 비디오 복호화 장치(20)는 비트스트림으로부터 획득되는 필터링 수행 여부를 나타내는 정보를 이용할 수 있다.
다양한 실시예에 따른 비디오 복호화 장치(20)는 세그먼트 결정부(22) 및 예측 수행부(24)를 총괄적으로 제어하는 중앙 프로세서(미도시)를 포함할 수 있다. 또는, 세그먼트 결정부(22) 및 예측 수행부(24)가 각각의 자체 프로세서(미도시)에 의해 작동되며, 프로세서(미도시)들이 상호 유기적으로 작동함에 따라 비디오 복호화 장치(20)가 전체적으로 작동될 수도 있다. 또는, 다양한 실시예에 따른 비디오 복호화 장치(20)의 외부 프로세서(미도시)의 제어에 따라, 세그먼트 결정부(22) 및 예측 수행부(24)가 제어될 수도 있다.
다양한 실시예에 따른 비디오 복호화 장치(20)는 세그먼트 결정부(22) 및 예측 수행부(24)의 입출력 데이터가 저장되는 하나 이상의 데이터 저장부(미도시)를 포함할 수 있다. 비디오 복호화 장치(20)는 데이터 저장부(미도시)의 데이터 입출력을 관할하는 메모리 제어부(미도시)를 포함할 수도 있다.
다양한 실시예에 따른 비디오 복호화 장치(20)는 비디오 복호화를 통해 비디오를 복원하기 위해, 내부에 탑재된 비디오 디코딩 프로세서 또는 외부 비디오 디코딩 프로세서와 연계하여 작동함으로써, 역변환을 포함한 비디오 복호화 동작을 수행할 수 있다. 다양한 실시예에 따른 비디오 복호화 장치(20)의 내부 비디오 디코딩 프로세서는, 별개의 프로세서뿐만 아니라, 비디오 복호화 장치(20) 또는 중앙 연산 장치, 그래픽 연산 장치가 비디오 디코딩 프로세싱 모듈을 포함함으로써 기본적인 비디오 복호화 동작을 구현하는 경우도 포함할 수도 있다.
도 3은 일 실시예에 따른 부호화 단위에 기초한 영상 부호화부(300)의 블록도를 도시한다.
일 실시예에 따른 영상 부호화부(300)는, 비디오 부호화 장치(10)(100)의 부호화 단위 결정부(120)에서 영상 데이터를 부호화하는데 거치는 작업들을 수행한다. 즉, 인트라 예측부(310)는 현재 프레임(305) 중 인트라 모드의 부호화 단위에 대해 인트라 예측을 수행하고, 움직임 추정부(320) 및 움직임 보상부(325)는 인터 모드의 현재 프레임(305) 및 참조 프레임(395)를 이용하여 인터 추정 및 움직임 보상을 수행한다.
인트라 예측부(310), 움직임 추정부(320) 및 움직임 보상부(325)로부터 출력된 데이터는 변환부(330) 및 양자화부(340)를 거쳐 양자화된 변환 계수로 출력된다. 양자화된 변환 계수는 역양자화부(360), 역변환부(370)을 통해 공간 영역의 데이터로 복원되고, 복원된 공간 영역의 데이터는 디블로킹부(380) 및 오프셋 적용부(390)를 거쳐 후처리되어 참조 프레임(395)으로 출력된다. 양자화된 변환 계수는 엔트로피 부호화부(350)를 거쳐 비트스트림(355)으로 출력될 수 있다.
일 실시예에 따른 비디오 부호화 장치(10)(100)에 적용되기 위해서는, 영상 부호화부(300)의 구성 요소들인 인트라 예측부(310), 움직임 추정부(320), 움직임 보상부(325), 변환부(330), 양자화부(340), 엔트로피 부호화부(350), 역양자화부(360), 역변환부(370), 디블로킹부(380) 및 오프셋 적용부(390)가 모두, 최대 부호화 단위마다 최대 심도를 고려하여 트리 구조에 따른 부호화 단위들 중 각각의 부호화 단위에 기반한 작업을 수행하여야 한다.
특히, 인트라 예측부(310), 움직임 추정부(320) 및 움직임 보상부(325)는 현재 최대 부호화 단위의 최대 크기 및 최대 심도를 고려하여 트리 구조에 따른 부호화 단위들 중 각각의 부호화 단위의 예측 단위 및 예측 모드를 결정하며, 변환부(330)는 트리 구조에 따른 부호화 단위들 중 각각의 부호화 단위 내의 변환 단위의 크기를 결정하여야 한다. 예를 들어, 인트라 예측부(310)은 도 1a의 세그먼트 결정부(12)가 수행하는 동작들과 동일한 동작을 수행할 수 있다.
도 4는 일 실시예에 따른 부호화 단위에 기초한 영상 복호화부(400)의 블록도를 도시한다.
도 4를 참조함녀, 파싱부(410)는 비트스트림(405)으로부터 복호화 대상인 부호화된 영상 데이터 및 복호화를 위해 필요한 부호화에 관한 정보를 파싱한다. 부호화된 영상 데이터는 엔트로피 복호화부(420) 및 역양자화부(430)를 거쳐 역양자화된 데이터로 출력되고, 역변환부(440)를 거쳐 공간 영역의 영상 데이터가 복원된다.
공간 영역의 영상 데이터에 대해서, 인트라 예측부(450)는 인트라 모드의 부호화 단위에 대해 인트라 예측을 수행하고, 움직임 보상부(460)는 참조 프레임(485)를 함께 이용하여 인터 모드의 부호화 단위에 대해 움직임 보상을 수행한다. 예를 들어, 인트라 예측부(450)는 도 2a의 세그먼트 결정부(22) 및 예측 수행부(24)에서 수행되는 동작들과 동일한 동작을 수행할 수 있다.
인트라 예측부(450) 및 움직임 보상부(460)를 거친 공간 영역의 데이터는 디블로킹부(470) 및 오프셋 적용부(480)를 거쳐 후처리되어 복원 프레임(495)으로 출력될 수 있다. 또한, 디블로킹부(470) 및 오프셋 적용부(480)를 거쳐 후처리된 데이터는 참조 프레임(485)으로서 출력될 수 있다.
비디오 복호화 장치(20) 에서 영상 데이터를 복호화하기 위해, 일 실시예에 따른 영상 복호화부(400)의 파싱부(410) 이후의 단계별 작업들이 수행될 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)에 적용되기 위해서는, 영상 복호화부(400)의 구성 요소들인 파싱부(410), 엔트로피 복호화부(420), 역양자화부(430), 역변환부(440), 인트라 예측부(450), 움직임 보상부(460), 디블로킹부(470) 및 오프셋 적용부(480)가 모두, 최대 부호화 단위마다 트리 구조에 따른 부호화 단위들에 기반하여 작업을 수행하여야 한다.
특히, 인트라 예측부(450), 움직임 보상부(460)는 트리 구조에 따른 부호화 단위들 각각마다 예측 단위 및 예측 모드를 결정하며, 역변환부(440)는 부호화 단위마다 변환 단위의 크기를 결정하여야 한다.
이하, 도 5a 내지 도 5c는 다양한 실시예에 따른 현재 블록으로부터 예측 부호화를 위한 예측 단위인 세그먼트를 결정하는 방법을 도시한다.
도 5a는 일 실시예에 따른 현재 블록으로부터 현재 블록을 구성하는 적어도 하나의 세그먼트를 결정하는 방법을 HEVC에서 현재 블록으로부터 예측 블록을 결정하는 방법과 비교 설명하기 위한 도면이다.
일 실시예에 따른 원본 영상은, 직선 등으로 나타나는 물체(object)의 경계(boundary)를 원본 영상의 내에 포함할 수 있고, 도 5a와 같이 물체의 경계를 내부에 포함하는 현재 블록(51)을 포함할 수 있다.
물체의 경계를 내부에 포함하는 현재 블록(51)을 부호화 및 복호화하기 위하여, 예를 들어, HEVC(High Efficiency Video Coding)에서는, 현재 블록(51)을 계층적으로 분할한 소정의 크기의 예측 단위를 이용하여 인트라 예측을 수행함으로써 예측 영상을 생성할 수 있다. 즉, HEVC에서는 현재 블록(51)을 정사각형 또는 직사각형의 예측 단위로 계층적으로 분할하여 현재 블록(51)을 예측하므로, 예측의 정밀도를 높이기 위해서는 물체의 경계 부근에서 현재 블록(51)을 매우 작은 예측 단위로 분할하여 다수의 예측 단위에 대하여 예측을 수행하여야 한다.
이와 같이 작은 예측 단위를 이용하는 경우, 블록의 분할 여부를 나타내는 분할 정보 및 분할된 최소 단위의 블록의 분할 형태를 나타내는 파티션 타입 정보, 블록의 예측 모드와 같은 블록의 분할에 의한 정보들이 추가적으로 필요하게 된다.
예를 들어, 도 5a를 참조하면, HEVC에서는, 물체의 경계를 포함하는 현재 블록(51)에 대하여 예측을 수행하기 위해 현재 블록(51)을 블록(52)과 같이 분할하여 복수 개의 예측 단위들을 결정할 수 있다. 이때, 현재 블록(51)의 분할 여부를 나타내는 분할 정보 및 현재 블록(51)으로부터 분할된 블록들의 분할 여부를 나타내는 분할 정보를 포함하는 각각의 블록의 분할 여부를 나타내는 분할 정보와, 분할된 최소 단위의 블록들을 구성하는 예측 단위의 분할 형태를 나타내는 파티션 타입 정보가 이용될 수 있다. 예를 들어, 인터 예측의 경우, 하나의 블록에 대한 분할 정보 및 파티션 타입 정보는 각각 하나의 빈(bin, 또는 bit)에 해당하는 정보일 수 있다. 이때, 현재 블록(51)이 블록(52)와 같이 분할되기 위해서는 17개의 분할 정보와 40개의 파티션 타입 정보에 따른 57 빈의 다수의 정보가 필요할 수 있다.
반면에, 일 실시예에 따른 현재 블록에 포함된 물체의 경계에 따른 윤곽을 이용하여, 현재 블록으로부터 현재 블록의 예측 단위인 세그먼트를 결정하는 윤곽 기반 인트라 예측 부호화(contour-based intra prediction coding) 방법에 따르면, 현재 블록(51)은 현재 블록(51)에 포함된 물체의 경계에 따라 블록(53)과 같이 분할될 수 있다. 이때, 현재 블록(51)을 블록(53)과 같이 분할하기 위하여 필요한 블록의 분할에 관한 정보는 아홉 개의 빈에 해당하는 정보로서, HEVC에 따른 분할 방법을 이용하는 경우보다 매우 적을 수 있다.
예를 들어, 일 실시예에 따른 현재 블록(51)으로부터 세그먼트를 결정하는 방법에 따르면, 현재 블록(51)은 현재 블록(51)에 포함된 물체의 경계에 대응하는 윤곽(contour)에 따라 블록(53)의 4개의 세그먼트로 분할될 수 있다. 현재 블록(51)은 물체의 경계에 따른 3 개의 직선을 이용하여 분할될 수 있다.
구체적으로, 현재 블록(51)으로부터 결정되는 세그먼트의 개수에 관한 정보, 현재 블록(51)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽(contour)의 모드 정보 및 윤곽의 좌표들에 관한 정보를 이용하여 현재 블록(51)으로부터 적어도 하나의 세그먼트가 결정될 수 있다.
일 실시예에 따른 현재 블록(51)으로부터 결정되는 세그먼트의 개수에 관한 정보는 현재 블록(51)을 구성하는 세그먼트의 총 개수를 나타내기 위한 정보로서, 예를 들어, 현재 블록(51)으로부터 분할되는 세그먼트의 개수에 관한 정보는 '세그먼트의 수-1'일 수 있다. 현재 블록(51)이 분할되지 않는 경우 세그먼트는 하나가 되므로 현재 블록(51)으로부터 분할되는 세그먼트의 개수에 관한 정보는 0이 될 수 있다.
일 실시예에 따른 현재 블록(51)으로부터 세그먼트를 결정하기 위한 윤곽(contour)의 모드 정보는 현재 블록(51) 내의 물체의 경계에 따른 윤곽의 방향을 나타내는 정보일 수 있다.
일 실시예에 따른 현재 블록(51)으로부터 세그먼트를 결정하기 위한 윤곽의 좌표들에 관한 정보는 윤곽의 위치를 특정하기 위한 정보로서, 예를 들어 윤곽이 직선인 경우, 윤곽의 시작점을 나타내는 제 1 좌표 및 윤곽의 끝점을 나타내는 제 2 좌표를 포함할 수 있다. 이때, 각각의 좌표 정보는 각각의 좌표에 대한 x좌표 및 y좌표로 표현될 수 있다. 좌표 정보들은 부호화 및 복호화되어 송수신될 수도 있으며, 현재 블록(51) 또는 현재 블록(51)의 주변 블록들로부터 유도될 수도 있다.
일 실시예에 따른 현재 블록(51)으로부터 현재 블록(51)을 구성하는 세그먼트를 결정하는 방법에 따르면, 현재 블록(51)은 윤곽에 따라 분할됨으로써 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 송수신되는 데이터의 양을 줄여 전송 효율을 높일 수 있으며, 부호화 효율도 높일 수 있다. 또한, 현재 블록(51)에 포함된 물체와 경계에 대응되는 윤곽을 이용함으로써, 더욱 정확한 예측이 가능하여 복원 영상의 오차를 줄일 수 있다.
일 실시예에 따른 현재 블록(51)으로부터 윤곽 기반의 예측을 위한 세그먼트를 결정하는 더욱 상세한 방법은 도 6 내지 도 14를 참조하며 후술하도록 한다.
도 5b는 다른 일 실시예에 따른 현재 블록(54)으로부터 현재 블록(54)을 구성하는 적어도 하나의 세그먼트를 결정하는 방법의 일 예시를 나타낸다.
도 5b를 참조하면, 일 실시예에 따른 현재 블록(54)은 현재 블록(54)에 포함된 물체의 경계에 따라 블록(55)과 같이 분할될 수 있다. 현재 블록(54)에 포함된 물체의 경계는 곡선일 수 있으며, 현재 블록(54)은 해당 경계에 대응하는 곡선의 윤곽 또는 꺾인 직선에 따라 블록(55)과 같이 분할될 수 있다. 예를 들어, 경계에 대응되는 윤곽은 하나의 곡선이 될 수 있고, 현재 블록(54)를 구성하는 두 개의 세그먼트가 결정될 수 있다.
일 실시예에 따른 현재 블록(54)은 현재 블록(54)의 윤곽의 좌표들에 관한 정보를 이용하여 적어도 하나의 세그먼트로 분할될 수 있다. 일 실시예에 따른 윤곽의 좌표들에 관한 정보는 윤곽의 위치를 특정하기 위한 정보로서, 예를 들어, 윤곽을 특정하기 위하여 필요한 점의 개수에 관한 정보 및 각각의 점의 현재 블록(54) 내에서의 위치를 나타내는 좌표 정보를 포함할 수 있다.
예를 들어, 도 5b를 참조하면, 현재 블록(54)은 세 점에 따라 특정되는 윤곽에 의하여 블록(55)과 같이 분할될 수 있다. 이때, 세 점에 따라 특정되는 윤곽은 꺾인 직선 또는 곡선이 될 수 있다.
이때, 점들을 이용하여 윤곽을 특정하기 위하여 다양한 알고리즘이 이용될 수 있다. 예를 들어, piece wise linear curve, conic section 또는 Bezier curve 등이 이용될 수 있다.
일 실시예에 따른 윤곽을 특정하기 위하여 필요한 점의 개수에 관한 정보(num_point_minus2)는 '점의 개수-2'일 수 있으며, 블록(55)의 경우 필요한 점의 개수에 관한 정보는 1이 될 수 있다. 또한, 세 점의 좌표 정보는 윤곽의 시작점을 나타내는 제 1 좌표(seg_start), 윤곽의 꺽이는 점을 나타내는 제 2 좌표(seg_middle) 및 윤곽의 끝점을 나타내는 제 3 좌표(seg_end)를 포함할 수 있다. 이때, 좌표 정보들은 부호화 및 복호화되어 송수신될 수도 있으며, 현재 블록(54) 또는 현재 블록(54)의 주변 블록들로부터 유도될 수도 있다.
일 실시예에 따른 현재 블록(54)은 윤곽에 따라 분할됨으로써 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 송수신되는 데이터의 양을 줄여 전송 효율을 높일 수 있으며, 부호화 효율도 높일 수 있다. 또한, 현재 블록(54)에 포함된 물체와 경계에 대응되는 곡선 등의 윤곽을 이용함으로써, 더욱 정확한 예측이 가능하여 복원 영상의 오차를 줄일 수 있다.
도 5c는 또 다른 일 실시예에 따른 현재 블록(56)을 구성하는 적어도 하나의 세그먼트를 결정하는 방법의 일 예시를 나타낸다.
도 5c를 참조하면, 일 실시예에 따른 현재 블록(56)은 현재 블록(56)에 포함된 물체의 경계에 따라 블록(57)으로 분할될 수 있다. 현재 블록(56)에 포함된 물체의 경계는 하나의 닫힌 도형을 이룰 수 있으며, 현재 블록(56)은 해당 경계에 대응하는 도형의 윤곽에 따라 블록(57)으로 분할될 수 있다. 예를 들어, 현재 블록(56)로부터 세그먼트를 결정하기 위한 윤곽은 하나의 닫힌 도형이 될 수 있고, 현재 블록(56)으로부터 결정되는 세그먼트는 각각 닫힌 도형의 외부와 내부의 두 개의 세그먼트 일 수 있다.
일 실시예에 따른 현재 블록(56)은 현재 블록(56)으로부터 세그먼트를 결정하기 위한 윤곽의 좌표들에 관한 정보를 이용하여 적어도 하나의 세그먼트로 분할될 수 있다. 일 실시예에 따른 현재 블록(56)으로부터 세그먼트를 결정하기 위한 윤곽의 좌표들에 관한 정보는 윤곽의 위치를 특정하기 위한 정보로서, 예를 들어, 윤곽을 특정하기 위하여 필요한 점의 개수에 관한 정보 및 각각의 점의 현재 블록(56) 내에서의 위치를 나타내는 좌표 정보를 포함할 수 있다.
예를 들어, 도 5c를 참조하면, 현재 블록(56)은 네 점에 따라 특정되는 윤곽에 의하여 블록(57)과 같이 분할될 수 있다. 이때, 네 점에 따라 특정되는 윤곽은 사각형의 닫힌 도형이 될 수 있다.
일 실시예에 따른 윤곽을 특정하기 위하여 필요한 점의 개수에 관한 정보(num_point_minus2)는 '점의 개수-2'일 수 있으며, 블록(57)의 경우 필요한 점의 개수에 관한 정보는 2가 될 수 있다. 또한, 네 점의 좌표 정보는 닫힌 도형의 제 1 좌표(seg_start), 제 2 좌표(seg_middle), 제 3 좌표(seg_middle) 및 제 4 좌표(seg_end)를 포함할 수 있다. 이때, 좌표 정보들은 부호화 및 복호화되어 송수신될 수도 있으며, 현재 블록(56) 또는 현재 블록(56)의 주변 블록들로부터 유도될 수도 있다.
일 실시예에 따른 현재 블록(56)은 윤곽에 따라 분할됨으로써 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 송수신되는 데이터의 양을 줄여 전송 효율을 높일 수 있으며, 부호화 효율도 높일 수 있다. 또한, 현재 블록(56)에 포함된 물체와 경계에 대응되는 닫힌 도형 등의 윤곽을 이용함으로써, 복원 영상의 오차를 줄일 수 있다.
도 6은 다양한 실시예에 따라 물체의 경계에 따른 윤곽을 이용하여 현재 블록으로부터 예측 부호화를 위한 세그먼트를 결정하는 방법을 나타낸다.
도 6을 참조하면, 다양한 실시예에 따른 현재 블록으로부터 예측 부호화를 위한 세그먼트를 결정하는 방법에서, 단일 직선, 복수 개의 직선, 꺽인 직선, 단일 곡선, 복수 개의 곡선, 또는 닫힌 도형 등이 이용될 수 있다.
또한, 단일 직선과 단일 곡선을 동시에 이용하는 등, 위의 방법들의 조합을 이용하여 현재 블록으로부터 예측 부호화를 위한 세그먼트가 결정될 수 있다.
이하에서는 단일 직선의 윤곽을 이용하여 현재 블록으로부터 예측 부호화를 위한 적어도 하나의 세그먼트를 결정하는 방법의 구체적인 과정을 후술하도록 한다.
도 7a 및 도 7b는 다양한 실시예에 따른 현재 블록(70)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드를 설명하기 위한 도면이다.
일 실시예에 따른 현재 블록(70)에서, 현재 블록(70) 내의 단일 직선 윤곽이 결정될 수 있고, 결정된 단일 직선 윤곽에 따라 현재 블록(70)을 구성하는 두 개의 세그먼트가 결정될 수 있다.
이때, 일 실시예에 따른 현재 블록(70)으로부터 분할되는 세그먼트들을 결정하기 위한 윤곽의 모드는, 현재 블록(70)에 포함된 물체의 경계에 따라 결정될 수 있으며, 윤곽의 방향을 나타낼 수 있다.
도 7a를 참조하면, 일 실시예에 따른 현재 블록(70)으로부터 세그먼트들을 결정하기 위하여 이용되는 윤곽이 직선인 경우, 현재 블록(70)의 네 변(side)들 중 윤곽이 지나는 변을 특정함으로써 윤곽의 방향이 특정될 수 있다. 예를 들어, 윤곽의 모드 정보는 현재 블록(70)의 상변, 우변, 하변 및 좌변 중 윤곽이 닿는 적어도 두 변을 나타내는 정보일 수 있다.
일 실시예에 따른 현재 블록(70)의 네 변들에 각각 번호를 할당하고, 변들에 할당된 번호의 조합으로서 가능한 윤곽의 방향을 모두 나타낼 수 있다.
예를 들어, 도 7a를 참조하면, 현재 블록(70)의 상변, 우변, 하변 및 좌변에 각각 0, 1, 2 및 3이 할당될 수 있다. 현재 블록(70)의 각 변에 시계방향에 따라 오름차순 또는 내림차순으로 번호가 할당될 수 있다. 예를 들어, 현재 블록(70)의 우변과 좌변을 지나는 직선 윤곽을 이용하여 현재 블록(70)이 두 개의 세그먼트로 분할되는 경우, 윤곽의 모드 정보는 우변을 나타내는 1과 좌변을 나타내는 3에 따른 '1-3 방향'을 나타낼 수 있다.
도 7a와 같이 현재 블록(70)의 네 변에 번호가 할당된 경우, 현재 블록(70)을 분할하는 직선 윤곽의 방향은 0-1 방향, 0-2 방향, 0-3 방향, 1-2 방향, 1-3 방향 및 2-3 방향이 있을 수 있다. 이때, 1-0 방향은 0-1 방향과 같은 방향으로 생략될 수 있다. 따라서, 윤곽의 모드 정보는 현재 블록(70)에서 이용될 수 있는 직선 윤곽의 6개의 방향 중 하나의 방향을 나타내는 정보일 수 있다.
도 7b를 참조하면, 현재 블록(70)을 구성하는 네 변뿐만 아니라 현재 블록(70)의 주변 블록들을 구성하는 변들까지 이용하여 현재 블록(70)의 윤곽의 방향을 특정할 수 있다.
예를 들어, 도 7b를 참조하면, 현재 블록(70)의 상변, 우변, 하변 및 좌변에 각각 0, 1, 2 및 3이 할당되고, 현재 블록(70)의 우측 블록의 상변, 현재 블록(70)의 좌측 블록의 상변, 현재 블록(70)의 좌하측 블록의 우변 및 현재 블록의 상측 블록의 좌변에 각각 4, 5, 6 및 7이 할당될 수 있다.
현재 블록(70)을 구성하는 네 변뿐만 아니라 현재 블록(70)의 주변 블록들을 구성하는 변들까지 이용함으로써, 현재 블록(70)의 윤곽의 방향이 더 다양해 질 수 있다. 이때, 윤곽의 방향을 나타내는 윤곽의 모드 정보는 6개를 초과하는 방향 중 하나의 방향을 나타낼 수 있다.
도 7a 및 도 7b의 방법 이 외에도 윤곽의 방향을 결정하기 위하여 현재 블록(70)을 구성하는 변들 또는 현재 블록(70)의 주변 변들에 다양한 방식으로 번호를 할당하여 윤곽의 방향을 특정할 수 있다.
도 8은 도 7a의 현재 블록(70)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드의 예시들을 나타낸다.
도 7a의 일 실시예에 따른 현재 블록(70)을 단일 직선의 윤곽에 기초하여 분할하는 경우, 현재 블록(70)은 윤곽의 방향에 따라 도 8의 블록(80), 블록(81), 블록(82), 블록(83), 블록(84) 및 블록(85) 중 하나의 형태로 분할될 수 있다.
즉, 도 7a와 같이 현재 블록(70)의 네 변에 번호가 할당된 경우, 현재 블록(70)을 분할하는 윤곽의 방향을 나타내는 윤곽의 모드는 제 1 모드(0-1 방향), 제 2 모드(0-2 방향), 제 3 모드(0-3 방향), 제 4 모드(1-2 방향), 제 5 모드(1-3 방향) 및 제 6 모드(2-3 방향) 중 하나일 수 있다. 도 8에서, 블록(80), 블록(81), 블록(82), 블록(83), 블록(84) 및 블록(85)은 각각 윤곽의 모드가 제 1 모드, 제 2 모드, 제 3 모드, 제 4 모드, 제 5 모드 및 제 6 모드인 경우를 나타낼 수 있다.
예를 들어, 블록(80)을 참조하면, 블록(80)을 분할하는 윤곽의 한쪽 끝인 시작점이 블록(80)의 상변에 위치하고, 나머지 한쪽 끝인 끝점이 블록(80)의 우변에 위치하는 경우의 윤곽의 모드는 제 1 모드일 수 있다. 이때, 윤곽의 시작점이 블록(80)의 상변의 어느 위치에 위치하는지와 끝점이 블록(80)의 우변의 어느 위치에 위치하는지에 상관 없이 윤곽의 모드는 제 1 모드이다.
또한, 블록(81)을 참조하면, 블록(81)을 분할하는 윤곽의 시작점이 블록(81)의 상변에 위치하고, 끝점이 블록(81)의 하측에 위치하는 경우의 윤곽의 모드는 제 2 모드일 수 있다. 또한, 블록(82)을 참조하면, 블록(82)을 분할하는 윤곽의 시작점 블록(82)의 상변에 위치하고, 끝점 블록(82)의 좌변에 위치하는 경우의 윤곽의 모드는 제 3 모드일 수 있다.
또한, 블록(83)을 참조하면, 블록(83)을 분할하는 윤곽의 시작점 블록(83)의 우변에 위치하고, 끝점이 블록(83)의 하변에 위치하는 경우의 윤곽의 모드는 제 4 모드일 수 있다. 또한, 블록(84)을 참조하면, 블록(84)을 분할하는 윤곽의 시작점이 블록(84)의 우변에 위치하고, 끝점이 블록(84)의 좌변에 위치하는 경우의 윤곽의 모드는 제 5 모드일 수 있다. 또한, 블록(85)을 참조하면, 블록(85)을 분할하는 윤곽의 시작점이 블록(85)의 하변에 위치하고, 끝점이 블록(85)의 좌변에 위치하는 경우의 윤곽의 모드는 제 6 모드일 수 있다.
일 실시예에 따른 현재 블록(70)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드는 제 1 모드 내지 제 6 모드 중 하나의 모드로 결정될 수 있다. 예를 들어, 비디오 부호화 장치(10)는 RDO(rate-distortion optimization) 방법을 이용해, 제 1 모드 내지 제 6 모드에 따른 현재 블록(70)의 부복호화를 모두 수행하여 최선의 RD cost를 갖는 모드를 선택할 수 있다.
또는, 복잡도를 줄이기 위하여 비디오 부호화 장치(10)는 현재 블록(70)의 각 변에 대한 코스트(cost)를 계산하고, 계산된 각 변에 대한 코스트에 기초하여 현재 블록(70)의 윤곽의 모드를 결정할 수 있다. 현재 블록(70)의 각 변에 대한 코스트는 각 변에 대응하는 샘플들을 이용하여 계산할 수 있다. 예를 들어, 현재 블록(70)의 상변에 대한 코스트는 현재 블록(70) 내에 위치하고 상변에 접하는 샘플들을 이용하여 계산할 수 있다. 이와 마찬가지로, 현재 블록(70)의 우변, 하변 및 좌변에 대한 코스트는 각각 현재 블록(70) 내의 우변 인접 샘플들, 하변 인접 샘플들 및 좌변 인접 샘플들을 이용하여 계산할 수 있다.
예를 들어, 일 실시예에 따른 각 변에 대한 코스트는 각 변의 샘플들의 분산(variance)일 수 있다. 비디오 부호화 장치(10)는 현재 블록(70)의 각 변들 중 변에 대응하는 샘플들의 분산이 가장 큰 두 변을 선택하여, 선택된 두 변을 나타내는 윤곽의 모드를 결정할 수 있다.
이때, 현재 블록(70)의 각 변에 대한 분산은 루마(luma) 블록에 대하여만 구할수도 있고, 루마 블록과 크로마(chroma) 블록을 모두 이용하여 구할 수도 있다. 또는, 루마 블록에 대한 분산과 크로마 블록에 대한 분산에 각각 다른 가중치(weight)를 두어 루마 블록과 크로마 블록을 모두 이용한 분산을 구할 수도 있다.
또는, 다른 일 실시예에 따른 현재 블록(70)의 각 변에 대한 코스트는 각 변의 샘플들에 대하여 인접 샘플들간의 차이값의 총 합일 수 있다. 또한, 또 다른 일 실시예에 따른 각 변에 대한 코스트는 각 변의 샘플들에 대하여 1차원 소벨 오퍼레이터(1D Sobel operator)를 적용한 결과 값들의 절대값의 총 합일 수 있다.
또는, 일 실시예에 따른 현재 블록(70)의 각 변에 대한 코스트는 현재 블록(70)의 각 변에 대한 사용 가능 여부(availability)를 고려하여 계산될 수 있다. 예를 들어, 현재 블록(70)의 각 변에 대한 사용 가능 여부는 현재 블록(70)의 각 변의 외부에 인접하는 주변 블록의 사용 가능 여부를 나타낼 수 있다.
일 실시예에 따른 비디오 부호화 장치(10)는 각 변에 대한 사용 가능 여부를 고려하여, 사용 가능하지 않은 변을 포함하는 모드를 제외한 모드들 중에서 윤곽의 모드를 결정할 수 있다. 예를 들어, 현재 블록(70)이 영상의 가장자리에 위치하는 블록인 경우, 현재 블록(70)의 변들 중 일부의 변들은 사용 가능하지 않을 수 있다.
또는, 일 실시예에 따른 현재 블록(70)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드는 상술한 방법들을 조합하여 결정될 수도 있다. 예를 들어, 현재 블록(70)의 각 변에 대한 코스트를 이용하여 6 개의 모드들 중 일부의 모드들을 선택하고, 선택된 일부의 모드들에 대하여 현재 블록(70)의 부복호화를 수행하여 최선의 RD cost를 갖는 하나의 모드를 최종의 윤곽의 모드로 결정할 수 있다.
도 9는 도 8의 윤곽의 모드를 나타내는 윤곽의 모드 정보의 예시들을 나타낸다.
도 8을 참조하여 상술한 바와 같이, 단일 직선의 윤곽에 기초하여 현재 블록을 분할하는 경우, 윤곽의 방향을 나타내는 윤곽의 모드는 6개의 모드를 포함할 수 있다. 이때, 윤곽의 모드를 나타내는 윤곽의 모드 정보는 FLC(fixed length coding), VLC(variable length coding), 산술 부호화(arithmetic coding) 등의 다양한 부호화 방식을 이용하여 부보화 및 복호화될 수 있다.
예를 들어, 도 9를 참조하면, VLC 방식을 이용하는 경우 제 2 모드 및 제 5 모드를 나타내는 정보는 2 비트로 이진화되여 나타나고 제 1 모드, 제 3 모드, 제 4 모드 및 제 6 모드를 나타내는 정보는 3비트로 이진화될 수 있다.
도 9를 참조하면, 윤곽의 모드가 제 1 모드인 경우(line_orient 0), 윤곽의 모드 정보는 이진수 100으로 표현될 수 있다. 또한, 윤곽의 모드가 제 2 모드인 경우(line_orient 1), 윤곽의 모드 정보는 이진수 00으로 표현될 수 있다. 윤곽의 모드가 제 3 모드인 경우(line_orient 2), 윤곽의 모드 정보는 이진수 101으로 표현될 수 있다. 윤곽의 모드가 제 4 모드인 경우(line_orient 3), 윤곽의 모드 정보는 이진수 110으로 표현될 수 있다. 윤곽의 모드가 제 5 모드인 경우(line_orient 4), 윤곽의 모드 정보는 이진수 01으로 표현될 수 있다. 윤곽의 모드가 제 6 모드인 경우(line_orient 5), 윤곽의 모드 정보는 이진수 111으로 표현될 수 있다.
다만, 이에 제한되지 않고 윤곽의 모드 정보는 다양한 방식으로 표현될 수 있다.
비디오 부호화장치에서 이진화된 윤곽의 모드 정보는 산술 부호화를 거쳐 비트스트림에 포함될 수 있고, 비디오 복호화 장치(20)로 전송될 수 있다. 비디오 복호화 장치(20)는 수신된 비트스트림에 대하여 산술 복호화 및 역이진화를 수행하여 현재 블록의 윤곽의 모드 정보를 획득할 수 있다.
이하 도 10 내지 도 16b을 참조하여 다양한 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 결정하는 방법을 후술하도록 한다.
도 10은 일 실시예에 따른 현재 블록을 나타낸다.
도 10을 참조하면, 현재 블록은 8x8 크기의 블록일 수 있다. 현재 블록의 크기는 너비x높이로 표현되며, 이외에도 64x64, 32x32, 16x16 등의 크기를 포함할 수 있다. 또한, 이외에도 MxN 등의 다양한 크기를 포함할 수 있다. 이때, M 및 N은 서로 다른 정수일 수 있다.
도 10에서, 현재 블록 내의 샘플들은 흰색으로 나타나고, 현재 블록의 주변 샘플들은 회색으로 나타날 수 있다.
일 실시예에 따른 현재 블록의 윤곽의 좌표는, 현재 블록 내의 샘플들을 이용하여 결정될 수 있다. 구체적으로, 윤곽이 단일 직선 윤곽인 경우 윤곽의 모드에 따라 윤곽의 모드가 가리키는 변들에 윤곽의 양쪽 끝(시작점 및 끝점)이 위치하는 것이므로, 윤곽의 좌표는 윤곽의 모드가 가리키는 변에 해당하는 현재 블록 내의 샘플들을 이용하여 결정될 수 있다. 예를 들어, 윤곽의 좌표는 현재 블록 내의 샘플들 간에 샘플값의 변화량(gradient)에 기초하여 결정될 수 있다.
구체적으로, 윤곽의 모드가 현재 블록의 상변과 우변을 가리키는 제 1 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상변에 대응하는 현재 블록 내의 샘플들을 이용하여 결정될 수 있고, 윤곽의 제 2 좌표는 현재 블록의 우변에 대응하는 현재 블록 내의 샘플들을 이용하여 결정될 수 있다. 즉, 윤곽의 제 1 좌표는 상변에 안쪽으로 인접하는 샘플들 중 하나의 샘플의 위치가 될 수고, 윤곽의 제 2 좌표는 우변에 안쪽으로 인접하는 샘플들 중 하나의 샘플의 위치가 될 수 있다. 이때, 샘플의 위치는 정수 픽셀 단위일 수도 있고, 서브 픽셀 단위일 수도 있다.
즉, 일 실시예에 따른 윤곽의 모드가 가리키는 변에 대응되는 현재 블록 내의 샘플들은 현재 블록의 각 변에 안쪽으로 인접하는 샘플들일 수 있다. 예를 들어, 현재 블록의 상변에 해당하는 샘플들은 현재 블록 내의 최상단에 위치하는 샘플들일 수 있다. 또한, 현재 블록의 우변, 하변 및 좌변에 해당하는 샘플들은 각각 현재 블록 내의 최우측 샘플들, 최하단 샘플들 및 최좌측 샘플들일 수 있다. 도 10을 참조하면, 현재 블록 내의 최상단 샘플들, 최우측 샘플들, 최하단 샘플들 및 최좌측 샘플들은 각각 8개의 흰색 샘플들일 수 있다.
또한, 일 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표는, 현재 블록의 주변 블록으로부터 유도될 수 있다. 구체적으로, 윤곽의 좌표는 윤곽의 모드가 가리키는 변의 외부에 인접하는 주변 블록들을 이용하여 결정될 수 있다. 예를 들어, 윤곽의 좌표는 현재 블록의 주변 블록 내의 샘플들 간의 샘플값의 변화량(gradient)에 기초하여 결정될 수 있다. 이때, 주변 블록 내의 샘플들은 복원된 샘플일 수 있다.
예를 들어, 윤곽의 모드가 현재 블록의 상변과 좌변을 가리키는 제 3 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상측 외부에 인접하는 주변 블록의 샘플들을 이용하여 유도될 수 있다. 윤곽의 제 1 좌표는 현재 블록의 상측 주변 블록의 최하단 샘플들을 이용하여 결정될 수 있다. 또한, 윤곽의 제 2 좌표는 현재 블록의 좌측 외부에 인접하는 주변 블록의 샘플들을 이용하여 유도될 수 있다. 윤곽의 제 2 좌표는 현재 블록의 좌측 주변 블록의 최우단 샘플들을 이용하여 결정될 수 있다.
도 10에서, 일 실시예에 따른 윤곽의 모드가 가리키는 변에 인접하는 주변 블록 내의 샘플들은 현재 블록에 상측 또는 좌측으로 인접하는 샘플들로서, 상측에 인접하는 8개의 샘플들(음영 표시) 및 좌측에 인접하는 8개의 회색 샘플들(음영 표시됨)을 포함할 수 있다.
현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 현재 블록의 주변 블록으로부터 유도하는 경우, 유도된 윤곽의 좌표를 조정(refine)하여 조정된 윤곽의 좌표를 이용하여 현재 블록을 부호화 및 복호화 할 수도 있다.
일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 좌표를 부호화하여 비디오 복호화 장치(20)로 전송할 수 있다. 또는, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도가 가능한 경우, 윤곽의 좌표를 전송하지 않을 수도 있다.
현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 현재 블록의 주변 블록으로부터 유도하는 경우, 비디오 부호화 장치(10)는 주변 블록으로부터 유도된 윤곽의 좌표의 값과 현재 블록 내의 샘플들을 이용하여 결정된 윤곽의 좌표의 값의 차분값을 부호화하여 비디오 복호화 장치(20)로 전송할 수도 있다. 비디오 복호화 장치(20)는 수신된 차분값과 현재 블록의 주변 블록으로부터 유도되는 윤곽의 좌표의 값에 기초하여 현재 블록의 윤곽의 좌표를 결정할 수 있다.
도 11은 일 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 결정하는 방법을 나타낸다.
도 11을 참조하면, 현재 블록 내의 샘플들 및 현재 블록의 주변 샘플들이 나타난다.
현재 블록으로부터 적어로 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 결정하는 경우, 현재 블록의 윤곽의 좌표는 도 10에서 상술한것과 같이 현재 블록 내의 샘플들 또는 현재 블록에 인접한 주변 샘플들을 이용하여 결정될 수 있다. 구체적으로, 현재 블록 내의 샘플들 또는 현재 블록에 인접한 주변 샘플들을 샘플들 간에 샘플값의 변화량(gradient)이 가장 큰 샘플의 위치가 윤곽의 좌표의 위치로 결정될 수 있다.
예를 들어, 현재 블록 내의 샘플들 또는 현재 블록에 인접한 주변 샘플들에 [-1, 0, 1]과 같은 필터값을 갖는 1차원 소벨 오퍼레이터(1D Sobel operator)를 적용하여 윤곽을 좌표를 결정할 수 있다. 구체적으로, 윤곽의 좌표는 1차원 소벨 오퍼레이터를 적용한 결과인 절대값이 가장 큰 샘플의 위치를 윤곽의 좌표로 결정할 수 있다. 예를 들어, 윤곽의 제 1 좌표 및 제 2 좌표는 아래의 수식에 기초하여 결정될 수 있다.
line_pos1_n = arg maxn(|Sn-1 - Sn+1|)
line_pos2_m = arg maxn(|Sm-1 - Sm+1|)
이때, Sn, Sn-1 및 Sn+1은 각각 n위치의 샘플의 샘플값, n-1 위치의 샘플의 샘플값 및 n+1 위치의 샘플의 샘플값이고, Sm, Sm-1 및 Sm+1은 각각 m위치의 샘플의 샘플값, m-1 위치의 샘플의 샘플값 및 m+1 위치의 샘플의 샘플값이다. n은 샘플의 x좌표이고, m은 샘플의 y좌표가 될 수 있다. line_pos1_n은 윤곽의 제 1 좌표의 좌표이고, line_pos2_m은 윤곽의 제 2 좌표의 y좌표일 수 있다. 예를 들어, 윤곽의 모드에 따른 윤곽의 제 1 좌표가 현재 블록의 상측에 위치하는 경우, n은 현재 블록의 최상단 샘플들 또는 현재 블록에 인접한 상단 샘플들의 x좌표가 되고, 윤곽의 제 1 좌표는 (line_pos1_n, 0)이 될 수 있다.
또한, 윤곽의 모드에 따른 윤곽의 제 1 좌표가 현재 블록의 우측에 위치하는 경우, n은 현재 블록의 최우측 샘플들의 y좌표가 되고, 윤곽의 제 1 좌표는 (nCbS-1, line_pos1_n)이 될 수 있다. nCbS는 현재 블록의 수평방향 또는 수직방향의 크기일 수 있다.
또한, 윤곽의 모드에 따른 윤곽의 제 2 좌표가 현재 블록의 하측에 위치하는 경우, m은 현재 블록의 최하단 샘플들의 x좌표가 되고, 윤곽의 제 2 좌표는 (line_pos2_m, nCbS-1)이 될 수 있다. 또한, 윤곽의 모드에 따른 윤곽의 제 2 좌표가 현재 블록의 좌측에 위치하는 경우, m은 현재 블록의 최좌측 샘플들 또는 현재 블록에 인접한 좌측 샘플들의 y좌표가 되고, 윤곽의 제 2 좌표는 (0, line_pos2_m)이 될 수 있다.
이때, 윤곽의 제 1 좌표 및 제 2 좌표의 값은 정수 픽셀 단위로 결정될 수도 있고 서브 픽셀 단위로 결정될 수도 있다.
예를 들어, 도 11을 참조하면, 현재 블록의 윤곽의 모드가 제 3 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상변의 외부에 인접한 샘플들 또는 상변의 내부에 인접한 샘플들을 이용하여 (line_pos1_n, 0)로 결정될 수 있고, 윤곽의 제 2 좌표는 현재 블록의 좌변의 외부에 인접한 샘플들 또는 좌변의 내부에 인접한 샘플들을 이용하여 (0, line_pos2_m)로 결정될 수 있다.
또한, 다른 일 실시예에 따른 현재 블록의 윤곽의 좌표는, 윤곽의 제 1 좌표를 먼저 결정하고, 결정된 제 1 좌표를 이용하여 윤곽의 제 2 좌표를 결정함으로써 결정될 수 있다. 구체적으로, 먼저, 윤곽의 모드가 가리키는 현재 블록의 일 변에 대하여 앞서 서술한 방법을 이용하여 제 1 좌표를 결정할 수 있다. 예를 들어, 윤곽의 제 1 좌표는 아래의 수식에 기초하여 결정될 수 있다.
line_pos1_n = arg maxn(|Sn-1 - Sn+1|)
또한, 윤곽의 제 2 좌표는, 윤곽의 모드가 가리키는 현재 블록의 다른 일 변에 해당하는 샘플들과, 결정된 제 1 좌표의 주변 샘플들을 이용하여 결정될 수 있다. 윤곽의 제 2 좌표는 제 1 좌표의 주변 샘플들과 제 2 좌표의 주변 샘플들 간의 상관 관계(correlation)을 이용하여 결정될 수 있다. 예를 들어, 윤곽의 제 2 좌표는 아래의 수식에 기초하여 결정될 수 있다.
line_pos2_m = arg maxm(4*|Sm-1 - Sm+1|-|Sn-1 - Sm+1|-|Sn-1 - Sm+1|)
이때, 윤곽의 제 2 좌표(0, line_pos2_m)를 구할 때, 미리 결정된 윤곽의 제 1 좌표의 주변 샘플의 샘플값인 Sn-1 및 Sn+1을 이용할 수 있다.
이 외에도 경계 검출을 위하여 사용되는 다양한 방식의 오퍼레이터들을 이용하여 현재 블록의 윤곽의 좌표가 결정될 수 있다.
또한, 현재 블록 내의 샘플들 또는 현재 블록에 인접한 주변 샘플들을 이용하여 현재 블록의 윤곽의 좌표를 결정하는 경우, 현재 블록 내의 샘플들 또는 현재 블록에 인접한 주변 샘플들의 샘플값을 그대로 이용할 수도 있고, 노이즈 제거 등을 위하여 샘플값에 필터를 적용하여 필터링된 샘플값을 이용할 수도 있다. 예를 들어, 샘플값에 적용하는 필터는 저역통과필터(low-pass filter) 또는 [1, 2, 1]과 같은 필터값을 갖는 1차원 가우시안 필터(Gaussian filter)일 수 있다.
또한, 다른 일 실시예에 따르면, 윤곽의 제 1 좌표 또는 제 2 좌표는 복수 개의 후보 좌표들 중 하나로 결정될 수 있다. 예를 들어, 현재 블록 내의 샘플들 또는 현재 블록에 인접한 주변 샘플들을 이용하여 최적의 cost를 갖는 N 개의 후보 좌표가 결정될 수 있다. 예를 들어, 후보 좌표들의 cost는 앞서 설명된 수식들에 따라 계산될 수 있다. 결정된 N 개의 후보 좌표 중 하나가 윤곽의 제 1 좌표 또는 제 2 좌표로 결정될 수 있다. 예를 들어, 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 후보 좌표들 중 하나의 후보를 가리키는 인덱스 정보가 송수신될 수 있다.
도 12 내지 도 14은 다양한 실시예에 따른 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 좌표를 결정하는 방법을 나타낸다.
도 12 내지 도 14에서 현재 블록은 8x8 크기의 블록일 수 있다. 현재 블록의 크기는 너비x높이로 표현되며, 이외에도 64x64, 32x32, 16x16 등의 크기를 포함할 수 있다. 또한 이외에도 MxN 등의 다양한 크기를 포함할 수 있다. 이때, M 및 N은 서로 다른 크기의 정수일 수 있다.
도 12를 참조하면, 현재 블록은 현재 블록 내의 샘플들을 이용하여 세그먼트를 결정하기 위한 윤곽의 좌표를 결정할 수 있다. 예를 들어, 윤곽의 좌표는 현재 블록의 변에 인접하고 내부에 위치하는 샘플들의 샘플값을 이용하여 결정될 수 있다.
예를 들어, 도 12에서, 윤곽의 모드가 제 1 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 상변에 인접하는의 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 우변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다. 이때, 현재 블록의 우측 상단의 샘플은 겹치는 샘플로, 제 1 좌표의 결정과 제 2 좌표의 결정에 모두 이용될 수 있다.
또한, 윤곽의 모드가 제 2 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 상변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 3 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 상변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 좌변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다. 이때, 현재 블록의 좌측 상단의 샘플은 겹치는 샘플로 제 1 좌표의 결정과 제 2 좌표의 결정에 모두 이용될 수 있다.
또한, 윤곽의 모드가 제 4 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 우변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다. 현재 블록의 우측 하단의 샘플은 겹치는 샘플로 제 1 좌표의 결정과 제 2 좌표의 결정에 모두 이용될 수 있다.
또한, 윤곽의 모드가 제 5 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 우변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 좌변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 6 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 좌변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다. 현재 블록의 좌측 하단의 샘플은 겹치는 샘플로 제 1 좌표의 결정과 제 2 좌표의 결정에 모두 이용될 수 있다.
도 13를 참조하면, 현재 블록은 현재 블록 내의 샘플들뿐만 아니라 현재 블록의 주변 샘플들을 이용하여, 세그먼트를 결정하기 위한 윤곽의 좌표를 결정할 수 있다. 현재 블록의 외부에 인접하는 주변 샘플들이 사용 가능한 경우, 윤곽의 좌표는 현재 블록에 외부에 인접하는 주변 샘플들의 샘플값을 이용하여 결정될 수 있다. 예를 들어, 도 13에서, 현재 블록의 외부에 인접하는 사용 가능한 주변 샘플들은, 현재 블록의 상변에 인접하는 8개의 샘플들 또는 현재 블록의 좌변에 인접하는 8개의 샘플들을 포함할 수 있다.
예를 들어, 도 13에서, 윤곽의 모드가 제 1 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상변의 외부에 인접하는 8개의 주변 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 우변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 2 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상변의 외부에 인접하는 8개의 주변 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 3 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상변의 외부에 인접하는 8개의 주변 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록의 좌측의 외부에 인접하는 8개의 주변 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 4 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 우변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다. 현재 블록의 우측 하단의 샘플은 겹치는 샘플로 제 1 좌표의 결정과 제 2 좌표의 결정에 모두 이용될 수 있다.
또한, 윤곽의 모드가 제 5 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 우변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록의 좌변의 외부에 인접하는 8개의 주변 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 6 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록의 좌변의 내부에 인접하는 8개의 샘플들을 이용하여 결정될 수 있다.
또는, 현재 블록의 우변의 외부에 인접한 주변 샘플들 또는 하변의 외부에 인접한 주변 샘플들이 사용 가능할 경우, 우변의 외부에 인접한 주변 샘플들 또는 하변의 외부에 인접한 주변 샘플들을 이용하여 윤곽의 좌표를 결정할 수도 있다.
일 실시예에 따른 윤곽의 좌표가 현재 블록의 주변 샘플을 이용하여 유도 가능한 경우, 비디오 부호화 장치(10)는 유도 가능한 윤곽의 좌표는 비디오 복호화 장치(20)로 전송하지 않고 유도 가능하지 않는 윤곽의 좌표에 관한 정보만 전송할 수 있다.
또는, 비디오 부호화 장치(10)는 유도 가능한 윤곽의 좌표의 경우, 주변 블록으로부터 유도된 윤곽의 좌표의 값과 현재 블록 내의 샘플들을 이용하여 결정된 윤곽의 좌표의 값의 차분값을 부호화하여 비디오 복호화 장치(20)로 전송할 수도 있다. 비디오 복호화 장치(20)는 비트스트림으로부터 수신된 차분값에 주변 블록으로부터 유도된 윤곽의 좌표의 값을 더하여, 현재 블록의 윤곽의 좌표를 결정할 수 있다.
도 14를 참조하면, 현재 블록은 현재 블록 내의 샘플들뿐만 아니라 현재 블록의 주변 샘플들을 이용하여, 세그먼트를 결정하기 위한 윤곽의 좌표를 결정할 수 있다. 이때, 일 실시예에 따른 윤곽의 좌표는 도 13의 샘플들을 이동(shift)시킨 위치의 샘플들을 이용하여 결정될 수 있다. 즉, 현재 블록 내의 샘플들 및 현재 블록의 주변 샘플들을 상측, 하측, 좌측 또는 우측 방향으로 연장한 샘플들이 이용될 수 있다.
예를 들어, 도 14에서, 윤곽의 모드가 제 1 모드인 경우, 윤곽의 제 1 좌표는 현재 블록의 상변의 외부에 인접한 8개의 샘플들이 좌측으로 1만큼 이동된 위치의 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 우변에 인접한 8개의 샘플들을 이용하여 결정될 수 있다.
또한, 윤곽의 모드가 제 4 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 우변에 인접한 8개의 샘플들이 상측으로 1만큼 이동된 위치의 8개의 샘플들 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록 내의 하변에 인접한 8개의 샘플들을 이용하여 결정될 수 있다. 현재 블록의 우측 하단의 샘플은 겹치는 샘플로 제 1 좌표의 결정과 제 2 좌표의 결정에 모두 이용될 수 있다.
또한, 윤곽의 모드가 제 6 모드인 경우, 윤곽의 제 1 좌표는 현재 블록 내의 하변에 인접하는 8개의 샘플들을 이용하여 결정되고, 윤곽의 제 2 좌표는 현재 블록의 좌변의 외부에 인접하는 8개의 샘플이 상측으로 1만큼 이동된 위치의 8개의 샘플들을 이용하여 결정될 수 있다.
일 실시예에 따른 윤곽의 좌표를 이동된 위치의 샘플들을 이용하여 결정함에 따라, 윤곽의 방향을 나타내는 두 변이 겹치는 좌표를 갖지 않아 더 다양한 조합의 윤곽의 좌표가 결정될 수 있다.
도 15 내지 도 16b는 다양한 실시예에 따른 윤곽의 좌표를 샘플의 정밀도에 따라 결정하는 방법을 나타낸다.
다양한 실시예에 따른 윤곽의 좌표는 다양한 실시예에 따른 샘플의 정밀도(precision)에 따라 결정될 수 있다.
예를 들어, 다양한 실시예에 따른 윤곽의 좌표는 정수 픽셀 정밀도, 하프(1/2) 픽셀 정밀도 또는 쿼터(1/4) 픽셀 정밀도를 이용하여 나타날 수 있다. 도 15를 참조하면, 정수 픽셀 정밀도로 나타난 블록(1501), 하프 픽셀 정밀도로 나타난 블록(1502) 및 쿼터 픽셀 정밀도로 나타난 블록(1503)은 4x4 크기의 블록일 수 있다.
블록(1501)을 참조하면, 정수 픽셀 정밀도를 이용하는 경우 블록(1501)의 좌측 상단 샘플의 중심점을 원점(0, 0)으로 하여 정수 샘플의 위치를 표현할 수 있다. 블록(1501)의 정수 샘플의 위치의 x좌표 및 y좌표는 각각 0 내지 3의 수로 결정될 수 있다. 이때, 일 실시예에 따른 윤곽의 좌표는 블록(1501) 내부의 정수 샘플의 위치로 결정될 수도 있고, 블록(1501) 외부의 가상의 정수 샘플의 위치로 결정될 수도 있다.
또한, 정수 픽셀 정밀도를 이용하는 경우 블록(1501)의 좌측 상단 꼭지점을 원점(0, 0)으로 하고, 각 샘플의 변을 정수 위치로 하여, 정수 샘플의 위치를 표현할 수도 있다.
블록(1502) 또는 블록(1503)을 참조하면, 하프 픽셀 정밀도 또는 쿼터 픽셀 정밀도를 이용하는 경우, 블록(1502) 또는 블록(1503)의 좌측 상단 꼭지점 원점(0, 0)으로 하여 하프 샘플 또는 쿼터 샘플의 위치를 표현할 수 있다. 블록(1502)의 하프 샘플의 위치의 x좌표 및 y좌표는 각각 0 내지 7의 수로 결정될 수 있고, 블록(1503)의 쿼터 샘플의 위치의 x좌표 및 y좌표는 각각 0 내지 15의 수로 결정될 수 있다.
이때, 일 실시예에 따른 윤곽의 좌표는 블록(1502) 또는 블록(1503) 내부의 하프 샘플 또는 쿼터 샘플의 위치로 결정될 수도 있고, 블록(1502) 또는 블록(1503) 외부의 가상의 하프 샘플 또는 쿼터 샘플의 위치로 결정될 수도 있다.
윤곽의 좌표의 정밀도를 변환하는 경우, 좌표 변환 함수를 이용할 수 있다. 예를 들어, 정수 픽셀 정밀도를 하프 픽셀 정밀도 또는 쿼터 픽셀 정밀도로 변환하는 경우와 같이 정밀도를 더 세분화하는 경우, 비전사 단사 함수(injective non-surjective function)를 이용할 수 있다. 또한, 하프 픽셀 정밀도를 정수 픽셀 정밀도로 변환하거나 쿼터 픽셀 정밀도를 정수 픽셀 정밀도 또는 하프 픽셀 정밀도로 변환하는 경우와 같이 정밀도를 줄이는 경우, 비단사 전사 함수(surjective non-injective function)을 이용할 수 있다.
정수 픽셀 정밀도를 이용하는 경우, 일 실시예에 따른 윤곽의 좌표는 정수 샘플들의 샘플값을 이용하여 결정될 수 있다. 일 실시예에 따른 윤곽의 좌표는 주변 정수 샘플들과의 샘플값의 변화가 가장 큰 정수 샘플의 위치로 결정될 수 있다. 예를 들어, 일 실시예에 따른 윤곽의 좌표는 정수 샘플들에 [-1, 0, 1]과 같은 필터값을 갖는 1차원 소벨 오퍼레이터를 적용하여 절대값이 가장 큰 샘플의 위치로 결정될 수 있다.
예를 들어, 도 16a을 참조하면, 가로 일열로 나열된 여섯 개의 정수 샘플들이 나타날 수 있다. 도 16a에서 정수 샘플들의 위치는 각각 X로 표시될 수 있고, X의 높낮이는 각각의 샘플들의 샘플값의 크기를 나타낼 수 있다. 예를 들어, 샘플들의 샘플값은 0 내지 255의 수일 수 있다.
도 16a에서, 정수 샘플들 간에 샘플값의 변화가 가장 큰 정수 샘플의 위치는 정수 샘플(1610)의 위치일 수 있다. 즉, 정수 샘플(1610)의 좌측 샘플과 우측 샘플의 샘플값의 차이의 절대값이 가장 클 수 있다. 일 실시예에 따른 윤곽의 좌표는 정수 샘플(1610)의 위치로 결정될 수 있다.
또한, 도 16b를 참조하면, 일 실시예에 따른 윤곽의 좌표는 하프 픽셀 정밀도를 이용하여 결정될 수 있다. 도 16b에서 정수 샘플들을 각각 큰 X로 표시되고 하프 샘플들은 각각 작은 X로 표시될 수 있다. 샘플들의 높낮이는 각각 샘플들의 샘플값의 크기를 나타낼 수 있다.
도 16b에서, 윤곽의 좌표는 하프 샘플(1621)의 위치로 결정될 수 있다. 구체적으로, 하프 샘플과 같은 서브 샘플들의 샘플값을 정수 샘플들의 샘플값을 이용해 인터폴레이션(interpolation)하여 생성할 수 있다. 예를 들어, 하프 샘플(1621)의 샘플값은 좌측 정수 샘플(1620)과 우측 정수 샘플(1622)의 샘플값을 이용하여 구할 수 있다. 일 실시예에 따른 윤곽의 좌표는 생성된 하프 샘플의 샘플값 및 정수 샘플의 샘플값을 이용하여 결정될 수 있다. 예를 들어, 윤곽의 좌표는 하프 픽셀 정밀도로 샘플들에 1차원 소벨 오퍼레이터를 적용하여 절대값이 가장 큰 샘플(1621)의 위치로 결정될 수 있다.
또한, 세로 일열로 나열된 샘플들을 이용하는 경우, 하프 픽셀 정밀도로 상측 샘플의 샘플값과 하측 샘플의 샘플값을 이용하여 윤곽의 좌표를 결정할 수 있다.
또한, 연산의 복잡도를 줄이기 위하여 모든 서브 샘플들의 샘플값을 생성하지 않고도 윤곽의 좌표가 결정될 수도 있다. 예를 들어, 정수 샘플 들에 기초하여 윤곽의 정수 좌표(1621)를 결정하고, 정수 좌표(1620)의 좌측 하프 샘플(1623)의 샘플값과 우측 하프 샘플(1621)의 샘플값을 생성할 수 있다. 일 실시예에 따른 윤곽의 좌표는, 좌측 하프 샘플(1623)의 샘플값과 우측 하프 샘플(1621)의 샘플값 중, 정수 샘플(1620)의 좌측 샘플(1624)의 샘플값과 우측 샘플(1622)의 샘플값의 평균값과 가까운 값의 샘플값을 가지는 우측 하프 샘플(1621)의 위치로 결정될 수 있다.
또는, 세로 일열로 나열된 샘플들을 이용하는 경우, 정수 샘플의 상측 정수 샘플의 샘플값과 하측 정수 샘플의 샘플값에 기초하여 정수 좌표를 결정하고, 결정된 정수 좌표의 상측 하프 샘플과 하측 하프 샘플 중 하나의 샘플의 위치로 윤곽의 좌표를 결정할 수 있다.
이하에서는 도 17 내지 도 20을 참조하여 현재 블록을 구성하는 세그먼트들의 영역 및 경계를 나타내는 현재 블록의 마스크를 생성하는 방법을 후술한다.
도 17은 일 실시예에 따른 현재 블록(1701)을 구성하는 세그먼트들의 나타내는 마스크의 일 예시를 나타낸다.
도 17을 참조하면, 일 실시예에 따른 8x8 크기의 현재 블록(1701)에 대한 마스크가 나타난다. 현재 블록(1701)에 대한 마스크는 현재 블록(1701)으로부터 분할되는 세그먼트들의 영역 및 세그먼트들 간의 경계를 판단하기 위한 데이터로서, 현재 블록(1701)의 각 샘플들에 대응하는 마스크값들의 배열로 구성될 수 있다.
일 실시예에 따른 현재 블록(1701)은 현재 블록의 윤곽에 따라 복수 개의 세그먼트 영역으로 분할될 수 있다. 또한, 일 실시예에 따른 현재 블록(1701)의 영역은 복수 개의 세그먼트 영역과 세그먼트 영역들 사이의 경계 영역(1720)으로 구분될 수 있다. 예를 들어, 일 실시예에 따른 현재 블록의 경계 영역(1720)은, 현재 블록의 윤곽이 지나가는 샘플들로 구성되는 영역일 수도 있고, 현재 블록의 윤곽을 중심으로 소정의 폭을 갖는 영역일 수 있다.
구체적으로, 도 17을 참조하면, 현재 블록(1701)은 직선 윤곽(1705)에 따라 두 개의 세그먼트로 분할될 수 있다. 현재 블록(1701)은 원점(0, 0)을 포함하는 좌측 세그먼트와 원점(0, 0)을 포함하지 않는 우측 세그먼트로 분할될 수 있다. 예를 들어, 원점(0, 0)은 현재 블록(1701) 내의 좌측 상단 샘플의 위치일 수 있다.
일 실시예에 따른 현재 블록(1701)의 좌측 세그먼트 영역에 포함되는 샘플들에 대한 마스크값들은 모두 0으로 결정되고, 우측 세그먼트 영역에 포함되는 샘플들에 대응하는 마스크값들은 모두 1로 결정될 수 있다. 이때, 현재 블록(1701) 내의 샘플들은 직사각형 또는 정사각형 단위의 샘플들일 수 있기 때문에, 현재 블록(1701)의 샘플의 위치가 좌측 세그먼트 영역 또는 우측 세그먼트 영역에 포함되는 경우 이외에도, 윤곽(1705)의 근처의 경계 영역(1720)에서 샘플의 위치가 좌측 세그먼트 영역 및 우측 세그먼트 영역에 걸쳐있는 경우가 있을 수 있다.
따라서, 일 실시예에 따른 현재 블록(1701)의 좌측 세그먼트와 우측 세그먼트 사이의 경계 영역(1720)에 포함되는 샘플들에 대한 마스크 값들은 도 18을 참조하여 후술하는 방법에 따라 0 또는 1로 결정될 수 있다.
일 실시예에 따른 경계 영역(1720)에 포함되는 샘플들은 현재 블록(1701)의 윤곽(1705)이 지나가는 샘플들로서, 도 17에서는 열 개의 샘플들이 경계 영역(1720)에 포함될 수 있다. 예를 들어, 현재 블록(1701)의 윤곽(1705)은 (3, 5)에 위치하는 샘플(1710)을 지나갈 수 있고, 윤곽(1705)의 일부를 포함하는 샘플(1701)은 경계 영역(1720)에 포함될 수 있다.
또한, 일 실시예에 따른 현재 블록(1701)의 좌측 세그먼트 영역에 포함되는 샘플들에 대한 마스크값들은 모두 0으로 결정되고, 우측 세그먼트 영역에 포함되는 샘플들에 대응하는 마스크값들은 모두 255(혹은, 256)로 결정될 수도 있다. 일 실시예에 따른 현재 블록(1701)의 좌측 세그먼트와 우측 세그먼트 사이의 경계 영역(1720)에 포함되는 샘플들에 대응하는 마스크 값들은 도 18을 참조하여 후술하는 방법에 따라 0 내지 255(혹은, 256)의 값으로 결정될 수 있다.
좌측 세그먼트 영역과 우측 세그먼트 영역의 샘플들의 마스크값들은 위의 예시들에 제한되지 않고, 마스크값의 비트 뎁스에 따라 다른 값이 될 수 있다.
일 실시예에 따른 현재 블록(1701)에 포함된 모든 샘플들에 대한 각각의 마스크값이 결정됨으로써, 마스크값들을 포함하는 현재 블록(1701)의 마스크가 생성될 수 있다.
일 실시예에 따른 현재 블록(1701)의 마스크는 현재 블록(1701)의 루마 블록과 현재 블록(1701)의 크로마 블록에 대하여 각각 생성될 수 있다. 또는, 현재 블록(1701)의 루마 블록에 대한 마스크에 기초하여 크로마 블록에 대한 마스크를 생성할 수도 있다. 예를 들어, 현재 블록(1701)의 루마 블록에 대한 마스크를 다운 샘플링하거나 위상 이동을 고려한 데시메이션(decimation)을 적용하여 크로마 블록에 대한 마스크를 생성할 수 있다. 데시메이션을 적용하는 경우, 수평 방향으로의 3-탭 가우시안 필터 및 수직 방향으로의 3-탭 가우시안 필터 중 적어도 하나를 이용할 수 있다.
또는, 현재 블록(1701)의 루마 블록에 대한 윤곽에 관한 정보에 기초하여 크로마 블록에 대한 마스크를 생성할 수도 있다. 즉, 현재 블록(1701)의 루마 블록에 대한 윤곽의 좌표들을 변환하여 크로마 블록에 대한 윤곽의 좌표들을 획득하고, 획득된 크로마 블록에 대한 윤곽의 좌표들을 이용하여 크로마 블록에 대한 마스크를 생성할 수 있다.
또는, 현재 블록(1701)의 크로마 블록에 대한 마스크를 먼저 생성한 후, 크로마 블록에 대한 마스크를 이용하여 루마 블록에 대한 마스크를 유도할 수도 있다.
도 18은 도 17의 현재 블록(1701)의 경계 영역에 포함되는 샘플(1710)의 마스크값을 결정하는 다양한 방법의 예시들을 나타낸다.
도 18을 참조하면, 경계 영역에 포함되는 샘플들인 샘플(1801), 샘플(1802) 및 샘플(1803)이 나타난다. 도 17의 현재 블록(1701)의 경계 영역에 포함되는 샘플(1710)에 대응되는 마스크값은 도 18의 샘플(1801), 샘플(1802) 또는 샘플(1803)과 같은 방법으로 결정될 수 있다.
구체적으로, 샘플(1801)을 참조하면, 일 실시예에 따른 샘플(1801)에 대응되는 마스크값은, 샘플(1801)을 지나가는 윤곽에 의하여 생성되는 샘플(1801) 내의 두 영역의 면적에 기초하여 결정될 수 있다. 예를 들어, 도 18에서, 윤곽에 의하여 생성되는 샘플(1801) 내의 두 영역은 샘플(1801)의 좌측 영역(또는, 좌상측 영역) 및 샘플(1801)의 우측 영역(또는, 우하측 영역)일 수 있다. 샘플(1801)의 좌측 영역은 샘플(1801)의 원점인 샘플(1801)의 좌측 상단 꼭지점을 포함하는 영역일 수 있다.
도 17에서 현재 블록(1701)의 좌측 세그먼트에 포함되는 샘플들의 마스크값이 0이고 우측 세그먼트에 포함되는 샘플들의 마스크값이 1인 경우, 일 실시예에 따른 샘플(1801)에 대응되는 마스크값은 윤곽에 의하여 생성되는 샘플(1801) 내의 두 영역의 면적의 크기에 따라 결정될 수 있다. 샘플(1801)에 대응되는 마스크값은, 샘플(1801) 내의 두 영역의 면적을 비교하여 우측 면적(0.75)이 좌측 면적(0.25)보다 넓은 경우, 현재 블록(1701)의 우측 세그먼트의 마스크값과 같은 값인 1로 결정될 수 있다.
또한, 도 17에서 좌측 세그먼트에 포함되는 샘플들의 마스크값이 0이고 우측 세그먼트에 포함되는 샘플들의 마스크값이 255인 경우, 일 실시예에 따른 샘플(1801)에 대응되는 마스크값은 윤곽에 의하여 생성되는 샘플(1801) 내의 두 영역의 면적의 크기에 비례하여 결정될 수 있다. 예를 들어, 일 실시예에 따른 샘플(1801)에 대응되는 마스크값은 "((샘플(1801)의 좌측 영역의 넓이 * 좌측 세그먼트의 마스크값) + (샘플(1801)의 우측 영역의 넓이 * 우측 세그먼트의 마스크값)) / 샘플(1801)의 넓이"로 결정될 수 있다.
예를 들어, 좌측 영역은 넓이는 0.25, 우측 영역의 넓이는 0.75, 현재 블록(1701)의 좌측 세그먼트의 마스크값은 0, 현재 블록(1701)의 우측 세그먼트의 마스크값은 255, 샘플(1801)의 넓이는 1인 경우, 샘플(1801)에 대응되는 마스크값은 191.25 로 결정될 수 있다. 또는, 샘플(1801)에 대응되는 마스크값은 191.25의 값을 반올림한 191으로 결정될 수 있다. 또는, 우측 세그먼트의 마스크 값이 256인 경우, 샘플(1801)에 대응되는 마스크값은 192로 결정될 수 있다.
이때, 좌측 세그먼트의 마스크값은 샘플(1801)의 좌측에 인접하는 샘플에 대응되는 마스크값일 수 있고, 우측 세그먼트의 마스크 값은 샘플(1801)의 우측에 인접하는 샘플에 대응되는 마스크값일 수 있다. 또는, 좌측 세그먼트의 마스크값은 샘플(1801)의 상측에 인접하는 샘플에 대응되는 마스크값일 수 있고, 우측 세그먼트의 마스크 값은 샘플(1801)의 하측에 인접하는 샘플에 대응되는 마스크값일 수 있다.
또한, 샘플(1802)을 참조하면, 일 실시예에 따른 샘플(1802)에 대응되는 마스크값은, 샘플(1802)의 중심과 샘플(1802)을 지나가는 윤곽 간의 수직 거리(d)에 기초하여 결정될 수 있다. 예를 들어, 도 18에서, 윤곽에 의하여 생성되는 샘플(1802) 내의 두 영역은 샘플(1802)의 좌측 영역(또는, 좌상측 영역) 및 샘플(1802)의 우측 영역(또는, 우하측 영역)일 수 있다. 샘플(1802)의 좌측 영역은 샘플(1802)의 원점인 샘플(1802)의 좌측 상단 꼭지점을 포함하는 영역일 수 있다.
도 17에서 좌측 세그먼트에 포함되는 샘플들의 마스크값이 0이고 우측 세그먼트에 포함되는 샘플들의 마스크값이 255인 경우, 일 실시예에 따른 샘플(1802)에 대응되는 마스크값은 샘플(1802)의 중심과 샘플(1801)을 지나가는 윤곽 간의 거리(d)에 기초하여 0과 255의 사이값으로 결정될 수 있다. 예를 들어, 일 실시예에 따른 샘플(1802)에 대응되는 마스크값은, 샘플(1802)의 중심을 포함하는 영역이 샘플(1802)의 원점을 포함하는 좌측 영역인 경우, "128 - clip3(0, 1, d/threshold) * 128"으로 결정될 수 있다. 또한, 일 실시예에 따른 샘플(1802)에 대응되는 마스크값은, 샘플(1802)의 중심을 포함하는 영역이 샘플(1802)의 원점을 포함하지 않는 우측 영역인 경우, "128 + clip3(0, 1, d/threshold) * 128"으로 결정될 수 있다.
이때, threshold 는 미리 설정되는 역치값으로서 경계 영역의 폭을 조절하는 역할을 할 수 있고, Clip3함수는 다음과 같이 정의될 수 있다.
Clip3(a,b,c) = a (when c<a), b (when c>b),or c (when a≤c≤b)
위의 수식들에서 128의 값은 예시적인 값으로서, 마스크값의 비트 뎁스에 따라 다른 값이 될 수 있다.
또한, 샘플(1803)을 참조하면, 일 실시예에 따른 샘플(1803)에 대응되는 마스크값은, 샘플(1803)의 중심으로부터 샘플(1803)을 지나가는 윤곽에 이르는 수평 거리(dx) 및 수직 거리(dy)를 이용하여 결정될 수도 있다.
또한, 일 실시예에 따른 샘플(1710)에 대응되는 마스크값은, 샘플(1710)에 대한 코스트(c)를 계산하고, 샘플(1710)에 대한 코스트를 0과 비교함으로써, 결정할 수 있다.
샘플(1710)에 대한 코스트(c)는, 해당 샘플(1710)과 현재 블록(1701)을 지나는 윤곽 간의 거리를 나타내는 값일 수 있다. 예를 들어, 일 실시예에 따른 샘플(1710)에 대한 코스트 다음과 같이 계산될 수 있다.
c = f(x, y, x0, y0, x1, y1) = (y - y0)*(x1 - x0) - (x - x0)*(y1 - y0)
이때, (x0, y0)은 샘플(1710)을 지나는 윤곽(1705)의 제 1 좌표이고, (x1, y1)은 샘플(1710)을 지나는 윤곽(1705)의 제 2 좌표이고, (x, y)는 현재 샘플(1710)의 좌표일 수 있다.
도 19 및 20은 다양한 실시예에 따른 현재 블록(1901)의 마스크를 생성하는 방법의 예시들을 나타낸다.
도 19을 참조하면, 단일 직선 윤곽을 이용하여 두 개의 세그먼트로 분할되는 현재 블록(1901)이 나타난다. 일 실시예에 따른 현재 블록(1901)은 8x8 크기의 블록일 수 있으나, 이는 일 예시일 뿐이며, 이외에도 64x64, 32x32, 16x16 등의 크기의 블록이 될 수 있다.
일 실시예에 따른 현재 블록(1901)은, 현재 블록(1901)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽에 따라, 두 개의 세그먼트로 분할될 수 있다. 예를 들어, 현재 블록(1901)은 윤곽에 의하여 제 1 세그먼트와 제 2 세그먼트로 분할될 수 있다. 이때, 도 19를 참조하면, 제 1 세그먼트는 현재 블록(1901)의 좌측(또는, 좌상측) 세그먼트이고 제 2 세그먼트는 현재 블록(1901)의 우측(또는, 우하측) 세그먼트일 수 있다.
현재 블록(1901)을 참조하면, 현재 블록(1901)의 제 1 세그먼트에 완전히 포함되는 샘플들이 위치하는 영역은 제 1 영역(흰색)이고, 제 2 세그먼트에 완전히 포함되는 샘플들이 위치하는 영역은 제 2 영역(음영 표시)일 수 있다. 또한, 현재 블록(1901)의 샘플의 일부는 좌측 세그먼트에 포함되고 나머지 일부는 우측 세그먼트에 포함되는 샘플들이 위치하는 영역은 경계 영역(도트 표시)일 수 있다.
도 19 및 20의 다양한 실시예에 따른 현재 블록(1901)의 마스크를 생성하는 방법에 따르면, 현재 블록(1901)의 마스크를 구성하는 현재 블록(1901)의 각각의 샘플들에 대응하는 마스크값은 비트뎁스가 1인 바이너리 값으로 결정될 수 있다.
구체적으로, 일 실시예에 따른 현재 블록(1901)의 마스크를 생성하는 방법에 따르면, 제 1 영역에 대응되는 마스크값은 0으로 결정되고, 제 2 영역에 대응되는 마스크값은 1로 결정될 수 있다.
이때, 블록(1902)을 참조하면, 현재 블록(1901)의 경계 영역에 대응되는 마스크 값은 제 1 영역에 대응되는 마스크값과 동일하게 0으로 결정될 수 있다. 또는 블록(1903)을 참조하면, 현재 블록(1901)의 경계 영역에 대응되는 마스크값은 제 2 영역에 대응되는 마스크값과 동일하게 1로 결정될 수 있다.
또한, 도 20에서, 현재 블록(1901)의 마스크를 생성하기 위한 다른 실시예에 따르면, 현재 블록(1901)의 경계 영역에 포함되는 샘플들 중 일부 샘플들에 대응되는 마스크값은 각각 0으로 결정되고, 나머지 샘플들에 대응되는 마스크값은 각각 1로 결정될 수 있다.
구체적으로, 도 20의 블록(2001)을 참조하면, 현재 블록(1901)의 각 샘플에 대해 2 이상의 비트뎁스를 갖는 그레이스케일 값을 결정하고, 결정된 그레이스케일 값에 기초하여 현재 블록(1901)의 각 샘플에 대해 비트뎁스가 1인 바이너리 값을 결정함으로써 현재 블록(1901)의 마스크가 생성될 수 있다.
현재 블록(1901)의 샘플에 대응되는 그레이스케일 값은, 도 18에서 상술된 경계 영역에 포함되는 샘플의 마스크값을 결정하는 다양한 방법에 따라 결정될 수 있다. 예를 들어, 비트뎁스가 8인 경우, 현재 블록(1901)의 샘플에 대응되는 그레이스케일 값은 0 내지 255의 값이 될 수 있다.
예를 들어, 블록(2001)을 참조하면, 현재 블록(1901)의 제 1 영역에 대응되는 마스크 값은 0으로 결정되고, 제 2 영역에 대응되는 마스크 값은 255로 결정될 수 있다. 또한, 현재 블록(1901)의 경계 영역에 포함되는 샘플들에 대응되는 마스크 값은 도 18에서 상술된 다양한 방법에 따라 각각 0과 255 사이의 값으로 결정될 수 있다.
이와 같이 0 내지 255의 값으로 결정된 그레이스케일의 마스크값들을 바이너리 값으로 변환함으로써, 일 실시예에 따른 현재 블록(1901)의 마스크를 생성할 수 있다.
예를 들어, 블록(2002)을 참조하면, 블록(2001)과 같이 결정된 각각의 샘플들에 대한 그레이스케일의 마스크값에 기초하여 바이너리의 마스크값을 생성할 수 있다. 블록(2001)의 제 1 영역에 대응되는 그레이스케일의 마스크값이 0인 경우 바이너리 마스크값은 0으로 결정될 수 있다. 또한, 블록(2001)의 제 2 영역에 대응되는 그레이스케일의 마스크값이 255인 경우 바이너리 마스크값은 1로 결정될 수 있다.
또한, 블록(2001)의 경계 영역에 포함된 샘플들 중, 샘플에 대응되는 그레이스케일의 마스크값이 128보다 작은 경우 해당 샘플의 바이너리 마스크값은 0으로 결정되고, 샘플에 대응되는 그레이스케일의 마스크값이 128보다 크거나 같은 경우 해당 샘플의 바이너리 마스크값은 1로 결정될 수 있다. 또는, 블록(2001)의 경계 영역에 포함된 샘플들 중, 샘플에 대응되는 그레이스케일의 마스크값이 128보다 작거나 같은 경우 해당 샘플의 바이너리 마스크값은 0으로 결정되고, 샘플에 대응되는 그레이스케일의 마스크값이 128보다 큰 경우 해당 샘플의 바이너리 마스크값은 1로 결정될 수 있다.
비디오 복호화 장치(20) 및 비디오 부호화 장치(10)는 그레이스케일의 마스크값을 이용하여 현재 블록(1901)의 경계를 더욱 정확하게 표현할 수 있고, 그레이스케일의 마스크값을 바이너리 마스크값으로 변환하여 이용함으로써 마스크를 이용한 연산의 복잡도를 줄이고 효율을 높일 수 있다.
상술된 도 19 및 도 20의 방법이 수행되는 과정에서, 현재 블록(1901)의 제 1 영역을 결정하기 위해 다양한 방법들이 이용될 수 있다.
예를 들어, 현재 블록(1901)의 세그먼트들 중 현재 블록(1901)의 원점(0, 0)인 좌측 상단 샘플을 포함하는 세그먼트에 대응되는 영역이 제 1 영역으로 결정되고, 나머지 세그먼트에 대응되는 영역이 제 2 영역으로 결정될 수 있다.
또한, 다른 방법으로서 현재 블록(1901)에 포함된 샘플들에 대한 코스트(c)를 다음과 같이 계산하여, 계산된 코스트가 0보다 작은 샘플의 위치는 제 1 영역으로 판단할 수 있다.
c = f(x, y, x0, y0, x1, y1) = (y - y0)*(x1 - x0) - (x - x0)*(y1 - y0)
이때, (x0, y0)은 현재 블록(1901)을 지나는 윤곽의 제 1 좌표이고, (x1, y1)은 윤곽의 제 2 좌표이고, (x, y)는 현재 블록(1901)의 샘플의 좌표일 수 있다.
도 21은 일 실시예에 따른 현재 블록(2101)의 마스크를 생성하는 방법의 예시를 나타낸다.
도 21을 참조하면, 단일 직선 윤곽을 이용하여 적어도 하나의 세그먼트로 분할되는 현재 블록(2101)이 나타난다. 일 실시예에 따른 현재 블록(2101)은 8x8 크기의 블록일 수 있으나, 이는 일 예시일 뿐이며, 이외에도 64x64, 32x32, 16x16 등의 크기의 블록이 될 수 있다.
이때, 현재 블록(2101)을 지나는 윤곽은 현재 블록(2101)을 두 개의 세그먼트로 분할하지 않으므로, 현재 블록(2101)이 도 17에서와 같이 제 1 영역, 제 2 영역 및 경계 영역으로 나뉘지 않을 수 있다. 예를 들어, 도 21을 참조하면, 윤곽이 현재 블록(2101)의 꼭지점에 위치한 하나의 샘플만을 지나는 경우, 현재 블록(2101)은 하나의 세그먼트로 분할될 수 있고, 현재 블록(2101)은 윤곽이 지나는 경계 영역과 경계 영역이 아닌 세그먼트 영역으로 나뉠 수 있다.
구체적으로, 도 21에서, 윤곽은 현재 블록(2101) 내의 샘플들 중, 좌측 상단 샘플, 좌측 하단 샘플, 우측 상단 샘플 및 우측 하단 샘플 중 하나의 샘플만을 지날 수 있다.
도 21과 같은 경우에, 현재 블록(2101)의 마스크는 제 1 마스크값과 제 2 마스크값으로 구성될 수 있다. 예를 들어, 현재 블록(2101)의 경계 영역에 포함되는 샘플에 대응되는 마스크값은 제 1 마스크값으로 결정되고, 현재 블록(2101)의 경계 영역이 아닌 나머지 영역에 포함되는 샘플에 대응되는 마스크값은 제 2 마스크값으로 결정될 수 있다. 제 1 마스크값 및 제 2 마스크값은 미리 설정된 값으로서 마스크값의 비트뎁스에 따라 다르게 설정될 수 있다. 예를 들어, 제 1 마스크값은 0이고, 제 2 마스크값은 127(혹은, 128)일 수 있다. 또는, 제 1 마스크값이 255(혹은, 256)이고, 제 2 마스크값은 0일 수도 있다.
일 실시예에 따른 현재 블록(2101)의 제 1 마스크값 및 제 2 마스크값은 현재 블록(2101) 내에서의 경계 영역의 위치에 따라 다르게 설정될 수 있다. 예를 들어, 현재 블록(2101)의 경계 영역이 현재 블록(2101) 내의 좌측 상단에 위치하는 경우, 제 1 마스크값 및 제 2 마스크값은 각각 0 및 127로 결정되고, 현재 블록(2101)의 경계 영역이 현재 블록(2101) 내의 우측 상단에 위치하는 경우, 제 1 마스크값 및 제 2 마스크값은 각각 255 및 127로 결정될 수 있다.
도 22는 일 실시예에 따른 현재 블록(2201)의 세그먼트에 대하여 예측을 수행하는 방법을 나타낸다.
현재 블록(2201)으로부터 결정된 적어도 하나의 세그먼트는 인트라 예측(intra prediction) 방식을 이용하여 예측될 수 있다.
구체적으로, 도 22를 참조하면, 현재 블록(2201)의 세그먼트는 인트라 DC 모드를 이용하여 예측될 수 있다. 인트라 DC 모드는 현재 블록(2201)이 포함된 픽처 내의 현재 블록(2201)의 주변의 참조 샘플들을 이용하여 현재 블록(2201)의 세그먼트의 예측값을 생성하는 방법일 수 있다. 예를 들어, DC 모드에서 현재 블록(2201)의 세그먼트의 예측값은 DC 값으로서, 참조되는 주변 참조 샘플들의 평균값이 될 수 있다.
한편, 현재 블록(2201) 내에 윤곽이 포함되어 세그먼트들 간의 경계가 생기는 경우, 일 실시예에 따른 현재 블록(2201)의 세그먼트에 대한 예측은 세그먼트들 간의 경계를 고려하여 수행될 수 있다. 구체적으로, 현재 블록(2201)의 주변의 참조 샘플들에 기초하여 DC 값인 세그먼트의 샘플값이 먼저 생성되고, 생성된 세그먼트의 샘플값에 세그먼트들의 영역 및 경계를 나타내는 마스크를 적용하여 세그먼트의 예측값이 생성될 수 있다. 이때, 세그먼트의 샘플값은 세그먼트에 대응되는 영역에 포함되는 샘플들 각각에 대한 샘플값들을 의미할 수 있다. 또한, 세그먼트의 예측값은 세그먼트에 대응되는 영역에 포함되는 샘플들에 각각에 대한 예측값들을 의미할 수 있다.
도 22는 일 실시예에 따른 현재 블록(2201)의 주변의 참조 샘플들을 이용하여 현재 블록(2201)의 세그먼트의 샘플값을 생성하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 현재 블록(2201)의 세그먼트의 샘플값은 현재 블록(2201)의 외부에 인접한 참조 샘플들에 기초하여 생성될 수 있다. 일 실시예에 따른 현재 블록(2201)에 인접한 참조 샘플들은 현재 블록(2201)의 상측 외부에 인접한 상측 참조 샘플 및 좌측 외부에 인접한 좌측 참조 샘플을 포함할 수 있다.
도 22를 참조하면, 현재 블록(2201)은 현재 블록(2201)으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드에 따라 두 개의 세그먼트로 분할 될 수 있다. 이때, 현재 블록(2201)의 두 개의 세그먼트에 포함된 샘플들의 샘플값은 현재 블록(2201)의 참조 샘플들 중 각각의 해당 세그먼트의 외부에 인접하는 참조 샘플들에 기초하여 생성될 수 있다.
구체적으로, 윤곽의 모드가 제 1 모드인 경우, 현재 블록(2201)은 좌측 세그먼트와 우측 세그먼트로 분할될 수 있다. 현재 블록(2201)의 좌측 세그먼트의 샘플값은 좌측 세그먼트의 상측 및 좌측 외부에 각각 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있다. 예를 들어, 좌측 세그먼트에 포함된 샘플들의 샘플값은 좌측 세그먼트의 상측 참조 샘플들 및 좌측 참조 샘플들의 샘플값의 평균값으로 결정될 수 있다. 이때, 좌측 세그먼트에 인접하는 상측 참조 샘플은 현재 블록(2201)의 인접하는 상측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 1 좌표보다 좌측에 위치하는 샘플들을 포함할 수 있다. 또한, 현재 블록(2201)의 우측 세그먼트의 샘플값은 우측 세그먼트에 인접하는 상측 참조 샘플에 기초하여 생성될 수 있다. 이때, 우측 세그먼트에 인접하는 상측 참조 샘플은 현재 블록(2201)의 인접하는 상측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 1 좌표보다 우측에 위치하는 샘플들을 포함할 수 있다.
또한, 윤곽의 모드가 제 2 모드인 경우, 현재 블록(2201)은 좌측 세그먼트와 우측 세그먼트로 분할될 수 있다. 현재 블록(2201)의 좌측 세그먼트의 샘플값은 좌측 세그먼트에 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있고, 현재 블록(2201)의 우측 세그먼트의 샘플값은 우측 세그먼트에 인접하는 상측 참조 샘플에 기초하여 생성될 수 있다. 이때, 좌측 세그먼트에 인접하는 상측 참조 샘플은 현재 블록(2201)의 인접하는 상측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 1 좌표보다 좌측에 위치하는 샘플들을 포함할 수 있고, 우측 세그먼트에 인접하는 상측 참조 샘플은 현재 블록(2201)의 인접하는 상측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 1 좌표보다 우측에 위치하는 샘플들을 포함할 수 있다.
또한, 윤곽의 모드가 제 3 모드인 경우, 현재 블록(2201)은 좌측 세그먼트와 우측 세그먼트로 분할될 수 있다. 현재 블록(2201)의 좌측 세그먼트의 샘플값은 좌측 세그먼트에 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 좌측 세그먼트에 인접하는 상측 참조 샘플은 현재 블록(2201)의 인접하는 상측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 1 좌표보다 좌측에 위치하는 샘플들을 포함할 수 있고, 좌측 세그먼트에 인접하는 좌측 참조 샘플은 현재 블록(2201)의 인접하는 좌측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 2 좌표보다 상측에 위치하는 샘플들을 포함할 수 있다. 또한, 현재 블록(2201)의 우측 세그먼트의 샘플값은 우측 세그먼트에 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 우측 세그먼트에 인접하는 상측 참조 샘플은 현재 블록(2201)의 인접하는 상측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 1 좌표보다 우측에 위치하는 샘플들을 포함할 수 있고, 우측 세그먼트에 인접하는 좌측 참조 샘플은 현재 블록(2201)의 인접하는 좌측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 2 좌표보다 하측에 위치하는 샘플들을 포함할 수 있다.
또한, 윤곽의 모드가 제 4 모드인 경우, 현재 블록(2201)은 좌측 세그먼트와 우측 세그먼트로 분할될 수 있다. 현재 블록(2201)의 좌측 세그먼트의 샘플값은 좌측 세그먼트에 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 현재 블록(2201)의 우측 세그먼트의 샘플값은 현재 블록(2201)의 주변 샘플을 이용하여 생성되지 않고 직접 전송될 수 있다. 예를 들어, 윤곽의 모드가 제 4 모드인 경우, 비디오 복호화 장치(20)는 비디오 부호화 장치(10)로부터 우측 세그먼트의 샘플값에 관한 정보를 수신하여 샘플값을 생성할 수 있다. 또는, 현재 블록(2201)의 우측 세그먼트의 샘플값은 현재 블록(2201)에 인접하지 않은 주변 샘플들을 이용하여 생성될 수도 있다. 이에 대한 더욱 상세한 설명은 도 23를 참조하여 후술하도록 한다.
또한, 윤곽의 모드가 제 5 모드인 경우, 현재 블록(2201)은 상측 세그먼트와 하측 세그먼트로 분할될 수 있다. 현재 블록(2201)의 상측 세그먼트의 샘플값은 상측 세그먼트에 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 상측 세그먼트에 인접하는 좌측 참조 샘플은 현재 블록(2201)의 인접하는 좌측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 2 좌표보다 상측에 위치하는 샘플들을 포함할 수 있다. 또한, 현재 블록(2201)의 하측 세그먼트의 샘플값은 하측 세그먼트에 인접하는 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 하측 세그먼트에 인접하는 좌측 참조 샘플은 현재 블록(2201)의 인접하는 좌측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 2 좌표보다 하측에 위치하는 샘플들을 포함할 수 있다.
또한, 윤곽의 모드가 제 6 모드인 경우, 현재 블록(2201)은 좌측 세그먼트와 우측 세그먼트로 분할될 수 있다. 현재 블록(2201)의 우측 세그먼트의 샘플값은 우측 세그먼트에 인접하는 상측 참조 샘플 및 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 우측 세그먼트에 인접하는 좌측 참조 샘플은 현재 블록(2201)의 인접하는 좌측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 2 좌표보다 상측에 위치하는 샘플들을 포함할 수 있다. 또한, 현재 블록(2201)의 좌측 세그먼트의 샘플값은 좌측 세그먼트에 인접하는 좌측 참조 샘플에 기초하여 생성될 수 있다. 이때, 좌측 세그먼트에 인접하는 좌측 참조 샘플은 현재 블록(2201)의 인접하는 좌측 주변 샘플들 중 현재 블록(2201)의 윤곽의 제 2 좌표보다 하측에 위치하는 샘플들을 포함할 수 있다.
다만, 세그먼트들의 샘플값은 참조 샘플들의 샘플값의 평균값 이외에도, 참조 샘플들 중 하나의 샘플의 샘플값 또는 참조 샘플들의 샘플값의 중간값 등으로 결정될 수 있다.
일 실시예에 따른 현재 블록(2201)의 세그먼트의 샘플값은 루마 성분과 크로마 성분에 대하여 각각 생성될 수 있고, 세그먼트의 예측값 또한 루마 성분과 크로마 성분에 대하여 각각 생성될 수 있다. 현재 블록(2201)의 윤곽의 모드가 제 4 모드인 경우, 현재 블록(2201)의 우측 세그먼트의 루마 성분의 샘플값은 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 직접 송수신됨으로써 결정되고, 크로마 성분의 샘플값은 루마 성분의 샘플값으로부터 유도하여 결정할 수 있다.
한편, 현재 블록(2201)의 윤곽의 모드가 제 4 모드인 경우, 일 실시예에 따른 현재 블록(2201)의 우측 세그먼트의 샘플값은 비디오 부호화 장치(10)와 비디오 복호화 장치(20) 간에 송수신될 수 있다.
그러나, 다른 실시예에 따른 비디오 부호화 장치(10)는 윤곽의 모드에 관계 없이, 현재 블록에 인접한 주변 참조 샘플들을 이용할 수 있는 경우에도, 정확한 예측을 위하여 현재 블록의 모든 세그먼트들의 샘플값을 결정하여 전송할 수도 있다.
또한, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록의 세그먼트에 포함된 샘플들을 이용하여 획득한 실제 세그먼트의 샘플값과 주변 참조 샘플들을 이용하여 유도되는 세그먼트의 샘플값의 차이값을 계산하여 비디오 복호화 장치(20)로 전송할 수도 있다. 비디오 복호화 장치(20)는 현재 블록의 주변 참조 샘플들을 이용하여 세그먼트의 유도되는 세그먼트의 샘플값과 비디오 부호화 장치(10)로부터 수신되는 차이값에 기초하여 현재 블록의 세그먼트의 샘플값을 복원할 수 있다.
상술한 방법들에 따라 현재 블록(2201)의 세그먼트의 샘플값이 생성되면, 생성된 세그먼트의 샘플값에 세그먼트의 영역 및 경계를 나타내는 마스크를 적용하여 현재 블록(2201)의 세그먼트의 예측값을 생성할 수 있다.
구체적으로, 일 실시예에 따른 현재 블록(2201)의 마스크가 바이너리 마스크인 경우, 현재 블록(2201)의 세그먼트들의 예측값은 세그먼트들의 샘플값에 기초하여 결정될 수 있다. 예를 들어, 제 1 세그먼트에 포함되는 샘플들이 위치하는 제 1 영역의 마스크값이 0이고 제 2 세그먼트에 포함되는 샘플들이 위치하는 제 2 영역의 마스크값이 1인 경우, 현재 블록(2201)의 제 1 세그먼트의 예측값은 제 1 세그먼트의 샘플값으로 결정되고, 현재 블록(2201)의 제 2 세그먼트의 예측값은 제 2 세그먼트의 샘플값으로 결정될 수 있다.
이때, 현재 블록(2201)의 경계 영역에 포함된 샘플들의 예측값은 경계 영역의 마스크값에 따라 결정될 수 있다. 예를 들어, 현재 블록(2201)의 경계 영역에 포함된 샘플들 중 마스크값이 0인 샘플의 예측값은 동일한 마스크 값을 갖는 제 1 세그먼트의 샘플값으로 결정되고, 마스크값이 1인 샘플의 예측값은 동일한 마스크 값을 갖는 제 2 세그먼트의 샘플값으로 결정될 수 있다.
또한, 일 실시예에 따른 현재 블록(2201)의 마스크가 바이너리 마스크가 그레이스케일의 마스크인 경우, 예를 들어, 마스크값의 비트 뎁스가 8비트인 경우, 현재 블록(2201)의 세그먼트들의 예측값은 세그먼트들의 샘플값에 기초하여 아래와 같이 계산될 수 있다.
P = ((255 - M) * DC0 + (M) * DC1 + 128) >> 8
이때, P는 현재 블록(2201)에 포함된 각각의 샘플들의 예측값을 나타내고, M은 현재 블록(2201)에 포함된 각각의 샘플들의 마스크값을 나타낸다. 또한, DC0는 현재 블록(2201)의 제 1 세그먼트의 샘플값을 나타내고, DC1은 현재 블록(2201)의 제 2 세그먼트의 샘플값을 나타낼 수 있다. 위 식에서 255 , 128은 각각 현재 블록(2201)의 마스크값의 비트 뎁스에 따른 최대값 및 중간값으로서, 현재 블록(2201)의 마스크값의 비트 뎁스에 따라 변경될 수 있다.
위 식에 따라, 마스크값이 0인 현재 블록(2201)의 제 1 세그먼트의 예측값은 제 1 세그먼트의 샘플값으로 결정되고, 마스크값이 255인 현재 블록(2201)의 제 2 세그먼트의 예측값은 제 2 세그먼트의 샘플값으로 결정될 수 있다. 이때, 현재 블록(2201)의 경계 영역에 포함된 샘플들의 예측값은 경계 영역의 마스크값과 제 1 세그먼트의 샘플값 및 제 2 세그먼트의 샘플값을 이용하여 결정될 수 있다.
상술한 바와 같이, 일 실시예에 따른 현재 블록(2201)으로부터 결정된 세그먼트들을 고려하여 현재 블록(2201)을 예측하는 방법에 따르면, 현재 블록(2201) 내에 포함된 물체의 경계를 더욱 정확히 표현할 수 있다.
한편, 일 실시예에 따른 현재 블록(2201)의 윤곽에 따라 결정된 세그먼트들을 고려하여 현재 블록(2201)을 예측하는 방법과 기존의 사각형의 예측 블록을 이용하는 인트라 예측 및 인터 예측 방법을 조합하여, 현재 블록(2201)의 예측 블록을 생성할 수도 있다.
예를 들어, 일 실 시예에 따른 현재 블록(2201)의 예측 블록은 아래와 같이 생성될 수 있다.
P(x, y) = (P0(x, y) + P1(x, y) + 1) >> 1
이때, P0(x, y)는 일 실시예에 따른 현재 블록(2201)의 윤곽에 따라 결정된 세그먼트들을 고려하여 현재 블록(2201)을 예측하는 방법에 따른 현재 블록(2201)의 예측 블록을 나타낸다. P1(x, y)은 기존의 사각형의 예측 블록을 이용하는 인트라 예측 또는 인터 예측 방법에 따른 현재 블록(2201)의 예측 블록을 나타낼 수 있다. P(x, y)는 현재 블록(2201)의 최종 예측 블록을 나타낼 수 있다.
예를 들어, P1(x, y)은 HEVC의 플래너(planar) 모드를 이용하여 생성된 현재 블록(2201)의 예측 블록일 수 있다. 또는, P1(x, y)은 HEVC의 MPM(most probable mode) 규칙에 의하여 선택된 첫 번째 모드를 이용하여 생성된 현재 블록(2201)의 예측 블록일 수 있다.
또한, 일 실시예에 따른 현재 블록(2201)의 최종 예측 블록은 각각의 예측 블록에 가중치를 할당하여 아래와 같이 생성될 수도 있다.
P(x, y) = (3 * P0(x, y) + P1(x, y) + 2) >> 2
현재 블록(2201)의 예측 블록을 위와 같은 다양한 방법의 조합에 의하여 생성함에따라, 현재 블록(2201) 내의 샘플값의 기울기(gradient) 또는 텍스쳐(texture)의 표현에 대한 부호화 효율을 높일 수 있다. 현재 블록(2201)의 예측 블록을 위와 같은 다양한 방법의 조합하는 방법은 블록 단위로 선택적으로 적용될 수도 있다.
도 23은 일 실시예에 따른 현재 블록(2301)의 세그먼트에 대하여 예측을 수행하는 방법을 나타낸다.
도 23을 참조하면, 일 실시예에 따른 윤곽의 모드가 제 4 모드인 현재 블록(2301)이 나타난다.
윤곽의 모드가 제 4 모드인 경우, 일 실시예에 따른 현재 블록(2301)은 좌측(또는, 좌상측) 세그먼트와 우측(또는, 우하측) 세그먼트로 분할될 수 있다. 이때, 현재 블록(2301)의 우측 세그먼트는 현재 블록(2301)의 상측 참조 샘플 및 좌측 참조 샘플 중 어느 참조 샘플과도 인접하지 않기 때문에, 현재 블록(2301)의 우측 세그먼트의 샘플값은 현재 블록(2301)의 인접한 상측 참조 샘플 및 좌측 참조 샘플을 이용할 수 없다.
한편, 도 23을 참조하면, 일 실시예에 따른 현재 블록(2301)의 우측 세그먼트의 샘플값은 현재 블록(2301)의 주변 샘플을 참조하여 생성될 수 있다. 이때, 참조되는 현재 블록(2301)의 주변 샘플은 현재 블록(2301)에 인접하는 샘플이 아닐 수 있다.
구체적으로, 일 실시예에 따른 현재 블록(2301)의 우측 세그먼트의 샘플값은, 현재 블록(2301)의 외부에 인접하는 상측 샘플 및 좌측 샘플을 확장한 위치의 샘플들을 참조하여 생성될 수 있다. 예를 들어, 참조 샘플은 현재 블록(2301)의 상측 샘플을 우측으로 확장한 위치의 샘플 및 현재 블록(2301)의 좌측 샘플을 하측으로 확장한 위치의 샘플일 수 있다. 예를 들어, 참조 샘플은 현재 블록(2301)의 우측 상단 블록(2302)의 우측 하단에 위치한 샘플 및 현재 블록(2301)의 좌측 하단 블록(2302)의 우측 하단에 위치한 샘플을 포함할 수 있다.
예를 들어, 일 실시예에 따른 현재 블록(2301)의 우측 세그먼트의 샘플값은 블록(2302)의 우측 하단에 위치한 샘플의 샘플값 및 블록(2301)의 좌측 하단 블록(2302)의 우측 하단에 위치한 샘플의 샘플값의 평균값으로 결정될 수 있다.
또한, 다른 실시예에 따른 현재 블록(2301)의 우측 세그먼트의 샘플값은, 현재 블록(2301)의 인접하거나 인접하지 않은 주변의 참조 샘플을 참조하지 않고, 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 직접 송수신될 수 있다.
구체적으로, 일 실시예에 따른 비디오 부호화 장치(10)는 현재 블록(2301)의 우측 세그먼트에 대응되는 영역에 포함되는 샘플들의 샘플값을 이용하여 우측 세그먼트의 샘플값을 결정할 수 있다. 예를 들어, 우측 세그먼트의 샘플값은 현재 블록(2301)의 우측 세그먼트에 대응되는 영역에 포함되는 샘플들의 샘플값의 평균으로 결정될 수 있다. 일 실시예에 따른 비디오 부호화 장치(10)는 결정된 우측 세그먼트의 샘플값을 비디오 복호화 장치(20)로 전송할 수 있다.
이때, 일 실시예에 따른 우측 세그먼트의 샘플값은 현재 블록(2301)의 샘플들의 비트 뎁스와 동일한 비트 뎁스의 데이터로 전송될 수 있다. 또는, 우측 세그먼트의 샘플값은 전송 효율을 위하여 양자화를 거쳐 현재 블록(2301)의 샘플들의 비트 뎁스 보다 작은 비트 뎁스의 데이터로 전송될 수 있다.
도 24는 다양한 실시예에 따른 현재 블록(2301)의 세그먼트들의 샘플값을 전송하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 현재 블록(2301)의 세그먼트의 샘플값이 비디오 부호화 장치(10)와 비디오 복호화 장치(20) 간에 전송되는 경우, 세그먼트의 샘플값은 전송 효율을 위하여 양자화 및 역양자화될 수 있다.
구체적으로, 일 실시예에 따른 비디오 부호화 장치(10)는 결정된 세그먼트의 샘플값이 8 비트의 DC 값인 경우, 결정된 세그먼트의 샘플값을 아래와 같이 4 비트의 값으로 균등하게(uniformly) 양자화할 수 있다.
DCquant = DCorig >> 4
이때, DCquant는 양자화된 샘플값이고, DCorig은 양자화 전의 샘플값일 수 있다. 또는, 일 실시예에 따른 비디오 부호화 장치(10)는 결정된 세그먼트의 샘플값을 반올림하여 아래와 같이 4 비트의 값으로 균등하게(uniformly) 양자화할 수도 있다.
DCquant = (DCorig + 8) >> 4
또한, 일 실시예에 따른 비디오 복호화 장치(20)는 비디오 부호화 장치(10)로부터 수신된 세그먼트의 샘플값을 아래와 같이 역양자화할 수 있다.
DC = DCquant << 4
또는, 일 실시예에 따른 비디오 복호화 장치(20)는 비디오 부호화 장치(10)로부터 수신된 세그먼트의 샘플값을 아래와 같이 역양자화할 수 있다.
DC = (DCquant << 4) + 8
또한, 다른 일 실시예에 따른 비디오 부호화 장치(10)와 비디오 복호화 장치(20)는 세그먼트의 샘플값을 각각 비균등(non-uniformly) 양자화 및 역양자화할 수 있다.
구체적으로, 도 24를 참조하면, 현재 블록(2301)의 샘플들의 비트 뎁스가 8비트인 경우의 비균등(non-uniformly) 양자화를 위한 양자화 계수가 나타난다. 도 24의 표를 보면, 그래프 내의 숫자는 양자화 전의 샘플값이고, y좌표는 양자화된 샘플값일 수 있다. x좌표는 양자화된 샘플값이 스케일링된 결과값일 수 있다.
이때, 세그먼트의 샘플값은 중간값인 128의 근처에서 더욱 세밀하게 양자화될 수 있고, 양자화된 샘플값은 4비트의 데이터로 스케일링 될 수 있다. 이러한 비균등 양자화를 하는 경우, 중간값의 근처에 샘플값이 존재할 확률이 클 수 있으므로 부호화 효율을 높일 수 있다.
구체적으로, 일 실시예에 따른 비디오 부호화 장치(10)는 세그먼트의 샘플값을 아래와 같이 비균등 양자화할 수 있다.
DC = 128 + (DCIdx < 7 -1, 1) * (((DCIdx - 7) * (DCIdx - 7) * 585 + 128) >> 8)
한편, 현재 블록(2301)의 윤곽의 모드가 제 4 모드인 경우, 일 실시예에 따른 현재 블록(2301)의 우측 세그먼트의 샘플값 또는 예측값은 비디오 부호화 장치(10)와 비디오 복호화 장치(20) 간에 송수신될 수 있다.
그러나, 다른 일 실시예에 따른 비디오 부호화 장치(10)는 윤곽의 모드에 관계 없이, 현재 블록에 인접한 주변 참조 샘플들을 이용할 수 있는 경우에도, 정확한 예측을 위하여 현재 블록의 모든 세그먼트들의 샘플값을 전송할 수도 있다.
도 25 및 도 26는 다양한 실시예에 따른 현재 블록(2510, 2610, 2620)의 주변 샘플들을 이용하여 현재 블록의 세그먼트의 샘플값을 생성하는 방법을 나타낸다.
도 25를 참조하면, 8x8 크기의 현재 블록(2510)과 현재 블록(2510)의 인접한 주변 샘플들이 나타난다. 일 실시예에 따른 현재 블록(2510)의 주변 샘플들은 현재 블록(2510)의 상측 주변 샘플, 좌측 주변 샘플 및 좌상측 주변 샘플을 포함할 수 있다. 이때, 도 25에 나타난 샘플들은 루마 성분의 샘플들일 수 있다.
일 실시예에 따른 현재 블록(2510)의 샘플값은 주변 샘플들 중 일부의 참조 샘플을 참조하여 생성될 수 있다. 예를 들어, 현재 블록(2510)의 주변 샘플들 중 윤곽까지의 소정의 거리 이상 되는 주변 샘플들이 참조 샘플로 결정될 수 있다.
구체적으로, 도 25를 참조하면, 현재 블록(2510)의 윤곽의 제 1 좌표(2501)와 제 2 좌표(2502)를 이용하여 현재 블록(2510)의 참조 샘플이 결정될 수 있다. 예를 들어, 현재 블록(2510)의 윤곽의 제 1 좌표(2501)와 제 2 좌표(2502)는 도 11 내지 도 14에서 상술한 방법에 따라 현재 블록에 인접한 샘플의 위치로 결정될 수 있다.
일 실시예에 따른 현재 블록(2510)의 참조 샘플은, 현재 블록(2510)의 주변 샘플 중 윤곽의 제 1 좌표(2501) 및 제 2 좌표(2502)와의 거리가 소정 거리 이상 되는 주변 샘플로 결정될 수 있다. 예를 들어, 현재 블록(2510)의 윤곽의 모드가 제 3 모드여서 현재 블록(2510)은 현재 블록(2510)의 좌상측의 제 1 세그먼트와 우하측의 제 2 세그먼트로 분할될 수 있다.
일 실시예에 따른 현재 블록(2510)의 제 1 세그먼트의 샘플값은, 제 1 세그먼트에 인접하는 상측의 주변 샘플들 중 현재 블록(2510)의 윤곽의 제 1 좌표(2501)로부터 좌측으로 소정의 거리 이상 떨어진 참조 샘플과 제 1 세그먼트에 인접하는 좌측의 주변 샘플들 중 현재 블록(2510)의 윤곽의 제 2 좌표(2502)로부터 상측으로 소정의 거리 이상 떨어진 참조 샘플을 이용하여 결정될 수 있다.
또한, 일 실시예에 따른 현재 블록(2510)의 제 2 세그먼트의 샘플값은, 제 2 세그먼트에 인접하는 상측의 주변 샘플들 중 현재 블록(2510)의 윤곽의 제 1 좌표(2501)로부터 우측으로 소정의 거리 이상 떨어진 참조 샘플과 제 2 세그먼트에 인접하는 좌측의 주변 샘플들 중 현재 블록(2510)의 윤곽의 제 2 좌표(2502)로부터 하측으로 소정의 거리 이상 떨어진 참조 샘플을 이용하여 결정될 수 있다.
이때, 소정의 거리는, 현재 블록(2510)의 크기, 연산의 효율, 영상의 화질 등을 고려하여 미리 설정된 거리로서, 예를 들어, 도 25에서는 2 픽셀이 될 수 있다.
도 26를 참조하면, 4x4 크기의 현재 블록(2610, 2620)과 현재 블록(2610, 2620)의 인접한 주변 샘플들이 나타난다. 다양한 실시예에 따른 현재 블록(2610, 2620)의 주변 샘플들은 현재 블록(2610, 2620)의 상측 주변 샘플, 좌측 주변 샘플 및 좌상측 주변 샘플을 포함할 수 있다. 이때, 도 26에 나타난 샘플들은 크로마 성분의 샘플들일 수 있다.
일 실시예에 따른 현재 블록(2610)의 샘플값은 주변 샘플들 중 일부의 참조 샘플을 이용하여 생성될 수 있다. 예를 들어, 현재 블록(2610)의 주변 샘플들 중 윤곽으로부터 소정의 거리 이상 떨어진 주변 샘플들이 참조 샘플로 결정될 수 있다.
구체적으로, 도 26를 참조하면, 현재 블록(2610)의 윤곽의 제 1 좌표(2601)와 제 2 좌표(2602)를 이용하여 현재 블록(2610)의 참조 샘플이 결정될 수 있다. 이때, 일 실시예에 따른 크로마 성분의 현재 블록(2610)은 하프 픽셀 정밀도의 블록일 수 있다. 예를 들어, 도 26에서, 현재 블록(2610)의 윤곽의 제 1 좌표(2601)는 현재 블록(2610)의 상측의 정수 샘플 위치로 결정되고, 제 2 좌표(2602)는 현재 블록(2610)의 좌측의 하프 샘플 위치로 결정될 수 있다.
일 실시예에 따른 현재 블록(2610)의 참조 샘플은, 현재 블록(2610)의 주변 샘플 중 윤곽의 제 1 좌표(2601) 및 제 2 좌표(2602)와 소정 거리 이상 떨어진 주변 샘플로 결정될 수 있다. 예를 들어, 현재 블록(2610)의 윤곽의 모드가 제 3 모드여서 현재 블록(2610)은 현재 블록(2610)의 좌상측의 제 1 세그먼트와 우하측의 제 2 세그먼트로 분할될 수 있다.
일 실시예에 따른 현재 블록(2610)의 제 1 세그먼트의 샘플값은, 제 1 세그먼트에 인접하는 상측의 주변 샘플들 중 현재 블록(2610)의 윤곽의 제 1 좌표(2601)로부터 좌측으로 소정의 거리 이상 떨어진 참조 샘플과 제 1 세그먼트에 인접하는 좌측의 주변 샘플들 중 현재 블록(2610)의 윤곽의 제 2 좌표(2602)로부터 상측으로 소정의 거리 이상 떨어진 참조 샘플을 이용하여 결정될 수 있다.
또한, 일 실시예에 따른 현재 블록(2610)의 제 2 세그먼트의 샘플값은, 제 2 세그먼트에 인접하는 상측의 주변 샘플들 중 현재 블록(2610)의 윤곽의 제 1 좌표(2601)로부터 우측으로 소정의 거리 이상 떨어진 참조 샘플과 제 2 세그먼트에 인접하는 좌측의 주변 샘플들 중 현재 블록(2610)의 윤곽의 제 2 좌표(2602)로부터 하측으로 소정의 거리 이상 떨어진 참조 샘플을 이용하여 결정될 수 있다.
이때, 소정의 거리는, 블록의 크기, 연산의 효율, 영상의 화질 등을 고려하여 미리 설정된 거리로서, 예를 들어, 도 26에서 소정의 거리는, 도 25의 루마 블록인 현재 블록(2510)의 절반인 1 픽셀이 될 수 있다.
또는, 다른 일 실시예에 따른 크로마 성분의 현재 블록(2620)의 참조 샘플은, 정수 픽셀 단위의 제 1 좌표(2603) 및 제 2 좌표(2604)에 기초하여 결정될 수 있다. 일 실시예에 따른 크로마 성분의 현재 블록(2620)의 윤곽의 제 1 좌표(2603) 및 제 2 좌표(2604)는 현재 블록(2620)의 정수 단위의 주변 샘플의 위치로 결정되고, 현재 블록(2620)의 참조 샘플은 결정된 제 1 좌표(2603) 및 제 2 좌표(2604)로부터 소정 거리 이상 떨어진 주변 샘플로 결정될 수 있다.
도 27은 일 실시예에 따른 비디오 복호화 장치(20)에서 현재 블록으로부터 분할되는 세그먼트의 개수에 따른 현재 블록의 예측 방법의 흐름도를 나타낸다.
일 실시예에 따른 현재 블록은 현재 블록으로부터 분할되는 세그먼트의 개수에 따라 다른 예측 방법을 이용하여 예측될 수 있다.
구체적으로, 2710 단계에서, 일 실시예에 따른 현재 블록으로부터 분할되는 세그먼트의 개수가 결정될 수 있다. 예를 들어, 현재 블록으로부터 분할되는 세그먼트의 개수는 세그먼트의 개수에 관한 정보(seg_num_minus1)에 기초하여 결정될 수 있다.
2720 단계에서, 현재 블록으로부터 분할되는 세그먼트의 개수가 1개인 경우, 현재 블록은 현재 블록 내에 물체의 경계를 포함하지 않는 것일 수 있다. 이때, 현재 블록은 하나의 세그먼트로 결정될 수 있다.
또한, 현재 블록으로부터 결정된 하나의 세그먼트에 대한 예측 모드가 결정될 수 있다. 예를 들어, 현재 블록으로부터 결정된 하나의 세그먼트에 대한 예측 모드는 현재 블록의 주변 샘플들을 이용하여 현재 블록의 예측값을 생성하는 DC 모드, 플래너(planar) 모드, 수직(vertical) 모드, 수평(horizontal) 모드 또는 이들의 조합을 나타내는 모드가 될 수 있다.
2730 단계에서, 현재 블록으로부터 분할되는 세그먼트의 개수가 2개인 경우, 현재 블록은 물체의 경계에 따른 윤곽에 기초하여 두 개의 세그먼트로 분할되고, 각각의 세그먼트에 대한 예측이 수행될 수 있다.
또한, 2730 단계는, 세그먼트의 개수가 2개인 경우뿐만 아니라 3개 이상인 경우도 포함할 수 있다.
도 28은 일 실시예에 따른 현재 블록의 변환 단위에 따른 현재 블록의 레지듀얼 데이터의 부호화 및 복호화 과정을 설명하기 위한 도면이다.
일 실시예에 따른 현재 블록은 주파수의 변환의 기반이 되는 데이터 단위인 변환 단위로 분할될 수 있다. 이때, 변환 단위는 현재 블록의 윤곽을 포함하는 변환 단위와 현재 블록의 윤곽을 포함하지 않는 변환 단위로 구분하여 처리될 수 있다.
구체적으로, 현재 블록의 윤곽을 포함하지 않는 변환 단위의 경우, 현재 블록에 대하여 생성된 예측 블록과 원본 블록과의 차분에 따른 레지듀얼 데이터를 생성하고, 변환, 양자와 및 엔트로피 디코딩을 수행하여 레지듀얼 레이터를 처리할 수 있다. 또는, 현재 블록의 변환 단위에 대해 예측을 수행하여 변환 단위에 대한 예측 블록과 원본 블록과의 차분에 따른 레지듀얼 데이터를 생성하여 처리할 수 있다.
또한, 현재 블록의 윤곽을 포함하는 변환 단위의 경우, 현재 블록에 대하여 생성된 예측 블록과 원본 블록과의 차분에 따른 레지듀얼 데이터를 생성할 수 있다. 또는, 현재 블록의 변환 단위에서 현재 블록의 각각의 세그먼트의 영역을 고려하여 예측 블록을 생성하여 이용할 수 있다. 예를 들어, 예측 블록의 생성 시에는, 생성된 현재 블록의 마스크가 이용될 수도 있고, 변환 단위에 대한 마스크가 새로이 생성되어 이용될 수도 있다.
또한, 일 실시예에 따른 현재 블록의 변환 단위에 대하여, 변환 단위 간의 경계의 오차를 줄여주기 위한 필터링이 수행될 수 있다. 예를 들어, 도 28을 참조하면, 8x8 크기의 변환 단위가 도시된다.
일 실시예에 따른 변환 단위의 가장자리에 위치한 샘플들은 인접한 주변 샘플들에 기초하여 필터링될 수 있다. 예를 들어, 인접한 주변 샘플들은 사용 가능한 샘플들로서 변환 단위의 상측 샘플 및 좌측 샘플을 포함할 수 있고, 사용 가능한 주변 샘플들에 인접한 변환 단위의 가장자리에 위치한 샘플들이 필터링될 수 있다.
구체적으로, 변환 단위의 필터링되는 샘플은 아래와 같이 필터링될 수 있다.
C = (A + B + 1) >> 1
이때, C는 변환 단위의 샘플의 필터링된 샘플값을 나타내고, B는 변환 단위의 샘플의 필터링 되기 전의 샘플값을 나타내고, A는 변환 단위의 샘플을 필터링하기 위하여 이용되는 주변 샘플의 샘플값을 나타낼 수 있다.
또한, 변환 단위의 필터링 되는 샘플이 상측 샘플과 좌측 샘플에 모두 인접하는 경우(예를 들어, 변환 단위 내의 좌상측 샘플), 변환 단위의 필터링되는 샘플은 아래와 같이 상측 샘플의 샘플값(A0) 및 좌측 샘플의 샘플값(A1)을 모두 이용하여 필터링 될 수 있다.
C = (A0 + A1 + 2 * B + 2) >> 2
또한, 변환 단위의 필터링되는 샘플은 아래와 같이 샘플값들에 서로 다른 가중치를 두어 필터링될 수도 있다.
C = (A + 3 * B + 2) >> 2
C = (A0 + A1 + 6 * B + 4) >> 3
일 실시예에 따른 변환 단위에 대한 필터링은 루마 성분의 변환 블록 및 크로마 성분의 변환 블록에 각각 적용될 수 있으며, 연산의 복잡도를 줄이기 위하여 루마 성분에만 적용될 수도 있다.
도 29 내지 도 31은 다양한 실시예에 따른 현재 블록의 윤곽을 현재 블록의 주변 블록으로부터 획득하는 방법을 나타낸다.
도 29는 일 실시예에 따른 현재 블록(2910)의 윤곽을 현재 블록(2910)의 주변 블록(2920)으로부터 획득하는 방법을 나타낸다. 예를 들어, 일 실시예에 따른 현재 블록(2910)의 주변 블록(2920)은 현재 블록(2910)에 좌측으로 인접하는 블록일 수 있다.
구체적으로, 비디오 디코딩 과정에서 현재 블록(2910)의 주변 블록(2920)의 복원이 완료되면, 주변 블록(2920)의 블록의 분할에 관한 정보를 이용하여 현재 블록(2910)의 블록의 분할에 관한 정보를 획득할 수 있다. 예를 들어, 주변 블록(2920)의 블록의 분할에 관한 정보는 윤곽의 좌표에 관한 정보일 수 있다.
예를 들어, 현재 블록(2910)의 윤곽의 모드 정보 및 윤곽의 좌표는 현재 블록의 주변 블록(2920)의 윤곽의 좌표 정보를 이용하여 결정될 수 있다.
도 29를 참조하면, 주변 블록(2920)의 윤곽은 제 1 좌표(2921)와 제 2 좌표(2922)를 지나는 단일 직선 윤곽으로서, 윤곽의 모드는 제 1 모드일 수 있다. 주변 블록(2920)의 윤곽은 픽처 내의 물체의 경계에 따른 것이므로 현재 블록(2910)의 윤곽과 연결될 가능성이 높으므로, 주변 블록(2920)의 윤곽을 연장선 상에 현재 블록(2910)의 윤곽이 존재할 확률이 높을 수 있다. 따라서, 일 실시예에 따른 주변 블록(2920)의 윤곽을 현재 블록(2910)을 향하여 확장하여 현재 블록(2910)의 윤곽을 유도할 수 있다.
예를 들어, 주변 블록(2920)의 윤곽은 주변 블록(2920)의 윤곽의 제 1 좌표(2921) 및 제 2 좌표(2922)에 기초하여 현재 블록(2910)을 향하여 확장될 수 있다. 또한, 주변 블록(2920)의 윤곽은 주변 블록(2920)의 윤곽의 기울기에 기초하여 현재 블록(2910)의 방향으로 확장될 수 있다.
도 29를 참조하면, 주변 블록(2920)의 윤곽을 확장하여 획득되는 현재 블록(2910)의 윤곽은, 제 1 좌표(2911) 및 제 2 좌표(2912)를 지나고 모드가 제 5 모드인 직선 윤곽으로 결정될 수 있다.
구체적으로, 일 실시예에 따른 현재 블록(2910)의 윤곽을 주변 블록(2920)을 이용하여 결정하는 방법은 다음과 같은 과정에 의하여 수행될 수 있다.
먼저, 현재 블록(2910)의 주변 블록(2920)의 윤곽에 관한 정보가 사용 가능한지 여부가 결정될 수 있다. 예를 들어, 주변 블록(2920)이 현재 블록(2910) 보다 먼저 복호화되고, 주변 블록(2920) 내에 윤곽이 존재하는 경우, 주변 블록(2920)의 윤곽에 관한 정보가 사용 가능한 것으로 결정될 수 있다. 이때, 윤곽에 관한 정보는 윤곽의 모드 정보 및 좌표 정보를 포함할 수 있으며, 주변 블록(2920) 내에 윤곽이 존재하는지 여부는 주변 블록(2920)의 세그먼트의 개수에 관한 정보에 기초하여 결정될 수 있다.
현재 블록(2910)의 주변 블록(2920)의 윤곽에 관한 정보가 사용 가능한 것으로 결정되면, 현재 블록(2910)의 방향으로 확장된 주변 블록(2920)의 윤곽이 현재 블록(2910)을 지나는지 여부가 결정될 수 있다.
확장된 주변 블록(2920)의 윤곽이 현재 블록(2910)을 지난다면, 확장된 주변 블록(2920)의 윤곽에 기초하여 현재 블록(2910)의 윤곽의 모드 및 좌표를 결정할 수 있다. 예를 들어, 현재 블록(2910)의 가장자리에 위치한 샘플들 중 확장된 주변 블록(2920)의 윤곽이 지나는 샘플의 위치가 현재 블록(2910)의 윤곽의 좌표가 될 수 있고, 현재 블록(2910)의 윤곽의 좌표에 따라 현재 블록(2910)의 윤곽의 모드가 결정될 수 있다.
이때, 주변 블록(2920)의 윤곽에 관한 정보에 대한 샘플 정밀도가 현재 블록(2910)의 샘플 정밀도와 상이한 경우, 주변 블록(2920)으로부터 유도된 현재 블록(2910)의 윤곽에 관한 정보를 샘플 정밀도의 차이만큼 변환하고, 변환된 샘플 정밀도에 따른 윤곽의 정보를 이용할 수 있다. 예를 들어, 쿼터 픽셀 정밀도 주변 블록(2920)의 윤곽에 관한 정보를 이용하여 유도된 쿼터 픽셀 정밀도의 현재 블록(2910)의 윤곽에 관한 정보를 정수 픽셀 정밀도의 정보로 변환할 수 있다.
또한, 도 30을 참조하면, 현재 블록(3010)의 윤곽에 관한 정보는 현재 블록(3010)의 좌측 블록(A1) 이외에도 다른 주변 블록들을 이용하여 획득될 수 있다. 예를 들어, 현재 블록(3010)의 좌측 블록(A1), 좌하측 블록(A0), 상측 블록(B1), 우상측 블록(B0) 및 좌상측 블록(B2)이 이용될 수 있으며, 이 외에도 현재 블록(3010)의 근처에 위치하는 블록들 중 현재 블록(3010) 보다 먼저 복호화된 블록이 이용될 수 있다.
또한, 다수의 주변 블록들 중 하나의 주변 블록을 이용하는 경우, 주변 블록들을 후보로 하는 리스트가 생성될 수 있다. 예를 들어, 주변 블록의 후보 리스트는 좌측 블록(A1), 상측 블록(B1), 우상측 블록(B0), 좌하측 블록(A0) 및 좌상측 블록(B2)를 순서대로 포함할 수 있다. 또한, 주변 블록의 후보 리스트는 좌측 블록(A1), 상측 블록(B1), 좌상측 블록(B2), 우상측 블록(B0) 및 좌하측 블록(A0)을 순서대로 포함할 수도 있으나, 이에 제한되지 않고 다양한 순서로 주변 블록들을 포함하는 주변 블록의 후보 리스트가 비디오 부호화 장치(10)와 비디오 복호화 장치(20)에서 동일하게 생성될 수 있다.
이때, 복수 개의 주변 블록들에 대하여 유도되는 현재 블록(3010)의 윤곽이 동일한 경우, 복수 개의 주변 블록 중 하나의 주변 블록만이 후보로 포함되도록 주변 블록의 후보 리스트를 생성할 수 있다. 예를 들어, 동일한 현재 블록(3010)의 윤곽이 유도되는 후보들을 제외하는 프루닝(pruning) 과정이 수행됨으로써, 복수 개의 주변 블록 중 하나의 주변 블록만이 후보로 포함될 수 있다.
또한, 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 주변 블록의 후보 리스트 중 하나의 후보를 가리키는 인덱스 정보가 송수신될 수 있다. 또는, 주변 블록의 후보 리스트가 하나의 후보만을 포함하는 경우, 인덱스 정보는 송수신되지 않을 수도 있다.
또한, 현재 블록(3010)의 윤곽은 주변 블록의 후보 리스트에 포함된 후보들 중 복수 개의 후보 블록을 이용하여 유도될 수도 있다.
또한, 현재 블록(3010)의 윤곽은 주변 블록으로부터 유도된 현재 블록(3010)의 윤곽의 좌표를 조정(refine)함으로써 결정될 수도 있다. 예를 들어, 주변 블록으로부터 유도된 현재 블록(3010)의 윤곽의 좌표는 x축 또는 y축으로 소정의 값에 따라 이동함으로써 조정될 수 있다. 소정의 값은 +1, -1, +2, -2 등의 값이 될 수 있다.
또한, 주변 블록의 윤곽의 좌표 조정하여, 조정된 주변 블록의 윤곽에 관한 정보가 현재 블록(3010)의 윤곽의 획득에 이용되는 주변 블록의 후보 리스트에 포함될 수 있다.
또한, 주변 블록으로부터 유도되는 현재 블록(3010)의 윤곽에 관한 정보를 예측 데이터로 이용할 수도 있다. 예를 들어, 비디오 복호화 장치(20)는 현재 블록(3010) 내의 샘플들을 이용하여 결정되는 현재 블록(3010)의 윤곽에 관한 정보와 주변 블록으로부터 유도되는 현재 블록(3010)의 윤곽에 관한 정보 간의 차분값을 부호화하여 비디오 복호화 장치(20)로 전송할 수 있다. 비디오 복호화 장치(20)는 수신되는 차분값과 현재 블록의 주변 블록으로부너 유도되는 현재 블록(3010)의 윤곽에 관한 정보에 기초하여 현재 블록(3010)의 윤곽의 좌표를 결정함으로써 더욱 정확한 현재 블록(3010)의 복호화가 가능할 수 있다.
또한, 비디오 부호화 장치(10) 및 비디오 복호화 장치(20)에서 주변 블록의 후보 리스트를 생성하는 경우, 후보 리스트는 디폴트 블록을 더 포함할 수 있다. 구체적으로, 후보 리스트에 포함된 주변 블록 후보가 소정의 개수보다 작은 경우 후보 리스트는 디폴트 블록을 더 포함할 수 있다. 예를 들어, 후보 리스트에 대한 소정의 개수는 5개 일 수 있다. 도 31을 참조하면, 디폴트 블록의 예시들이 나타난다. 예를 들어, 리스트에 포함된 주변 블록 후보가 소정의 개수보다 작은 경우, 도 31의 디폴트 블록들이 차례로 후보 리스트에 포함될 수 있다.
또한, 현재 블록(3010)의 주변 블록이 윤곽에 따라 부호화되지 않아 주변 블록의 윤곽에 관한 정보가 없는 경우, 복원된 주변 블록에 기초하여 주변 블록의 윤곽에 관한 정보를 생성할 수 있다. 복원된 주변 블록에 기초하여 생성된 주변 블록의 윤곽에 관한 정보는 버퍼에 저장되었다가 현재 블록(3010)의 부호화 시에 현재 블록(3010)의 윤곽의 결정에 이용될 수 있다. 이때, 비디오 복호화 장치(20)에서도 동일한 방법으로 복원된 주변 블록을 이용하여 현재 블록(3010)을 복호화할 수 있다.
또한, 일 실시예에 따른 물체의 경계에 따른 윤곽에 기초하여 부호화된 현재 블록(3010)이 블록 단위로 복호화되는 경우, 일반적인 블록 단위의 예측 방법(예를 들어, HEVC의 인트라 예측) 중 하나의 모드가 선택될 수 있다.
구체적으로, 현재 블록(3010)의 예측 모드는, 현재 블록(3010)의 MPM(most probable mode) 모드 리스트 중 첫 번째 모드로 결정될 수 있다. 예를 들어, 현재 블록(3010)의 MPM 모드 리스트는 현재 블록(3010)에 인접한 좌측 블록 또는 상측 블록의 모드를 포함할 수 있다. 또한, 현재 블록(3010)의 MPM 모드 리스트는 플래너 모드, DC 모드, 수직(vertical) 모드 등을 더 포함할 수 있다. 또는, 현재 블록(3010)의 예측 모드는 DC 모드로 결정될 수도 있고, 현재 블록(3010)의 예측 모드는 현재 블록(3010)의 윤곽의 기울기와 가장 유사한 각도의 앵귤러(angular) 모드로 결정될 수도 있다.
또한, 일 실시예에 따른 현재 블록(3010)의 윤곽에 관한 정보는, 현재 블록에 포함된 샘플들에 대한 에지 방향을 나타내는 정보를 포함하는 에지 맵(edge map)을 참조하여 획득될 수 있다. 현재 블록(3010)의 에지 맵은 픽처 단위 또는 블록 단위로 생성될 수 있고, 슬라이스 헤더 또는 현재 블록(3010)의 헤더에 포함되어 전송될 수 있다.
도 32 및 도 33은 다양한 실시예에 따른 블록들(3210, 3220)의 서브 블록을 이용하여 예측을 수행하는 방법을 나타낸다.
도 32를 참조하면, 일 실시예에 따른 블록(3210) 및 블록(3220)이 나타난다. 일 실시예에 따른 블록(3210) 및 블록(3220)이 직선 윤곽을 이용하여 분할되는 경우, 블록(3210) 및 블록(3220)은 서브 블록을 이용할 수 있다. 예를 들어, 블록(3210) 및 블록(3220)은 각각 64x64 크기의 블록이고, 블록(3210) 및 블록(3220)의 서브 블록은 각각 8x8 크기의 블록일 수 있다.
구체적으로, 블록(3210)을 참조하면, 블록(3210)에 포함된 물체의 경계는 곡선이기 때문에 블록(3210)을 직선 윤곽에 기초하여 분할하는 경우 부호화 효율이 떨어질 수 있다. 따라서, 일 실시예에 따른 블록(3210)을 서브 블록(3211)을 포함하는 복수 개의 서브 블록들로 분할하고, 복수 개의 서브 블록들을 각각 직선 윤곽을 기초로 분할함으로써 부호화 효율이 향상될 수 있다.
일 실시예에 따른 블록(3210)의 서브 블록들은 물체의 경계에 따른 직선 윤곽에 기초하여 적어도 하나의 세그먼트로 분할되고, 각각의 세그먼트에 대하여 예측이 수행될 수 있다. 이때, 물체의 경계가 포함되지 않은 서브 블록은 일반적인 인트라 예측 방법에 따라 예측될 수도 있다.
또한, 블록(3220)을 참조하면, 복수 개의 물체의 경계를 포함하는 블록(3220)이 나타난다. 구체적으로, 블록(3220)은 두 개의 물체의 경계를 포함하므로 두 개의 물체의 경계에 따른 두 개의 직선 윤곽을 이용하는 방법은 단일 직선 윤곽을 이용하는 방법보다 복잡도가 높을 수 있다. 따라서, 일 실시예에 따른 블록(3220)을 복수 개의 서브 블록들로 분할하고, 복수 개의 서브 블록들을 각각 단일 직선 윤곽을 기초로 분할함으로써 연산의 복잡도를 낮출 수 있다.
일 실시예에 따른 블록(3220)의 서브 블록들은 물체의 경계에 따른 단일 직선 윤곽에 기초하여 적어도 하나의 세그먼트로 분할되고, 각각의 세그먼트에 대하여 예측이 수행될 수 있다. 이때, 물체의 경계가 포함되지 않은 서브 블록은 일반적인 인트라 예측 방법에 따라 예측될 수도 있다.
도 33을 참조하면, 다양한 실시예에 따른 블록들(3310, 3320, 3330, 3340, 3350)에 포함된 서브 블록의 부호화 및 복호화 순서가 나타난다. 예를 들어, 다양한 실시예에 따른 블록(3310)이 서브 블록을 이용하여 분할되는 경우, 블록들(3310)의 서브 블록은 z-scan 순서에 따라 부호화 또는 복호화될 수 있다.
또한, 블록(3320)이 서브 블록으로 분할되는 경우, 블록(3320)의 서브 블록들은 좌측에서 우측 방향으로 순차적으로 부호화 또는 복호화될 수 있다.
또한, 블록(3330)이 서브 블록으로 분할되는 경우, 블록(3330)의 서브 블록들은 상측에서 우측 방향으로 순차적으로 부호화 또는 복호화될 수 있다.
또한, 블록(3340)이 서브 블록으로 분할되는 경우, 블록(3340)은 복수 개의 영역들로 먼저 구분되고, 복수 개의 영역의 우선 순위에 따라 블록(3340)의 서브 블록들이 부호화 또는 복호화될 수 있다. 예를 들어, 블록(3340)이 1 영역, 2 영역, 3 영역 및 4 영역으로 구분되고, 1 영역에 포함된 서브 블록들부터 순차적으로 부호화 또는 복호화될 수 있다. 또한, 블록(3340)의 1 영역 내의 서브 블록득 간에는 z-scan 순서에 따라 서브 블록들의 부호화 또는 복호화의 순서가 결정될 수 있다.
또한, 블록(3350)이 서브 블록으로 분할되는 경우, 블록(3350)은 복수 개의 영역 들로 먼저 구분되고, 복수 개의 영역의 우선 순위에 따라 블록(3350)의 서브 블록들이 부호화 또는 복호화될 수 있다. 예를 들어, 블록(3350)이 1 영역, 2 영역, 3 영역, 제 4 영역 및 5 영역으로 구분되고, 1 영역에 포함된 서브 블록들부터 순차적으로 부호화 또는 복호화될 수 있다. 또한, 블록(3340)의 1 영역 내의 서브 블록득 간에는 z-scan 순서에 따라 서브 블록들의 부호화 또는 복호화의 순서가 결정될 수 있다.
도 34는 일 실시예에 따른 현재 블록(3400)으로부터 세 개의 세그먼트를 결정하는 방법을 나타낸다.
일 실시예에 따른 현재 블록(3400)은 현재 블록(3400)의 제 1 윤곽(3401)에 기초하여 부호화 되고, 현재 블록(3400)에 관한 부호화 정보들은 비디오 복호화 장치(20)로 전송될 수 있다. 예를 들어, 전송되는 부호화 정보들은 현재 블록(3400)의 제 1 윤곽(3401)에 관한 정보를 포함할 수 있다.
도 34를 참조하면, 현재 블록(3400)의 제 1 윤곽(3401)의 모드는 제 4 모드일 수 있다.
일 실시예에 따른 현재 블록(3400)에 관한 부호화 정보들을 수신한 비디오 복호화 장치(20)는, 수신된 부호화 정보들로부터 현재 블록(3400)의 제 1 윤곽(3401)에 관한 정보를 획득할 수 있다. 비디오 복호화 장치(20)는 제 1 윤곽(3401)에 관한 정보에 기초하여 제 1 윤곽(3401)의 모드가 제 4 모드인 경우, 현재 블록(3400)의 상측 및 좌측을 지나는 제 2 윤곽(3402)을 결정할 수 있다. 이때, 현재 블록(3400)의 제 2 윤곽(3402)은 현재 블록(3400)에 인접하는 상측 주변 샘플 및 좌측 주변 샘플들을 이용하여 획득될 수 있다.
일 실시예에 따른 현재 블록(3400)은 비트스트림으로부터 획득된 부호화 정보들에 따른 제 1 윤곽(3401)과 현재 블록의 주변 샘플들로부터 유도되는 제 2 윤곽(3401)을 이용하여 세 개의 세그먼트로 분할되어 복호화될 수 있다. 예를 들어, 현재 블록(3400)은 제 1 윤곽(3401) 및 제 2 윤곽(3402)에 따라 제 1 세그먼트(3410), 제 2 세그먼트(3420) 및 제 3 세그먼트(3430)으로 분할될 수 있다.
이때, 일 실시예에 따른 현재 블록(3400)의 마스크는 제 1 세그먼트(3410), 제 2 세그먼트(3420) 및 제 3 세그먼트(3430)에 기초하여 생성될 수 있다. 예를 들어, 제 1 세그먼트(3410)에 대응되는 영역의 마스크값은 0으로, 제 2 세그먼트(3420)에 대응되는 영역의 마스크값은 255(혹은, 256) 으로, 제 3 세그먼트(3430)에 대응되는 영역의 마스크값은 511(혹은, 512) 로 결정될 수 있다. 또한, 제 1 세그먼트(3410)와 제 2 세그먼트(3420) 사이의 경계 영역의 마스크값은 0 내지 255의 값으로, 제 2 세그먼트(3420)와 제 3 세그먼트(3430) 사이의 경계 영역의 마스크값은 256 내지 511의 값으로 결정될 수 있다.
일 실시예에 따른 현재 블록(3400)은 추가적인 유도된 제 2 윤곽을 이용함으로써, 더욱 정확한 영상을 복원할 수 있다.
도 35는 일 실시예에 따른 현재 블록(3500)의 윤곽에 기초하여 현재 블록(3500)의 서브 블록을 이용하여 세그먼트들을 결정하는 방법을 나타낸다.
일 실시예에 따른 현재 블록(3500)은 현재 블록(3500)에 포함된 물체의 경계에 대응되는 윤곽에 기초하여 복수 개의 서브 블록들로 분할될 수 있다. 이때, 일 실시예에 따른 현재 블록(3500)은 현재 블록(3500)의 경계에 대응되는 윤곽을 결정할 수 있고, 결정된 윤곽을 이용하여 복수 개의 서브 블록으로 분할될 수 있다.
예를 들어, 현재 블록(3500)은 제 1 서브 블록(3510)과 같은 크기의 네 개의 제 1 서브 블록들로 분할될 수 있다. 제 1 서브 블록(3510)의 가로 및 세로의 길이는 각각 현재 블록(3500)의 가로 및 세로의 길이의 절반일 수 있다.
또한, 현재 블록(3500)은 현재 블록(3500)의 윤곽을 포함하는지 여부에 따라 계층적으로 연속해서 더 작은 서브 블록들로 분할될 수 있다. 예를 들어, 네 개의 제 1 서브 블록들 중 현재 블록(3500)의 윤곽을 포함하는 제 1 서브 블록은 가로 및 세로의 길이가 각각 제 1 서브 블록의 가로 및 세로의 길이의 절반인 네 개의 제 2 서브 블록들로 다시 분할될 수 있다. 네 개의 제 1 서브 블록들 중 현재 블록(3500)의 윤곽을 포함하지 않는 제 1 서브 블록(3510)은 더 이상 분할되지 않을 수 있다.
일 실시예에 따른 현재 블록(3500)은 분할된 제 1 서브 블록 및 제 2 서브 블록을 이용하여 세그먼트를 결정할 수 있다. 예를 들어, 제 2 서브 블록들 중 현재 블록(3500)의 윤곽을 포함하는 제 2 서브 블록(3520)에 대하여, 현재 블록(3500)의 윤곽에 기초하는 제 2 서브 블록(3520)의 윤곽이 결정될 수 있다. 또한, 결정된 제 2 서브 블록(3520)의 윤곽에 따라 제 2 서브 블록(3520)이 적어도 하나의 세그먼트로 분할될 수 있다. 예를 들어, 제 2 서브 블록(3520)은 직선 윤곽에 따라 두 개의 세그먼트로 분할될 수 있다.
일 실시예에 따른 현재 블록(3500)에 대하여, 현재 블록(3500)의 윤곽을 포함하지 않는 제 1 블록(3510) 및 제 2 블록(3520)과 현재 블록(3500)의 윤곽을 포함하는 제 2 블록(3520)으로부터 분할된 세그먼트들을 이용하여 예측이 수행될 수 있다.
예를 들어, 제 1 블록(3510) 및 제 2 블록(3520)에 대하여 DC 모드, 플래너(planar) 모드, 앵귤러(angular) 모드 등의 인트라 모드를 이용하여 인트라 예측이 수행될 수 있다. 제 2 블록(3520)과 같은 현재 블록(3500)의 윤곽을 포함하는 제 2 블록들에 대하여는 도 1 내지 도 4에서 설명된 블록 내의 물체의 경계에 따라 분할되는 세그먼트를 이용한 인트라 예측이 수행될 수 있다.
이때, 현재 블록(3500)이 분할되는 분할 심도는 부호화 효율에 기초하여 결정되고, 결정된 분할 심도는 비디오 부호화 장치(10)에서 비디오 복호화 장치(20)로 전송될 수 있다.
도 36은 일 실시예에 따른 현재 블록(3600)의 윤곽을 결정하는 방법을 나타낸다.
일 실시예에 따른 현재 블록(3600)에 포함된 물체의 경계가 단일 직선에 대응되지 않는 경우, 현재 블록(3600)의 윤곽은 구분적 선형(piece-wise linear) 윤곽을 이용하여 결정될 수 있다.
구체적으로, 일 실시예에 따른 현재 블록(3600)에서 물체의 경계에 대응되는 윤곽의 시작점을 나타내는 제 1 좌표(a)와 윤곽의 끝점을 나타내는 제 2 좌표(b)가 결정될 수 있다. 이때, 현재 블록(3600)의 윤곽을 제 1 좌표(a)와 제 2 좌표(b)를 연결하는 단일 직선으로 결정하지 않고, 제 3 좌표(d)를 이용하여 두 개의 직선으로 결정할 수 있다.
예를 들어, 제 3 좌표(d)는 제 1 좌표(a)와 제 2 좌표(b)를 연결하는 직선의 중심으로부터 소정의 변위량만큼 수직 이동된 좌표일 수 있다. 이때, 현재 블록(3600)의 윤곽을 결정하기 위하여 이용되는 정보는, 제 1 좌표(a), 제 2 좌표(b) 및 제 1 좌표(a)와 제 2 좌표(b)를 연결하는 직선의 중심으로부터 제 3 좌표(d)까지의 수직 거리를 나타내는 소정의 변위량일 수 있다.
일 실시예에 따른 현재 블록(3600)의 제 3 좌표(d)는 부호화 및 복호화 시의 연산의 복잡도를 낮추기 위하여 정수 픽셀 단위의 정밀도로 결정될 수 있다. 예를 들어, 실제 위치에서 가장 가까운 정수 샘플의 위치로 결정되는 방법 등이 이용될 수 있다. 또한, 제 3 좌표(d)를 나타내기 위한 소정의 변위량 또한 정수 단위로 결정될 수 있다. 소정의 변위량은 미리 설정된 복수 개의 변위량들 중 인덱싱될 수도 있다. 즉, 미리 설정된 복수 개의 변위량들 중 하나를 가리키는 인덱스 정보를 이용하여 소정의 변위량이 결정될 수 있으며, 인덱스 정보는 비디오 부호화 장치(10) 및 비디오 복호화 장치(20) 간에 송수신될 수 있다.
도 37은 일 실시예에 따른 현재 블록의 예측값을 획득하는 방법을 수도 코드(pseudo code)로 나타낸 일 예시이다.
일 실시예에 따른 현재 블록의 예측값은, 현재 블록으로부터 분할된 세그먼트의 샘플값이 먼저 생성되고, 생성된 세그먼트의 샘플값에 세그먼트의 영역 및 경계를 나타내는 마스크를 적용함으로써 생성될 수 있다.
이후, 일 실시예에 따른 현재 블록의 예측값에 필터링을 수행함으로써 예측 수행 시에 발생하는 오차를 줄일 수 있다. 구체적으로, 필터링은 현재 블록의 윤곽이 위치하는 경계 영역에 대해 수행될 수 있다.
예를 들어, 도 37의 수도 코드를 참조하면, 현재 블록의 샘플 중 현재 블록의 세그먼트들의 경계에 위치하는 샘플의 예측값에 대하여 필터링을 수행할 수 있다. 이때, 현재 블록의 샘플이 세그먼트들의 경계에 위치하는지 여부는 현재 블록의 마스크에 기초하여 판단될 수 있다. 도 37에서, Mask[x][y]는 현재 블록의 (x, y) 위치의 샘플의 마스크값을 나타내고, P[x][y]는 현재 블록의 (x, y) 위치의 샘플의 예측값을 나타내고, Pftr[x][y]은 현재 블록의 (x, y) 위치의 샘플의 필터링된 예측값을 나타낸다. W와 H는 각각 현재 블록의 너비 및 높이를 나타낸다.
일 실시예에 따른 현재 블록의 샘플이 세그먼트들의 경계에 위치하는 여부는 현재 샘플의 주변 샘플들의 마스크값을 비교함으로써 결정될 수 있다. 예를 들어, 좌측 샘플의 마스크값과 우측 샘플의 마스크값이 다른 경우 현재 블록의 현재 샘플은 세그먼트들의 경계에 위치하는 것으로 결정될 수 있다. 좌측 샘플의 마스크값과 우측 샘플의 마스크값이 동일한 경우 현재 블록의 현재 샘플은 세그먼트들의 경계에 위치하지 않는 것으로 결정될 수 있다. 또는, 상측 샘플의 마스크값과 하측 샘플의 마스크값이 다른 경우 현재 블록의 현재 샘플은 세그먼트들의 경계에 위치하는 것으로 결정될 수 있다. 상측 샘플의 마스크값과 하측 샘플의 마스크값이 동일한 경우 현재 블록의 현재 샘플은 세그먼트들의 경계에 위치하지 않는 것으로 결정될 수 있다.
다만, 현재 블록의 현재 샘플이 현재 블록의 변의 안쪽에 인접하여 위치하는 경우, 현재 블록의 내부의 샘플들만 이용하기 위하여 현재 샘플의 샘플값과 주변 샘플의 샘플값이 비교될 수 있다.
일 실시예에 따른 현재 블록의 샘플 중 세그먼트들의 경계에 위치하는 것으로 판단된 샘플의 샘플값은, 주변 샘플들의 샘플값에 기초하여 필터링될 수 있다. 예를 들어, 좌측 샘플의 마스크값과 우측 샘플의 마스크값이 다른 경우, 현재 샘플의 샘플값은 현재 샘플의 샘플값, 좌측 샘플의 샘플값 및 우측 샘플의 샘플값의 평균으로 필터링될 수 있다. 이때, 이용되는 각각의 샘플값들에는 가중치가 적용될 수 있다. 예를 들어, [1, 2, 1]과 같은 필터값을 갖는 수평 방향의 1차원 가우시안 필터가 이용될 수 있다.
또한, 상측 샘플의 마스크값과 하측 샘플의 마스크값이 다른 경우, 현재 샘플의 샘플값은 현재 샘플의 샘플값, 상측 샘플의 샘플값 및 하측 샘플의 샘플값의 평균으로 필터링될 수도 있다. 예를 들어, [1, 2, 1]과 같은 필터값을 갖는 수직 방향의 1차원 가우시안 필터가 이용될 수 있다.
일 실시예에 따른 현재 블록에 대하여, 수평 방향의 필터링과 수직 방향의 필터링이 순서에 상관없이 모두 수행될 수 있다.
또는, 다른 일 실시예에 따르면 현재 블록에 대하여 수평 방향의 필터링 및 수직 방향의 필터링 중 하나의 필터링만이 수행될 수도 있다. 예를 들어, 현재 블록의 윤곽의 기울기에 기초하여 수평 방향의 필터링 및 수직 방향의 필터링 중 하나가 결정될 수 있다. 현재 블록의 윤곽의 기울기가 수평(x축)으로의 변화량이 수직(y축)으로의 변화량보다 더 큰 경우 수직 방향의 필터링이 수행되고, 수평(x축)으로의 변화량이 수직(y축)으로의 변화량보다 더 작은 경우 수평 방향의 필터링이 수행될 수 있다.
또는, 또 다른 일 실시예에 따르면 현재 블록의 윤곽의 모드에 따라 수평 방향의 필터링 및 수직 방향의 필터링 중 적어도 하나의 필터링이 수행될 수 있다. 예를 들어, 현재 블록의 윤곽의 모드가 수직의 윤곽을 나타내는 제 2 모드인 경우, 수평 방향의 필터링만 수행될 수 있고, 현재 블록의 윤곽의 모드가 수평의 윤곽을 나타내는 제 5 모드인 경우, 수직 방향의 필터링만 수행될 수 있다. 또한, 현재 블록의 윤곽의 모드가 제 2 모드 및 제 5 모드를 제외한 나머지 모드인 경우, 수평 방향의 필터링과 수직 방향의 필터링이 모두 수행될 수 있다.
이때, 루마 블록과 크로마 록에 대하여 각각 다른 방법으로 필터링을 수행할 수도 있다. 예를 들어, 현재 블록의 루마 성분에 대하여 현재 블록의 윤곽의 모드에 따른 필터링을 수행하고, 현재 블록의 크로마 성분에 대하여는 현재 블록의 윤곽의 기울기에 따른 필터링을 수행할 수도 있다.
또한, 이들의 조합에 의하여 필터링 방법을 결정하는 것 또한 가능하며, 1차원 필터에 제한되지 않고 2차원 필터, 중앙값 필터(median filter), 평균값 필터(average filter) 등이 이용될 수 있다.
이하 도 38 내지 도 44에서는 다양한 실시예에 따른 현재 블록에 대하여 현재 블록의 윤곽을 이용하여 예측을 수행하는 방법을 후술한다. 이때, 도 38 내지 도 44에서는 현재 블록에 대한 마스크를 생성하지 않고 현재 블록의 윤곽을 직접 이용하여 현재 블록에 대한 예측을 수행하는 방법이 개시된다.
도 38은 일 실시예에 따른 현재 블록(3800)에 대하여 예측을 수행하는 방법을 나타낸다.
일 실시예에 따른 현재 블록(3800)에 대하여 현재 블록(3800)에 포함된 물체의 경계에 대응되는 윤곽(3820)이 결정될 수 있다. 예를 들어, 현재 블록(3800)의 윤곽(3820)은 윤곽(3820)의 좌표들에 관한 정보 및 윤곽(3820)의 모드 정보에 의하여 특정될 수 있다.
일 실시예에 따른 현재 블록(3800)은 현재 블록(3800)의 윤곽(3820)에 기초하여 적어도 하나의 세그먼트로 분할될 수 있고, 현재 블록(3800)이 복수 개의 세그먼트로 분할되는 경우 윤곽(3820)에 따라 세그먼드들의 경계(boundary)를 포함하는 경계 영역이 나타날 수 있다.
이때, 일 실시예에 따른 현재 블록(3800)에 대하여, 경계의 방향에 따라 예측을 수행할지 여부가 결정될 수 있다. 즉, 현재 블록(3800)의 경계 영역에 포함되는 샘플들에 대한 예측값을 경계의 방향에 따라 결정할지 여부가 결정될 수 있다. 예를 들어, 일 실시예에 따른 비디오 부호화 장치(10)는 경계의 방향에 따른 예측 방법과 마스크를 이용한 예측 방법 중 최선의 RD cost를 갖는 예측 방법을 선택할 수 있고, 일 실시예에 따른 비디오 복호화 장치(20)는 비디오 부호화 장치(10)로부터 현재 블록(3800)에 대하여 경계의 방향에 따른 예측을 수행할지 여부를 나타내는 정보를 수신하여 결정할 수 있다.
경계의 방향에 따른 예측이 수행되는 것으로 결정되면, 일 실시예에 따른 현재 블록(3800)의 경계 영역에 대하여, 경계의 방향에 따른 현재 블록(3800)의 주변 샘플을 이용하여 예측이 수행될 수 있다.
일 실시예에 따른 현재 블록(3800)의 경계 영역은, 현재 블록(3800)의 윤곽(3820)에 대응되는 세그먼트들 간의 경계를 포함하는 소정의 영역으로서, 현재 블록의 윤곽을 중심으로 소정의 폭으로 특정되는 영역일 수 있다. 예를 들어, 도 38을 참조하면, 현재 블록(3800)의 경계 영역은 현재 블록(3800)의 윤곽(3820)을 중심으로 좌측 직선(3830)까지의 영역 및 우측 직선(3840)까지의 영역을 포함하는 영역일 수 있다.
일 실시예에 따른 경계 영역의 소정의 폭은, 현재 블록(3800)을 구성하는 세그먼트들의 경계에 위치하는 샘플들을 중심으로하는 수평 방향으로의 소정의 샘플의 수 또는 수직 방향으로의 샘플의 수를 나타낼 수 있으며, 예를 들어, 도 38에서, 소정의 폭은 좌측 및 우측으로의 2 픽셀이 될 수 있다. 또한, 소정의 폭은 수평 방향으로의 거리 또는 수직 방향으로의 거리뿐만 아니라, 현재 블록(3800)을 구성하는 세그먼트들의 경계를 중심으로 경계에 직교하는 방향으로의 거리를 나타낼 수도 있다.
일 실시예에 따른 경계 영역의 소정의 폭은, 현재 블록(3800)의 경계에 위치하는 샘플들을 중심으로 마주보는 방향에 대하여 동일하게 결정될 수도 있고, 동일하지 않게 비대칭적으로 결정될 수도 있다.
일 실시예에 따른 비디오 부호화 장치(10)는 경계 영역의 소정의 폭을 최선의 RD cost를 갖는 수로 결정할 수 있고, 일 실시예에 따른 비디오 복호화 장치(20)는 비디오 부호화 장치(10)로부터 경계 영역의 소정의 폭을 나타내는 정보를 수신할 수 있다.
또는, 일 실시예에 따른 경계 영역의 소정은 폭은 현재 블록(3800)의 주변 블록으로부터 유도될 수도 있다. 예를 들어, 경계 영역의 소정의 폭은 현재 블록(3800)의 상측 주변 블록 또는 좌측 주변 블록들 간에 샘플값의 변화량에 기초하여 결정될 수 있다.
일 실시예에 따른 현재 블록(3800)의 경계 영역에 포함되는 샘플들의 예측값은, 현재 블록(3800)의 경계의 방향에 따른 현재 블록(3800)의 주변 샘플을 참조하여 획득될 수 있다.
구체적으로, 일 실시예에 따른 현재 블록(3800)의 주변 샘플은 현재 블록(3800)의 상측 주변 샘플, 우상측 주변 샘플, 좌측 주변 샘플 및 좌하측 주변 샘플을 포함할 수 있다. 일 실시예에 따른 현재 블록(3800)의 주변 샘플들 중 경계 영역의 예측에 참조될 참조 샘플은 현재 블록(3800)의 윤곽(3820)을 이용하여 결정될 수 있다. 예를 들어, 현재 블록(3800)의 윤곽(3820)이 현재 블록(3800)의 상측 외부에 인접하는 주변 샘플들 중 샘플(3810)을 지나는 경우, 샘플(3810) 및 샘플(3810)을 중심으로 수평 방향으로의 소정의 폭 내에 위치하는 샘플들이 참조 샘플이 될 수 있다. 도 38에서, 일 실시예에 따른 현재 블록(3800)의 경계 영역의 폭이 수평 방향으로의 2 픽셀인 경우, 참조 샘플은 샘플(3810)을 중심으로 하는 다섯 개의 샘플이 될 수 있다.
참조 샘플이 결정되면, 일 실시예에 따른 현재 블록(3800)의 경계 영역에 포함된 샘플들의 예측값이 결정된 참조 샘플에 기초하여 생성될 수 있다.
또한, 경계 영역에 대한 예측이 수행되면, 일 실시예에 따른 현재 블록(3800)의 경계 영역을 제외한 나머지 영역, 즉, 세그먼트에 해당하는 영역에 대하여 예측이 수행될 수 있다. 예를 들어, 세그먼트 영역에 대하여 DC 모드에 따른 인트라 예측이 수행될 수 있다.
도 39는 일 실시예에 따른 현재 블록(3900)에 대하여 참조 샘플을 이용하여 예측을 수행하는 상세한 과정을 나타낸다.
도 39에서, 현재 블록(3900)의 윤곽(3910)에 따른 경계 영역을 포함하는 현재 블록(3900)의 일부와 현재 블록(3900)의 상측으로 외부에 인접하는 상측 주변 블록이 나타난다. 도 39에서, 현재 블록(3900)의 윤곽(3910)의 모드는 제 1 모드 또는 제 2 모드일 수 있으며, 현재 블록(3900)의 경계 영역의 폭은 2 픽셀일 수 있다. 도 39를 참조하여, 일 실시예에 따른 현재 블록(3900)의 경계 영역에 포함된 샘플들 중 샘플(3920)의 예측값을 생성하는 방법을 상술하도록 한다.
일 실시예에 따른 현재 블록(3900)의 경계 영역에 대한 예측을 위하여 상측 주변 샘플들 중 샘플(3930), 샘플(3940) 및 샘플(3950)이 참조 샘플에 포함될 수 있다. 이때, 일 실시예에 따른 현재 블록(3900)의 경계 영역에 포함된 샘플(3920)의 예측값을 생성하기 위하여, 샘플(3920)의 참조 위치(3960)가 결정될 수 있다. 예를 들어, 샘플(3920)의 참조 위치(3960)는 현재 블록(3900)을 구성하는 세그먼트들 간의 경계의 방향, 즉, 윤곽(3910)의 방향에 기초하여 결정될 수 있다.
일 실시예에 따른 현재 블록(3900)의 경계 영역에 포함된 샘플의 참조 위치가 현재 블록(3900)의 상측 샘플들 중 하나의 참조 샘플의 중심에 위치하는 경우, 현재 블록(3900)의 경계 영역에 포함된 샘플의 예측값은 참조 위치의 샘플의 샘플값을 이용하여 생성될 수 있다. 예를 들어, 현재 블록(3900)의 경계 영역에 포함된 샘플의 예측값은 참조 위치의 샘플의 샘플값이 될 수도 있고, 참조 위치의 샘플의 샘플값을 조정(refine)한 값이 될 수도 있다.
다만, 도 39에서와 같이 현재 블록(3900)의 경계 영역에 포함된 샘플(3920)의 참조 위치(3960)가 하나의 참조 샘플의 위치를 가리키지 않는 경우, 샘플(3920)의 예측값은 복수 개의 참조 샘플을 이용하여 생성될 수 있다. 예를 들어, 샘플(3920)의 참조 위치(3960)가 참조 샘플(3940) 및 참조 샘플(3950)의 경계에 위치하는 경우, 샘플(3920)의 예측값은 참조 샘플(3940)의 샘플값 및 참조 샘플(3950)의 샘플값에 기초하여 생성될 수 있다.
구체적으로, 샘플(3920)의 참조 위치(3960)에 대하여 참조 위치에 인접한 참조 샘플들을 이용하여 선형 보간(bi-linear interpolation)을 수행함으로써, 샘플(3920)의 참조 위치(3960)의 샘플값을 생성할 수 있다. 예를 들어, 샘플(3920)의 참조 위치(3960)의 샘플값은 참조 샘플(3940) 및 참조 샘플(3950)의 샘플값들의 평균값이 될 수 있다. 이때, 현재 블록(3900)의 경계 영역에 포함된 샘플(3920)의 예측값은, 생성된 참조 위치(3960)의 샘플의 샘플값이 될 수도 있고, 생성된 참조 위치(3960)의 샘플의 샘플값을 조정한 값이 될 수도 있다.
또한, 일 실시예에 따른 현재 블록(3900)의 경계 영역에 포함된 샘플의 참조 위치에 대하여 보간을 수행하는 방법이 이에 제한되지 않고 다른 보간 방법으로 대체될 수 있다.
또한, 일 실시예에 따른 현재 블록(3900)의 경계 영역에 포함된 샘플(3920)의 참조 위치(3960)는 1/n 픽셀 단위(n은 정수)의 정밀도로 결정될 수 있고, 결정된 샘플(3920)의 참조 위치(3960)에 따라 1/n 픽셀 단위의 정밀도로 참조 위치(3960)의 샘플값이 생성될 수 있다. 예를 들어, 참조 위치(3960)에 인접한 참조 샘플들의 샘플값에 참조 위치(3960)와의 거리에 따른 가중치를 1/n 픽셀 단위의 정밀도로 할당함으로써 참조 위치(3960)의 샘플값이 생성될 수 있다.
도 40a 내지 도 40c는 다양한 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
도 40a를 참조하면, 일 실시예에 따른 현재 블록(4010)의 경계 영역에 대하여 예측을 수행하는 과정이 나타난다. 일 실시예에 따른 현재 블록(4010)은 단일 직선 윤곽에 따른 경계를 포함하는 경계 영역을 포함할 수 있다.
일 실시예에 따른 현재 블록(4010)의 경계 영역에 포함된 샘플의 예측값은 경계의 방향에 따라 현재 블록(4010)의 참조 샘플을 이용하여 생성될 수 있다. 일 실시예에 따른 현재 블록(4010)의 참조 샘플은 현재 블록(4010)의 외부에 인접하는 샘플일 수 있다. 예를 들어, 현재 블록(4010)의 참조 샘플은 현재 블록(4010)의 좌측 샘플 및 좌상측 샘플(4011)을 포함할 수 있다.
다만, 도 40a에서, 현재 블록(4010)의 경계 영역에 포함된 샘플의 참조 위치가 좌상측 샘플(4011)을 벗어나 좌상측 샘플(4011)보다 상측을 가리킬 수 있다. 이때, 현재 블록(4010)의 참조 샘플은 더욱 확장되어(extend) 현재 블록(4010)의 좌상측 샘플(4011)의 상측 샘플(4012)를 더 포함할 수 있다. 좌상측 샘플(4011)의 상측 샘플(4012)의 샘플 값은, 현재 블록(4010) 보다 먼저 부호화 및 복호화된 주변 블록으로부터 획득될 수도 있고, 좌상측 샘플(4011)의 샘플값을 패딩(padding)함으로써 생성될 수도 있다.
일 실시예에 따른 현재 블록(4010)의 경계 영역에 포함된 샘플의 예측 값은, 현재 블록(4010)의 좌측 샘플, 좌상측 샘플(4011) 및 좌상측 샘플(4011)의 상측 샘플(4012)의 샘플값들을 이용하여 생성될 수 있다.
또한, 도 40b를 참조하면, 일 실시예에 따른 현재 블록(4020)의 경계 영역에 대하여 예측을 수행하는 과정에서, 경계 영역에 포함된 샘플의 참조 위치가 좌상측 샘플(4021)을 벗어나 좌상측 샘플(4021)보다 상측을 가리키는 경우, 현재 블록(4020)의 참조 샘플은 확장되어 현재 블록(4020)의 상측 샘플(4022)를 더 포함할 수 있다.
따라서, 일 실시예에 따른 현재 블록(4020)의 경계 영역에 포함된 샘플의 예측 값은, 현재 블록(4020)의 좌측 샘플, 좌상측 샘플(4021) 및 상측 샘플(4022)의 샘플값들을 이용하여 생성될 수 있다.
또한, 도 40c를 참조하면, 일 실시예에 따른 현재 블록(4030)의 경계 영역에 대하여 예측을 수행하는 과정이 나타난다. 일 실시예에 따른 현재 블록(4030)은 단일 직선 윤곽에 따른 경계를 포함하는 경계 영역을 포함할 수 있다.
따라서, 일 실시예에 따른 현재 블록(4030)의 경계 영역에 포함된 샘플의 예측값은 경계의 방향에 따라 현재 블록(4030)의 참조 샘플을 이용하여 생성될 수 있다. 예를 들어, 현재 블록(4030)의 참조 샘플은 현재 블록(4030)의 상측 샘플 및 좌상측 샘플(4031)을 포함할 수 있다.
이때, 도 40c에서, 현재 블록(4030)의 경계 영역에 포함된 샘플의 참조 위치가 샘플(4031)을 벗어나 좌상측 샘플(4031) 보다 좌측을 가리킬 수 있다.
일 실시예에 따른 현재 블록(4030)의 참조 샘플은 더욱 확장되어(extend) 현재 블록(4030)의 좌상측 샘플(4031)의 좌측 샘플(4032)를 더 포함할 수 있다. 좌상측 샘플(4031)의 좌측 샘플(4032)의 샘플 값은, 현재 블록(4030) 보다 먼저 복호화된 주변 블록으로부터 획득될 수도 있고, 좌상측 샘플(4031)의 샘플값을 패딩(padding)함으로써 생성될 수도 있다.
따라서, 일 실시예에 따른 현재 블록(4030)의 경계 영역에 포함된 샘플의 예측 값은, 현재 블록(4030)의 상측 샘플, 좌상측 샘플(4031) 및 좌상측 샘플(4031)의 좌측 샘플(4032)의 샘플값들을 이용하여 생성될 수 있다.
또한, 도 40a 내지 도 40c에서 설명된 실시예 외에도, 현재 블록의 경계 영역에 포함된 샘플의 참조 위치가 현재 블록의 상측 주변 샘플, 우상측 주변 샘플, 좌측 주변 샘플 및 좌하측 주변 샘플을 벗어나는 경우, 상측 주변 샘플, 우상측 주변 샘플, 좌측 주변 샘플 및 좌하측 주변 샘플 중 가까운 위치의 샘플을 확장하거나, 현재 블록의 경계의 기울기에 따라 보간을 수행하는 등, 다양한 방식으로 참조 위치의 샘플값을 생성할 수 있다.
도 41은 다양한 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
현재 블록의 경계의 방향에 따른 주변 샘플이 현재 블록의 상측과 현재 블록의 좌측에 모두 존재할 수 있다. 이때, 일 실시예에 따른 현재 블록의 경계 영역에 포함된 샘플의 예측 값은 현재 블록의 상측 외부에 인접하는 상측 샘플 및 현재 블록의 좌측 외부에 인접하는 좌측 샘플 중 적어도 하나를 참조하여 생성될 수 있다. 즉, 현재 블록의 경계 영역에 포함된 샘플의 참조 샘플은 현재 블록의 상측 샘플 및 현재 블록의 좌측 샘플 중 적어도 하나를 포함할 수 있다.
예를 들어, 도 41을 참조하면, 현재 블록(4110)의 경계 영역에 포함된 샘플의 예측 값은 현재 블록의 상측 샘플의 샘플값을 이용하여 생성될 수 있다. 또한, 현재 블록(4120)의 경계 영역에 포함된 샘플의 예측 값은 현재 블록의 좌측 샘플의 샘플값을 이용하여 생성될 수 있다.
일 실시예에 따른 현재 블록의 경계의 방향에 따른 참조 샘플이 현재 블록의 상측에도 존재하고 현재 블록의 좌측에도 존재하는 경우, 상측 샘플과 좌측 샘플 중 사용 가능한 샘플을 참조 샘플로 이용할 수 있다.
또는, 현재 블록의 상측 샘플과 좌측 샘플이 모두 사용 가능한 경우, 상측 샘플과 좌측 샘플이 모두 이용될 수도 있고, 둘 중 하나의 샘플만 이용될 수도 있다.
예를 들어, 현재 블록의 상측 샘플과 좌측 샘플이 모두 사용 가능한 경우, 현재 블록의 경계 영역에 포함된 샘플의 예측 값은, 상측 샘플에 따른 예측 값과 좌측 샘플에 따른 예측 값의 평균 값이 될 수 있다. 또는, 현재 블록의 경계 영역에 포함된 샘플로부터 상측 샘플까지의 거리와 현재 블록의 경계 영역에 포함된 샘플로부터 좌측 샘플까지의 거리를 고려하여, 상측 샘플에 따른 예측 값과 좌측 샘플에 따른 예측 값에 가중치를 줄 수도 있다.
또한, 현재 블록의 상측 샘플과 좌측 샘플이 모두 사용 가능한 경우, 현재 블록의 경계 영역에 포함된 샘플의 예측 값은, 상측 샘플과 좌측 샘플 중 하나의 샘플만 이용하여 생성될 수 있다. 예를 들어, 일 실시예에 따른 현재 블록의 윤곽의 기울기에 기초하여 상측 샘플과 좌측 샘플 중 참조할 하나의 샘플을 결정할 수 있다. 현재 블록의 윤곽의 기울기가 수평 방향에 가까운 경우 좌측 샘플이 참조 샘플로 결정되고, 현재 블록의 윤곽의 기울기가 수직 방향에 가까운 경우 상측 샘플이 참조 샘플로 결정될 수 있다.
또는, 일 실시예에 따른 현재 블록의 경계 영역의 폭에 기초하여 상측 샘플과 좌측 샘플 중 하나의 샘플이 참조 샘플로 결정될 수도 있다. 또는, 일 실시예에 따른 현재 블록의 상측 샘플들과 좌측 샘플들 중 현재 블록의 경계 영역에 대응되는 샘플들의 수가 더 적은 쪽의 샘플들을 참조 샘플로 결정할 수 있다. 또는, 일 실시예에 따른 현재 블록의 경계 영역의 예측의 부복호화 효율 및 부복호화 성능에 기초하여, 현재 블록의 상측 샘플들과 좌측 샘플들 중 참조 샘플을 결정할 수도 있다. 또는, 일 실시예에 따른 현재 블록의 상측 샘플들과 좌측 샘플들 중 샘플 값의 분산이 더 큰 쪽의 샘플들을 참조 샘플로 결정할 수 도 있다.
도 42는 일 실시예에 따른 현재 블록(4200)의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
일 실시예에 따른 현재 블록(4200)은 동일한 네 개의 서브 블록으로 분할되고, 각각의 서브 블록 단위로 예측이 수행될 수 있다. 예를 들어, 현재 블록(4200)은 8x8 크기의 부호화 단위이고, 각각의 서브 블록은 4x4 크기의 변환 단위일 수 있다. 또는, 현재 블록(4200)은 최대 크기의 부호화 단위이고, 각각의 서브 블록은 최대 크기의 부호화 단위로부터 분할된 부호화 단위일 수 있다.
일 실시예에 따른 현재 블록(4200)의 서브 블록 단위에 대하여 예측을 수행하는 경우, 서브 블록의 예측 값을 생성하기 위한 참조 샘플은 현재 블록(4200)에 인접한 주변 샘플들로 결정될 수 있다.
예를 들어, 도 42를 참조하면, 일 실시예에 따른 현재 블록(4200)에 포함된 서브 블록들 중 현재 블록(4200)의 좌측 하단에 위치하는 서브 블록에 대한 예측을 수행하는 경우, 좌측 하단에 위치하는 서브 블록에 인접하는 주변 샘플이 아니라, 현재 블록(4200)의 상측에 인접하는 주변 샘플을 참조하여, 좌측 하단에 위치하는 서브 블록의 예측 값을 생성할 수 있다.
구체적으로, 현재 블록(4200)의 좌측 하단에 위치하는 서브 블록에 포함된 샘플에 대한 참조 위치는, 현재 블록(4200)의 경계의 방향에 따라 현재 블록(4200)에 인접하는 주변 샘플의 위치로 결정될 수 있다.
도 43 및 도 44는 다양한 실시예에 따른 현재 블록의 경계 영역에 대하여 예측을 수행하는 방법을 나타낸다.
일 실시예에 따른 현재 블록의 경계 영역에 대하여 경계의 방향에 따라 예측을 수행하는 경우, 현재 블록의 경계 영역의 폭이 먼저 결정될 수 있다. 현재 블록의 경계 영역의 폭은 현재 블록을 구성하는 세그먼트들의 경계에 위치하는 샘플들을 중심으로하는 수평 방향으로의 샘플의 수 또는 수직 방향으로의 샘플의 수를 나타낼 수 있다.
예를 들어, 일 실시예에 따른 현재 블록에서, 현재 블록의 경계 영역의 폭은, 현재 블록의 경계에 위치하는 샘플들을 중심으로, 좌측으로의 샘플의 수 N 및 우측으로의 샘플의 수 M로 특정되거나, 또는 상측으로의 샘플의 수 P 및 하측으로의 샘플의 수 Q로 특정될 수 있다.
도 40a를 참조하면, 현재 블록(4010)의 경계 영역은 P=Q=4의 폭을 가질 수 있다. 또한, 도 40b를 참조하면, 현재 블록(4020)의 경계 영역은 P=Q=2의 폭을 가질 수 있다. 또한, 도 40c를 참조하면, 현재 블록(4030)의 경계 영역은 N=M=2의 폭을 가질 수 있다.
다양한 실시예에 따른 경계 영역의 폭은 N과 M 또는 P와 Q가 동일하게 결정될 수도 있고 동일하지 않게 결정될 수도 있다 또한, N과 M 또는 P와 Q가 고정되어 있을 수도 있고, 블록 마다 다르게 적응적으로 조정될 수도 있다.
예를 들어, 현재 블록의 경계 영역의 폭이 경계에 직교하는 방향으로 고정되는 경우, 현재 블록의 경계 영역의 수직 방향으로의 폭 또는 수평 방향으로의 폭은 현재 블록의 경계의 기울기에 따라 다르게 결정될 수 있다. 또한, 이때 경계 영역의 수직 방향으로의 폭 또는 수평 방향으로의 폭에 따라 현재 블록의 경계 영역의 예측을 위한 참조 샘플의 수도 달라질 수 있다.
또는, 현재 블록의 경계 영역의 폭은 N=M=P=Q=T로 소정의 크기 T로 결정될 수 있다. 이때, 소정의 크기 T는 정수 픽셀 단위일 수도 있고, 서브 픽셀 단위일 수도 있다. 현재 블록의 경계 영역의 폭에 관한 정보인 소정의 크기 T는 부호화되어 비디오 복호화 장치(20)로 전송될 수 있다.
또한, 복수 개의 소정의 크기 T의 후보들 중 하나를 가리키는 인덱스 정보가 현재 블록의 경계 영역의 폭에 관한 정보로 이용될 수도 있다. 예를 들어, 소정의 크기 T에 대하여 "0", "4" 및 "현재 블록의 너비의 2배"를 각각 0, 10, 11로 인덱싱하여 시그널링할 수 있다. 이때, 소정의 크기 T의 단위는 정수 픽셀 단위일 수 있다. 소정의 크기 T가 현재 블록의 너비의 2배인 경우, 현재 블록의 모든 샘플이 경계 영역에 포함될 수 있고, 경계 영역에 대한 예측을 수행함으로써 현재 블록의 모든 샘플의 예측 값을 생성할 수 있다.
또는, 현재 블록의 경계 영역의 폭은 현재 블록의 주변 블록으로부터 유도될 수 있다. 예를 들어, 현재 블록의 주변 블록에 포함된 샘플들에 대한 분산, 평균, 표준 편차, 이상점(outlier) 등의 정보들이 이용될 수 있다.
도 43을 참조하면, 다양한 실시예에 따른 현재 블록(4310, 4320, 4330)의 경계 영역에 대하여 예측을 수행하는 과정이 나타난다. 이때, 현재 블록(4310, 4320, 4330)의 경계 영역은 N=M=2의 폭을 가질 수 있고, 현재 블록(4310, 4320, 4330)의 참조 샘플은 현재 블록(4310, 4320, 4330)의 상측 주변 샘플일 수 있다.
이때, 다양한 실시예에 따른 현재 블록(4310, 4320, 4330)의 경계 영역에 포함되는 샘플들이 다양한 기준에 따라 결정될 수 있다. 예를 들어, 현재 블록(4310)을 참조하면, 현재 블록(4310)의 경계 영역에 포함되는 샘플은, 현재 블록(4310)의 샘플들 중 샘플의 위치가 현재 블록(4310)의 경계 영역에 완전히 포함되는 샘플일 수 있다.
또는, 현재 블록(4320)을 참조하면, 현재 블록(4320)의 경계 영역에 포함되는 샘플은, 현재 블록(4320)의 샘플들 중 샘플의 위치의 중심이 현재 블록(4310)의 경계 영역에 포함되는 샘플일 수 있다.
또는, 현재 블록(4330)을 참조하면, 현재 블록(4330)의 경계 영역에 포함되는 샘플은, 현재 블록(4330)의 샘플들 중 샘플의 위치가 현재 블록(4330)의 경계 영역에 전부 또는 일부라도 걸쳐지는 샘플일 수 있다.
또한, 도 44는 현재 블록(4410, 4420, 4430)의 윤곽이 곡선 윤곽인 경우의 예시들을 나타낸다. 현재 블록(4410, 4420, 4430)의 경계 영역에 포함되는 샘플들은, 도 43의 현재 블록(4310, 4320, 4330)과 마찬가지로 다양한 기준에 따라 결정될 수 있다.
다양한 실시예에 따른 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역에 대한 예측이 수행되면, 경계 영역을 제외한 나머지 영역에 대하여 예측이 수행될 수 있다. 즉, 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)들에서 경계 영역을 제외한 나머지 영역은 세그먼트에 해당하는 영역들로서, 도 43 및 도 43에서 흰색 샘플들로 나타나는 영역일 수 있다. 예를 들어, 세그먼트 영역에 대하여 DC 모드에 따른 인트라 예측이 수행될 수 있다.
또한, 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역에 대한 예측 및 세그먼트 영역에 대한 예측이 모두 수행되면, 경계 영역과 세그먼트 영역 사이를 필터링할 수 있다. 경계 영역과 세그먼트 영역에 대하여 서로 다른 방법으로 예측이 수행되어 오차에 의한 품질 저하가 발생될 수 있다. 따라서, 오차를 줄이고 가시적인 품질 저하를 방지하기 위하여 경계 영역과 세그먼트 영역 사이에 필터링이 수행될 수 있다.
예를 들어, 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역의 샘플들 중 샘플의 좌측 또는 우측으로 세그먼트 영역의 샘플이 인접하는 샘플에 대하여, 필터링이 수행될 수 있다. 또한, 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 세그먼트 영역의 샘플들 중 샘플의 좌측 또는 우측으로 경계 영역의 샘플이 인접하는 샘플에 대하여, 필터링이 수행될 수 있다.
또는, 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역의 샘플들 중 샘플의 상측 또는 하측으로 세그먼트 영역의 샘플이 인접하는 샘플에 대하여, 필터링이 수행될 수 있다. 또한, 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 세그먼트 영역의 샘플들 중 샘플의 상측 또는 하측으로 경계 영역의 샘플이 인접하는 샘플에 대하여, 필터링이 수행될 수 있다.
구체적으로, 일 실시예에 따른 샘플링 방법은 도 27의 수도 코드와 동일한 알고리즘에 따라 수행될 수 있다. 이때, 도 43의 현재 블록(4310, 4320, 4330)의 마스크값은 현재 블록(4310, 4320, 4330)의 경계 영역에 포함되는 샘플을 결정하는 때에 경계 영역에 포함되는지 여부에 따라 1 또는 0으로 결정될 수 있고, 결정된 마스크값이 필터링에 이용될 수 있다.
다양한 실시예에 따른 도 43의 및 도 44의 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역과 세그먼트 영역 사이에 수행되는 필터링은, 수평 방향 및 수직 방향 모두에 적용될 수도 있고, 수평 방향 및 수직 방향 중 하나의 방향에 따라 적용될 수도 있다.
또한, 다양한 실시예에 따른 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역에 대하여 예측을 수행하는 경우, 경계 영역의 예측 값에 대한 오차를 줄이기 위하여 경계 영역에 필터링을 수행할 수도 있다.
예를 들어, 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역에 포함된 샘플들의 예측 값을 생성하고, 생성된 예측 값들에 필터링할 수 있다. 예를 들어, [1, 2, 1]과 같은 필터값을 갖는 1차원 가우시안 필터가 이용될 수 있다. 또한, 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역을 예측하기 위하여 참조되는 주변 샘플들에 대하여 먼저 필터링을 수행하고, 필터링된 주변 샘플들에 기초하여 현재 블록(4310, 4320, 4330, 4410, 4420, 4430)의 경계 영역의 샘플들의 예측 값을 생성할 수도 있다.
도 45는 일 실시예에 따른 인트라 예측 수행을 위한 신택스 엘리먼트들을 나타낸다.
일 실시예에 따른 현재 블록에 대한 예측 모드를 나타내는 정보가 비트스트림으로부터 파싱될 수 있다. 예를 들어, 현재 블록에 대한 예측 모드를 나타내는 정보는, 현재 블록을 정사각형 또는 직사각형의 예측 단위를 이용하는 계층적 구조의 부호화 단위에 기초한 인트라 모드를 이용할지 또는 현재 블록에 포함된 물체의 경계에 따른 윤곽을 이용하여 분할되는 예측 단위인 세그먼트를 이용하는 윤곽 기반 인트라 예측 모드를 이용할지 여부를 나타내는 정보(intra_mode_flag)를 포함할 수 있다.
예측 모드를 나타내는 정보가 현재 블록이 일반적인 인트라 모드를 나타내는 경우, 현재 블록은 DC 모드, 플래너(planar) 모드, 앵귤러(angular) 모드 등의 인트라 모드에 따라 예측될 수 있다.
또한, 예측 모드를 나타내는 정보가 현재 블록이 일반적인 인트라 모드를 나타내지 않는 경우, 현재 블록으로부터 분할되는 세그먼트의 개수에 관한 정보(seg_num_minus1)가 파싱될 수 있다. 예를 들어, 현재 블록의 세그먼트의 개수에 관한 정보가 현재 블록으로부터 분할되는 세그먼트가 1개임을 나타내는 경우, 현재 블록은 분할되지 않을 수 있으며, 현재 블록과 동일한 제 1 세그먼트의 예측 모드를 나타내는 정보(1seg_mode)가 파싱될 수 있다. 예를 들어, 제 1 세그먼트의 예측 모드를 나타내는 정보(1seg_mode)는 DC 모드, 플래너(planar) 모드, 앵귤러(angular) 모드 등의 인트라 모드 중 하나를 나타낼 수 있다.
현재 블록의 세그먼트의 개수에 관한 정보가 현재 블록으로부터 분할되는 세그먼트가 2개 이상임을 나타내는 경우, 현재 블록은 현재 블록의 예측을 위한 세그먼트들로 분할될 수 있다. 즉, 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽에 관한 정보가 파싱될 수 있다. 일 실시예에 따른 현재 블록의 윤곽에 관한 정보는 윤곽의 모드 정보 및 윤곽의 좌표에 관한 정보를 포함할 수 있다.
구체적으로, 현재 블록으로부터 두개 이상의 세그먼트가 분할되는 경우, 현재 블록의 윤곽의 모드 정보(line_orient)가 파싱될 수 있다. 예를 들어, 윤곽의 모드 정보는 윤곽의 방향을 나타내는 정보일 수 있다.
일 실시예에 따른 현재 블록의 윤곽의 모드 정보(line_orient)는 현재 블록의 네 변들 중 현재 블록의 윤곽이 닿는 적어도 두 변을 나타내는 정보일 수 있다. 예를 들어, 일 실시예에 따른 현재 블록의 윤곽의 모드 정보(line_orient)는 현재 블록의 상측, 우측, 하측 및 좌측 중 두 변을 나타내는 정보로서, 제 1 모드(line_orient==0), 제 2 모드(line_orient==1), 제 3 모드(line_orient==2), 제 4 모드(line_orient==3), 제 5 모드(line_orient==4) 및 제 6 모드(line_orient==5) 중 하나를 나타낼 수 있다. 현재 블록의 윤곽의 모드 정보(line_orient)에 따라 현재 블록의 윤곽의 모드가 결정될 수 있다.
일 실시에에 따른 현재 블록의 윤곽의 모드가 결정되면, 현재 블록의 윤곽의 좌표에 관한 정보를 파싱할지 여부가 결정될 수 있다. 현재 블록의 윤곽의 좌표에 관한 정보는 현재 블록의 윤곽의 제 1 좌표 정보(line_pos1) 및 제 2 좌표 정보(line_pos2)를 포함할 수 있다. 구체적으로, 현재 블록의 윤곽의 모드에 따라 현재 블록의 윤곽의 좌표가 현재 블록의 주변 블록으로부터 유도 가능한지 또는 파싱하여야 하는지 여부가 결정될 수 있다.
예를 들어, 현재 블록의 윤곽의 모드에 기초하여 현재 블록의 윤곽의 제 1 좌표 및 제 2 좌표가 현재 블록의 주변 블록으로부터 유도 가능한 것으로 결정되는 경우, 현재 블록의 윤곽의 제 1 좌표 정보(line_pos1) 및 제 2 좌표 정보(line_pos2)는 파싱되지 않을 수 있다. 또한, 블록의 윤곽의 모드에 기초하여 현재 블록의 윤곽의 제 1 좌표 및 제 2 좌표가 현재 블록의 주변 블록으로부터 유도 가능하지 않은 것으로 결정되는 경우, 현재 블록의 윤곽의 제 1 좌표 정보(line_pos1) 및 제 2 좌표 정보(line_pos2)는 비트스트림으로부터 파싱될 수 있다. 현재 블록의 윤곽의 좌표에 관한 정보의 파싱 여부는 제 1 좌표 및 제 2 좌표 각각에 대하여 결정될 수 있다.
예를 들어, 현재 블록의 윤곽의 제 1 좌표가 유도 가능하고 제 2 좌표가 유도 가능하지 않은 경우(예를 들어, line_orient==0), 현재 블록의 윤곽의 제 2 좌표 정보(line_pos2)만이 파싱될 수 있다.
또한, 현재 블록의 윤곽의 제 1 좌표 및 제 2 좌표가 모두 현재 블록의 주변 블록으로부터 유도 가능하지 않은 경우, 현재 블록의 윤곽의 제 1 좌표 정보(line_pos1) 및 제 2 좌표 정보(line_pos2)가 모두 파싱될 수 있다. 이때, 현재 블록 내의 우측 하단에 위치한 제 2 세그먼트의 샘플값 또는 예측값(seg1_dc)은 현재 블록의 주변 샘플을 이용하여 생성되지 않고 파싱될 수 있다.
또한, 일 실시예에 따른 현재 블록에 대하여 경계의 방향에 따라 예측을 수행할지 여부를 나타내는 정보(boundary_filling_flag)가 파싱될 수 있다. 경계의 방향에 따라 예측을 수행할지 여부를 나타내는 정보(boundary_filling_flag)가 수행함을 나타내는 경우, 현재 블록의 경계 영역에 포함되는 샘플들의 예측값이 경계의 방향에 따라 생성될 수 있다. 예를 들어, 현재 블록의 경계 영역에 포함되는 샘플들의 예측값은 도 38 내지 도 44에 상술된 방법을 이용하여 생성될 수 있다.
이때, 일 실시예에 따른 현재 블록의 경계 영역에 관한 정보가 파싱될 수 있다. 예를 들어, 현재 블록의 경계 영역에 관한 정보는 경계 영역의 폭에 관한 정보(boundary_filling_thickness)를 포함할 수 있다. 경계 영역의 폭을 나타내는 정보는 경계 영역의 폭을 직접 나타낼 수도 있고, 복수 개의 소정의 폭의 후보 중 하나를 나타내는 인덱스 정보일 수도 있다.
또는, 경계의 방향에 따라 예측을 수행할지 여부를 나타내는 정보(boundary_filling_flag)가 경계의 방향에 따른 예측을 나타내지 않는 경우, 현재 블록의 경계 영역에 포함되는 샘플들의 예측값은 현재 블록의 세그먼트 영역의 샘플 및 마스크값를 이용하여 생성될 수 있다.
또한, 일 실시예에 따른 현재 블록의 예측값에 대하여 필터링을 수행할지 여부를 나타내는 정보(boundary_filtering_disable_flag)가 파싱될 수 있다. 일 실시예에 따른 현재 블록에 대하여 경계 영역의 예측값에 대하여 수행되는 필터링 방법의 일 예시는 도 37의 방법과 동일할 수 있다.
이하, 도 46 내지 도 49를 참조하여, 앞서 제안한 윤곽을 기반으로한 인트라 예측 비디오 부호화 방법이 사용되지 않고, 직사각형 또는 정사각형의 예측 단위를 이용하는 계층적 구조의 부호화 단위에 기초한 비디오 부호화 방법이 사용되는 경우의, 심도별 부호화 단위, 예측 단위 및 변환 단위의 관계를 후술한다.
도 46 는 다양한 실시예에 따른 심도별 부호화 단위 및 예측 단위를 도시한다.
일 실시예에 따른 비디오 부호화 장치(10) 및 일 실시예에 따른 비디오 복호화 장치(20)는 영상 특성을 고려하기 위해 계층적인 부호화 단위를 사용할 수 있다. 부호화 단위의 최대 높이 및 너비, 최대 심도는 영상의 특성에 따라 적응적으로 결정될 수도 있으며, 사용자의 요구에 따라 다양하게 설정될 수도 있다. 미리 설정된 부호화 단위의 최대 크기에 따라, 심도별 부호화 단위의 크기가 결정될 수 있다.
일 실시예에 따른 부호화 단위의 계층 구조(600)는 부호화 단위의 최대 높이 및 너비가 64이며, 최대 심도가 3인 경우를 도시하고 있다. 이 때, 최대 심도는 최대 부호화 단위로부터 최소 부호화 단위까지의 총 분할 횟수를 나타낸다. 일 실시예에 따른 부호화 단위의 계층 구조(600)의 세로축을 따라서 심도가 깊어지므로 심도별 부호화 단위의 높이 및 너비가 각각 분할한다. 또한, 부호화 단위의 계층 구조(600)의 가로축을 따라, 각각의 심도별 부호화 단위의 예측 부호화의 기반이 되는 예측 단위 및 파티션이 도시되어 있다. 이때, 도 46에 도시된 심도별 부호화 단위의 예측 단위 및 파티션은, 윤곽 기반의 예측 부호화 방법을 이용하지 않는 경우의 현재 블록의 예측 단위를 나타낼 수 있다.
즉, 부호화 단위(610)는 부호화 단위의 계층 구조(600) 중 최대 부호화 단위로서 심도가 0이며, 부호화 단위의 크기, 즉 높이 및 너비가 64x64이다. 세로축을 따라 심도가 깊어지며, 크기 32x32인 심도 1의 부호화 단위(620), 크기 16x16인 심도 2의 부호화 단위(630), 크기 8x8인 심도 3의 부호화 단위(640)가 존재한다. 크기 8x8인 심도 3의 부호화 단위(640)는 최소 부호화 단위이다.
각각의 심도별로 가로축을 따라, 부호화 단위의 예측 단위 및 파티션들이 배열된다. 즉, 심도 0의 크기 64x64의 부호화 단위(610)가 예측 단위라면, 예측 단위는 크기 64x64의 부호화 단위(610)에 포함되는 크기 64x64의 파티션(610), 크기 64x32의 파티션들(612), 크기 32x64의 파티션들(614), 크기 32x32의 파티션들(616)로 분할될 수 있다.
마찬가지로, 심도 1의 크기 32x32의 부호화 단위(620)의 예측 단위는, 크기 32x32의 부호화 단위(620)에 포함되는 크기 32x32의 파티션(620), 크기 32x16의 파티션들(622), 크기 16x32의 파티션들(624), 크기 16x16의 파티션들(626)로 분할될 수 있다.
마찬가지로, 심도 2의 크기 16x16의 부호화 단위(630)의 예측 단위는, 크기 16x16의 부호화 단위(630)에 포함되는 크기 16x16의 파티션(630), 크기 16x8의 파티션들(632), 크기 8x16의 파티션들(634), 크기 8x8의 파티션들(636)로 분할될 수 있다.
마찬가지로, 심도 3의 크기 8x8의 부호화 단위(640)의 예측 단위는, 크기 8x8의 부호화 단위(640)에 포함되는 크기 8x8의 파티션(640), 크기 8x4의 파티션들(642), 크기 4x8의 파티션들(644), 크기 4x4의 파티션들(646)로 분할될 수 있다.
일 실시예에 따른 비디오 부호화 장치(10)(100)의 부호화 단위 결정부(120)는, 최대 부호화 단위(610)의 심도를 결정하기 위해, 최대 부호화 단위(610)에 포함되는 각각의 심도의 부호화 단위마다 부호화를 수행하여야 한다.
동일한 범위 및 크기의 데이터를 포함하기 위한 심도별 부호화 단위의 개수는, 심도가 깊어질수록 심도별 부호화 단위의 개수도 증가한다. 예를 들어, 심도 1의 부호화 단위 한 개가 포함하는 데이터에 대해서, 심도 2의 부호화 단위는 네 개가 필요하다. 따라서, 동일한 데이터의 부호화 결과를 심도별로 비교하기 위해서, 한 개의 심도 1의 부호화 단위 및 네 개의 심도 2의 부호화 단위를 이용하여 각각 부호화되어야 한다.
각각의 심도별 부호화를 위해서는, 부호화 단위의 계층 구조(600)의 가로축을 따라, 심도별 부호화 단위의 예측 단위들마다 부호화를 수행하여, 해당 심도에서 가장 작은 부호화 오차인 대표 부호화 오차가 선택될 수 있다. 또한, 부호화 단위의 계층 구조(600)의 세로축을 따라 심도가 깊어지며, 각각의 심도마다 부호화를 수행하여, 심도별 대표 부호화 오차를 비교하여 최소 부호화 오차가 검색될 수 있다. 최대 부호화 단위(610) 중 최소 부호화 오차가 발생하는 심도 및 파티션이 최대 부호화 단위(610)의 심도 및 파티션 모드로 선택될 수 있다.
도 47은 다양한 실시예에 따른, 부호화 단위 및 변환 단위의 관계를 도시한다.
일 실시예에 따른 비디오 부호화 장치(10) 또는 일 실시예에 따른 비디오 복호화 장치(20)는, 최대 부호화 단위마다 최대 부호화 단위보다 작거나 같은 크기의 부호화 단위로 영상을 부호화하거나 복호화한다. 부호화 과정 중 변환을 위한 변환 단위의 크기는 각각의 부호화 단위보다 크지 않은 데이터 단위를 기반으로 선택될 수 있다.
예를 들어, 일 실시예에 따른 비디오 부호화 장치(10) 또는 일 실시예에 따른 비디오 복호화 장치(20)에서, 현재 부호화 단위(710)가 64x64 크기일 때, 32x32 크기의 변환 단위(720)를 이용하여 변환이 수행될 수 있다.
또한, 64x64 크기의 부호화 단위(710)의 데이터를 64x64 크기 이하의 32x32, 16x16, 8x8, 4x4 크기의 변환 단위들로 각각 변환을 수행하여 부호화한 후, 원본과의 오차가 가장 적은 변환 단위가 선택될 수 있다.
도 48은 다양한 실시예에 따른 부호화 정보들을 도시한다.
일 실시예에 따른 비디오 부호화 장치(10)의 비트스트림 생성부(16)는, 분할정보로서 각각의 심도의 부호화 단위마다 파티션 모드에 관한 정보(800), 예측 모드에 관한 정보(810), 변환 단위 크기에 대한 정보(820)를 부호화하여 전송할 수 있다.
이때, 도 48에 도시된 파티션 모드에 관한 정보(800)는 영상의 현재 블록에 대하여 윤곽을 기반으로한 예측 부호화를 이용하지 않는 경우에 이용될 수 있다.
파티션 모드에 대한 정보(800)는, 현재 부호화 단위의 예측 부호화를 위한 데이터 단위로서, 현재 부호화 단위의 예측 단위가 분할된 파티션의 형태에 대한 정보를 나타낸다. 예를 들어, 크기 2Nx2N의 현재 부호화 단위 CU_0는, 크기 2Nx2N의 파티션(802), 크기 2NxN의 파티션(804), 크기 Nx2N의 파티션(806), 크기 NxN의 파티션(808) 중 하나의 타입으로 분할될 수 있다. 이 경우 현재 부호화 단위의 파티션 모드에 관한 정보(800)는 크기 2Nx2N의 파티션(802), 크기 2NxN의 파티션(804), 크기 Nx2N의 파티션(806) 및 크기 NxN의 파티션(808) 중 하나를 나타내도록 설정된다.
예측 모드에 관한 정보(810)는, 예측 단위의 예측 모드를 나타낸다. 예를 들어 예측 모드에 관한 정보(810)를 통해, 파티션 모드에 관한 정보(800)가 가리키는 현재 블록의 파티션 또는 현재 블록의 윤곽에 기반하여 결정된 세그먼트가 인트라 모드(812), 인터 모드(814) 및 스킵 모드(816) 중 하나로 예측 부호화가 수행되는지 여부가 설정될 수 있다.
또한, 변환 단위 크기에 관한 정보(820)는 현재 부호화 단위를 어떠한 변환 단위를 기반으로 변환을 수행할지 여부를 나타낸다. 예를 들어, 변환 단위는 제 1 인트라 변환 단위 크기(822), 제 2 인트라 변환 단위 크기(824), 제 1 인터 변환 단위 크기(826), 제 2 인터 변환 단위 크기(828) 중 하나일 수 있다.
일 실시예에 따른 비디오 복호화 장치(20)는, 각각의 심도별 부호화 단위마다 파티션 모드에 관한 정보(800), 예측 모드에 관한 정보(810), 변환 단위 크기에 대한 정보(820)를 추출하여 복호화에 이용할 수 있다.
이제까지 개시된 다양한 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 명세서에서 개시된 실시예들의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 명세서의 개시 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 명세서의 개시범위에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 획득하는 단계;
    상기 윤곽의 모드 정보에 기초하여, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하는 단계;
    상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 단계; 및
    상기 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행하는 단계를 포함하는 비디오 복호화 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 세그먼트를 결정하는 단계는,
    상기 윤곽의 모드 정보에 따라 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표 중 적어도 하나가 유도 가능하지 않은 경우, 비트스트림으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표 중 적어도 하나를 획득하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서,
    상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 우측에 위치하는 경우, 상기 제 1 좌표를 비트스트림으로부터 획득하는 단계; 및
    상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 하단에 위치하는 경우, 상기 제 2 좌표를 비트스트림으로부터 획득하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 상단에 위치하는 경우, 상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계; 및
    상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 좌측에 위치하는 경우, 상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계를 더 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계는,
    상기 현재 블록의 상단 블록의 최하단 샘플들의 샘플값을 이용하여 상기 윤곽의 제 1 좌표를 유도하고,
    상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계는,
    상기 현재 블록의 좌측 블록의 최우측 샘플들의 샘플값을 이용하여 상기 윤곽의 제 2 좌표를 유도하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보는 상기 현재 블록의 상변, 우변, 하변 및 좌변 중 적어도 두 변을 나타내는 정보를 포함하는 하는 방법.
  7. 제 1 항에 있어서,
    상기 현재 블록으로부터 결정되는 적어도 하나의 세그먼트의 개수에 관한 정보를 획득하는 단계; 및
    상기 적어도 하나의 세그먼트의 개수에 관한 정보가 상기 현재 블록이 하나의 세그먼트로 결정됨을 나타내는 경우, 상기 하나의 세그먼트에 대한 예측 모드를 나타내는 정보를 획득하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 적어도 하나의 세그먼트에 대하여 예측을 수행하는 단계는,
    상기 현재 블록을 구성하는 세그먼트들의 경계를 나타내는 상기 현재 블록의 마스크를 생성하는 단계;
    상기 현재 블록의 주변 샘플을 이용하여 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계; 및
    상기 생성된 마스크 및 상기 결정된 샘플 값에 기초하여, 상기 적어도 하나의 세그먼트의 예측 값을 결정하는 단계를 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 현재 블록의 마스크를 생성하는 단계는,
    상기 현재 블록으로부터 적어도 하나의 세그먼트를 결정하는 윤곽과 상기 현재 블록의 샘플 간의 위치 관계에 기초하여 상기 현재 블록의 샘플의 마스크 값을 결정함으로써 상기 현재 블록의 마스크를 생성하는 것을 특징으로 하는 방법.
  10. 제 8 항에 있어서,
    상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계는,
    상기 획득된 윤곽의 모드 정보에 기초하여 상기 현재 블록의 주변 블록에 포함된 참조 샘플을 결정하는 단계; 및
    상기 결정된 참조 샘플을 이용하여 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계를 포함하는 방법.
  11. 현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드를 결정하는 단계;
    상기 윤곽의 모드에 기초하여, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하는 단계;
    상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우, 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 단계;
    상기 적어도 하나의 세그먼트를 이용하여 상기 현재 블록에 대하여 예측을 수행하는 단계; 및
    상기 윤곽의 모드를 나타내는 상기 윤곽의 모드 정보를 부호화하는 단계를 포함하는 비디오 부호화 방법.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 세그먼트를 결정하는 단계는,
    상기 윤곽의 모드 정보에 따라 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표 중 적어도 하나가 유도 가능하지 않은 경우, 상기 현재 블록의 가장자리에 위치한 샘플들을 이용하여 결정되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 현재 블록의 가장자리에 위치한 샘플들 중 상기 현재 블록의 상단 샘플들 또는 상기 현재 블록의 우측 샘플들을 이용하여 상기 윤곽의 제 1 좌표를 결정하는 단계; 및
    상기 현재 블록의 가장자리에 위치한 샘플들 중 상기 현재 블록의 하단 샘플들 또는 상기 현재 블록의 좌측 샘플들을 이용하여 상기 윤곽에 대한 제 2 좌표를 결정하는 단계를 더 포함하는 방법.
  14. 제 12 항에 있어서,
    상기 결정된 윤곽의 모드에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 우측에 위치하는 경우, 상기 현재 블록 내의 우측 샘플들을 이용하여 결정되는 상기 윤곽의 제 1 좌표를 결정하는 단계; 및
    상기 결정된 윤곽의 모드에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 하단에 위치하는 경우, 상기 현재 블록 내의 하단 샘플들을 이용하여 상기 윤곽의 제 2 좌표를 결정하는 단계를 포함하는 방법.
  15. 제 11 항에 있어서,
    상기 결정된 윤곽의 모드에 따라 상기 윤곽의 제 1 좌표가 상기 현재 블록의 상단에 위치하는 경우, 상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계; 및
    상기 획득된 윤곽의 모드 정보에 따라 상기 윤곽의 제 2 좌표가 상기 현재 블록의 좌측에 위치하는 경우, 상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계를 더 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 윤곽의 제 1 좌표를 상기 현재 블록의 상단 블록으로부터 유도하는 단계는,
    상기 현재 블록의 상단 블록의 최하단 샘플들을 샘플값을 이용하여 상기 윤곽의 제 1 좌표를 유도하고,
    상기 윤곽의 제 2 좌표를 상기 현재 블록의 좌측 블록으로부터 유도하는 단계는,
    상기 현재 블록의 좌측 블록의 최우측 샘플들의 샘플값을 이용하여 상기 윤곽의 제 2 좌표를 유도하는 것을 특징으로 하는 방법.
  17. 제 11 항에 있어서,
    상기 현재 블록으로부터 결정되는 적어도 하나의 세그먼트의 개수를 결정하는 단계; 및
    상기 현재 블록이 하나의 세그먼트로 결정되는 경우, 상기 적어도 하나의 세그먼트의 개수에 관한 정보 및 상기 하나의 세그먼트에 대한 예측 모드를 나타내는 정보를 부호화하는 단계를 더 포함하는 방법.
  18. 제 11 항에 있어서,
    상기 현재 블록을 구성하는 세그먼트들의 경계를 나타내는 상기 현재 블록의 마스크를 생성하는 단계;
    상기 현재 블록의 주변 샘플을 이용하여 상기 적어도 하나의 세그먼트에 포함된 샘플들의 샘플 값을 결정하는 단계; 및
    상기 생성된 마스크 및 상기 결정된 샘플 값에 기초하여, 상기 적어도 하나의 세그먼트의 예측 값을 결정하는 단계를 더 포함하는 방법.
  19. 제 18 항에 있어서,
    상기 현재 블록의 마스크를 생성하는 단계는,
    상기 현재 블록으로부터 적어도 하나의 세그먼트를 결정하는 윤곽과 상기 현재 블록의 샘플 간의 위치 관계에 기초하여 상기 현재 블록의 샘플의 마스크 값을 결정함으로써 상기 현재 블록의 마스크를 생성하는 것을 특징으로 하는 방법.
  20. 비디오 복호화 장치에 있어서,
    현재 블록으로부터 적어도 하나의 세그먼트를 결정하기 위한 윤곽의 모드 정보를 획득하고, 상기 윤곽의 모드 정보에 기초하여 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한지 여부를 결정하고, 상기 현재 블록의 주변 블록으로부터 상기 윤곽의 제 1 좌표 및 제 2 좌표가 유도 가능한 경우 상기 현재 블록의 주변 블록으로부터 유도되는 상기 윤곽의 제 1 좌표 및 제 2 좌표에 기초하여 상기 현재 블록으로부터 상기 적어도 하나의 세그먼트를 결정하는 세그먼트 결정부; 및
    상기 결정된 적어도 하나의 세그먼트에 대하여 예측을 수행하는 예측 수행부를 포함하는 비디오 복호화 장치.
KR1020177032853A 2015-05-12 2016-05-10 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치 KR20180005186A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562160160P 2015-05-12 2015-05-12
US62/160,160 2015-05-12
PCT/KR2016/004874 WO2016182317A1 (ko) 2015-05-12 2016-05-10 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR20180005186A true KR20180005186A (ko) 2018-01-15

Family

ID=57249169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177032853A KR20180005186A (ko) 2015-05-12 2016-05-10 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치

Country Status (6)

Country Link
US (1) US10742973B2 (ko)
EP (1) EP3273695A4 (ko)
JP (1) JP2018519719A (ko)
KR (1) KR20180005186A (ko)
CN (1) CN107852507A (ko)
WO (1) WO2016182317A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016262259B2 (en) * 2015-05-12 2019-01-17 Samsung Electronics Co., Ltd. Image decoding method for performing intra prediction and device thereof, and image encoding method for performing intra prediction and device thereof
CN117061744A (zh) 2016-04-29 2023-11-14 世宗大学校产学协力团 用于对图像信号进行编码/解码的方法和设备
CN109479142B (zh) 2016-04-29 2023-10-13 世宗大学校产学协力团 用于对图像信号进行编码/解码的方法和设备
US10880548B2 (en) * 2016-06-01 2020-12-29 Samsung Electronics Co., Ltd. Methods and apparatuses for encoding and decoding video according to coding order
US11284076B2 (en) * 2017-03-22 2022-03-22 Electronics And Telecommunications Research Institute Block form-based prediction method and device
US10791327B2 (en) 2017-06-30 2020-09-29 Telefonaktiebolaget Lm Ericsson (Publ) Encoding and decoding a picture block
CN117528071A (zh) * 2017-08-21 2024-02-06 韩国电子通信研究院 编码/解码视频的方法和设备以及存储比特流的记录介质
JP2019041165A (ja) 2017-08-23 2019-03-14 富士通株式会社 画像符号化装置、画像復号装置、画像処理方法、及び画像処理プログラム
US10939118B2 (en) * 2018-10-26 2021-03-02 Mediatek Inc. Luma-based chroma intra-prediction method that utilizes down-sampled luma samples derived from weighting and associated luma-based chroma intra-prediction apparatus
JP7481332B2 (ja) * 2018-12-25 2024-05-10 オッポ広東移動通信有限公司 デコードのための予測方法及びその装置、並びにコンピュータ記憶媒体
KR20200083356A (ko) 2018-12-28 2020-07-08 김기백 인트라 예측 기반의 영상 부호화/복호화 방법 및 장치
EP3989547A4 (en) * 2019-06-21 2023-04-19 Samsung Electronics Co., Ltd. VIDEO ENCODING METHOD AND DEVICE, AND VIDEO DECODER METHOD AND DEVICE
PL3932064T3 (pl) * 2019-09-23 2023-07-17 Huawei Technologies Co. Ltd. Koder, dekoder i odpowiednie sposoby redukcji złożoności predykcji intra dla trybu planarnego
US11758156B2 (en) * 2020-12-29 2023-09-12 Nokia Technologies Oy Block modulating video and image compression codecs, associated methods, and computer program products for carrying out the same

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US129237A (en) * 1872-07-16 Improvement in horse hay-forks
BRPI0714859A2 (pt) * 2006-08-02 2013-05-21 Thomson Licensing mÉtodo e aparelho para particionamento geomÉtrico adaptativo para codificaÇço de vÍdeo e estrutura de sinal de vÍdeo para codificaÇço de vÍdeo
MX2009003333A (es) 2006-09-29 2009-05-12 Thomson Licensing Intra prediccion geometrica.
US20110020010A1 (en) * 2007-10-22 2011-01-27 Gianmarco Bruno Spectral tilt compensation
KR101675116B1 (ko) 2009-08-06 2016-11-10 삼성전자 주식회사 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치
KR101629475B1 (ko) 2009-09-23 2016-06-22 삼성전자주식회사 기하학 기반의 블록 분할 인트라 예측을 이용한 깊이영상 부호화 방법 및 장치
CN104768005B (zh) * 2009-12-01 2018-07-31 数码士有限公司 用于编码/解码高分辨率图像的方法和设备
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
JP2012191295A (ja) 2011-03-09 2012-10-04 Canon Inc 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
KR20120129726A (ko) 2011-05-20 2012-11-28 주식회사 케이티 인트라 예측 모드 복호화 방법 및 복호화 장치
KR102171788B1 (ko) 2011-11-11 2020-10-29 지이 비디오 컴프레션, 엘엘씨 적응적 분할 코딩
WO2013068564A1 (en) 2011-11-11 2013-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Effective wedgelet partition coding using spatial prediction
EP2777283B1 (en) * 2011-11-11 2018-01-10 GE Video Compression, LLC Effective prediction using partition coding
US9609343B1 (en) * 2013-12-20 2017-03-28 Google Inc. Video coding using compound prediction
KR20160004873A (ko) * 2014-07-04 2016-01-13 김서희 과일 화장품

Also Published As

Publication number Publication date
EP3273695A4 (en) 2018-07-18
WO2016182317A1 (ko) 2016-11-17
CN107852507A (zh) 2018-03-27
JP2018519719A (ja) 2018-07-19
EP3273695A1 (en) 2018-01-24
US20180139443A1 (en) 2018-05-17
US10742973B2 (en) 2020-08-11

Similar Documents

Publication Publication Date Title
KR20180005186A (ko) 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치
KR20180006915A (ko) 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치
JP6835448B2 (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法及び符号化ビットストリームを記録した記録媒体
US20210144375A1 (en) Method and apparatus for processing video signal
US11533470B2 (en) Method and apparatus for encoding/decoding an image signal
KR101682150B1 (ko) 변환 및 역변환에 기초한 보간 방법 및 장치
JP7159354B2 (ja) 適応的動きベクトル解像度を用いるビデオ信号処理方法及び装置
RU2603539C2 (ru) Способ и устройство для кодирования видео и способ и устройство для декодирования видео
KR20170116850A (ko) 인트라 예측 기반의 비디오 신호 처리 방법 및 장치
KR101686945B1 (ko) 영상 보간 방법 및 장치
KR20170108367A (ko) 인트라 예측 기반의 비디오 신호 처리 방법 및 장치
KR20190096432A (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
CN112204981A (zh) 用于选择用于填补的帧内预测模式的装置
KR20180041578A (ko) 영상 부호화 방법/장치, 영상 복호화 방법/장치 및 비트스트림을 저장한 기록 매체
KR20180061025A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN110832854B (zh) 利用插值进行帧内预测的方法和装置
KR102435493B1 (ko) 영상 신호 부호화/복호화 방법 및 장치
KR102389267B1 (ko) 성분 간 참조 기반의 비디오 신호 처리 방법 및 장치
KR20220017380A (ko) 임의 블록 분할을 이용한 비디오 부호화 및 복호화
KR20230175110A (ko) 메타 정보를 이용하는 비디오 코딩방법 및 장치
KR20230139780A (ko) 적응적 다중변환선택을 이용하는 비디오 코딩방법 및 장치
KR20240043043A (ko) 개선된 크로스 컴포넌트 선형 모델 예측을 이용하는 비디오 코딩방법 및 장치
KR20220051156A (ko) 성분 간 참조 기반의 비디오 신호 처리 방법 및 장치
KR20230137825A (ko) 인접 정보 기반 팔레트 모드를 이용하는 비디오 코딩 방법 및 장치
KR20240026180A (ko) 인트라 예측을 이용한 비디오 신호 처리 방법 및 이를 위한 장치