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

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

Info

Publication number
KR102281514B1
KR102281514B1 KR1020200141110A KR20200141110A KR102281514B1 KR 102281514 B1 KR102281514 B1 KR 102281514B1 KR 1020200141110 A KR1020200141110 A KR 1020200141110A KR 20200141110 A KR20200141110 A KR 20200141110A KR 102281514 B1 KR102281514 B1 KR 102281514B1
Authority
KR
South Korea
Prior art keywords
block
motion vector
motion
prediction
blk
Prior art date
Application number
KR1020200141110A
Other languages
English (en)
Other versions
KR20200126954A (ko
Inventor
김종호
조숙희
추현곤
최진수
김진웅
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020200007766A external-priority patent/KR102173576B1/ko
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200141110A priority Critical patent/KR102281514B1/ko
Publication of KR20200126954A publication Critical patent/KR20200126954A/ko
Priority to KR1020210094607A priority patent/KR102380722B1/ko
Application granted granted Critical
Publication of KR102281514B1 publication Critical patent/KR102281514B1/ko
Priority to KR1020220037464A priority patent/KR102503694B1/ko
Priority to KR1020230022856A priority patent/KR102618379B1/ko
Priority to KR1020230188027A priority patent/KR20240004150A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors

Abstract

본 발명에 따른 인터 예측 방법은, 현재 블록에 대해 적어도 하나의 후보 검색 위치를 결정하는 단계, 적어도 하나의 후보 검색 위치 중에서 초기 검색 위치를 선택하는 단계, 초기 검색 위치를 기반으로 설정된 검색 범위 내에서 움직임 예측을 수행함으로써 현재 블록의 움직임 벡터를 도출하는 단계, 및 도출된 움직임 벡터를 기반으로 현재 블록에 대한 예측을 수행함으로써 예측 블록을 생성하는 단계를 포함한다.

Description

인터 예측 방법 및 그 장치 {METHOD FOR INTER PREDICTION AND APPARATUS THEREOF}
본 발명은 영상 처리에 관한 것으로서, 보다 상세하게는 움직임 예측(motion estimation) 방법 및 그 장치에 관한 것이다.
최근 HD(High Definition) 해상도를 가지는 방송 서비스가 국내뿐만 아니라 세계적으로 확대되면서, 많은 사용자들이 고해상도, 고화질의 영상에 익숙해지고 있으며 이에 따라 많은 기관들이 차세대 영상기기의 개발에 박차를 가하고 있다. 또한 HDTV와 더불어 HDTV의 4배 이상의 해상도를 갖는 UHD(Ultra High Definition)에 대한 관심이 증대되면서 보다 높은 해상도, 고화질의 영상에 대한 압축기술이 요구되고 있다.
영상 압축을 위해, 시간적으로 이전 및/또는 이후의 픽쳐로부터 현재 픽쳐에 포함된 픽셀값을 예측하는 인터(inter) 예측 기술, 현재 픽쳐 내의 픽셀 정보를 이용하여 현재 픽쳐에 포함된 픽셀값을 예측하는 인트라(intra) 예측 기술, 출현 빈도가 높은 심볼(symbol)에 짧은 부호를 할당하고 출현 빈도가 낮은 심볼에 긴 부호를 할당하는 엔트로피 부호화 기술 등이 사용될 수 있다.
본 발명의 기술적 과제는 영상 부호화 성능을 향상시킬 수 있는 영상 부호화 방법 및 그 장치를 제공함에 있다.
본 발명의 다른 기술적 과제는 영상 부호화 성능을 향상시킬 수 있는 인터 예측 방법 및 그 장치를 제공함에 있다.
본 발명의 기술적 과제는 영상 부호화 성능을 향상시킬 수 있는 움직임 예측 방법 및 그 장치를 제공함에 있다.
본 발명의 일 실시 형태는 움직임 예측 방법이다. 상기 방법은, 현재 블록에 대해 적어도 하나의 후보 검색 위치를 결정하는 단계, 상기 적어도 하나의 후보 검색 위치 중에서 초기 검색 위치를 선택하는 단계, 및 상기 초기 검색 위치를 기반으로 설정된 검색 범위 내에서 움직임 예측을 수행함으로써 상기 현재 블록의 움직임 벡터를 도출하는 단계를 포함한다. 이 때, 상기 초기 검색 위치를 선택하는 단계에서는, 상기 적어도 하나의 후보 검색 위치의 부호화 비용을 기반으로 상기 초기 검색 위치를 선택할 수 있다.
상기 현재 블록은 이미 움직임 예측이 완료된 상위 블록이 분할됨으로써 생성된 복수의 하위 블록들 중 하나일 수 있고, 상기 적어도 하나의 후보 검색 위치는 상기 현재 블록의 영점 위치를 기준으로 상기 상위 블록의 움직임 벡터가 나타내는 위치를 포함할 수 있다.
상기 현재 블록은 이미 움직임 예측이 완료된 상위 블록이 분할됨으로써 생성된 복수의 하위 블록들 중 하나일 수 있고, 상기 적어도 하나의 후보 검색 위치는 상기 현재 블록의 영점 위치를 기준으로, 상기 복수의 하위 블록들 중에서 이미 움직임 예측이 완료된 블록의 움직임 벡터가 나타내는 위치일 수 있다.
상기 적어도 하나의 후보 검색 위치는 상기 현재 블록의 영점 위치를 기준으로, 상기 현재 블록의 인터 예측에 사용될 참조 픽쳐 내의 동일 위치 블록의 움직임 벡터가 나타내는 위치를 포함할 수 있고, 상기 동일 위치 블록은 상기 참조 픽쳐 내에서 상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록일 수 있다.
상기 적어도 하나의 후보 검색 위치는 상기 현재 블록의 영점 위치를 기준으로, 상기 참조 픽쳐 내에서 상기 동일 위치 블록과 인접하여 위치한 블록의 움직임 벡터가 나타내는 위치를 더 포함할 수 있다.
상기 적어도 하나의 후보 검색 위치는, 상기 현재 블록의 영점 위치를 기준으로, 복수의 움직임 벡터를 기반으로 도출된 조합 움직임 벡터가 나타내는 위치를 포함할 수 있다. 여기서, 상기 복수의 움직임 벡터는 각각 이미 움직임 예측이 완료된 블록의 움직임 벡터일 수 있다.
상기 현재 블록은 이미 움직임 예측이 완료된 상위 블록이 분할됨으로써 생성된 복수의 하위 블록들 중 하나일 수 있고, 상기 복수의 움직임 벡터는, 상기 영점 위치를 나타내는 원점 벡터, 상기 상위 블록의 움직임 벡터, 상기 복수의 하위 블록들 중에서 이미 움직임 예측이 완료된 블록의 움직임 벡터, 상기 현재 블록의 예측 움직임 벡터, 및 상기 현재 블록의 주변에 인접하여 위치한 블록의 움직임 벡터 중에서 적어도 하나를 포함할 수 있다.
상기 조합 움직임 벡터는 상기 복수의 움직임 벡터의 평균에 의해 도출될 수 있다.
상기 조합 움직임 벡터는 상기 복수의 움직임 벡터의 가중치 합에 의해 도출될 수 있다.
상기 조합 움직임 벡터의 X 성분 값은 상기 복수의 움직임 벡터의 X 성분 값 중 최대 값으로 결정될 수 있고, 상기 조합 움직임 벡터의 Y 성분 값은 상기 복수의 움직임 벡터의 Y 성분 값 중 최대 값으로 결정될 수 있다.
상기 조합 움직임 벡터의 X 성분 값은 상기 복수의 움직임 벡터의 X 성분 값 중 최소 값으로 결정될 수 있고, 상기 조합 움직임 벡터의 Y 성분 값은 상기 복수의 움직임 벡터의 Y 성분 값 중 최소 값으로 결정될 수 있다.
상기 초기 검색 위치를 선택하는 단계는, 상기 적어도 하나의 후보 검색 위치를 나타내는 움직임 벡터 간의 상관도를 기반으로, 상기 적어도 하나의 후보 검색 위치 중에서 소정의 개수의 최종 후보 검색 위치를 결정하는 단계, 및 상기 소정의 개수의 최종 후보 검색 위치 중에서 상기 초기 검색 위치를 선택하는 단계를 더 포함할 수 있다.
상기 적어도 하나의 후보 검색 위치는 상기 현재 블록의 영점 위치를 기준으로 상기 현재 블록의 예측 움직임 벡터가 나타내는 위치를 포함할 수 있고, 상기 최종 후보 검색 위치를 결정하는 단계에서는, 상기 적어도 하나의 후보 검색 위치를 나타내는 움직임 벡터 중에서 상기 예측 움직임 벡터를 제외한 나머지 움직임 벡터, 및 상기 예측 움직임 벡터 간의 차이 값을 기반으로 상기 최종 후보 검색 위치를 결정할 수 있다.
상기 현재 블록은 이미 움직임 예측이 완료된 상위 블록이 분할됨으로써 생성된 복수의 하위 블록들 중 하나일 수 있고, 상기 적어도 하나의 후보 검색 위치는 상기 현재 블록의 영점 위치를 기준으로, 상기 상위 블록에 대한 움직임 예측에 의해 생성된 상위 움직임 벡터가 나타내는 위치를 포함할 수 있으며, 상기 최종 후보 검색 위치를 결정하는 단계에서는, 상기 적어도 하나의 후보 검색 위치를 나타내는 움직임 벡터 중에서 상기 상위 움직임 벡터를 제외한 나머지 움직임 벡터, 및 상기 상위 움직임 벡터 간의 차이 값을 기반으로 상기 최종 후보 검색 위치를 결정할 수 있다.
상기 현재 블록은 이미 움직임 예측이 완료된 상위 블록이 분할됨으로써 생성된 복수의 하위 블록들 중 하나일 수 있고, 상기 적어도 하나의 후보 검색 위치는 상기 복수의 하위 블록들 중에서 이미 움직임 예측이 완료된 블록에 대한 움직임 예측에 의해 생성된 하위 움직임 벡터가 나타내는 위치를 포함할 수 있으며, 상기 최종 후보 검색 위치를 결정하는 단계에서는, 상기 적어도 하나의 후보 검색 위치를 나타내는 움직임 벡터 중에서 상기 하위 움직임 벡터를 제외한 나머지 움직임 벡터, 및 상기 하위 움직임 벡터 간의 차이 값을 기반으로 상기 최종 후보 검색 위치를 결정할 수 있다.
상기 최종 후보 검색 위치를 결정하는 단계에서는, 상기 적어도 하나의 후보 검색 위치를 나타내는 움직임 벡터 각각의 분산 값을 기반으로 상기 최종 후보 검색 위치를 결정할 수 있다.
본 발명의 다른 실시 형태는 인터 예측 방법이다. 상기 방법은, 현재 블록에 대해 적어도 하나의 후보 검색 위치를 결정하는 단계, 상기 적어도 하나의 후보 검색 위치 중에서 초기 검색 위치를 선택하는 단계, 상기 초기 검색 위치를 기반으로 설정된 검색 범위 내에서 움직임 예측을 수행함으로써 상기 현재 블록의 움직임 벡터를 도출하는 단계, 및 상기 도출된 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측을 수행함으로써 예측 블록을 생성하는 단계를 포함한다. 이 때, 상기 초기 검색 위치를 선택하는 단계에서는, 상기 적어도 하나의 후보 검색 위치의 부호화 비용을 기반으로 상기 초기 검색 위치를 선택할 수 있다.
본 발명의 또 다른 실시 형태는 인터 예측 장치이다. 상기 장치는, 현재 블록에 대해 적어도 하나의 후보 검색 위치를 결정하고, 상기 적어도 하나의 후보 검색 위치 중에서 초기 검색 위치를 선택하고, 상기 초기 검색 위치를 기반으로 설정된 검색 범위 내에서 움직임 예측을 수행함으로써 상기 현재 블록의 움직임 벡터를 도출하는 움직임 예측부, 및 상기 도출된 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측을 수행함으로써 예측 블록을 생성하는 움직임 보상부를 포함할 수 있다. 여기서, 상기 움직임 예측부는, 상기 적어도 하나의 후보 검색 위치의 부호화 비용을 기반으로 상기 초기 검색 위치를 선택할 수 있다.
본 발명의 또 다른 실시 형태는 영상 부호화 방법이다. 상기 방법은, 현재 블록에 대해 적어도 하나의 후보 검색 위치를 결정하는 단계, 상기 적어도 하나의 후보 검색 위치 중에서 초기 검색 위치를 선택하는 단계, 상기 초기 검색 위치를 기반으로 설정된 검색 범위 내에서 움직임 예측을 수행함으로써 상기 현재 블록의 움직임 벡터를 도출하는 단계, 상기 도출된 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측을 수행함으로써 예측 블록을 생성하는 단계, 및 상기 현재 블록과 상기 예측 블록을 기반으로 잔차 블록을 생성하고 상기 잔차 블록을 부호화하는 단계를 포함한다. 이 때, 상기 초기 검색 위치를 선택하는 단계에서는, 상기 적어도 하나의 후보 검색 위치의 부호화 비용을 기반으로 상기 초기 검색 위치를 선택할 수 있다.
본 발명에 따른 영상 부호화 방법에 의하면, 영상 부호화 성능이 향상될 수 있다.
본 발명에 따른 인터 예측 방법에 의하면, 영상 부호화 성능이 향상될 수 있다.
본 발명에 따른 움직임 예측 방법에 의하면, 영상 부호화 성능이 향상될 수 있다.
도 1은 본 발명이 적용되는 영상 부호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 2는 영상 복호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 3은 인터 예측 방법의 일 실시예를 개략적으로 나타내는 흐름도이다.
도 4는 본 발명이 적용되는 움직임 예측 과정의 실시예를 개략적으로 나타내는 흐름도이다.
도 5는 초기 검색 위치 결정 방법의 일 실시예를 개략적으로 나타내는 도면이다.
도 6은 본 발명에 따른 후보 검색 위치 결정 방법의 실시예를 개략적으로 나타내는 도면이다.
도 7은 본 발명에 따른 후보 검색 위치 결정 방법의 다른 실시예를 개략적으로 나타내는 도면이다.
도 8은 본 발명에 따른 후보 검색 위치 결정 방법의 또 다른 실시예를 개략적으로 나타내는 도면이다.
이하, 도면을 참조하여 본 발명의 실시 형태에 대하여 구체적으로 설명한다. 본 명세서의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
어떤 구성 요소가 다른 구성 요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있으나, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 아울러, 본 발명에서 특정 구성을 “포함”한다고 기술하는 내용은 해당 구성 이외의 구성을 배제하는 것이 아니며, 추가적인 구성이 본 발명의 실시 또는 본 발명의 기술적 사상의 범위에 포함될 수 있음을 의미한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
또한 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리범위에 포함된다.
또한, 일부의 구성 요소는 본 발명에서 본질적인 기능을 수행하는 필수적인 구성 요소는 아니고 단지 성능을 향상시키기 위한 선택적 구성 요소일 수 있다. 본 발명은 단지 성능 향상을 위해 사용되는 구성 요소를 제외한 본 발명의 본질을 구현하는데 필수적인 구성부만을 포함하여 구현될 수 있고, 단지 성능 향상을 위해 사용되는 선택적 구성 요소를 제외한 필수 구성 요소만을 포함한 구조도 본 발명의 권리범위에 포함된다.
도 1은 본 발명이 적용되는 영상 부호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 1을 참조하면, 상기 영상 부호화 장치(100)는 움직임 예측부(motion estimator, 111), 움직임 보상부(112), 인트라 예측부(120), 스위치(115), 감산기(125), 변환부(130), 양자화부(140), 엔트로피 부호화부(150), 역양자화부(160), 역변환부(170), 가산기(175), 필터부(180) 및 참조 픽쳐 버퍼(190)를 포함한다.
영상 부호화 장치(100)는 입력 영상에 대해 인트라(intra) 모드 또는 인터(inter) 모드로 부호화를 수행하고 비트스트림을 출력할 수 있다. 인트라 예측은 화면 내 예측, 인터 예측은 화면 간 예측을 의미한다. 인트라 모드인 경우 스위치(115)가 인트라로 전환되고, 인터 모드인 경우 스위치(115)가 인터로 전환될 수 있다. 영상 부호화 장치(100)는 입력 영상의 입력 블록에 대한 예측 블록을 생성한 후, 입력 블록과 예측 블록의 차분(residual)을 부호화할 수 있다.
인트라 모드인 경우, 인트라 예측부(120)는 현재 블록 주변의 이미 부호화된 블록의 픽셀값을 이용하여 공간적 예측을 수행하여 예측 블록을 생성할 수 있다.
인터 모드인 경우, 움직임 예측부(motion estimator)(111)는, 움직임 예측 과정에서 참조 픽쳐 버퍼(190)에 저장되어 있는 참조 영상에서 입력 블록과 가장 매치가 잘 되는 영역을 찾아 움직임 벡터를 구할 수 있다. 움직임 보상부(112)는 움직임 벡터를 이용하여 움직임 보상을 수행함으로써 예측 블록을 생성할 수 있다.
감산기(125)는 입력 블록과 생성된 예측 블록의 차분에 의해 잔차 블록(residual block)을 생성할 수 있다. 변환부(130)는 잔차 블록에 대해 변환(transform)을 수행하여 변환 계수(transform coefficient)를 출력할 수 있다. 그리고 양자화부(140)는 입력된 변환 계수를 양자화 파라미터에 따라 양자화하여 양자화된 계수(quantized coefficient)를 출력할 수 있다.
엔트로피 부호화부(150)는, 양자화부(140)에서 산출된 값(예를 들어, 양자화된 계수)들 및/또는 부호화 과정에서 산출된 부호화 파라미터 값 등을 기초로 엔트로피 부호화를 수행하여 비트스트림(bit stream)을 출력할 수 있다.
엔트로피 부호화가 적용되는 경우, 높은 발생 확률을 갖는 심볼(symbol)에 적은 수의 비트가 할당되고 낮은 발생 확률을 갖는 심볼에 많은 수의 비트가 할당되어 심볼이 표현됨으로써, 부호화 대상 심볼들에 대한 비트열의 크기가 감소될 수 있다. 따라서 엔트로피 부호화를 통해서 영상 부호화의 압축 성능이 높아질 수 있다. 엔트로피 부호화부(150)는 엔트로피 부호화를 위해 지수 골룸(exponential golomb), CAVLC(Context-Adaptive Variable Length Coding), CABAC(Context-Adaptive Binary Arithmetic Coding)과 같은 부호화 방법을 사용할 수 있다.
도 1의 실시예에 따른 영상 부호화 장치는 인터 예측 부호화, 즉 화면 간(inter-frame) 예측 부호화를 수행하므로, 현재 부호화된 영상은 참조 영상으로 사용되기 위해 복호화되어 저장될 필요가 있다. 따라서 양자화된 계수는 역양자화부(160)에서 역양자화되고 역변환부(170)에서 역변환된다. 역양자화, 역변환된 계수는 가산기(175)를 통해 예측 블록과 더해지고 복원 블록이 생성된다.
복원 블록은 필터부(180)를 거치고, 필터부(180)는 디블록킹 필터(deblocking filter), SAO(Sample Adaptive Offset), ALF(Adaptive Loop Filter) 중 적어도 하나 이상을 복원 블록 또는 복원 픽쳐에 적용할 수 있다. 필터부(180)는 적응적 인루프(in-loop) 필터로 불릴 수도 있다. 디블록킹 필터는 블록 간의 경계에 생긴 블록 왜곡 및/또는 블록킹 아티팩트(blocking artifact)를 제거할 수 있다. SAO는 코딩 에러를 보상하기 위해 픽셀값에 적정 오프셋(offset) 값을 더해줄 수 있다. ALF는 복원된 영상과 원래의 영상을 비교한 값을 기초로 필터링을 수행할 수 있으며, 고효율이 적용되는 경우에만 수행될 수도 있다. 필터부(180)를 거친 복원 블록은 참조 픽쳐 버퍼(190)에 저장될 수 있다.
도 2는 영상 복호화 장치의 일 실시예에 따른 구성을 나타내는 블록도이다.
도 2를 참조하면, 상기 영상 복호화 장치(200)는 엔트로피 복호화부(210), 역양자화부(220), 역변환부(230), 인트라 예측부(240), 움직임 보상부(250), 가산기(255), 필터부(260) 및 참조 픽쳐 버퍼(270)를 포함한다.
영상 복호화 장치(200)는 부호화기에서 출력된 비트스트림을 입력 받아 인트라 모드 또는 인터 모드로 복호화를 수행하고 재구성된 영상, 즉 복원 영상을 출력할 수 있다. 인트라 모드인 경우 스위치가 인트라로 전환되고, 인터 모드인 경우 스위치가 인터로 전환될 수 있다. 영상 복호화 장치(200)는 입력 받은 비트스트림으로부터 잔차 블록(residual block)을 얻고 예측 블록을 생성한 후 잔차 블록과 예측 블록을 더하여 재구성된 블록, 즉 복원 블록을 생성할 수 있다.
엔트로피 복호화부(210)는, 입력된 비트스트림을 확률 분포에 따라 엔트로피 복호화하여, 양자화된 계수(quantized coefficient) 형태의 심볼을 포함한 심볼들을 생성할 수 있다. 엔트로피 복호화 방법은 상술한 엔트로피 부호화 방법과 유사하다.
엔트로피 복호화 방법이 적용되는 경우, 높은 발생 확률을 갖는 심볼에 적은 수의 비트가 할당되고 낮은 발생 확률을 갖는 심볼에 많은 수의 비트가 할당되어 심볼이 표현됨으로써, 각 심볼들에 대한 비트열의 크기가 감소될 수 있다. 따라서 엔트로피 복호화 방법을 통해서 영상 복호화의 압축 성능이 높아질 수 있다.
양자화된 계수는 역양자화부(220)에서 역양자화되고 역변환부(230)에서 역변환되며, 양자화된 계수가 역양자화/역변환 된 결과, 잔차 블록(residual block)이 생성될 수 있다.
인트라 모드인 경우, 인트라 예측부(240)는 현재 블록 주변의 이미 복호화된 블록의 픽셀값을 이용하여 공간적 예측을 수행하여 예측 블록을 생성할 수 있다. 인터 모드인 경우, 움직임 보상부(250)는 움직임 벡터 및 참조 픽쳐 버퍼(270)에 저장되어 있는 참조 영상을 이용하여 움직임 보상을 수행함으로써 예측 블록을 생성할 수 있다.
잔차 블록과 예측 블록은 가산기(255)를 통해 더해지고, 더해진 블록은 필터부(260)를 거칠 수 있다. 필터부(260)는 디블록킹 필터, SAO, ALF 중 적어도 하나 이상을 복원 블록 또는 복원 픽쳐에 적용할 수 있다. 필터부(260)는 재구성된 영상, 즉 복원 영상을 출력할 수 있다. 복원 영상은 참조 픽쳐 버퍼(270)에 저장되어 인터 예측에 사용될 수 있다.
이하, 블록은 영상 부호화 및 복호화의 단위를 의미한다. 영상 부호화 및 복호화 시 부호화 혹은 복호화 단위는, 영상을 분할하여 부호화 혹은 복호화 할 때 그 분할된 단위를 의미하므로, 부호화 유닛 (CU: Coding Unit), 예측 유닛 (PU: Prediction Unit), 변환 유닛(TU: Transform Unit), 변환 블록(transform block) 등으로 불릴 수 있다. 하나의 블록은 크기가 더 작은 하위 블록으로 더 분할될 수 있다.
도 3은 인터 예측 방법의 일 실시예를 개략적으로 나타내는 흐름도이다.
도 3을 참조하면, 부호화기 및 복호화기는 현재 블록에 대한 움직임 정보를 도출할 수 있다(S310).
인터 모드에서 부호화기 및 복호화기는 현재 블록의 움직임 정보를 도출한 후, 상기 도출된 움직임 정보에 기반하여 인터 예측 및/또는 움직임 보상을 수행할 수 있다. 부호화기는 현재 블록에 대해 움직임 예측(motion estimation)을 수행함으로써, 현재 블록에 대한 움직임 정보를 도출할 수 있다. 이 때, 부호화기는 상기 움직임 정보와 관련된 정보를 복호화기로 전송할 수 있다. 복호화기는 부호화기로부터 전송된 정보를 기반으로 현재 블록의 움직임 정보를 도출할 수 있다. 현재 블록에 대한 움직임 예측 수행 방식의 구체적인 실시예들은 후술하기로 한다.
이 때, 부호화기 및 복호화기는 복원된 주변 블록(neighboring block) 및/또는 이미 복원된 ‘Col 픽쳐’ 내에서 현재 블록에 대응되는 ‘Col 블록’의 움직임 정보를 이용함으로써, 부호화/복호화 효율을 향상시킬 수 있다. 여기서, 복원된 주변 블록은 이미 부호화 및/또는 복호화되어 복원된 현재 픽쳐 내의 블록으로서, 현재 블록에 인접한 블록 및/또는 현재 블록의 외부 코너에 위치한 블록을 포함할 수 있다. 또한 부호화기 및 복호화기는, Col 픽쳐 내에서 현재 블록과 공간적으로 동일한 위치에 존재하는 블록을 기준으로 소정의 상대적인 위치를 결정할 수 있고, 상기 결정된 소정의 상대적인 위치(상기 현재 블록과 공간적으로 동일한 위치에 존재하는 블록의 내부 및/또는 외부의 위치)를 기반으로 상기 Col 블록을 도출할 수 있다. 여기서, 일례로 Col 픽쳐는 참조 픽쳐 리스트에 포함된 참조 픽쳐 중에서 하나의 픽쳐에 해당될 수 있다.
한편, 움직임 정보 부호화 방식 및/또는 움직임 정보 도출 방식은 현재 블록의 예측 모드에 따라 달라질 수 있다. 인터 예측을 위해 적용되는 예측 모드에는 AMVP(Advanced Motion Vector Prediction), 머지(merge) 등이 있을 수 있다.
일례로, AMVP(Advanced Motion Vector Prediction)가 적용되는 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 벡터 및/또는 Col 블록의 움직임 벡터를 이용하여, 예측 움직임 벡터 후보 리스트(predicted motion vector candidate list)를 생성할 수 있다. 즉, 복원된 주변 블록의 움직임 벡터 및/또는 Col 블록의 움직임 벡터는 예측 움직임 벡터 후보(predicted motion vector candidate)로 사용될 수 있다. 부호화기는 상기 리스트에 포함된 예측 움직임 벡터 후보 중에서 선택된 최적의 예측 움직임 벡터를 지시하는 예측 움직임 벡터 인덱스를 복호화기로 전송할 수 있다. 이 때, 복호화기는 상기 예측 움직임 벡터 인덱스를 이용하여, 예측 움직임 벡터 후보 리스트에 포함된 예측 움직임 벡터 후보 중에서, 현재 블록의 예측 움직임 벡터를 선택할 수 있다.
이하, 본 명세서에서는 설명의 편의상 예측 움직임 벡터 후보가 예측 움직임 벡터(Predicted Motion Vector: PMV)로 지칭될 수 있으며, 예측 움직임 벡터는 움직임 벡터 예측자(Motion Vector Predictor: MVP)로도 불릴 수 있다. 이와 같은 구별은 당해 기술 분야에서 통상의 지식을 가진 자라면 용이하게 할 수 있을 것이다.
부호화기는 현재 블록의 움직임 벡터와 현재 블록의 예측 움직임 벡터 간의 차이에 해당되는 움직임 벡터 차분(MVD: Motion Vector Difference)을 구할 수 있고, 이를 부호화하여 복호화기로 전송할 수 있다. 이 때, 복호화기는 수신된 움직임 벡터 차분을 복호화할 수 있고, 복호화된 움직임 벡터 차분과 예측 움직임 벡터의 합을 통해 현재 블록의 움직임 벡터를 도출할 수 있다.
한편, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 벡터 및/또는 Col 블록의 움직임 벡터를 예측 움직임 벡터로 사용하는 대신, 복원된 주변 블록들의 움직임 벡터의 미디언(median) 값을 예측 움직임 벡터로 사용할 수도 있다. 이 경우, 부호화기는 현재 블록의 움직임 벡터 값과 미디언 값 간의 차분을 부호화하여 복호화하여 복호화기로 전송할 수 있다. 이 때, 복호화기는 수신된 차분을 복호화할 수 있고, 복호화된 차분과 미디언 값을 더함으로써 현재 블록의 움직임 벡터를 도출할 수 있다. 이러한 움직임 벡터 부호화/복호화 방식은 ‘AMVP 방식’ 대신 ‘미디언 방식’으로 불릴 수 있다.
후술되는 도 4 이하의 실시예들에서는, AMVP 방식이 사용되는 경우의 움직임 예측 과정이 서술되지만, 본 발명은 이에 한정되지 않고 미디언 방식이 사용되는 경우에도 동일하거나 유사한 방식으로 적용될 수 있다.
다른 예로, 머지(merge)가 적용되는 경우, 부호화기 및 복호화기는 복원된 주변 블록의 움직임 정보 및/또는 Col 블록의 움직임 정보를 이용하여, 머지 후보 리스트를 생성할 수 있다. 즉, 부호화기 및 복호화기는 복원된 주변 블록 및/또는 Col 블록의 움직임 정보가 존재하는 경우, 이를 현재 블록에 대한 머지 후보로 사용할 수 있다.
부호화기는 머지 후보 리스트에 포함된 머지 후보 중에서 최적의 부호화 효율을 제공할 수 있는 머지 후보를 현재 블록에 대한 움직임 정보로 선택할 수 있다. 이 때, 상기 선택된 머지 후보를 지시하는 머지 인덱스가 비트스트림에 포함되어 복호화기로 전송될 수 있다. 복호화기는 상기 전송된 머지 인덱스를 이용하여, 머지 후보 리스트에 포함된 머지 후보 중에서 하나를 선택할 수 있으며, 상기 선택된 머지 후보를 현재 블록의 움직임 정보로 결정할 수 있다. 따라서, 머지 모드가 적용되는 경우, 복원된 주변 블록 및/또는 Col 블록의 움직임 정보가 현재 블록의 움직임 정보로 그대로 사용될 수 있다.
상술한 AMVP 및 머지 모드에서는, 현재 블록의 움직임 정보를 도출하기 위해, 복원된 주변 블록의 움직임 정보 및/또는 Col 블록의 움직임 정보가 사용될 수 있다. 여기서, 복원된 주변 블록으로부터 도출되는 움직임 정보는 공간적 움직임 정보로 불릴 수 있고, Col 블록을 기반으로 도출되는 움직임 정보는 시간적 움직임 정보로 불릴 수 있다. 예를 들어, 복원된 주변 블록으로부터 도출되는 움직임 벡터는 공간적 움직임 벡터, Col 블록을 기반으로 도출되는 움직임 벡터는 시간적 움직임 벡터로 불릴 수 있다.
다시 도 3을 참조하면, 부호화기 및 복호화기는 상기 도출된 움직임 정보에 기반하여 현재 블록에 대한 움직임 보상을 수행함으로써, 현재 블록의 예측 블록을 생성할 수 있다(S320). 여기서, 예측 블록은 현재 블록에 대한 움직임 보상 수행 결과 생성된, 움직임 보상된 블록을 의미할 수 있다.
도 4는 본 발명이 적용되는 움직임 예측 과정의 실시예를 개략적으로 나타내는 흐름도이다. 도 4의 실시예에 따른 움직임 예측 과정은 상술한 도 1의 영상 부호화 장치의 움직임 예측부에서 수행될 수 있다.
도 4를 참조하면, 부호화기는 현재 블록에 대해 복수의 후보 검색 위치(candidate search point)를 결정할 수 있다(S410).
움직임 예측 수행 시에는 초기 검색 위치(initial search point)를 기반으로 검색 범위(search range)가 정해지고 초기 검색 위치에서 움직임 예측이 시작될 수 있다. 즉, 초기 검색 위치는 움직임 예측 시에 움직임 예측이 시작되는 위치로서, 검색 범위의 중심이 되는 위치를 의미할 수 있다. 여기서, 검색 범위는 영상 및/또는 픽쳐 내에서 움직임 예측이 수행되는 범위를 의미할 수 있다.
따라서, 부호화기는 최적의 초기 검색 위치를 결정하기 위한 후보로서, 복수의 ‘후보 검색 위치’를 결정할 수 있다. 후보 검색 위치를 결정하는 방법의 구체적인 실시예들은 후술하기로 한다.
다시 도 4를 참조하면, 부호화기는 복수의 후보 검색 위치 중에서 최소의 부호화 비용을 갖는 위치를 초기 검색 위치로 결정할 수 있다(S420).
여기서, 부호화 비용은 현재 블록을 부호화 하는데 필요한 비용을 의미할 수 있다. 예컨대, 부호화 비용은 현재 블록과 예측 블록(여기서, 예측 블록은 후보 검색 위치에 대응되는 움직임 벡터를 기반으로 도출될 수 있음) 간의 오차 값 및/또는 왜곡(distortion)을 나타내는 SAD(Sum of Absolute Difference), SSE(Sum of Square Error) 및/또는 SSD(Sum of Square Difference) 값과 움직임 벡터(후보 검색 위치에 대응되는 움직임 벡터)를 부호화하기 위해 필요한 비용(움직임 비용: motion cost)을 합산한 값에 해당될 수 있다. 이는 일례로 다음 수학식 1과 같이 나타내어질 수 있다.
[수학식 1]
부호화 비용(J) = SAD/SSE/SSD + MVcost
여기서, SAD, SSE 및 SSD는 상술한 바와 같이 현재 블록과 예측 블록(여기서, 예측 블록은 후보 검색 위치에 대응되는 움직임 벡터를 기반으로 도출될 수 있음) 간의 오차 값 및/또는 왜곡(distortion) 값을 나타낼 수 있다. 구체적으로, SAD는 원본 블록 내의 픽셀 값 및 예측 블록(여기서, 예측 블록은 후보 검색 위치에 대응되는 움직임 벡터를 기반으로 도출될 수 있음) 내의 픽셀 값 간의 오차 값들의 절대치의 합을 의미할 수 있다. 또한, SSE 및/또는 SSD는 원본 블록 내의 픽셀 값 및 예측 블록(여기서, 예측 블록은 후보 검색 위치에 대응되는 움직임 벡터를 기반으로 도출될 수 있음) 내의 픽셀 값 간의 오차 값들의 제곱의 합을 의미할 수 있다. MVcost는 움직임 벡터를 부호화하기 위해 필요한 움직임 비용(motion cost)을 나타낼 수 있다.
부호화기는 복수의 후보 검색 위치 각각에 대해 현재 블록에 대응되는 예측 블록을 생성할 수 있다. 그리고 부호화기는 생성된 예측 블록 각각에 대해 부호화 비용을 계산할 수 있으며, 가장 작은 부호화 비용을 갖는 예측 블록에 대응되는 후보 검색 위치를 초기 검색 위치로 결정할 수 있다.
다시 도 4를 참조하면, 부호화기는 결정된 초기 검색 위치를 기반으로 움직임 예측(motion estimation)을 수행함으로써, 현재 블록에 대한 최적의 움직임 벡터를 결정하거나 생성할 수 있다(S430).
상술한 바와 같이, 부호화기는 초기 검색 위치를 기반으로 검색 범위를 설정할 수 있다. 여기서, 초기 검색 위치는 상기 검색 범위의 중심에 위치할 수 있고, 검색 범위의 크기 및/또는 형태는 소정의 크기 및/또는 형태로 정해질 수 있다. 이 때, 부호화기는 설정된 검색 범위 내에서 움직임 예측을 수행함으로써, 최소 오차 값(또는 최소 부호화 비용)을 갖는 픽셀의 위치를 결정할 수 있다. 여기서, 최소 오차 값을 갖는 픽셀의 위치는 현재 블록에 대한 움직임 예측을 수행함으로써 생성되는 최적의 움직임 벡터가 나타내는 위치를 의미할 수 있다. 즉, 부호화기는 최소 오차 값(또는 최소 부호화 비용)을 갖는 픽셀의 위치를 나타내는 움직임 벡터를 현재 블록의 움직임 벡터로 결정할 수 있다.
예컨대, 부호화기는 설정된 검색 범위 내에 존재하는 픽셀들의 위치를 중심으로 하는 복수의 예측 블록을 생성할 수 있다. 이 때, 부호화기는 복수의 예측 블록 및 원본 블록을 기반으로 검색 범위 내에 존재하는 픽셀들 각각의 위치에 대응되는 부호화 비용을 결정할 수 있다. 그리고 부호화기는 가장 작은 부호화 비용을 갖는 픽셀의 위치에 대응하는 움직임 벡터를 현재 블록의 움직임 벡터로 결정할 수 있다.
또한, 검색 범위 내의 모든 픽셀들에 대해 움직임 예측을 수행하는 경우 지나치게 복잡도가 높을 수 있다. 따라서, 부호화기는 설정된 검색 범위 내에서 소정의 패턴(pattern)에 의해 지시되는 픽셀들만을 기반으로 움직임 예측을 수행하는 패턴 검색(pattern search)을 수행할 수도 있다.
현재 블록의 움직임 벡터가 도출되거나 생성되면, 부호화기는 이를 기반으로 현재 블록에 대한 움직임 보상을 수행함으로써, 현재 블록에 대응되는 예측 블록을 생성할 수 있다. 부호화기는 현재 블록과 예측 블록의 차분에 의해 잔차 블록을 생성할 수 있으며, 생성된 잔차 블록에 대해 변환, 양자화 및/또는 엔트로피 부호화를 수행하여 비트스트림을 출력할 수 있다.
상술한 실시예에 의하면, 초기 검색 위치가 어디로 결정되는지에 따라서, 검색 범위 내에 최소 오차 값을 갖는 픽셀이 포함되는지 여부가 결정될 수 있다. 또한, 초기 검색 위치 및 최소 오차 값을 갖는 픽셀의 위치 간의 상관성이 높을수록, 부호화기는 움직임 예측 시 최소 오차 값을 갖는 픽셀의 위치를 좀 더 효율적으로 찾을 수 있다. 따라서, 부호화 효율을 향상시키고 움직임 예측의 복잡도를 감소시키기 위해, 초기 검색 위치를 결정하는 다양한 방법들이 제공될 수 있다.
도 5는 초기 검색 위치 결정 방법의 일 실시예를 개략적으로 나타내는 도면이다.
도 5는 현재 블록(BLKCurrent)이 속한 현재 픽쳐(current picture, 510) 및 현재 블록(BLKCurrent)의 인터 예측에 사용되는 참조 픽쳐(reference picture, 520)를 도시한다. 도 5의 실시예에서, BLKB 및 BLKC는 현재 블록에 인접하여 위치한 주변 블록을 나타낼 수 있다.
도 5의 510을 참조하면, 부호화기는 현재 블록에 인접한 주변 블록의 움직임 벡터를 기반으로 현재 블록에 대해 복수의 후보 검색 위치를 결정할 수 있다.
예컨대, 부호화기는 영점 위치(516)를 기준으로, 현재 블록의 예측 움직임 벡터(MVPMV)가 나타내는 위치(513)를 현재 블록의 후보 검색 위치로 결정할 수 있다. 상술한 바와 같이, 예측 움직임 벡터는 AMVP 방식 또는 미디언 방식을 통해 결정될 수 있다. 예컨대, AMVP 방식이 적용되는 경우, 현재 블록의 예측 움직임 벡터(MVPMV)는 복원된 주변 블록의 움직임 벡터 및/또는 Col 블록의 움직임 벡터 등을 기반으로 도출될 수 있다. 따라서, 현재 블록의 예측 움직임 벡터는 복수 개일 수 있다. 도 5의 실시예에서는 설명의 편의상 하나의 예측 움직임 벡터(MVPMV)가 나타내는 후보 검색 위치(513)만이 도시되고 있으나, 본 발명은 이에 한정되는 것이 아니며 AMVP에서 사용되는 복수의 예측 움직임 벡터들은 모두 현재 블록의 후보 검색 위치 결정에 사용될 수 있다.
또한, 부호화기는 현재 블록(BLKCurrent)의 중앙에 위치한 영점 위치(zero point, 516)를 현재 블록의 후보 검색 위치로 결정할 수 있다. 여기서, 영점 위치(516)는 영 벡터(MVZero)에 의해 나타내어질 수 있으며, 일례로 상기 영 벡터(MVZero)는 (0,0)일 수 있다.
그리고, 부호화기는 영점 위치(516)를 기준으로, 현재 블록에 인접하여 위치한 주변 블록의 움직임 벡터가 나타내는 위치를 현재 블록의 후보 검색 위치로 결정할 수 있다. 예컨대, 부호화기는 현재 블록의 상단에 인접한 블록들 중에서 가장 좌측에 위치한 블록(BLKB)의 움직임 벡터(MVB)가 나타내는 위치(519)를 현재 블록의 후보 검색 위치로 결정할 수 있다. 도 5의 실시예에서는 현재 블록(BLKCurrent)의 주변에 위치한 블록들 중에서 블록 BLKB의 움직임 벡터가 나타내는 위치(519)만이 후보 검색 위치로 도시되고 있으나, 본 발명은 이에 한정되는 것이 아니다. 예컨대, 부호화기는 현재 블록(BLKCurrent)의 좌측에 인접한 블록의 움직임 벡터가 나타내는 위치를 후보 검색 위치로 결정할 수도 있으며, 현재 블록(BLKCurrent) 외부의 우측 상단 코너에 위치한 블록(BLKC)의 움직임 벡터가 나타내는 위치를 후보 검색 위치로 결정할 수도 있다.
복수의 후보 검색 위치가 결정되면, 부호화기는 복수의 후보 검색 위치(513, 516, 519) 각각에 대해 현재 블록에 대응되는 예측 블록을 생성할 수 있다. 그리고 부호화기는 생성된 예측 블록 각각에 대해 부호화 비용을 계산할 수 있다. 이 때, 부호화기는 복수의 후보 검색 위치(513, 516, 519) 중에서, 가장 작은 부호화 비용을 갖는 예측 블록에 대응되는 후보 검색 위치를 초기 검색 위치로 결정할 수 있다. 부호화 비용 계산 방법에 관한 실시예는 도 4에서 상술한 바 있으므로, 여기서는 이에 대한 구체적인 설명은 생략하기로 한다.
도 5의 520을 참조하면, 일례로 초기 검색 위치(513)는 현재 블록의 예측 움직임 벡터(MVPMV)가 나타내는 위치(513)로 결정될 수 있다. 이 때, 부호화기는 결정된 초기 검색 위치(513)를 기반으로 움직임 예측을 수행함으로써, 현재 블록에 대한 최적의 움직임 벡터를 생성할 수 있다.
상술한 바와 같이, 부호화기는 초기 검색 위치(513)를 기반으로 검색 범위(525)를 설정할 수 있다. 여기서, 초기 검색 위치(513)는 상기 검색 범위(525)의 중심에 위치할 수 있고, 검색 범위(525)의 크기 및/또는 형태는 소정의 크기 및/또는 형태로 정해질 수 있다. 이 때, 부호화기는 설정된 검색 범위(525) 내에서 움직임 예측을 수행함으로써, 최소 오차 값(또는 최소 부호화 비용)을 갖는 픽셀의 위치를 결정할 수 있다. 부호화기는 상기 결정된 위치를 나타내는 움직임 벡터를 현재 블록의 움직임 벡터로 결정할 수 있다.
상술한 실시예에 의하면, 부호화기는 초기 검색 위치를 결정함에 있어서, 현재 블록의 움직임 벡터와 유사한 값을 갖는 주변 블록의 움직임 벡터 값을 참조할 수 있다. 현재 블록에 인접한 주변 블록의 움직임 벡터는 많은 경우에서 현재 블록의 움직임 벡터와 유사할 수 있다. 그러나, 현재 블록 내의 움직임 및/또는 텍스쳐(texture)가 복잡하여 블록 분할 회수가 증가되는 경우 등에서는, 현재 블록의 움직임 벡터 및 주변 블록의 움직임 벡터 간의 상관성이 낮을 수 있다.
현재 블록의 움직임 벡터 및 주변 블록의 움직임 벡터 간의 상관성이 낮은 경우에 주변 블록의 움직임 벡터를 참조하여 초기 검색 위치가 결정된다면, 검색 범위 내에 최소 오차 값을 갖는 픽셀이 포함되지 않을 가능성이 높다. 또한, 이 경우에는 초기 검색 위치 및 최소 오차 값을 갖는 픽셀의 위치 간의 거리가 멀 가능성이 높으므로, 패턴 검색 시에 최소 오차 값을 갖는 픽셀을 찾기 위해 더 많은 픽셀 위치에서 움직임 예측을 수행해야 할 수도 있다.
따라서, 부호화 효율을 향상시키고 움직임 예측의 복잡도를 감소시키기 위해, 현재 블록에 인접한 주변 블록의 움직임 벡터를 참조하여 초기 검색 위치를 결정하는 방법 외에도 초기 검색 위치를 결정하는 다양한 방법들이 제공될 수 있다.
도 6은 본 발명에 따른 후보 검색 위치 결정 방법의 실시예를 개략적으로 나타내는 도면이다.
도 6의 실시예에서 점선 화살표는 움직임 예측에 의해 도출된 움직임 벡터를 의미할 수 있고, 실선 화살표는 도 5의 실시예에 따라 결정되는 후보 검색 위치를 나타내는 움직임 벡터(예컨대, 예측 움직임 벡터)를 의미할 수 있다.
영상 부호화 과정에서 부호화 대상 블록은 크기가 더 작은 하위 블록으로 더 분할될 수 있다. 이 경우, 부호화기는 분할되기 전의 부호화 대상 블록에 대해 움직임 예측을 수행한 후 분할된 하위 블록 각각에 대해서도 움직임 예측을 수행할 수 있다.
현재 블록이 부호화 대상 블록이 분할됨으로써 생성된 하위 블록이고 상기 부호화 대상 블록에 대한 움직임 예측이 이미 완료된 경우, 부호화기는 상기 부호화 대상 블록에서의 움직임 예측에 의해 도출된 움직임 벡터가 나타내는 위치를 후보 검색 위치로 결정할 수 있다.
또한, 부호화 대상 블록이 분할됨으로써 생성된 하위 블록은 복수 개일 수 있다. 따라서, 하위 블록에 해당되는 현재 블록의 움직임 예측이 수행되기 전에 상기 부호화 대상 블록 내에 이미 움직임 예측이 완료된 하위 블록이 존재할 수 있으며, 이는 상기 부호화 대상 블록 내에서 현재 블록에 인접하여 위치한 주변 블록일 수 있다. 이 때, 부호화기는 상기 움직임 예측이 완료된 하위 블록의 움직임 벡터가 나타내는 위치를 후보 검색 위치로 결정할 수 있다.
이하, 본 명세서에서는 설명의 편의상, 부호화 대상 블록이 분할됨으로써 생성된 하위 블록에 대해, 상기 하위 블록을 포함하는 부호화 대상 블록은 상위 블록이라 지칭하기로 한다. 예컨대, 현재 블록이 부호화 대상 블록이 분할됨으로써 생성된 하위 블록인 경우, 현재 블록을 포함하는 부호화 대상 블록은 현재 블록에 대한 상위 블록으로 볼 수 있다. 하위 블록은 상위 블록이 분할됨으로써 생성된 블록이므로, 상위 블록의 크기는 하위 블록의 크기보다 클 수 있다.
도 6의 610에서 BLK64x64는 최상위 블록을 나타내며, 일례로 최상위 블록의 크기는 64x64일 수 있다. 최상위 블록(BLK64x64)에 대한 상위 블록은 존재하지 않으므로, 최상위 블록에 대한 움직임 예측 수행 시 최상위 블록 내에는 후보 검색 위치를 결정하기 위해 사용될 수 있는 움직임 벡터가 존재하지 않을 수 있다. 즉, 최상위 블록에 대해서는 아직 움직임 예측이 수행되지 않은 상태이므로, 최상위 블록 내에서 사용될 수 있는 움직임 벡터가 존재하지 않을 수 있다.
따라서, 부호화기는 도 5의 실시예에서 상술한 방식에 의해 후보 검색 위치를 결정할 수 있다.
예컨대, 부호화기는 최상위 블록(BLK64x64)의 중앙에 위치한 영점 위치(613)를 최상위 블록(BLK64x64)의 후보 검색 위치로 결정할 수 있다. 여기서, 영점 위치(zero point, 613)는 영 벡터에 의해 나타내어질 수 있으며, 일례로 상기 영 벡터는 (0,0)일 수 있다. 또한, 부호화기는 영점 위치(613)를 기준으로, 최상위 블록(BLK64x64)의 예측 움직임 벡터(MVAMVP)가 나타내는 위치(616)를 최상위 블록(BLK64x64)의 후보 검색 위치로 결정할 수 있다.
도 6의 610에서는 설명의 편의상 영 벡터가 나타내는 위치(613)와 예측 움직임 벡터(MVAMVP)가 나타내는 위치(616)만이 후보 검색 위치로서 도시되고 있으나, 본 발명은 이에 한정되는 것은 아니다. 예컨대, 부호화기는 도 5의 실시예에서와 같이 최상위 블록(BLK64x64)에 인접한 주변 블록의 움직임 벡터가 지시하는 위치를 후보 검색 위치로 결정할 수도 있다.
도 6의 620은 움직임 예측이 수행된 최상위 블록(BLK64x64)을 도시한다. 도 6의 620에서 MV64x64는 최상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터를 나타낼 수 있으며, MV64x64는 최상위 블록(BLK64x64) 내에서 위치 623을 나타낼 수 있다.
도 6의 630을 참조하면, 최상위 블록(BLK64x64)은 복수의 하위 블록(BLK1 32x32, BLK2 32x32, BLK3 32x32, BLK4 32x32)으로 분할될 수 있다. 이 때, 일 실시예로 상기 복수의 하위 블록 각각은 32x32의 크기를 가질 수 있다. 일례로, 하위 블록 BLK1 32x32는 최상위 블록(BLK64x64) 내의 좌측 상단에 위치한 블록일 수 있고, 하위 블록 BLK2 32x32는 최상위 블록(BLK64x64) 내의 우측 상단에 위치한 블록일 수 있다. 또한, 하위 블록 BLK3 32x32는 최상위 블록(BLK64x64) 내의 좌측 하단에 위치한 블록일 수 있고, 하위 블록 BLK4 32x32는 최상위 블록(BLK64x64) 내의 우측 하단에 위치한 블록일 수 있다.
부호화기는 최상위 블록(BLK64x64)에 대한 움직임 예측을 수행한 후 각각의 하위 블록(BLK1 32x32, BLK2 32x32, BLK3 32x32, BLK4 32x32)에 대해서도 움직임 예측을 수행할 수 있다. 이 때, 부호화기는 일례로 BLK1 32x32, BLK2 32x32, BLK3 32x32, BLK4 32x32의 순서로 하위 블록에 대한 움직임 예측을 수행할 수 있다.
다시 도 6의 630을 참조하면, 부호화기는 하위 블록들 중에서 첫 번째 블록(BLK1 32x32)에 대해 움직임 예측을 수행할 수 있다. 이 때, 부호화기는 도 5의 실시예에 따라 도출되는 후보 검색 위치(633, 636) 및 상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터(MV64x64)가 나타내는 위치(639) 중에서 적어도 하나를 후보 검색 위치로 결정할 수 있다.
예컨대, 부호화기는 첫 번째 블록(BLK1 32x32)의 중앙에 위치한 영점 위치(633)를 후보 검색 위치로 결정할 수 있다. 여기서, 영점 위치(633)는 영 벡터에 의해 나타내어질 수 있다. 또한, 부호화기는 영점 위치(633)를 기준으로, 첫 번째 블록(BLK1 32x32)의 예측 움직임 벡터(MVAMVP)가 나타내는 위치(636)를 후보 검색 위치로 결정할 수 있다. 또한, 부호화기는 최상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터(MV64x64)가 나타내는 위치(639)를 후보 검색 위치로 결정할 수 있다.
도 6의 630에서는 첫 번째 블록(BLK1 32x32) 내의 후보 검색 위치로서 위치 633, 636, 639만을 도시하지만, 본 발명은 이에 한정되는 것은 아니다. 예컨대, 부호화기는 첫 번째 블록(BLK1 32x32)에 인접하여 위치한 주변 블록의 움직임 벡터가 나타내는 위치를 추가로 후보 검색 위치로 결정할 수도 있다.
도 6의 640은 최상위 블록(BLK64x64) 내의 첫 번째 블록(BLK1 32x32, 645)에 대해 움직임 예측 수행이 완료된 경우 두 번째 블록(BLK2 32x32)에 대해 후보 검색 위치를 결정하는 방법의 실시예를 나타낸다. 도 6의 640에서 MV1 32x32는 첫 번째 블록(BLK1 32x32, 645)에 대한 움직임 예측에 의해 생성된 움직임 벡터를 나타낼 수 있다. MV1 32x32는 첫 번째 블록(BLK1 32x32, 645) 내에서 위치 653을 나타낼 수 있다.
도 6의 640을 참조하면, 부호화기는 하위 블록들 중에서 두 번째 블록(BLK2 32x32)에 대해 움직임 예측을 수행할 수 있다. 이 때, 부호화기는 도 5의 실시예에 따라 도출되는 후보 검색 위치(662, 664), 상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터(MV64x64)가 나타내는 위치(666), 및 상위 블록(BLK64x64) 내에서 이미 움직임 예측이 완료된 다른 하위 블록(BLK1 32x32, 645)의 움직임 벡터(MV1 32x32)가 나타내는 위치(639) 중에서 적어도 하나를 후보 검색 위치로 결정할 수 있다. 여기서, 이미 움직임 예측이 완료된 다른 하위 블록(BLK1 32x32, 645)은, 상위 블록(BLK64x64) 내에서 움직임 예측 대상이 되는 하위 블록(BLK2 32x32)의 주변에 위치한 블록일 수 있다.
예컨대, 부호화기는 두 번째 블록(BLK2 32x32)의 중앙에 위치한 영점 위치(662)를 후보 검색 위치로 결정할 수 있다. 여기서, 영점 위치(662)는 영 벡터에 의해 나타내어질 수 있다. 또한, 부호화기는 영점 위치(662)를 기준으로, 두 번째 블록(BLK2 32x32)의 예측 움직임 벡터(MVAMVP)가 나타내는 위치(664)를 후보 검색 위치로 결정할 수 있다.
또한, 부호화기는 최상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터(MV64x64)가 나타내는 위치(639)를 후보 검색 위치로 결정할 수 있다. 그리고, 부호화기는 최상위 블록(BLK64x64) 내의 하위 블록들 중에서 이미 움직임 예측이 완료된 하위 블록(BLK1 32x32, 645)의 움직임 벡터(MV1 32x32)가 나타내는 위치(668)를 후보 검색 위치로 결정할 수 있다.
나머지 하위 블록들(BLK3 32x32, BLK4 32x32) 각각에 대해서도, 부호화기는 두 번째 블록(BLK2 32x32)에서와 유사한 방식으로 후보 검색 위치를 결정할 수 있다. 예컨대, 하위 블록 BLK3 32x32 및 BLK4 32x32 각각에 대해, 부호화기는 도 5의 실시예에 따라 도출되는 후보 검색 위치, 상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터(MV64x64)가 나타내는 위치, 및 상위 블록(BLK64x64) 내에서 이미 움직임 예측이 완료된 다른 하위 블록의 움직임 벡터가 나타내는 위치 중에서 적어도 하나를 후보 검색 위치로 결정할 수 있다.
도 6의 640에서는 두 번째 블록(BLK2 32x32) 내의 후보 검색 위치로서 위치 662, 664, 666, 668만을 도시하지만, 본 발명은 이에 한정되는 것은 아니다. 예컨대, 부호화기는 두 번째 블록(BLK2 32x32)에 인접하여 위치한 주변 블록의 움직임 벡터가 나타내는 위치를 추가로 후보 검색 위치로 결정할 수도 있다.
도 7은 본 발명에 따른 후보 검색 위치 결정 방법의 다른 실시예를 개략적으로 나타내는 도면이다.
도 7은 움직임 예측 대상이 되는 현재 블록(BLKCurrent)이 속한 현재 픽쳐(current picture, 710), 및 상기 현재 블록(BLKCurrent)의 인터 예측에 사용되는 참조 픽쳐(reference picture, 720)를 도시한다. 여기서, 참조 픽쳐(720)는 이미 부호화 및/또는 복호화가 완료된 픽쳐일 수 있으며, 참조 픽쳐(720)에 속한 블록들(BLKColocated, BLKA, BLKB, BLKC, BLKD, BLKE, BLKF)도 모두 부호화 및/또는 복호화가 완료된 블록들일 수 있다. 도 7의 실시예에서 BLKColocated에 대한 움직임 벡터는 MVColocated 라 하고, BLKA, BLKB, BLKC, BLKD, BLKE 및 BLKF에 대한 움직임 벡터는 각각 MVA, MVB, MVC, MVD, MVE 및 MVF이라 한다.
부호화기는 움직임 예측 시에 참조 픽쳐(720)에 속한 블록들의 움직임 벡터가 나타내는 위치를 현재 블록(BLKCurrent)의 후보 검색 위치로 결정할 수 있다.
예컨대, 부호화기는 참조 픽쳐(720) 내에서 현재 블록(BLKCurrent)과 공간적으로 동일한 위치(중첩된 위치)에 존재하는 블록(BLKColocated)의 움직임 벡터(MVColocated)가 나타내는 위치를 현재 블록(BLKCurrent)의 후보 검색 위치로 결정할 수 있다. 여기서, 참조 픽쳐(720) 내에서 현재 블록(BLKCurrent)과 공간적으로 동일한 위치(중첩된 위치)에 존재하는 블록(BLKColocated)은 ‘동일 위치 블록(collocated block)’으로 불릴 수 있다.
또한, 부호화기는 참조 픽쳐(720) 내에서 동일 위치 블록(BLKColocated)에 인접하여 위치한 주변 블록들(BLKA, BLKB, BLKC, BLKD, BLKE, BLKF)의 움직임 벡터(MVA, MVB, MVC, MVD, MVE 및 MVF)가 지시하는 위치들 중에서 적어도 하나를 현재 블록(BLKCurrent)의 후보 검색 위치로 결정할 수 있다. 도 7에서, 참조 픽쳐(720) 내의 블록들은 이미 부호화 및/또는 복호화가 완료된 블록들이므로, 동일 위치 블록뿐만 아니라 동일 위치 블록의 주변에 인접하여 위치한 모든 블록들의 움직임 벡터가 현재 블록의 후보 검색 위치 결정에 사용될 수 있다.
도 8은 본 발명에 따른 후보 검색 위치 결정 방법의 또 다른 실시예를 개략적으로 나타내는 도면이다.
도 8의 실시예에서 점선 화살표는 움직임 예측에 의해 도출된 움직임 벡터를 의미할 수 있고, 실선 화살표는 도 5의 실시예에 따라 결정되는 후보 검색 위치를 나타내는 움직임 벡터(예컨대, 예측 움직임 벡터)를 의미할 수 있다.
도 8은 상위 블록 BLK64x64, 상기 상위 블록이 분할됨으로써 생성된 하위 블록들 BLK1 32x32, BLK2 32x32, BLK3 32x32, BLK4 32x32 및 상기 상위 블록의 주변에 인접하여 위치한 블록 BLKA, BLKB, BLKC를 도시한다. 여기서, 일례로 상위 블록(BLK64x64)의 크기는 64x64일 수 있고, 하위 블록들(BLK1 32x32, BLK2 32x32, BLK3 32x32, BLK4 32x32)의 크기는 각각 32x32일 수 있다. 일례로, 하위 블록에 대한 움직임 예측은 BLK1 32x32, BLK2 32x32, BLK3 32x32, BLK4 32x32 의 순서로 수행될 수 있다.
또한, 도 8에서 MV64x64는 상위 블록(BLK64x64)에 대한 움직임 예측에 의해 생성된 움직임 벡터를 나타내고, MV1 32x32는 첫 하위 번째 블록(BLK1 32x32)에 대한 움직임 예측에 의해 생성된 움직임 벡터를 나타낼 수 있다. 또한, MVA, MVB, MVC은 각각 주변 블록 BLKA, BLKB, BLKC에 대한 움직임 예측에 의해 생성된 움직임 벡터를 나타낼 수 있다. 그리고, MVAMVP는 예측 움직임 벡터를 나타낼 수 있다.
도 5 내지 도 7에서 상술한 바와 같이, 부호화기는 다양한 방식에 의해 움직임 예측 대상 블록에 대한 후보 검색 위치를 결정할 수 있다. 예컨대, 현재 블록은 상위 블록이 분할됨으로써 생성된 하위 블록이라 가정한다. 이 때, 부호화기는 영점 위치(이하, 영점 위치를 나타내는 움직임 벡터는 제1 움직임 벡터라 함), 예측 움직임 벡터(이하, 제2 움직임 벡터라 함)가 나타내는 위치, 움직임 예측 대상 블록에 인접한 주변 블록의 움직임 벡터(이하, 제3 움직임 벡터라 함)가 나타내는 위치, 움직임 예측 대상 블록에 대한 상위 블록의 움직임 벡터(이하, 제4 움직임 벡터라 함)가 나타내는 위치, 상기 상위 블록 내의 하위 블록들 중에서 이미 움직임 예측이 완료된 블록의 움직임 벡터(이하, 제5 움직임 벡터라 함)가 나타내는 위치, 참조 픽쳐 내의 동일 위치 블록의 움직임 벡터(이하, 제6 움직임 벡터라 함)가 나타내는 위치, 및 참조 픽쳐 내에서 상기 동일 위치 블록의 주변에 인접하여 위치한 블록의 움직임 벡터(이하, 제7 움직임 벡터라 함)가 나타내는 위치 중에서 적어도 하나를 움직임 예측 대상 블록에 대한 후보 검색 위치로 결정할 수 있다.
상술한 제1 움직임 벡터 내지 제7 움직임 벡터는 현재 블록의 움직임 예측에 이용 가능한 움직임 벡터들의 세트를 구성할 수 있다. 이하, 본 명세서에서는 설명의 편의상 현재 블록의 움직임 예측에 이용 가능한 움직임 벡터들의 세트는 ‘움직임 벡터 세트’라 지칭하기로 한다.
부호화기는 움직임 벡터 세트를 구성하는 복수의 움직임 벡터 중에서 적어도 하나의 움직임 벡터를 조합함으로써, 새로운 움직임 벡터를 생성할 수 있다. 예컨대, 부호화기는 움직임 벡터 세트에 포함된 움직임 벡터 중에서 하나 이상의 움직임 벡터들의 평균 값, 최대 값, 최소 값 및/또는 가중치 합에 의해 생성된 값을 새로운 움직임 벡터 값으로 사용할 수 있다. 이 때, 부호화기는 새로운 움직임 벡터가 나타내는 위치를 후보 검색 위치로 결정할 수 있다.
도 8에서 부호화기가 상위 블록(BLK64x64) 내의 하위 블록들 중에서 두 번째 블록(BLK2 32x32)에 대해 움직임 예측을 수행하는 경우를 가정한다. 즉, 도 8의 실시예에서 움직임 예측 대상이 되는 현재 블록은 상위 블록(BLK64x64) 내의 하위 블록들 중에서 두 번째 블록(BLK2 32x32)일 수 있다.
이 때, 도 8에서, 상위 블록(BLK64x64), 상기 상위 블록의 주변의 인접하여 위치한 블록들(BLKA, BLKB, BLKC) 및 첫 번째 하위 블록(BLK1 32x32)은 이미 움직임 예측 수행이 완료된 블록일 수 있다. 이 경우 움직임 예측 수행이 완료된 블록 각각은 움직임 예측에 의해 생성된 움직임 벡터를 포함할 수 있다.
따라서, 도 8의 실시예에서 일례로 현재 블록(BLK2 32x32)의 움직임 예측에 이용 가능한 움직임 벡터들의 세트인 움직임 벡터 세트는, 상위 블록의 움직임 벡터(MV64x64), 상기 상위 블록의 주변의 인접하여 위치한 주변 블록들의 움직임 벡터(MVA, MVB, MVC), 첫 번째 하위 블록의 움직임 벡터(MV1 32x32), 및 예측 움직임 벡터(MVAMVP) 등을 포함할 수 있다. 도 8의 실시예에서 MV64x64는 (-6,6), MV1 32x32는 (-5,2), MVAMVP는 (8,-2), MVA는 (0,10), MVB는 (-3,10), MVC 는 (6,0)이라 가정한다.
이 때, 부호화기는 움직임 벡터 세트에 포함된 복수의 움직임 벡터 중에서 하나 이상의 움직임 벡터를 조합함으로써 새로운 움직임 벡터를 생성할 수 있다. 도 8의 실시예에서, 움직임 벡터 세트에 포함된 복수의 움직임 벡터 중에서 새로운 움직임 벡터의 생성에 사용되는 움직임 벡터는 상위 블록의 움직임 벡터(MV64x64), 첫 번째 하위 블록의 움직임 벡터(MV1 32x32), 및 예측 움직임 벡터(MVAMVP)라 가정한다.
일례로, 부호화기는 움직임 벡터들의 평균 값을 새로운 움직임 벡터 값으로 결정할 수 있다. 이 경우 새로운 움직임 벡터는 다음 수학식 2에 의해 계산될 수 있다.
[수학식 2]
X = (8-6-5)/3 = -1, Y = (-2+6+2)/3 = 2
MVMEAN = (X,Y) = (-1,2)
여기서, MVMEAN은 움직임 벡터에 포함된 움직임 벡터들의 평균에 의해 도출된 새로운 움직임 벡터를 나타낼 수 있다.
다른 예로, 부호화기는 움직임 벡터들의 X 성분 중에서 최대 값을 새로운 움직임 벡터의 X 성분 값으로 결정하고, 움직임 벡터들의 Y 성분 중에서 최대 값을 새로운 움직임 벡터의 Y 성분 값으로 결정할 수 있다. 이 경우 새로운 움직임 벡터는 다음 수학식 3에 의해 계산될 수 있다.
[수학식 3]
X=8, Y=6, MVMAX=(8,6)
여기서, MVMAX는 상술한 방법에 의해 새로이 도출된 움직임 벡터를 나타낼 수 있다.
또 다른 예로, 부호화기는 움직임 벡터들의 X 성분 중에서 최소 값을 새로운 움직임 벡터의 X 성분 값으로 결정하고, 움직임 벡터들의 Y 성분 중에서 최소 값을 새로운 움직임 벡터의 Y 성분 값으로 결정할 수 있다. 이 경우 새로운 움직임 벡터는 다음 수학식 4에 의해 계산될 수 있다.
[수학식 4]
X=-6, Y=-2, MVMIN=(-6,-2)
여기서, MVMIN는 상술한 방법에 의해 새로이 도출된 움직임 벡터를 나타낼 수 있다.
움직임 벡터 세트에 포함된 복수의 움직임 벡터 중에서 하나 이상의 움직임 벡터를 조합함으로써 새로운 움직임 벡터가 생성된 경우, 부호화기는 생성된 움직임 벡터가 나타내는 위치를 현재 블록(BLK2 32x32)의 후보 검색 위치로 결정할 수 있다.
한편, 상술한 실시예들에서와 같이 후보 검색 위치가 결정되면, 부호화기는 도 4의 실시예에서 상술한 바와 같이, 복수의 후보 검색 위치 중에서 최소의 부호화 비용을 갖는 위치를 초기 검색 위치로 결정할 수 있다. 이 때, 일례로 부호화기는 움직임 예측 대상 블록에 대해 도출된 모든 후보 검색 위치에 대해 부호화 비용을 계산함으로써, 초기 검색 위치를 결정할 수 있다. 그러나, 모든 후보 검색 위치에 대해 부호화 비용을 계산하는 방식은 복잡도가 높을 수 있다. 따라서, 부호화기는 초기 검색 위치 결정 과정에서 움직임 벡터들 간의 상관도를 기반으로 후보 검색 위치의 개수를 줄인 후에 초기 검색 위치를 결정할 수도 있다.
일 실시예로, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 예측 움직임 벡터(PMV)와의 차이 값이 가장 큰 움직임 벡터가 나타내는 위치를 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터 중에서, 예측 움직임 벡터(PMV)와의 차이 값이 큰 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택하고 상기 선택된 움직임 벡터가 나타내는 위치를 제거할 수도 있다. 여기서, 움직임 벡터 간의 차이 값은 일례로, X 성분 간의 차이의 절대값 및 Y 성분 간의 차이의 절대값을 더한 값에 해당될 수 있다.
다른 실시예로, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 예측 움직임 벡터(PMV)와의 차이 값이 가장 작은 움직임 벡터가 나타내는 위치 및 예측 움직임 벡터(PMV)가 나타내는 위치만을 후보 검색 위치로 사용할 수 있다. 즉, 이 경우 부호화기는 예측 움직임 벡터(PMV)와의 차이 값이 가장 작은 움직임 벡터가 나타내는 위치 및 예측 움직임 벡터(PMV)가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터 중에서, 예측 움직임 벡터(PMV)와의 차이 값이 작은 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택하고 상기 선택된 움직임 벡터가 나타내는 위치 및 예측 움직임 벡터(PMV)가 나타내는 위치만을 후보 검색 위치로 사용할 수도 있다. 즉, 이 경우 부호화기는 상기 소정의 개수의 움직임 벡터 및 상기 예측 움직임 벡터(PMV)가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다.
예컨대, 도 8에서 MV64x64, MV1 32x32, MVAMVP, MVA, MVB 및 MVC가 나타내는 위치가 현재 블록(MV2 32x32)의 후보 검색 위치로 결정된 경우를 가정한다. 여기서, 일례로 MV64x64는 (-6,6), MV1 32x32는 (-5,2), MVAMVP는 (8,-2), MVA는 (0,10), MVB는 (-3,10), MVC 는 (6,0)일 수 있다. 이 때, 후보 검색 위치를 나타내는 각각의 움직임 벡터와 예측 움직임 벡터(MVAMVP)의 차이 값은 다음 수학식 5에서와 같이 계산될 수 있다.
[수학식 5]
|MVAMVP - MV64x64| = |{8-(-6)}| + |(-2-6)| = 22
|MVAMVP - MV1 32x32| = |{8-(-5)}| + |(-2-2)| = 17
|MVAMVP - MVA| = |8-0| + |(-2-10)| = 20
|MVAMVP - MVB| = |{8-(-3)}| + |(-2-10)| = 23
|MVAMVP - MVC| = |8-6| + |(-2-0)| = 4
이 때, 부호화기는 일례로 예측 움직임 벡터와의 차이 값이 가장 큰 움직임 벡터(MVB)가 나타내는 위치를 후보 검색 위치에서 제거할 수 있다. 다른 예로 부호화기는 예측 움직임 벡터와의 차이 값이 가장 큰 움직임 벡터(MVB)가 나타내는 위치, 및 예측 움직임 벡터와의 차이 값이 MVB 다음으로 큰 움직임 벡터(MV64x64)가 나타내는 위치를 후보 검색 위치에서 제거할 수 있다. 여기서, 움직임 벡터 간의 차이 값은 일례로, X 성분 간의 차이의 절대값 및 Y 성분 간의 차이의 절대값을 더한 값에 해당될 수 있다.
또 다른 예로 부호화기는 예측 움직임 벡터(MVAMVP) 및 상기 예측 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터(MVC)가 나타내는 위치만을 후보 검색 위치로 사용할 수 있다. 이 경우, 부호화기는 움직임 벡터 MVAMVP 및 MVC가 나타내는 위치를 제외한 나머지 위치들을 후보 검색 위치에서 제거할 수 있다. 또 다른 예로 부호화기는 예측 움직임 벡터(MVAMVP), 상기 예측 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터(MVC)가 나타내는 위치, 및 상기 예측 움직임 벡터와의 차이 값이 MVC 다음으로 작은 움직임 벡터(MV1 32x32)가 나타내는 위치만을 후보 검색 위치로 사용할 수도 있다. 이 경우, 부호화기는 움직임 벡터 MVAMVP, MVC 및 MV1 32x32가 나타내는 위치를 제외한 나머지 위치들을 후보 검색 위치에서 제거할 수 있다.
또 다른 실시예로, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 상위 블록의 움직임 벡터와의 차이 값이 가장 큰 움직임 벡터가 나타내는 위치를 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터 중에서, 상위 블록의 움직임 벡터와의 차이 값이 큰 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택하고 상기 선택된 움직임 벡터가 나타내는 위치를 제거할 수도 있다.
또 다른 실시예로, 부호화기는 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 상위 블록의 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터가 나타내는 위치 및 상위 블록의 움직임 벡터가 나타내는 위치만을 후보 검색 위치로 사용할 수 있다. 즉, 이 경우 부호화기는 상위 블록의 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터가 나타내는 위치 및 상위 블록의 움직임 벡터가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 상위 블록의 움직임 벡터와의 차이 값이 작은 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택할 수 있고, 상기 선택된 움직임 벡터가 나타내는 위치 및 상위 블록의 움직임 벡터가 나타내는 위치만을 후보 검색 위치로 사용할 수도 있다. 즉, 이 경우 부호화기는 상기 소정의 개수의 움직임 벡터 및 상기 상위 블록의 움직임 벡터가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다.
예컨대, 도 8에서 MV64x64, MV1 32x32, MVAMVP, MVA, MVB 및 MVC가 나타내는 위치가 현재 블록(MV2 32x32)의 후보 검색 위치로 결정된 경우를 가정한다. 여기서, 일례로 MV64x64는 (-6,6), MV1 32x32는 (-5,2), MVAMVP는 (8,-2), MVA는 (0,10), MVB는 (-3,10), MVC 는 (6,0)일 수 있다. 이 때, 후보 검색 위치를 나타내는 각각의 움직임 벡터와 상위 블록의 움직임 벡터(MV64x64)의 차이 값은 다음 수학식 6에서와 같이 계산될 수 있다.
[수학식 6]
|MV64x64 - MVAMVP| = |-6-8| + |(6-(-2)}| = 22
|MV64x64 - MV1 32x32| = |{-6-(-5)}| + |(6-2)| = 5
|MV64x64 - MVA| = |-6-0| + |6-10| = 10
|MV64x64 - MVB| = |{-6-(-3)}| + |6-10| = 7
|MV64x64 - MVC| = |-6-6| + |6-0| = 18
이 때, 부호화기는 일례로 상위 블록의 움직임 벡터와의 차이 값이 가장 큰 움직임 벡터(MVAMVP)가 나타내는 위치를 후보 검색 위치에서 제거할 수 있다. 다른 예로 부호화기는 상위 블록의 움직임 벡터와의 차이 값이 가장 큰 움직임 벡터(MVAMVP)가 나타내는 위치, 및 상위 블록의 움직임 벡터와의 차이 값이 MVAMVP 다음으로 큰 움직임 벡터(MVC)가 나타내는 위치를 후보 검색 위치에서 제거할 수 있다.
또 다른 예로 부호화기는 상위 블록의 움직임 벡터(MV64x64) 및 상기 상위 블록의 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터(MV1 32x32)가 나타내는 위치만을 후보 검색 위치로 사용할 수 있다. 이 경우, 부호화기는 움직임 벡터 MV64x64 및 MV1 32x32가 나타내는 위치를 제외한 나머지 위치들을 후보 검색 위치에서 제거할 수 있다. 또 다른 예로 부호화기는 상위 블록의 움직임 벡터(MV64x64), 상기 상위 블록의 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터(MV1 32x32)가 나타내는 위치, 및 상기 상위 블록의 움직임 벡터와의 차이 값이 MV1 32x32 다음으로 작은 움직임 벡터(MVB)가 나타내는 위치만을 후보 검색 위치로 사용할 수도 있다. 이 경우, 부호화기는 움직임 벡터 MV64x64, MV1 32x32 및 MVB가 나타내는 위치를 제외한 나머지 위치들을 후보 검색 위치에서 제거할 수 있다.
또 다른 실시예로, 현재 블록(예컨대, 도 8의 MV2 32x32)이 상위 블록(예컨대, 도 8의 MV64x64)이 분할됨으로써 생성된 하위 블록인 경우, 상기 상위 블록 내에는 이미 움직임 예측이 수행된 다른 하위 블록(예컨대, 도 8의 MV1 32x32)이 존재할 수 있다. 이하, ‘다른 하위 블록’이라 함은, 현재 블록과 동일한 상위 블록에 속하면서 이미 움직임 예측이 수행된 하위 블록을 의미할 수 있다.
이 경우, 일례로 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 상기 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터와의 차이 값이 가장 큰 움직임 벡터가 나타내는 위치를 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터 중에서, 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터와의 차이 값이 큰 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택하고 상기 선택된 움직임 벡터가 나타내는 위치를 제거할 수도 있다.
또한 이 경우, 다른 예로 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터가 나타내는 위치 및 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터가 나타내는 위치만을 후보 검색 위치로 사용할 수 있다. 즉, 이 경우 부호화기는 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터와의 차이 값이 가장 작은 움직임 벡터가 나타내는 위치 및 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터와의 차이 값이 작은 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택할 수 있고, 상기 선택된 움직임 벡터가 나타내는 위치 및 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터가 나타내는 위치만을 후보 검색 위치로 사용할 수도 있다. 즉, 이 경우 부호화기는 상기 소정의 개수의 움직임 벡터 및 상기 다른 하위 블록(예컨대, 도 8의 MV1 32x32)의 움직임 벡터가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다.
다른 하위 블록의 움직임 벡터를 기반으로 후보 검색 위치에서 제거될 위치를 결정하는 방법의 구체적인 실시예는 상술한 수학식 5 및 수학식 6에서와 유사하므로, 여기서는 이에 대한 구체적인 설명은 생략하기로 한다.
또 다른 실시예로, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터들을 기반으로 상기 움직임 벡터들 각각에 대한 분산 값을 구할 수 있다. 이 때, 부호화기는 상기 분산 값을 기반으로 후보 검색 위치에서 제거될 위치를 결정할 수 있다.
일례로, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 가장 큰 분산 값을 갖는 움직임 벡터가 나타내는 위치를 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터 중에서, 분산 값이 큰 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택하고 상기 선택된 움직임 벡터가 나타내는 위치를 제거할 수도 있다.
다른 예로, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서, 가장 작은 분산 값을 갖는 움직임 벡터가 나타내는 위치만을 후보 검색 위치로 사용할 수 있다. 즉, 이 경우 부호화기는 가장 작은 분산 값을 갖는 움직임 벡터가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다. 또한, 부호화기는 현재 블록에 대해 도출된 복수의 후보 검색 위치를 나타내는 움직임 벡터 중에서, 분산 값이 작은 순서대로 소정의 개수(예컨대, 2개, 3개 또는 4개 등)의 움직임 벡터를 선택할 수 있고, 상기 선택된 움직임 벡터가 나타내는 위치만을 후보 검색 위치로 사용할 수도 있다. 즉, 이 경우 부호화기는 상기 소정의 개수의 움직임 벡터가 나타내는 위치를 제외한 나머지 위치들을 모두 제거할 수 있다.
분산 값을 기반으로 후보 검색 위치에서 제거될 위치를 결정하는 방법의 구체적인 실시예는 상술한 수학식 5 및 수학식 6에서와 유사하므로, 여기서는 이에 대한 구체적인 설명은 생략하기로 한다.
상술한 실시예들에 따라 현재 블록에 대해 도출된 복수의 후보 검색 위치 중에서 제거될 위치가 결정되면, 부호화기는 제거된 위치를 제외한 나머지 후보 검색 위치들 중에서 최적의 초기 검색 위치를 결정할 수 있다. 이 때, 일례로 부호화기는 제거된 위치를 제외한 나머지 후보 검색 위치들 중에서 최소의 부호화 비용을 갖는 위치를 초기 검색 위치로 결정할 수 있다.
상술한 실시예들에 의하면 부호화기는 현재 블록의 움직임 예측을 수행함에 있어, 현재 블록과의 상관성이 높은 블록의 움직임 벡터를 참조할 수 있다. 특히, 현재 블록이 속한 상위 블록 및 상기 상위 블록에 속한 다른 하위 블록은 현재 블록과의 상관성이 높으므로, 부호화기는 최소 오차 값을 갖는 픽셀의 위치를 더 효율적으로 찾을 수 있다.
또한, 상술한 실시예들에 따라 후보 검색 위치 결정 과정 및 초기 검색 위치 결정 과정이 수행되는 경우, 검색 범위 내에 최소 오차 값을 갖는 픽셀의 위치가 포함될 확률이 높아질 수 있다. 그리고 상술한 실시예들에 의하면, 패턴 검색과 같은 움직임 예측 과정에서 부호화기는 최소 오차 값을 갖는 픽셀의 위치를 더 빨리 찾을 수 있다. 따라서, 본 발명에 의하면 부호화 성능이 향상될 수 있다.
상술한 실시예들에서, 방법들은 일련의 단계 또는 블록으로서 순서도를 기초로 설명되고 있으나, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
상술한 실시예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.

Claims (1)

  1. 현재 블록에 대한 초기 검색 위치를 선택하는 단계;
    상기 초기 검색 위치를 기반으로 설정된 검색 범위 내에서 부호화 비용을 비교하여 상기 현재 블록의 움직임 벡터를 도출하는 단계;
    상기 도출된 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측(prediction)을 수행함으로써 예측 블록(prediction block)을 생성하는 단계; 및
    상기 예측 블록에 기초하여 복원 블록을 생성하는 단계를 포함하되,
    상기 검색 범위의 형태는 소정의 형태이고,
    상기 현재 블록의 움직임 벡터를 도출하는 단계는,
    상기 검색 범위 내에서 소정의 패턴에 의해 지시되는 픽셀들을 기반으로 패턴 검색을 수행하는 단계를 포함하고,
    상기 부호화 비용은 SAD(Sum of Absolute Difference)을 이용하여 계산되는 것을 특징으로 하는 인터 예측 방법.


KR1020200141110A 2020-01-21 2020-10-28 인터 예측 방법 및 그 장치 KR102281514B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200141110A KR102281514B1 (ko) 2020-01-21 2020-10-28 인터 예측 방법 및 그 장치
KR1020210094607A KR102380722B1 (ko) 2020-10-28 2021-07-20 인터 예측 방법 및 그 장치
KR1020220037464A KR102503694B1 (ko) 2020-10-28 2022-03-25 인터 예측 방법 및 그 장치
KR1020230022856A KR102618379B1 (ko) 2020-10-28 2023-02-21 인터 예측 방법 및 그 장치
KR1020230188027A KR20240004150A (ko) 2020-10-28 2023-12-21 인터 예측 방법 및 그 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200007766A KR102173576B1 (ko) 2020-01-21 2020-01-21 인터 예측 방법 및 그 장치
KR1020200141110A KR102281514B1 (ko) 2020-01-21 2020-10-28 인터 예측 방법 및 그 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200007766A Division KR102173576B1 (ko) 2020-01-21 2020-01-21 인터 예측 방법 및 그 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020210094607A Division KR102380722B1 (ko) 2020-10-28 2021-07-20 인터 예측 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20200126954A KR20200126954A (ko) 2020-11-09
KR102281514B1 true KR102281514B1 (ko) 2021-07-26

Family

ID=73429520

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200141110A KR102281514B1 (ko) 2020-01-21 2020-10-28 인터 예측 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102281514B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102479714B1 (ko) * 2021-01-18 2022-12-21 주식회사 엘지유플러스 움직임 예측에 있어 탐색 범위 결정을 이용한 인코딩, 디코딩 장치 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004241918A (ja) * 2003-02-04 2004-08-26 Handotai Rikougaku Kenkyu Center:Kk 動画像の画像圧縮符号化方法及び装置
US20050265454A1 (en) * 2004-05-13 2005-12-01 Ittiam Systems (P) Ltd. Fast motion-estimation scheme
US20060002474A1 (en) * 2004-06-26 2006-01-05 Oscar Chi-Lim Au Efficient multi-block motion estimation for video compression
JP2009520407A (ja) * 2005-12-15 2009-05-21 アナログ・デバイシズ・インコーポレーテッド 予測誘導間引き探索を使用する動き推定

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014181A (en) * 1997-10-13 2000-01-11 Sharp Laboratories Of America, Inc. Adaptive step-size motion estimation based on statistical sum of absolute differences
KR100498951B1 (ko) * 2003-01-02 2005-07-04 삼성전자주식회사 동영상 압축 부호화를 위한 움직임 예측 방법과 그기록매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004241918A (ja) * 2003-02-04 2004-08-26 Handotai Rikougaku Kenkyu Center:Kk 動画像の画像圧縮符号化方法及び装置
US20050265454A1 (en) * 2004-05-13 2005-12-01 Ittiam Systems (P) Ltd. Fast motion-estimation scheme
US20060002474A1 (en) * 2004-06-26 2006-01-05 Oscar Chi-Lim Au Efficient multi-block motion estimation for video compression
JP2009520407A (ja) * 2005-12-15 2009-05-21 アナログ・デバイシズ・インコーポレーテッド 予測誘導間引き探索を使用する動き推定

Also Published As

Publication number Publication date
KR20200126954A (ko) 2020-11-09

Similar Documents

Publication Publication Date Title
KR102558513B1 (ko) 영상 복호화 방법 및 컴퓨터로 읽을 수 있는 기록 매체
KR102070719B1 (ko) 인터 예측 방법 및 그 장치
KR102515824B1 (ko) 인터 예측 방법 및 그 장치
KR102281514B1 (ko) 인터 예측 방법 및 그 장치
KR102380722B1 (ko) 인터 예측 방법 및 그 장치
KR102173576B1 (ko) 인터 예측 방법 및 그 장치

Legal Events

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