KR101515696B1 - 기하학적 모션 파티셔닝을 위한 고정 소수점 구현 - Google Patents

기하학적 모션 파티셔닝을 위한 고정 소수점 구현 Download PDF

Info

Publication number
KR101515696B1
KR101515696B1 KR1020127029653A KR20127029653A KR101515696B1 KR 101515696 B1 KR101515696 B1 KR 101515696B1 KR 1020127029653 A KR1020127029653 A KR 1020127029653A KR 20127029653 A KR20127029653 A KR 20127029653A KR 101515696 B1 KR101515696 B1 KR 101515696B1
Authority
KR
South Korea
Prior art keywords
partition
value
block
mask
pixels
Prior art date
Application number
KR1020127029653A
Other languages
English (en)
Other versions
KR20130025903A (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 US13/012,126 external-priority patent/US8879632B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20130025903A publication Critical patent/KR20130025903A/ko
Application granted granted Critical
Publication of KR101515696B1 publication Critical patent/KR101515696B1/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/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/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/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/537Motion estimation other than block-based
    • H04N19/543Motion estimation other than block-based using regions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)

Abstract

일 예에서 장치는 비디오 인코더를 포함하고, 그 비디오 인코더는, 기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하며, 기울기 값 및 y-절편 값은 정수 값들을 포함하며, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 그 마스크에 기초하여 제 1 파티션 및 제 2 파티션을 인코딩하며, 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 및 y-절편 값을 출력하도록 구성된다. 이는 고정 소수점 구현을 허용할 수도 있다. 비디오 디코더는 그 마스크를 연산하기 위해 그 기울기 및 y-절편 값들을 수신하고 그 마스크에 기초하여 블록을 디코딩할 수도 있다.

Description

기하학적 모션 파티셔닝을 위한 고정 소수점 구현{FIXED POINT IMPLEMENTATION FOR GEOMETRIC MOTION PARTITIONING}
본 출원은 2010 년 2 월 18 일에 출원된 미국 가출원 번호 제 61/305,892 호, 2010 년 4 월 12 일에 출원된 미국 가출원 번호 61/323,233 호, 및 2010 년 4 월 12 일에 출원된 미국 가출원 번호 제 61/323,244 호에 대한 우선권을 주장하는데, 이들 각각의 전체 내용은 명백하게 본 명세서에 참조로서 통합된다.
관련 출원들에의 상호-참조
본 특허 출원은 다음의 공동 계류 중인 미국 특허 출원에 관련된다:
대리인 문서 번호는 제 101050U1 호이며, 본 출원과 동시에 출원되고, 본 출원의 양수인에게 양도되며, 그리고 명백하게 본 명세서에 참조로서 통합되는, 첸 (Chen) 등에 의한 "기하학적 모션 파티셔닝에 기인한 중첩 영역들의 평활화 (SMOOTHING OVERLAPPED REGIONS RESULTING FROM GEOMETRIC MOTION PARTITIONING)"; 대리인 문서 번호는 제 101050U2 호이며, 본 출원과 동시에 출원되고, 본 출원의 양수인에게 양도되며, 그리고 명백하게 본 명세서에 참조로서 통합되는, 첸 (Chen) 등에 의한 "기하학적 모션 파티셔닝을 위한 적응적 변환 크기 선택 (ADAPTIVE TRANSFORM SIZE SELECTION FOR GEOMETRIC MOTION PARTITIONING)"; 및 대리인 문서 번호는 제 101050U3 호이며, 본 출원과 동시에 출원되고, 본 출원의 양수인에게 양도되며, 그리고 명백하게 본 명세서에 참조로서 통합되는, 첸 (Chen) 등에 의한 "기하학적 모션 파티셔닝을 위한 모션 벡터들의 인코딩 (ENCODING MOTION VECTORS FOR GEOMETRIC MOTION PARTITIONING)".
기술분야
본 개시물은 비디오 코딩에 관련된다.
디지털 비디오 성능들은 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인휴대 정보 단말들 (personal digital assistants, PDAs), 랩톱 또는 데스크톱 컴퓨터들, 디지털 카메라들, 디지털 녹화 디바이스들, 디지털 미디어 재생기들, 비디오 게임 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 비디오 원격 화상 회의 디바이스들 (video teleconferencing devices) 등을 포함하는 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오 정보를 더 효율적으로 송신 및 수신하기 위하여, MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, 고급 비디오 코딩 (Advanced Video Coding; AVC) 에 의하여 정의되는 표준들 및 이러한 표준들의 확장판들에 설명되어 있는 것과 같은 비디오 압축 기술들을 구현한다.
비디오 압축 기술들은 공간 예측 및/또는 시간 예측을 수행하여 비디오 시퀀스에 내재된 리던던시 (redundancy) 를 감소시키거나 제거한다. 블록-기반 비디오 코딩에서는, 비디오 프레임 또는 슬라이스는 매크로블록들로 파티셔닝 (partitioning) 될 수도 있다. 각 매크로블록들은 더 파티셔닝될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스 내의 매크로블록들은 인접 매크로블록들에 대한 공간 예측을 이용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스 내의 매크로블록들은 동일한 프레임 또는 슬라이스 내의 인접 매크로블록들에 대한 공간 예측을 이용하거나 다른 기준 프레임들에 대한 시간 예측을 이용할 수도 있다.
일반적으로, 이 개시물은 비디오 블록들의 기하학적 모션 파티셔닝을 지원하기 위한 기술을 설명한다. 즉, 직사각형 블록을 두 개 이상의 엄격한 직사각형 파티션들로 파티셔닝하는 대신에, 이 개시물의 기술들은 임의의 파티션 경계를 이용하여 블록을 파티셔닝하기 위한 기술을 제공하는데, 이것이 기하학적 모션 파티셔닝이라고 불린다. 기하학적 모션 파티셔닝을 지원하기 위하여, 이 개시물은 파티션 경계에서의 파티션들의 중첩 부분들에 대하여 모션 보상을 수행하기 위한 기술을 제공한다. 또한, 이 개시물은 파티셔닝된 블록의 서브-블록들에 대한 변환 크기를 적응적으로 선택하기 위한 기술을 제공한다. 더 나아가, 이 개시물은 파티션들의 모션 벡터들을 개별적으로 인코딩하기 위한 기술을 제공한다. 더 나아가, 이 개시물의 기술들은 고정 소수점 (fixed point) 또는 부동 소수점 (floating point) 구현예들을 이용하여 수행될 수도 있다.
일 예에서, 방법은 비디오 데이터의 블록을 기하학적 모션 파티션 라인 (geometric motion partition line) 을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 단계, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀 (neighboring pixel) 에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역 (transition region) 내의 픽셀의 예측 값을 연산 (calculate) 하는 단계, 천이 영역 내의 픽셀의 예측 값에 기초하여 블록의 천이 영역 내의 픽셀의 잔여 값 (residual value) 을 연산하는 단계, 및 픽셀의 잔여 값을 출력하는 단계를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역 내의 픽셀의 예측 값을 연산하며, 천이 영역 내의 픽셀의 예측 값에 기초하여 블록의 천이 영역 내의 픽셀의 잔여 값을 연산하고, 픽셀의 잔여 값을 출력하도록 구성되는 비디오 인코더를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하기 위한 수단, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역 내의 픽셀의 예측 값을 연산하기 위한 수단, 천이 영역 내의 픽셀의 예측 값에 기초하여 블록의 천이 영역 내의 픽셀의 잔여 값을 연산하기 위한 수단, 및 픽셀의 잔여 값을 출력하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역 내의 픽셀의 예측 값을 연산하며, 천이 영역 내의 픽셀의 예측 값에 기초하여 블록의 천이 영역 내의 픽셀의 잔여 값을 연산하고, 그리고 픽셀의 잔여 값을 출력하게 한다.
다른 예에서, 방법은, 비디오 데이터의 인코딩된 블록, 인코딩된 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 기하학적 모션 파티션 라인의 정의, 및 블록의 천이 영역 내의 픽셀에 대한 잔여 값을 수신하는 단계, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역의 내의 픽셀에 대한 예측 값을 연산하는 단계, 예측 값 및 잔여 값에 기초하여 블록의 천이 영역 내의 픽셀에 대한 재구성 값 (reconstructed value) 을 연산하는 단계, 및 픽셀의 재구성 값을 출력하는 단계를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 인코딩된 블록, 인코딩된 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 기하학적 모션 파티션 라인의 정의, 및 블록의 천이 영역 내의 픽셀에 대한 잔여 값을 수신하고, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역의 내의 픽셀에 대한 예측 값을 연산하며, 예측 값 및 잔여 값에 기초하여 블록의 천이 영역 내의 픽셀에 대한 재구성 값을 연산하고, 그리고 픽셀의 재구성 값을 출력하도록 구성되는 비디오 디코더를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 인코딩된 블록, 인코딩된 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 기하학적 모션 파티션 라인의 정의, 및 블록의 천이 영역 내의 픽셀에 대한 잔여 값을 수신하기 위한 수단, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역의 내의 픽셀에 대한 예측 값을 연산하기 위한 수단, 예측 값 및 잔여 값에 기초하여 블록의 천이 영역 내의 픽셀에 대한 재구성 값을 연산하기 위한 수단, 및 픽셀의 재구성 값을 출력하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 비디오 데이터의 인코딩된 블록, 인코딩된 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 기하학적 모션 파티션 라인의 정의, 및 블록의 천이 영역 내의 픽셀에 대한 잔여 값을 수신하고, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값 및 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역의 내의 픽셀에 대한 예측 값을 연산하며, 예측 값 및 잔여 값에 기초하여 블록의 천이 영역 내의 픽셀에 대한 재구성 값을 연산하고, 그리고 픽셀의 재구성 값을 출력하게 한다.
다른 예에서, 방법은, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하는 단계로서, 블록은 NxN 픽셀들을 포함하는, 상기 파티셔닝하는 단계, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (non-overlapping) (N/2)x(N/2) 서브-블록들로 분할하는 단계, 및 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 인코딩하는 단계를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하고 여기서 블록은 NxN 픽셀들을 포함하며, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하며, 그리고 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 인코딩하도록 구성되는 비디오 인코더를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하기 위한 수단으로서, 블록은 NxN 픽셀들을 포함하는, 상기 파티셔닝하기 위한 수단, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하기 위한 수단, 및 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 인코딩하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하고 여기서 블록은 NxN 픽셀들을 포함하며, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하며, 그리고 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 인코딩하게 한다.
다른 예에서, 방법은, 기하학적 모션 파티션 라인에 의하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하는 단계로서, 블록은 NxN 픽셀들을 포함하는, 상기 수신하는 단계, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하는 단계, 및 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 역변환하는 단계를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인에 의하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고 여기서 블록은 NxN 픽셀들을 포함하며, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하며, 그리고 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 역변환하도록 구성되는 비디오 디코더를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인에 의하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하기 위한 수단으로서, 블록은 NxN 픽셀들을 포함하는, 상기 수신하기 위한 수단, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하기 위한 수단, 및 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 역변환하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 기하학적 모션 파티션 라인에 의하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고 여기서 블록은 NxN 픽셀들을 포함하며, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하며, 그리고 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 역변환하게 한다.
다른 예에서, 방법은, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 단계, 제 1 파티션에 대한 제 1 모션 벡터 및 제 2 파티션에 대한 제 2 모션 벡터를 결정하는 단계, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기 (motion predictor) 에 기초하여 제 1 모션 벡터를 인코딩하는 단계, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 모션 벡터를 인코딩하는 단계로서, 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접하는 블록들과는 독립적으로 결정되는, 상기 제 2 모션 벡터를 인코딩하는 단계, 및 인코딩된 제 1 및 제 2 모션 벡터들을 출력하는 단계를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 제 1 파티션에 대한 제 1 모션 벡터 및 제 2 파티션에 대한 제 2 모션 벡터를 결정하며, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 모션 벡터를 인코딩하고, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 모션 벡터를 인코딩하며 여기서 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접하는 블록들과는 독립적으로 결정되며, 그리고 인코딩된 제 1 및 제 2 모션 벡터들을 출력하도록 구성되는 비디오 인코더를 포함한다.
다른 예에서, 장치는, 비디오 데이터의 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하기 위한 수단, 제 1 파티션에 대한 제 1 모션 벡터 및 제 2 파티션에 대한 제 2 모션 벡터를 결정하기 위한 수단, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 모션 벡터를 인코딩하기 위한 수단, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 모션 벡터를 인코딩하기 위한 수단으로서, 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접하는 블록들과는 독립적으로 결정되는, 상기 제 2 모션 벡터를 인코딩하기 위한 수단, 인코딩된 제 1 및 제 2 모션 벡터들을 출력하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 파티셔닝된 블록에 인접하는 블록들의 일 세트를 결정하고, 제 1 파티션에 인접하는 블록들을 포함하는 블록들의 세트의 제 1 서브세트를 결정하며, 그리고 제 2 파티션에 인접하는 블록들을 포함하는 블록들의 세트의 제 2 서브세트를 제 1 서브세트의 결정과는 독립적으로 결정하게 한다.
다른 예에서, 방법은, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 블록, 제 1 파티션에 대한 제 1 인코딩된 모션 벡터 및 제 2 파티션에 대한 제 2 인코딩된 모션 벡터를 수신하는 단계, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 인코딩된 모션 벡터를 디코딩하는 단계, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 인코딩된 모션 벡터를 디코딩하는 단계로서, 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접한 블록들과는 독립적으로 결정되는, 상기 제 2 인코딩된 모션 벡터를 디코딩하는 단계, 및 디코딩된 제 1 및 제 2 모션 벡터들을 이용하여 블록을 디코딩하는 단계를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 블록, 제 1 파티션에 대한 제 1 인코딩된 모션 벡터 및 제 2 파티션에 대한 제 2 인코딩된 모션 벡터를 수신하고, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 인코딩된 모션 벡터를 디코딩하며, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 인코딩된 모션 벡터를 디코딩하고 여기서 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접한 블록들과는 독립적으로 결정되며, 그리고 디코딩된 제 1 및 제 2 모션 벡터들을 이용하여 블록을 디코딩하도록 구성되는 비디오 디코더를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 블록, 제 1 파티션에 대한 제 1 인코딩된 모션 벡터 및 제 2 파티션에 대한 제 2 인코딩된 모션 벡터를 수신하기 위한 수단, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 인코딩된 모션 벡터를 디코딩하기 위한 수단, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 인코딩된 모션 벡터를 디코딩하기 위한 수단으로서, 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접한 블록들과는 독립적으로 결정되는, 상기 제 2 인코딩된 모션 벡터를 디코딩하기 위한 수단, 및 디코딩된 제 1 및 제 2 모션 벡터들을 이용하여 블록을 디코딩하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 블록, 제 1 파티션에 대한 제 1 인코딩된 모션 벡터 및 제 2 파티션에 대한 제 2 인코딩된 모션 벡터를 수신하고, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 인코딩된 모션 벡터를 디코딩하며, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 인코딩된 모션 벡터를 디코딩하고 여기서 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접한 블록들과는 독립적으로 결정되며, 그리고 디코딩된 제 1 및 제 2 모션 벡터들을 이용하여 블록을 디코딩하게 한다.
다른 예에서, 방법은, 기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 단계, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하는 단계로서, 기울기 값 및 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 연산하는 단계, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하는 단계, 마스크에 기초하여 제 1 파티션 및 제 2 파티션을 인코딩하는 단계, 및 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 및 y-절편 값을 출력하는 단계를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하며 여기서 기울기 값 및 y-절편 값은 정수 값들을 포함하며, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 마스크에 기초하여 제 1 파티션 및 제 2 파티션을 인코딩하며, 그리고 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 그리고 y-절편 값을 출력하도록 구성되는 비디오 인코더를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하기 위한 수단, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하기 위한 수단으로서, 기울기 값 및 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 연산하기 위한 수단, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하기 위한 수단, 마스크에 기초하여 제 1 파티션 및 제 2 파티션을 인코딩하기 위한 수단, 및 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 및 y-절편 값을 출력하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하며 여기서 기울기 값 및 y-절편 값은 정수 값들을 포함하며, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 마스크에 기초하여 제 1 파티션 및 제 2 파티션을 인코딩하며, 및 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 그리고 y-절편 값을 출력하게 한다.
다른 예에서, 방법은, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하는 단계, 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하는 단계로서, 기울기 값 및 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 수신하는 단계, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하는 단계, 마스크에 기초하여 블록의 제 1 파티션 및 제 2 파티션을 디코딩하는 단계, 및 디코딩된 블록을 출력하는 단계를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고, 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하며 여기서 기울기 값 및 y-절편 값은 정수 값들을 포함하며, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 마스크에 기초하여 블록의 제 1 파티션 및 제 2 파티션을 디코딩하며, 그리고 디코딩된 블록을 출력하도록 구성되는 비디오 디코더를 포함한다.
다른 예에서, 장치는, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하기 위한 수단, 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하기 위한 수단으로서, 기울기 값 및 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 수신하기 위한 수단, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하기 위한 수단, 마스크에 기초하여 블록의 제 1 파티션 및 제 2 파티션을 디코딩하기 위한 수단, 및 디코딩된 블록을 출력하기 위한 수단을 포함한다.
다른 예에서, 컴퓨터 프로그램 제품은, 명령들을 저장한 컴퓨터 판독가능 매체를 포함하고, 명령들은, 실행되는 경우, 프로세서로 하여금, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고, 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하며 여기서 기울기 값 및 y-절편 값은 정수 값들을 포함하며, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 마스크에 기초하여 블록의 제 1 파티션 및 제 2 파티션을 디코딩하며, 그리고 디코딩된 블록을 출력하게 하게 한다.
하나 이상의 예들의 세부 사항들은 첨부된 도면들 및 후술되는 상세한 설명에서 진술된다. 다른 특징들, 목적들, 및 장점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 기하학적 모션 파티셔닝을 위한 기술들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2 는 기하학적 모션 파티셔닝을 위한 기술들을 구현할 수도 있는 비디오 인코더의 일 예를 예시하는 블록도이다.
도 3 은 기하학적 모션 파티셔닝된 블록들을 포함하는 인코딩된 비디오 시퀀스를 디코딩할 수도 있는 비디오 디코더의 일 예를 예시하는 블록도이다.
도 4 는 기하학적 모션 파티션 라인을 이용하여 파티셔닝된 블록 및 그 기하학적 모션 파티션 라인을 정의하는데 이용되는 파라미터들을 예시하는 개념도이다.
도 5 는 기하학적 모션 파티션 라인을 이용하여 파티셔닝된 블록 및 기하학적 모션 파티션 라인에 근접한 천이 영역 내의 픽셀들을 예시하는 개념도이다.
도 6 은 3x3 픽셀 어레이를 예시하는 개념도이다.
도 7 은 기하학적 모션 파티션 라인으로써 파티셔닝된 블록에 대한 잔여 값을 연산할 때 평활화를 수행하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 8 은 적응적 변환 크기 선택을 이용하여 변환될 예시적인 일 블록을 예시하는 개념도이다.
도 9 는 적응적 변환 크기 선택을 이용하여 변환될 다른 예시적인 블록의 개념도이다.
도 10 은 NxN 블록의 서브-블록들에 대한 변환 크기들을 결정하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 11 은 기하학적 파티셔닝된 블록 및 인접하는 서브-블록들을 예시하는 블록도이다.
도 12 는 비디오 데이터의 블록의 기하학적 모션 파티션들의 모션 벡터들을 인코딩하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 13 은 고정 소수점 구현예를 이용하여 비디오 데이터의 블록을 인코딩하기 위한 예시적인 방법을 예시하는 흐름도이다.
일반적으로, 이 개시물은 비디오 블록들의 기하학적 모션 파티셔닝을 지원하기 위한 기술들을 설명한다. 즉, 직사각형 블록을 두 개 이상의 엄격한 직사각형 파티션들로 파티셔닝하는 대신에, 이 개시물의 기술들은 임의의 파티션 경계를 이용하여 블록을 파티셔닝하기 위한 기술을 제공하는데, 이것이 기하학적 모션 파티셔닝이라고 불린다. 파티션 라인은 두 개의 파라미터들을 이용하여 정의될 수도 있는데, 이것은 파티션 라인에 수직이며 파티셔닝된 블록의 중심점에서부터 발생한 라인 세그먼트인 수직 라인의 길이 로 (ρ) 및 파티셔닝된 블록의 중심점을 통과하는 수평 라인에 대한 위 수직 라인의 각도인 세타 (θ) 이다. 몇 가지 예들에서, 파티션 라인은 각 파티션의 픽셀들을 한정하는 계단 모양의 라인에 의해 실현됨으로써, 파티션 라인이 블록의 어느 픽셀들도 통과하지 않도록 할 수도 있다.
예시 및 설명의 목적들을 위하여, 이 개시물은 매크로블록의 기하학적 모션 파티셔닝을 위한 기술들을 설명한다. 그러나, 이러한 기술들은 일반적으로 비디오 데이터의 임의의 블록을 파티셔닝하는 데에도 적용될 수 있다는 것이 이해되어야 한다. 매크로블록이라는 용어는, 2차원 픽셀 어레이로서 전형적으로는 16x16 픽셀들의 크기를 가지는 픽셀 어레이를 이용하여, 디지털 픽쳐 및 비디오 데이터를 코딩하기 위한 데이터 구조를 가리킨다. 매크로블록은 색차 데이터 (chrominance data) 및 휘도 데이터 (luminance data) 를 포함할 수도 있다. 전형적으로는, 색차 데이터는 수평으로 그리고 수직으로 2 의 인자에 의하여 휘도 데이터에 비하여 다운샘플링된다. 그러므로, 매크로블록은 네 개의 휘도 블록들 및 두 개의 색차 블록들을 포함할 수도 있다. 네 개의 휘도 블록들 각각은 8x8 픽셀들을 포함할 수도 있으며, 매크로블록의 각 모서리는 휘도 블록들 중 정확히 하나의 모서리에 의하여 접촉될 수도 있다. 두 개의 색차 블록들은 8x8 픽셀 블록들일 수도 있음으로써, 색차 블록들 각각의 모서리들이 매크로블록의 개별 모서리들에 접촉할 수도 있다. 그러므로, 색차 블록들은 서로와 그리고 휘도 블록들과 중첩될 수도 있다.
전형적으로, 비디오 코딩 표준들은 비디오 데이터의 블록을 인코딩하기 위한 다양한 예측 모드들을 제공한다. 인트라-예측은 슬라이스 또는 프레임의 블록을 동일한 슬라이스 또는 프레임의 다른 블록들에 상대적으로 인코딩하는 것을 수반한다. 인터-예측은 모션 추정 및 모션 보상 기술들을 이용하여 슬라이스 또는 프레임의 블록을 하나 이상의 다른 슬라이스들 또는 프레임들에 상대적으로 인코딩하는 것을 허용한다.
일반적으로 기하학적 모션 파티셔닝에 대한 것인 이 개시물의 기술들은 임의의 파티션 크기들 및 형상들을 허용할 수도 있다. 즉, 위에서 설명된 로 및 세타 값들을 이용하여 정의되는 파티션 라인은 매크로블록을 인코딩하기 위하여 비-직사각형 파티션들이 이용되도록 할 수도 있다. 특히, 이 개시물의 기술들은 기하학적 모션 파티션들을 위한 모션 벡터들을 생성하기 위한 기술들 및 기하학적 모션 파티션들에 기초하여 모션 보상을 수행하기 위한 기술들을 설명한다. 기하학적 모션 파티션 라인은 블록을 직사각형 파티션들로 파티셔닝하는 데에 한정되지 않는다. 비록 몇 가지 예들에서는 기하학적 모션 파티션 라인이 NxN 블록을 NxM 블록으로 파티셔닝 할 수도 있지만, 기하학적 모션 파티셔닝은 하나의 블록을, 이를테면 삼각형 파티션과 같은 비-직사각형 파티션들로 파티셔닝하는 성능도 제공한다. 이러한 방식으로, 기하학적 모션 파티션 라인은 어느 블록의 하나의 수평 경계 및 그 블록의 하나의 수직 경계와 만날 수도 있다.
몇 가지 예들에서, 기하학적 모션 파티셔닝을 지원하는 것은 수정된 모션 보상 기술들을 이용하는 것을 포함한다. 특히, 수정된 모션 보상 기술들은 기하학적 모션 파티션 라인 근처의 천이 영역 내의 픽셀들에 대한 평활화 필터를 제공할 수도 있다. 이 개시물의 모션 보상 기술들은 이러한 중첩 픽셀들에 대한 잔여 값들을 결정하는 것을 포함할 수도 있다. 일 예에서, 이 개시물의 기술들은 이러한 경계 영역 내에서 모션 보상을 수행할 저역-통과 필터 (예를 들어, 평활화 필터) 를 정의한다. 즉, 기하학적 모션 파티션 라인에서의 파티션들 간의 천이를 평활화하는 다양한 필터들이 정의될 수도 있다. 만일 어떤 픽셀이 이러한 천이 영역에 속한다면, 해당 픽셀에 대한 모션 보상은, 이들 필터들 중 하나를 적용하여 해당 픽셀에 대한 예측 값을 결정하고 그리고 이러한 예측 값 및 인코딩될 픽셀의 값 간의 차분 (difference) 을 결정함으로써 수행될 수도 있는데, 여기서 이 필터는 해당 파티션들에 대한 모션 벡터들에 의하여 식별되는 예측 블록들로부터의 값들을 적용한다. 이러한 차분이 해당 픽셀에 대한 잔여 값을 나타낼 수도 있다.
다른 예에서는, 기하학적으로 파티셔닝된 블록의 경계 영역에서 모션 보상을 수행하려면, 가중 평균 (weighted average) 이 이용될 수도 있다. 즉, 어떤 픽셀에 대한 모션 보상된 값을 결정하기 위하여, 두 개의 파티션들로부터 해당 픽셀에 대한 값들의 가중 평균이 연산될 수도 있다. 그 픽셀이 상대적으로 더 가까이 위치한 파티션에 대한 값에는 다른 파티션에 대한 값보다 더 무겁게 가중치가 부여될 수도 있다. 픽셀에 대한 예측 값이 이러한 방식으로 연산될 수 있고, 그리고 예측 값은 잔여 값을 연산하거나 또는 수신된 잔여 값을 예측 값에 적용함으로써 인코딩된 블록을 재구성하는데 이용될 수도 있다.
또한, 이 개시물은 기하학적 모션 파티션을 이용하여 파티셔닝된 블록의 잔여 (residual) 를 인코딩하기 위한 기술들도 포함한다. 기하학적 파티션을 가지는 블록의 잔여를 인코딩하려면, 파티션 라인의 포지션에 기초하여 적응적 변환 크기가 이용될 수도 있다. 일반적으로, NxN 픽셀들을 가지는 각 서브-블록에 대하여, 파티션이 해당 블록을 통과해 지나가지 않는다면 서브-블록의 잔여는 NxN 변환 크기를 이용하여 인코딩될 수도 있다; 그렇지 않다면, NxN 서브-블록은 N/2xN/2 서브-블록들로 다시 분할될 수도 있는데, 이들 각각은 파티션 라인이 해당 서브-블록들을 통과해 지나가는지 여부에 대하여 재분석될 수도 있다.
예를 들어, 블록 크기가 16x16 이라고 가정한다. 내부의 8x8 서브-블록 각각에 대하여, 8x8 블록 내의 모든 픽셀들이 동일한 파티션에 속한다면 8x8 변환이 이용될 수도 있다; 그렇지 않다면, 네 개의 4x4 변환들이 이용될 수도 있다. 다른 예로서, 블록 크기가 32x32 또는 64x64 라면, 각 32x32 또는 16x16 내부 서브-블록에 대하여, 16x16 블록 내부의 모든 픽셀들이 동일한 파티션에 속한다면 16x16 변환이 이용될 수도 있다; 그렇지 않다면 각 16x16 서브-블록에 대하여 로직이 반복될 수도 있다.
이 개시물은 더 나아가 기하학적 모션 파티션 라인을 이용하여 파티셔닝된 블록의 파티션들에 대한 모션 벡터들을 인코딩하기 위한 기술들을 제공한다. 이러한 기술들은 모션 벡터들에 대한 모션 예측기들을 선택하는 것을 포함할 수도 있고, 모션 예측기들에 대한 후보들은 동일한 블록의 두 개의 파티션들의 모션 벡터들에 대해서 상이할 수도 있다. 모션 예측기들에 대한 후보들은 종래 기술의 인코딩 표준들에 대한 것들보다 더 많은 잠재적 모션 예측기들을 포함할 수도 있다.
또한, 이 개시물의 기술들은 고정 소수점 구현에 또한 적용될 수 있다. 특히, 기하학적 모션 파티션 라인은 라인의 기울기 (m) 및 y-절편 (c) 을 나타내는 고정 소수점 (예를 들어 정수) 값들을 이용하여 정의될 수 있다. 인코더 및 디코더는 각각 고정 소수점 연산 (fixed point arithmetic) 을 이용하여 기하학적 모션 파티션을 평가하도록 구성되어, 이 인코더 및 디코더가 고정 소수점 값들로부터 동일한 마스크들을 생성하도록 할 수도 있다. 인코더 및 디코더는 다음과 같이 마스크를 연산하도록 구성될 수도 있다: 마스크의 각 점 (x, y) 에 대하여, 마스크 내의 (x, y) 에 있는 점의 값은 y - m*x < c 라면 1 이고, 마스크 내의 (x, y) 에 있는 점의 값은 y - m*x >= c 라면 0 이다. 이러한 방식으로, 인코더 및 디코더는 (개별 x-값들 및 y-값들에 의하여 정의되는 점들의 세트를 포함하는) 마스크를 연산하도록 구성될 수가 있음으로써, 마스크 내의 각 점에 대하여 마스크 내의 점의 값이 그 점의 y-값과, 라인의 기울기 값 및 그 점의 x-값의 곱 (product) 간의 차분치가 그 라인의 y-절편 값보다 큰지 여부를 나타내는 값으로 설정될 수 있도록 한다. 마스크 내의 각 점의 값은 1-비트 값을 가질 수도 있다.
마스크 내의 0 의 값을 가지는 점들은 영역 0 에 대응하고, 그리고 마스크 내의 1 의 값을 가지는 점들은 영역 1 에 대응한다. 기하학적 모션 파티션에 의하여 정의되는 바와 같이, 영역 0 이 한 파티션일 수 있고 영역 1 이 다른 파티션일 수도 있다. 그러므로, 부동 소수점 연산을 이용하여 기하학적 모션 파티션의 중심점까지의 거리 로 (ρ) 및 각도 세타 (θ) 로부터 마스크들을 연산하는 대신에, 인코더 및 디코더는 각도 값 및 중심점 값들에 기초하여 기울기 (m) 및 y-절편 (c) 에 대한 고정 소수점의 정수 값들을 이용하여 마스크들을 연산하도록 구성될 수도 있다. 또한, 이 개시물의 기술들은 특정 블록 또는 블록들의 세트에 대하여 기하학적 모션 파티셔닝이 이용되는지 여부 및 이용된다면 해당 블록 또는 블록들의 세트에 대하여 고정 소수점이 이용되어야 하는지 또는 부동 소수점 연산 (operation) 들이 이용되어야 하는지를 시그널링하는 것을 포함할 수도 있다.
도 1 은 기하학적 모션 파티셔닝을 위한 기술들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시하는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 인코딩된 비디오를 통신 채널 (16) 을 통하여 목적지 디바이스 (14) 로 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 몇 가지 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 핸드셋들, 소위 셀룰러 또는 위성 무선 전화기들, 또는 통신 채널 (16) 상에서 비디오 정보를 통신할 수 있는 임의의 무선 디바이스들을 포함할 수도 있는데, 이 경우에는 통신 채널 (16) 은 무선이다. 그러나, 기하학적 모션 파티셔닝에 대한 이 개시물의 기술들은 무선 애플리케이션들 또는 세팅들에 반드시 한정되는 것은 아니다. 예를 들어, 이러한 기술들은 공중파 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 인터넷 비디오 송신들, 저장 매체 상에 인코딩되는 인코딩된 디지털 비디오, 또는 다른 시나리오들에도 적용될 수도 있다. 따라서, 통신 채널 (16) 은 인코딩된 비디오 데이터의 송신에 적합한 무선 또는 유선 매체의 모든 조합을 포함할 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (모뎀) (22) 및 송신기 (24) 를 포함한다. 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 이 개시물에 따르면, 소스 디바이스 (12) 의 비디오 인코더 (20) 는 기하학적 모션 파티셔닝을 위한 기술들을 적용하도록 구성될 수도 있다. 다른 예들에서, 소스 디바이스 및 목적지 디바이스는 다른 구성 요소들 또는 장치들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스 (18) 로부터 비디오 데이터를 수신할 수도 있다. 유사하게, 목적지 디바이스 (14) 는 내장된 디스플레이 디바이스를 포함하는 대신에 외부 디스플레이 디바이스와 인터페이싱할 수도 있다.
도 1 의 예시된 시스템 (10) 은 단지 한 예일 뿐이다. 기하학적 모션 파티셔닝을 위한 기술들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 장치에 의해서 수행될 수도 있다. 비록 일반적으로 이 개시물의 기술들이 비디오 인코딩 디바이스에서 수행되지만, 이 기술들은 전형적으로는 "코덱" 이라고 불리는 비디오 인코더/디코더에 의해서도 수행될 수 있다. 더 나아가, 이 개시물의 기술들의 일정한 양태들은 비디오 전프로세서 (preprocessor) 에 의해서도 수행될 수 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소스 디바이스 (12) 가 목적지 디바이스 (14) 로 송신될 코딩된 비디오 데이터를 생성하는 이러한 코딩 디바이스들의 예들에 불과하다. 몇 가지 예들에서, 디바이스들 (12, 14) 은 실질적으로 대칭적인 방식으로 동작함으로써, 디바이스들 (12, 14) 각각이 비디오 인코딩 및 디코딩 구성 요소들을 포함하도록 할 수도 있다. 그러므로, 시스템 (10) 은, 예를 들어 비디오 스트리밍, 비디오 재생, 비디오 브로드캐스팅, 또는 화상 통화 (video telephony) 를 위한 단방향 또는 양방향 비디오 송신을 디바이스들 (12, 14) 사이에서 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 이를테면 비디오 카메라와 같은 비디오 캡쳐 디바이스, 예전에 캡쳐된 비디오를 포함하는 비디오 저장소, 및/또는 비디오 콘텐츠 제공자로부터의 비디오 피드 (video feed) 를 포함할 수도 있다. 다른 대안으로서, 비디오 소스 (18) 는 소스 비디오로서 컴퓨터 그래픽-기반 데이터를 생성하거나, 실시간 비디오, 저장된 비디오, 및 컴퓨터에 의하여 생성된 비디오의 조합을 생성할 수 있다. 몇 가지 경우들에서, 비디오 소스 (18) 가 비디오 카메라라면, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 소위 카메라 전화기들 또는 비디오 전화기들을 형성할 수도 있다. 그러나, 위에서 언급된 바와 같이, 이 개시물 내에서 설명되는 기술들은 일반적인 비디오 코딩에 적용될 수도 있으며, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각 경우에서, 캡쳐되거나, 사전-캡쳐되거나, 또는 컴퓨터에 의하여 생성된 비디오는 비디오 인코더 (20) 에 의하여 인코딩될 수 있다. 그러면, 인코딩된 비디오 정보는 통신 표준에 따라서 모뎀 (22) 에 의하여 변조될 수 있고, 송신기 (24) 를 통하여 목적지 디바이스 (14) 로 송신될 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위하여 설계된 다른 구성 요소들을 포함할 수도 있다. 송신기 (24) 는 데이터를 송신하기 위하여 설계된, 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하는 회로들을 포함할 수도 있다.
목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 상에서 정보를 수신하며, 모뎀 (28) 은 이 정보를 복조한다. 또한, 비디오 인코딩 프로세스는 기하학적 모션 파티셔닝을 위한 본 명세서에서 설명되는 하나 이상의 기술들을 구현할 수도 있다. 채널 (16) 상에서 통신된 정보는 비디오 인코더 (20) 에 의하여 정의되며 비디오 디코더 (30) 에 의해서도 이용되는 구문 정보 (syntax information) 를 포함할 수도 있는데, 구문 정보는 매크로블록들 및 이를테면 픽쳐들의 그룹 (groups of picture; GOP) 들인 다른 코딩된 유닛들의 특징들 및/또는 처리를 기술하는 구문 요소들을 포함한다. 디스플레이 디바이스 (32) 는 사용자에게 디코딩된 비디오 데이터를 디스플레이하고, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입들의 디스플레이 디바이스와 같은 방대한 디스플레이 디바이스들 중 임의의 하나를 포함할 수도 있다.
도 1 의 예에서, 통신 채널 (16) 은 무선 주파수 (radio frequency; RF) 스펙트럼 또는 하나 이상의 물리적 송신선들과 같은 임의의 무선 또는 유선 통신 매체를 포함하거나 무선 및 유선 매체의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 근거리 통신망, 광역 통신망, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 구성할 수도 있다. 통신 채널 (16) 은 일반적으로 임의의 적합한 통신 매체를 나타내거나 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한, 무선 또는 유선 매체의 임의의 적합한 조합을 포함하는 상이한 통신 매체들의 조합을 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수 있는 모든 다른 장비를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 ITU-T H.264 표준과 같은 비디오 압축 표준에 따라서 동작할 수도 있는데, 이 표준은 또는 MPEG 4, Part 10, 고급 비디오 코딩 (Advanced Video Coding; AVC) 이라고도 불린다. 그러나, 이 개시물의 기술들은 임의의 특정한 코딩 표준에 한정되지 않는다. 다른 예들은 MPEG-2 및 ITU-T H.263 을 포함한다. 비록 도 1 에는 도시되지 않지만, 몇 가지 양태들에서는 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각 오디오 인코더 및 디코더와 통합될 수도 있으며, 그리고 공통 데이터 스트림 또는 개별 데이터 스트림 내의 오디오 및 비디오 양자의 인코딩을 핸들링하기 위한 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜 또는 사용자 데이터그램 프로토콜 (user datagram protocol; UDP) 과 같은 다른 프로토콜들을 따를 수 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은, 조인트 비디오 팀 (Joint Video Team; JVT) 이라고 알려진 총체적 파트너십의 결과로서, ITU-T 비디오 코딩 전문가 그룹 (Video Coding Experts Group; VCEG) 및 ISO/IEC 동화상 전문가 그룹 (Moving Picture Experts Group; MPEG) 에 의하여 제정되었다. 몇 가지 양태들에서, 이 개시물에서 설명되는 기술들은 일반적으로 H.264 표준을 따르는 디바이스들에 적용될 수도 있다. H.264 표준은 ITU-T 연구 그룹에 의한, 2005년 3월자의 ITU-T 추천 H.264 인 범용 음향시각적 서비스를 위한 고급 비디오 코딩 (Advanced Video Coding for generic audiovisual services) 에서 설명되며, 이것은 본 명세서에서 H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양이라고 지칭될 수도 있다. 조인트 비디오 팀 (Joint Video Team, JVT) 은 H.264/MPEG-4 AVC 에 대한 확장들에 관해 계속 연구 중이다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 다양한 적합한 인코더 회로 중 임의의 것으로서 구현될 수도 있는데, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들 내에 포함될 수도 있는데, 이들 중 하나는 개별 카메라, 컴퓨터, 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 셋탑 박스, 서버 등 내에서 조합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있다.
전형적으로, 비디오 시퀀스는 비디오 픽쳐들이라고도 불리는 일련의 비디오 프레임들을 포함한다. 픽쳐들의 그룹 (GOP) 은 일반적으로 일련의 하나 이상의 비디오 프레임들을 포함한다. GOP 는 GOP 내에 포함되는 프레임들의 개수를 설명하는 구문 데이터를 GOP의 헤더 내에, GOP의 하나 이상의 프레임들의 헤더 내에, 또는 다른 곳에 포함할 수도 있다. 각 프레임은 개별 프레임에 대한 인코딩 모드를 설명하는 프레임 구문 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 전형적으로 비디오 데이터를 인코딩하기 위하여 개별 비디오 프레임들 내의 비디오 블록들에 관해 동작한다. 비디오 블록은 매크로블록, 매크로블록의 파티션, 또는 매크로블록보다 큰 블록에 대응될 수도 있다. 비디오 블록들은 고정 크기들 또는 변동하는 크기들을 가질 수도 있으며, 특정된 코딩 표준에 따라서 크기가 다를 수도 있다. 각 비디오 프레임은 하나 이상의 슬라이스 (slice) 들을 포함할 수도 있다. 각 슬라이스는 복수 개의 매크로블록들을 포함할 수도 있으며, 이들은 서브-블록들이라고도 불리는 파티션들로 배열될 수도 있다.
일 예로서, ITU-T H.264 표준은, 루마 성분 (luma component) 들에 대해서는 16x16, 8x8, 또는 4x4 그리고 크로마 성분 (chroma component) 들에 대해서는 8x8 와 같은 다양한 블록 크기들에서의 인트라 예측을 지원하고, 그리고 루마 성분들에 대해서는 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 및 4x4 그리고 크로마 성분들에 대해서는 대응하는 스케일링된 크기들과 같은 다양한 블록 크기들에서의 인터 예측을 지원한다. 이 개시물에서, "NxN" 및 "N 곱하기 N" 이란 수직 및 수평 차원들을 이용하여 블록의 픽셀 차원들을 가리키기 위하여 상호 교환 가능하도록 사용될 수도 있으며, 예를 들어 16x16 픽셀들 또는 16 곱하기 16 픽셀들이라고 사용될 수 있다. 일반적으로, 16x16 블록은 수직 방향으로 16 개의 픽셀들을 (y = 16) 그리고 수평 방향으로 16 개의 픽셀들 (x = 16) 을 가질 것이다. 이와 유사하게, NxN 블록은 일반적으로 수직 방향으로 N개의 픽셀들을 그리고 수평 방향으로 N개의 픽셀들을 가지는데, 여기서 N은 음이 아닌 정수 값을 나타낸다. 한 블록 내의 픽셀들은 행들 및 열들로 배열될 수 있다. 또한, 블록들은 반드시 수평 방향에 수직 방향과 동일한 개수의 픽셀들을 가질 필요가 없다. 예를 들어, 블록들은 NxM 픽셀들을 가질 수 있는데, 여기서 M 은 N과 동일할 필요가 없다.
16 곱하기 16 보다 작은 블록 크기들은 16 곱하기 16 매크로블록의 파티션들이라고 불릴 수도 있다. 비디오 블록들은, 예를 들어 이산 코사인 변환 (discrete cosine transform; DCT), 정수 변환 (integer transform), 웨이브릿 변환 (wavelet transform), 또는 이와 개념적으로 유사한 변환을 코딩된 비디오 블록들 및 예측성 비디오 블록들 간의 픽셀차들을 나타내는 잔여 비디오 블록 데이터 (residual video block data) 에 적용한 후에, 픽셀 도메인에서 픽셀 데이터의 블록들 또는 변환 도메인 (transform domain) 에서 변환 계수들의 블록들을 포함할 수도 있다. 몇 가지 경우에서는, 비디오 블록들은 변환 도메인 내에서 양자화된 변환 계수들의 블록들을 포함할 수도 있다.
비디오 블록들이 작아질수록 더 나은 해상도를 제공할 수 있으며, 이것은 고도의 상세함 (detail) 을 포함하는 비디오 프레임의 위치들에 이용될 수도 있다. 일반적으로, 매크로블록들 및 때때로 서브-블록들이라고 불리는 다양한 파티션들이 비디오 블록들인 것으로 간주될 수도 있다. 또한, 슬라이스는 매크로블록들 및/또는 서브-블록들과 같은 복수 개의 비디오 블록들인 것으로 간주될 수도 있다. 각 슬라이스는 비디오 프레임의 독립적으로 디코딩될 수 있는 단위일 수도 있다. 또는, 프레임들 스스로가 디코딩가능한 단위들일 수도 있으며, 또는 프레임의 다른 부분들이 디코딩가능한 단위들인 것으로 정의될 수도 있다. "코딩된 단위" 또는 "코딩 단위" 라는 용어는, 전체 프레임, 프레임의 슬라이스, 시퀀스라고도 불리는 픽쳐들의 그룹 (GOP), 또는 적용가능한 코딩 기술들에 따라서 정의되는 다른 독립적으로 디코딩가능한 단위와 같은 비디오 프레임의 임의의 독립적으로 디코딩가능한 단위를 가리킬 수 있다.
이 개시물의 기술들에 따르면, 비디오 인코더 (20) 는 블록, 예를 들어 매크로블록의 인터-모드 인코딩 동안에 기하학적 모션 파티셔닝을 이용하도록 구성될 수도 있다. 즉, 비디오 인코더 (20) 는 해당 블록이 기하학적 파티션이라고도 불리는 기하학적 모션 파티션 라인을 이용하여 최상으로 인코딩될 수 있다고 결정할 수도 있다. 원점 (origin) 은 블록의 중심에 있는 것으로 가정된다. 그러면, 각 기하학적 모션 파티션 라인이 파티션 경계를 정의하는 라인과 수직이며 원점을 통과하는 라인에 의하여 정의된다. 즉, 비디오 인코더 (20) 는 두 개의 파라미터들인, 파티션 라인에 수직이며 파티셔닝된 블록의 중심점에서부터 발생한 라인 세그먼트인 수직 라인의 길이 로 (ρ) 및 파티셔닝된 블록의 중심점을 통과하는 수평 라인에 대한 위 수직 라인의 각도인 세타 (θ) 를 이용하여 기하학적 모션 파티션 라인을 정의할 수도 있다. 다시 말하면, 기하학적 모션 파티션 라인은 X 축과 수직 라인이 마주 대한 각도 및 원점으로부터 파티션 라인까지의 거리에 의하여 정의된다. 비디오 인코더 (20) 는 어떤 블록이 두 개의 파티션들로 파티셔닝되어야 한다는 것을 결정하고, 두 개의 픽셀들 간의 분할에 가장 잘 맞는 (ρ, θ) 에 따라서 정의되는 파티션 라인을 연산하도록 구성될 수도 있다. 아래 수학식 1 은 기하학적 모션 파티션 라인을 정의한다:
[수학식 1]
Figure 112012092919579-pct00001
다양한 예들에서, 비디오 인코더 (20) 는 예를 들어, 16x16, 32x32, 및/또는 64x64 블록들과 같은 고정되거나 가변인 크기의 블록들을 이용하도록 구성될 수도 있다. 일반적으로, NxN 블록에 대하여, 비디오 인코더 (20) 는 ρ 의 값을 [0, (N/2)-1] 의 범위 내에서 선택할 수 있는데, 이 범위는 아래끝 및 위끝을 포함한다. 그러므로, 16x16 블록에 대하여, 비디오 인코더 (20) 는 ρ 의 값을 [0, 7] 의 범위 내에서 선택하도록 구성될 수도 있는데, 이 범위는 아래끝 및 위끝을 포함한다. 다른 예로서, 32x32 블록에 대하여, 비디오 인코더 (20) 는 ρ 의 값을 [0, 15] 의 범위 내에서 선택하도록 구성될 수도 있는데, 이 범위는 아래끝 및 위끝을 포함한다. 또다른 예로서, 64x64 블록에 대하여, 비디오 인코더 (20) 는 ρ 의 값을 [0, 31] 의 범위 내에서 선택하도록 구성될 수도 있는데, 이 범위는 아래끝 및 위끝을 포함한다. 몇 가지 예들에서, 비디오 인코더 (20) 는 θ 의 값을 [0, 31] 의 범위 내에서 선택하도록 구성될 수도 있는데, 이 범위는 아래끝 및 위끝을 포함한다. 그러므로, θ 에 대한 값들의 범위는 11.25 도만큼의 스텝 크기 (step size) 를 가질 수도 있다. 이러한 예들에서, 16x16 의 블록 크기들에 대해서는 256 개의 가능한 기하학적 파티션들이 존재할 수 있으며, 32x32 의 블록 크기들에 대해서는 512 개의 가능한 기하학적 파티션들이 존재할 수 있고, 64x64 의 블록 크기들에 대해서는 1024 개의 가능한 기하학적 파티션들이 존재할 수 있다. 그러나, 블록 크기 및 ρ 및 θ 의 스텝 크기의 선택은 위에 언급된 값들로 반드시 한정되지는 않는다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 특정 픽셀이 어떤 기하학적 모션 파티션에 대응되는지를 결정하도록 구성될 수도 있으며, 주어진 픽셀에 대해서는 인코더 및 디코더 모두가 동일한 파티션을 선택하도록 구성되어야 한다. 몇 가지 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 기하학적 모션 파티션을 이용하여 블록을 파티셔닝할 때 고정 소수점 연산을 이용할 수도 있다. 픽셀들이 영역 0 및 영역 1 중 어디에 대응하는지를 나타내는 표시자 (indicator) 는, 어떤 픽셀이 영역 0 에 속한다는 것을 나타내는 0 의 값 및 해당 픽셀이 영역 1 에 속한다는 것을 나타내는 1 의 값을 가지는 이진 마스크로서 효율적으로 저장될 수 있다. 가능한 기하학적 파티션들 및 블록 크기들이 많기 때문에, 모든 마스크들을 비디오 인코더 (20) 및 비디오 디코더 (30) 에 저장하는 것은 엄청날 수도 있다. 그러므로, 이 개시물은 마스크들을 즉시 (on the fly) 연산하기 위한 기술들 및 몇 가지 예들에서는 고정 소수점 연산을 이용하여 연산하기 위한 기술들을 포함한다.
수학식 1 의 기울기 m 및 y-절편 c 는 삼각 함수들을 포함하며, 그러므로 이 수학식에 엄격하게 기초하여 마스크들을 즉시 연산하는 것은 부동 소수점 구현을 요구할 것이다. 몇 가지 경우들에서, 두 디바이스들이 매칭되는 부동 소수점 구현을 가지는 것이 어렵거나 심지어 불가능하다. 따라서, 마스크들은 고정 소수점 연산을 이용하여 연산될 수도 있다. 그러므로, 천이 영역 내의 어떤 픽셀에 대한 예측 값을 연산하는 과정은, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 표시하는 마스크를 연산하는 것, 그리고 고정 소수점 연산을 이용하여, 해당 마스크에 기초하여 천이 영역 내의 픽셀에 대해 적어도 하나의 인접 픽셀을 제 1 파티션 내에 로케이팅 (locating) 하고 적어도 하나의 인접 픽셀을 제 2 파티션 내에 로케이팅하는 것을 포함할 수도 있다.
고정 소수점 연산을 이용하는 예들에서, θ = 0 및 θ = π 인 경우들은 제외될 수도 있는데, 그 이유는 기하학적 모션 파티션 라인은 무한대의 기울기 및 무한대의 y-절편을 가지는 수직 라인이 될 것이기 때문이다. 남은 경우들에서,
Figure 112012092919579-pct00002
Figure 112012092919579-pct00003
은 고정 소수점 값들을 이용하여 표현될 수도 있다. 다른 파라미터인 ρ는 이미 정수로서 표현되었을 수도 있다.
Figure 112012092919579-pct00004
에 대하여, θ 의 남은 값들에 대한 최대 절대 값은 5.0273 이고
Figure 112012092919579-pct00005
의 연속하는 두 값들 사이의 최대 절대 차분은 0.1989 일 수도 있다. 이와 유사하게,
Figure 112012092919579-pct00006
에 대하여, 최대 절대 값은 5.1258 이고
Figure 112012092919579-pct00007
의 연속하는 두 값들 사이의 최대 절대 차분은 0.0196 일 수도 있다. 마스크 연산을 고정 소수점 연산으로 변환시키기 위하여, 비디오 인코더 (20) 는
Figure 112012092919579-pct00008
Figure 112012092919579-pct00009
을 2 의 적절한 거듭제곱 (power) 으로 승산하고 그 결과들을 반올림하여 최근접 정수를 구할 수도 있다.
일 예에서, 고정 소수점 구현을 위해서, 비디오 인코더 (20) 는
Figure 112012092919579-pct00010
Figure 112012092919579-pct00011
을 220 또는 1048576 과 승산하고 그 결과를 반올림하여 최근접 정수들을 구할 수도 있다. ρ 의 최대 값은, 스텝 크기가 1 인 64x64 까지의 블록 크기 예에서는 32이기 때문에, y-절편 값을 나타내기 위해서는 25-비트 유부호 (signed) 구현이 적합하다. 표현 "mx"에서 x 가 -32부터 31 까지의 값들을 가질 수 있기 때문에, mx 역시 25-비트 유부호 정수로서 표현될 수 있다. 몇 가지 예들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, θ 의 32 개의 값들 각각에 대해
Figure 112012092919579-pct00012
Figure 112012092919579-pct00013
의 값들을 저장하기 위해서 32-비트의 유부호 정수들을 이용할 수도 있다. sintan 함수들의 대칭성 때문에, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 32-비트 유부호 정수들로서 기울기 및 절편들의 8 개의 값들만을 저장하도록 구성될 수도 있다. 이미 나타낸 바와 같이, 이러한 저장 값들은 θ = 0 및 θ = π 일 때에는 이용될 필요가 없다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 고정 소수점 연산들을 이용하여 동일한 마스크들을 유도하도록 구성될 수도 있다. 이것은 비디오 인코더 (20) 와 비디오 디코더 (30) 간에 드리프트 에러 (drift error) 를 야기하는 것을 피할 수도 있는데, 이 에러는 다른 경우에는 기하학적 모션 파티셔닝에 의하여 야기될 수 있다. 영역 0 내의 임의의 점 (x0, y0) 에 대해서 y0 - m*x0 >= c 의 관계가 만족되도록 영역 0 을 정의한다. 이와 유사하게, 영역 1 내의 임의의 점 (x1, y1) 에 대해서 y1 - m*x1 < c 의 관계가 만족되도록 영역 1 을 정의한다. 임의의 기하학적 모션 파티션에 대해서 그리고 임의의 점 (x, y) 에 대해서, 비디오 인코더 (20) 는 고정 소수점으로 y - m*x를 연산하고 그 결과를 y-절편과 비교하여 해당 점이 영역 0 및 영역 1 중 어디에 속하는지를 결정할 수도 있다. θ = 0 또는 θ = π 라면, 기하학적 모션 파티션은 x = ρ 에 의하여 정의되는 수직 라인이다. 그러한 경우에 블록 내의 x < ρ 인 모든 점들은 파티션 0 에 속하도록 정의될 수 있고, 남은 점들 (x >= ρ) 은 파티션 1 에 속하는 것으로 정의될 수 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 은 어떤 블록 내의 각 점 전체를 통해서 반복하여 어떤 점들이 영역 0 에 대응되고 어떤 점들이 영역 1 에 대응되는지를 표시하는, 해당 블록에 대한 마스크를 연산하도록 구성될 수도 있다. 고정 소수점 연산들을 이용하여 어떤 블록에 대한 마스크를 연산하면, 기하학 기반 모션 파티션을 위한 남아 있는 연산들은 해당 마스크에 기초할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 는, 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하며 여기서 기울기 값 및 y-절편 값은 정수 값들을 포함하고, 제 1 파티션 내의 해당 블록의 픽셀들 및 제 2 파티션 내의 해당 블록의 픽셀들을 나타내는 마스크를 연산하고, 이 마스크에 기초하여 제 1 및 제 2 파티션을 인코딩하고, 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 및 y-절편 값을 출력하도록 구성되는 비디오 인코더의 일 예에 대응될 수도 있다.
기하학적 모션 파티션을 이용하여 블록을 파티셔닝하면 각각이 개별 모션 벡터를 가지는 두 개의 비직사각형 파티션들을 생성할 수도 있다. 파티션들은 인코딩되는 블록에 대한 예측 값들에 대응될 수도 있다. 비디오 인코더 (20) 는 또한 기하학적 모션 파티션들에 대한 모션 벡터들을 인코딩할 수도 있다. 비디오 인코더 (20) 는 모션 예측기에 상대적으로 모션 벡터들을 인코딩할 수도 있다. 비디오 인코더 (20) 는, 블록들을 인코딩할 때 래스터 주사 순서 (raster scan ordering) 를 가정하면, 예를 들어 현재 블록에 대한 상단 블록들, 좌측 블록들, 및 우측 상단 (above-right) 블록들인 이미 인코딩된 인접 블록들의 모션 벡터들의 메디안 (median) 으로서 모션 예측기를 선택할 수도 있다. 이 개시물의 기술들은, 종래의 코딩 표준들에서 이용되는 것보다 더 넓은 후보 모션 벡터들의 세트로부터 메디안을 선택하는 것, 그리고 해당 블록의 각 모션 벡터에 대하여 잠재적으로 상이한 후보 모션 벡터들을 이용하는 것을 포함한다. 즉, 비디오 인코더 (20) 는 단일 블록의 기하학적 모션 파티션들의 모션 벡터들에 대해서 상이한 모션 예측기들을 이용할 것으로 결정할 수도 있다.
또한, 비디오 인코더 (20) 는 해당 블록에 대한 잔여 값들을 연산한다. 일반적으로, 블록의 어떤 픽셀에 대한 잔여 값은 블록의 해당 픽셀에 대한 실제 값 및 해당 블록의 병치되는 (collocated) 픽셀에 대한 예측 값 간의 차분에 대응된다. 일 예에서, 이 개시물의 기술들은 기하학적 모션 파티션 라인에 걸쳐 천이를 평활화하는 것을 포함한다. 이를 수행하기 위하여, 비디오 인코더 (20) 는 파티션 라인 주위의 특정 천이 영역과 함께 구성될 수도 있다. 일 예로서, 비디오 인코더 (20) 는 현재 픽셀에 중심이 위치된 3x3 픽셀 윈도우를 이용하도록 구성될 수도 있다. 일 예로서, 비디오 인코더 (20) 는, 바로 위, 바로 밑, 바로 왼쪽, 및 바로 오른쪽 픽셀들 중 적어도 두 개가 상이한 파티션들에 속하면 현재 픽셀이 천이 영역 내에 있다고 결정하도록 구성될 수도 있다. 다른 예로서, 비디오 인코더 (20) 는, 바로 인접하는 8 개의 인접 픽셀들 중 적어도 두 개가 상이한 파티션들에 속하면 현재 픽셀이 천이 영역 내에 있다고 결정하도록 구성될 수도 있다. 다른 예들에서, 이러한 방식들은 현재 픽셀 주위에 중심이 위치된 상이한 크기의 윈도우들로도 확장될 수 있는데, 현재 픽셀이 천이 영역 내에 속하는지 여부를 결정하는 데에 이 윈도우 내의 픽셀들이 고려된다.
천이를 평활화하기 위하여, 비디오 인코더 (20) 는 파티션 라인에 걸쳐 저역 통과 필터를 적용하도록 구성될 수도 있다. 필터는, 필터링될 픽셀에 중심이 위치한 계수들의 행렬로서, 예를 들어 3x3 행렬에 대응될 수도 있다. 그러므로, 이 필터는 천이 영역 내의 이 픽셀에 중심이 위치될 수도 있다. 저역 통과 필터는 다양한 계수들을 가질 수 있다. 저역 통과 필터의 일 예는:
1 2 1
2 3 2
1 2 1
일 수 있는데, 여기서 계수 '3' 은 현재 픽셀에 대응되고, 다른 계수들은 현재 픽셀에 대한 다른 바로 인접 픽셀들에 대응한다. 저역 통과 필터에 대한 다른 예는:
0 1 0
1 4 1
0 1 0
일 수 있는데, 여기서 계수 '4' 는 현재 픽셀에 대응되고, 다른 계수들은 현재 픽셀에 대한 다른 바로 인접 픽셀들에 대응한다. 천이 영역 내의 이 픽셀에 대한 예측 값을 연산하기 위하여, 비디오 인코더 (20) 는, (필터가 천이 영역 내의 픽셀 상에 중심이 위치되는 경우) 픽셀의 계수들 및 그 계수들과 병치되는 픽셀들의 값들의 곱들을 연산하고, 곱들의 합을 연산하며, 곱들의 합을 계수들의 합으로 나눌 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 는 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하고, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 그리고 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 블록의 천이 영역 내의 픽셀의 예측 값을 연산하며, 천이 영역 내의 픽셀의 예측 값에 기초하여 해당 블록의 천이 영역 내의 해당 픽셀의 잔여 값을 연산하고, 픽셀의 잔여 값을 출력하도록 구성되는 비디오 인코더의 일 예에 대응한다.
몇 가지 예들에서, 천이 영역을 평활화하기 위하여, 비디오 인코더 (20) 는 현재 픽셀에 중심을 두는 다양한 조건들에 기초하여 필터링을 선택적으로 수행한다. 이러한 조건들은, 파티션 라인에 수직인 방향을 따르는 픽셀 값들의 차분 (또는 특정 형태의 경사도 (gradient)), 블록의 두 파티션들 간의 모션 벡터의 차분, 파티션 라인 방향, 기준 프레임 인덱스들, 양자화 파라미터들, 및 두 파티션들의 픽셀 수들을 포함할 수도 있다. 다른 조건들도 분석되어 천이 영역 내의 픽셀들을 필터링할지 여부 및 어떻게 필터링할지를 결정할 수도 있다.
시각적 품질을 개선하기 위한 다른 방법은 천이 영역 내부의 픽셀들에 대한 두 예측들을 중첩하는 것을 포함한다. 비디오 인코더 (20) 는 블록의 파티션들에 대한 각 모션 벡터를 이용하여 천이 영역에 속하는 픽셀들에 대한 두 예측들을 생성할 수도 있다. 그러면, 비디오 인코더 (20) 는 가중된 합을 이용하여 이러한 두 개의 예측들을 결합할 수도 있다. 예를 들어, 픽셀이 파티션 1 에 속하고 또한 천이 영역 내에 있다면, 비디오 인코더 (20) 는 제 1 파티션으로부터의 예측 값들에는 2/3 의 가중치를 이용하고 다른 파티션으로부터의 예측 값에 대해서는 1/3 의 가중치를 이용하여 가중치를 부여할 수도 있다. 다른 예들에서는 (3/4, 1/4) 또는 (1/2, 1/2) 와 같은 다른 가중치들이 적용될 수도 있다. 몇 가지 예들에서는, 가중치 값들이 적응적으로 결정될 수도 있다.
몇 가지 예들에서, 가중된 합 연산을 위한 가중치 계수들은 현재 픽셀에 중심을 두는 다양한 조건들에 기초하여 결정된다. 이러한 조건들은 파티션 라인에 수직인 방향을 따르는 픽셀 값들의 차분 (또는 특정 형태의 경사도), 블록의 두 파티션들 간의 모션 벡터의 차분, 파티션 라인 방향, 기준 프레임 인덱스들, 양자화 파라미터들, 및 두 파티션들의 픽셀 수들을 포함할 수도 있다. 다른 조건들도 분석되어 천이 영역 내의 픽셀들을 필터링할지 여부 및 어떻게 필터링할지를 결정할 수도 있다.
비디오 인코더 (20) 는 이산 코사인 변환, 4x4 정수 변환, 8x8 변환, 16x16 변환, 또는 다른 변환과 같은 변환을 잔여 값에 적용할 수도 있다. 일 예에서, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인이 어느 파티션을 통과하는지 여부에 기초하여 블록의 해당 파티션의 잔여에 대한 변환 크기를 적응적으로 선택할 수도 있다. 이러한 예에서는, 기하학적 모션 파티션과 반대되는 바와 같이, 파티션이란 용어는 NxN 블록의 (N/2)x(N/2) 파티션 또는 이보다 더 작은 파티션을 가리킨다.
일 예로서, NxN 블록이 기하학적 모션 파티션 라인을 이용하여 파티셔닝된다고 가정한다. 비디오 인코더 (20) 는 NxN 블록을 네 개의 중첩되지 않는 (N/2)x(N/2) 블록들로 나눌 수 있다. 그러면, (N/2)x(N/2) 블록 각각에 대하여, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인이 (N/2)x(N/2) 을 통과하는지 여부를 결정할 수도 있다. 만일 기하학적 모션 파티션 라인이 (N/2)x(N/2) 블록을 통과하지 않는다면, 비디오 인코더 (20) 는 해당 블록에 대하여 (N/2)x(N/2) 의 변환 크기를 이용할 수도 있다. 반면에, 기하학적 모션 파티션 라인이 (N/2)x(N/2) 을 통과한다면, 비디오 인코더 (20) 는 이 방법을 재귀적으로 수행할 수도 있다: 즉, (N/2)x(N/2) 을 네 개의 비-중첩 (N/4)x(N/4) 블록들로 분할하고 기하학적 모션 파티션 라인이 (N/4)x(N/4) 블록들 중 임의의 것을 통과하는지 여부를 결정할 수도 있다. 비디오 인코더 (20) 는 예를 들어 4x4 인 최소 변환 크기를 가지고 구성될 수도 있는데, 이 경우에는 비디오 인코더 (20) 는 기하학적 모션 파티션 라인이 서브-블록을 통과하는지 여부와 무관하게 서브-블록에 대한 최소 변환 크기를 선택할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 는, 블록이 NxN 픽셀들을 포함하는 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하고, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하며, 그리고 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 인코딩하도록 구성되는 비디오 인코더의 일 예에 대응한다.
예측 데이터 및 잔여 데이터를 생성하는 인트라-예측성 또는 인터-예측성 코딩에 후속하고, 그리고 변환 계수들을 생성하는 임의의 변환들 (H.264/AVC에서 이용되는 4x4 또는 8x8 정수 변환 또는 이산 코사인 변환 (DCT) 과 같은 변환들) 에 후속하여, 변환 계수들의 양자화가 수행될 수도 있다. 일반적으로, 양자화는 변환 계수들이 양자화되어 해당 계수들을 표현하기 위하여 이용되는 데이터의 양을 감소시키는 것이 가능한 프로세스를 가리킨다. 양자화 프로세스는 계수들 중 일부 또는 전부와 관련되는 비트 깊이 (bit depth) 를 감소시킬 수도 있다. 예를 들어, n-비트 값은 양자화 동안에 m-비트 값으로 버림 (round down) 될 수도 있는데, 여기서 nm 보다 크다.
양자화에 후속하여, 양자화된 데이터의 엔트로피 코딩이 수행될 수도 있으며, 예를 들어 콘텐츠 적응형 가변 길이 코딩 (content adaptive variable length coding; CAVLC), 콘텍스트 적응형 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC), 또는 다른 엔트로피 코딩 방법론들이 수행될 수도 있다. 엔트로피 코딩을 위하여 구성된 처리 유닛 또는 다른 처리 유닛이 양자화된 계수들의 제로 런 길이 부호화 (zero run length coding) 및/또는 코딩된 블록 패턴 (coded block pattern; CBP) 값들, 매크로블록 타입, 코딩 모드, 코딩된 유닛 (예컨대, 프레임, 슬라이스, 매크로블록, 또는 시퀀스) 에 대한 최대 매크로블록 크기 등과 같은 구문 정보의 생성과 같은 다른 처리 기능들을 수행할 수도 있다.
비디오 인코더 (20) 는 더 나아가 블록-기반 구문 데이터, 프레임-기반 구문 데이터, 및 GOP-기반 구문 데이터와 같은 구문 데이터를, 예를 들어, 프레임 헤더, 블록 헤더, 슬라이스 헤더, 또는 GOP 헤더 내에서 비디오 디코더 (30) 로 전송할 수도 있다. 예를 들어, 비디오 인코더 (20) 가 기하학적 모션 파티션을 정의하는 각도 및 길이 값에 대하여 정수들을 제공하여 고정 소수점 연산을 허용할 경우에는, 비디오 인코더 (20) 는 정수의 사용을 시그널링할 수도 있다. 비디오 인코더 (20) 는 이것을 시퀀스 파라미터 세트 또는 픽쳐 파라미터 세트 내에서 시그널링할 수도 있다. 대안적으로, 비디오 인코더 (20) 는 프로파일들 및/또는 레벨들의 재정의된 세트를 이용할 수도 있으며, 따라서 기하학적 모션 파티션에 관련하여 고정 소수점 연산을 허용하는 정수 값들의 사용을 표시하는 프로파일 표시자 (profile_idc) 또는 레벨 표시자 (level_idc) 값을 선택할 수도 있다. 비디오 인코더 (20) 는 또한 픽쳐들의 시퀀스 및/또는 개별 픽쳐들에 대해서 기하학적 모션 파티션들이 가능한지 여부를 시그널링할 수도 있다.
또한, 비디오 인코더 (20) 는 어떤 블록에 대하여 평활화가 가능하게 되었는지 여부를, 그리고 가능하게 되었다면 어떻게 평활화가 달성되는지를 시그널링할 수도 있으며, 예를 들어 평활화 필터의 표시자를 시그널링할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 평활화 필터의 계수들을 시그널링할 수도 있다. 비디오 인코더 (20) 는 또한 적응적 변환 크기 선택이 가능한지 여부를 시그널링할 수도 있다. 비디오 인코더 (20) 는 또한, 모션 예측기에 상대적으로 모션 벡터를 인코딩하기 위하여, 어떤 픽쳐에 대하여 후보 모션 벡터들의 확장된 세트가 허용되는지 여부도 시그널링할 수도 있다.
비디오 디코더 (30) 는 수신된 비디오 데이터를 디코딩할 때 이 개시물의 기술들을 이용하도록 구성될 수도 있다. 비디오 디코더 (30) 에 의하여 적용되는 기술들은 본질적으로 비디오 인코더 (20) 에 의하여 적용되는 것들과 대칭적일 수도 있다. 예를 들어, 비디오 디코더 (30) 는, 이러한 기술들의 고정 소수점 구현예를 달성하기 위하여, 인코딩된 블록에 대한 기하학적 모션 파티션을 정의하는 기울기 및 절편에 대한 고정 소수점 값들을 수신할 수도 있다. 그러므로, 비디오 디코더 (30) 는, 기하학적 모션 파티션의 기울기 및 절편에 기초하여, 해당 블록의 각 픽셀 위치 전체를 통하여 반복하여 해당 블록에 대한 마스크를 즉시 연산함으로써, 픽셀이 영역 0 및 영역 1 중 어디에 속하는지 결정할 수도 있다.
이러한 방식으로, 비디오 디코더 (30) 는 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고, 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하며, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 표시하는 마스크를 연산하고, 마스크에 기초하여 해당 블록의 제 1 파티션 및 제 2 파티션을 디코딩하며, 디코딩된 블록을 출력하도록 구성되는 비디오 디코더의 일 예에 대응될 수 있으며, 여기서 기울기 값 및 y-절편 값은 정수 값들을 포함한다.
다른 예로서, 비디오 디코더 (30) 는 어느 블록의 기하학적 모션 파티션 라인에서의 해당 블록의 천이 영역을 평활화하기 위한 평활화 기술들을 구현할 수도 있다. 비디오 디코더 (30) 는 해당 블록의 각 기하학적 모션 파티션에 대한 모션 벡터들을 수신하여 해당 블록의 픽셀들에 대한 예측 값들을 결정할 수도 있다. 비디오 디코더 (30) 는 평활화 필터를 위에서 설명된 바와 같이 기하학적 모션 파티션 천이 영역 내의 픽셀들에게 적용할 수도 있다. 그러므로, 비디오 디코더 (30) 는 비디오 데이터의 인코딩된 블록, 인코딩된 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 기하학적 모션 파티션 라인의 정의, 및 블록의 천이 영역 내의 픽셀에 대한 잔여 값을 수신하고, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대하여 하나의 값을 그리고 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대하여 하나의 값을 적용하는 필터를 이용하여 블록의 천이 영역 내의 픽셀에 대한 예측 값을 연산하며, 예측 값 및 잔여 값에 기초하여 해당 블록의 천이 영역 내의 해당 픽셀에 대한 재구성 값을 연산하고, 그리고 해당 픽셀의 재구성 값을 출력하도록 구성되는 비디오 디코더의 일 예에 대응될 수도 있다.
또 다른 예로서, 비디오 디코더 (30) 는 적응적 변환 크기 선택에 기초하여 다양한 크기들의 잔여 값들에 대한 키워드들을 수신할 수도 있다. 가변 길이 코드들에 대응될 수도 있는 이러한 키워드들은, 블록들에 대한 변환 크기에 기초하여 상이한 사전들 (dictionaries) 에 대응될 수도 있다. 그러므로, 비디오 디코더 (30) 는 기하학적 모션 파티션 라인이 어느 블록을 통과하는지 여부에 기초하여 그 특정 블록에 대한 변환 크기를 결정할 수도 있다. 이러한 방식으로, 비디오 디코더 (30) 는, 기하학적 모션 파티션 라인에 의하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝된, 블록이 NxN 픽셀들을 포함하는 비디오 데이터의 인코딩된 블록을 수신하고, 비디오 데이터의 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하며, 그리고 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 역변환하도록 구성되는 비디오 디코더의 일 예에 대응될 수도 있다.
또 다른 예로서, 비디오 디코더 (30) 는 모션 예측기들에 상대적으로 기하학적 모션 파티션들에 대한 모션 벡터들을 디코딩할 수도 있다. 이 개시물의 기술들에 따르면, 비디오 디코더 (30) 는, 후보 모션 벡터들의 더 큰 세트로부터 모션 예측기들을 결정할 수도 있으며, 각 기하학적 파티션에 대한 모션 예측기들을 개별적으로 결정할 수도 있다. 이러한 방식으로, 비디오 디코더 (30) 는 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 일 블록, 제 1 파티션에 대한 제 1 인코딩된 모션 벡터, 및 제 2 파티션에 대한 제 2 인코딩된 모션 벡터를 수신하고, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 인코딩된 모션 벡터를 디코딩하며, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 인코딩된 모션 벡터를 디코딩하고, 그리고 디코딩된 제 1 및 제 2 모션 벡터들을 이용하여 블록을 디코딩하도록 구성되는 비디오 디코더의 일 예에 대응될 수도 있는데, 여기서 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접한 블록들과는 독립적으로 결정된다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 적합하며 적용가능한 다양한 인코더 또는 디코더 회로 중 임의의 것으로서 구현될 수도 있는데, 이를테면 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적회로 (ASIC) 들, 필드 프로그램가능 게이트 어레이 (FPGA) 들, 이산 로직 회로, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들 내에 포함될 수도 있는데, 이들 중 어느 것은 조합된 비디오 인코더/디코더 (CODEC) 의 일부로서 집적될 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 를 포함하는 장치는 집적 회로, 마이크로프로세서, 및/또는 셀룰러 전화기와 같은 무선 통신 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 이 개시물의 기술들의 임의의 조합을 수행하도록 구성될 수도 있다. 즉, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 임의의 조합에서, 기하학적 모션 파티셔닝를 위한 고정 소수점 구현, 기하학적 모션 파티션 경계에 의하여 정의되는 천이 영역의 평활화, 각 기하학적 모션 파티션에 대한 모션 벡터들의 인코딩, 및/또는 기하학적 모션 파니션 라인이 서브-블록들을 통과하는지 여부에 기초한 서브-블록들에 대한 적응적 변환 크기 선택 중 임의의 하나 이상을 수행하도록 구성될 수도 있다.
몇 가지 예들에서, 비록 비디오 인코더 (20) 및 비디오 디코더 (30) 가 이 개시물에서 설명된 특정 기술들을 구현할 수 있지만, 이러한 기술들은 디스에이블될 수도 있고, 또는 비디오 인코더 (20) 및 비디오 디코더 (30) 중 하나가 기술들의 동일한 세트를 지원하지 않을 수도 있다. 따라서, 비디오 인코더 (20) 는 특정 비디오 스트림에 대하여 어떤 기술들이 이용되었는지를 시그널링할 수 있고, 비디오 디코더 (30) 는 비디오 디코더 (30) 가 해당 비디오 스트림을 인코딩하는데 이용된 기술들을 지원하는지 여부에 기초하여 그 비디오 스트림을 취출 (retrieve) 또는 이용할지 여부를 선택할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 프로파일 표시자 (profile_idc value), 레벨 표시자 (level_idc value), 헤더 데이터, 또는 다른 기술적 데이터 (descriptive data) 를 이용하여 시퀀스 파라미터 세트, 픽쳐 파라미터 세트에서 어떤 기술들이 이용되는지 시그널링할 수도 있다.
도 2 는 기하학적 모션 파티셔닝을 위한 기술들을 구현할 수도 있는 비디오 인코더 (20) 의 일 예를 예시하는 블록도이다. 비디오 인코더 (20) 는 비디오 프레임들 내의, 매크로블록들 또는 매크로블록들의 파티션들 또는 서브-파티션들을 포함하는 블록들의 인트라- 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 주어진 비디오 프레임내의 비디오에서의 공간적 리던던시를 감소 또는 제거하는 공간적 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접 프레임들 간의 비디오에서의 시간적 리던던시를 감소 또는 제거하기 위한 시간적 예측에 의존한다. 인트라-모드 (I-모드) 는 수 개의 공간 기반 압축 모드들 중 임의의 것을 가리킬 수 있으며, 일방향 예측 (P-모드) 또는 양방향 예측 (B-모드) 과 같은 인터-모드들은 수 개의 시간 기반 압축 모드들 중 임의의 것을 가리킬 수 있다. 비록 인터-모드 인코딩을 위한 구성 요소들이 도 2 내에 묘사되지만, 비디오 인코더 (20) 가 인트라-모드 인코딩을 위한 구성 요소들도 더 포함할 수 있다는 것이 이해되어야 한다. 그러나, 이러한 구성 요소들은 간략화 및 명확화를 위하여 예시되지 않는다.
도 2 에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내의 현재 비디오 블록을 수신한다. 도 2 의 예에서, 비디오 인코더 (20) 는 모드 선택 유닛 (40), 모션 추정 유닛 (42), 모션 보상 유닛 (44), 인트라 예측 유닛 (46), 기준 프레임 저장소 (64), 합산기 (50), 변환 유닛 (52), 양자화 유닛 (54), 및 엔트로피 코딩 유닛 (56) 을 포함한다. 비디오 블록 재구성을 위하여, 비디오 인코더 (20) 는 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 더 포함한다. 디블록킹 필터 (deblocking filter) (도 2 에는 미도시) 도 포함되어 블록 경계들을 필터링하여 재구성된 비디오로부터 블록화 아티팩트 (blockiness artifact) 들을 제거할 수도 있다 . 원하는 경우, 디블록킹 필터는 전형적으로 합산기 (62) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안에, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 기준 프레임들 내의 하나 이상의 블록들에 상대적으로 수신 비디오 블록의 인터-예측성 코딩을 수행하여 시간적 압축을 제공한다. 인트라 예측 유닛도 코딩될 블록과 동일한 프레임 또는 슬라이스 내의 하나 이상의 인접 블록들에 대한 수신 비디오 블록의 인트라-예측성 코딩을 수행하여 공간적 압축을 제공할 수도 있다.
모드 선택 유닛 (40) 은 인트라 또는 인터의 코딩 모드들 중 하나를, 예를 들어 예러 결과들에 기초하여 선택할 수도 있고, 결과적으로 얻어진 인트라- 또는 인터-코딩된 블록을 합산기 (50) 로 제공하여 잔여 값 블록 데이터를 생성하고, 합산기 (62) 로 제공하여 기준 프레임으로서 사용하기 위한 인코딩된 블록을 재구성한다.
모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고집적화될 수 있지만 개념적인 이해를 위한 목적으로 개별적으로 예시된다. 모션 추정은 비디오 블록들의 모션을 추정하는 모션 벡터들을 생성하기 위한 프로세스이다. 예를 들어, 모션 벡터는 현재의 프레임 내에서 코딩되는 중인 현재 블록 (또는 다른 코딩된 유닛) 에 관하여 예측성 기준 프레임 내의 예측성 블록 (또는 다른 코딩된 유닛) 의 변위 (displacement) 를 나타낼 수도 있다. 예측성 블록은 픽셀 차분의 관점에서, 코딩될 블록과 근접하게 매칭되는 것으로 발견되는 블록인데, 픽셀 차분은 절대 차분의 합 (sum of absolute difference; SAD), 제곱 차분의 합 (sum of square difference; SSD), 또는 다른 차분 지표에 의하여 결정될 수 있다. 모션 벡터는 또한 매크로블록의 파티션의 변위를 나타낼 수도 있다. 모션 보상은, 모션 추정에 의하여 결정된 모션 벡터에 기초하여 예측성 블록을 페치 (fetch) 하거나 생성하는 것을 수반할 수도 있다. 다시 말하건데, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 몇 가지 예들에서는 기능적으로 통합될 수도 있다.
몇 가지 예들에서, 모션 추정 유닛 (42) 은 어떤 블록이 기하학적 모션 파티션 라인을 이용하여 파티셔닝되어야 한다고 결정할 수도 있다. 모션 추정 유닛 (42) 은 기하학적 모션 파티션 라인에 대한 파라미터들을 연산할 수도 있는데, 예를 들어, 파티셔닝된 블록의 원점으로부터 기하학적 모션 파티션 라인의 중간점 (midpoint) 까지의 라인의 거리 ρ 및 각도 θ 를 연산할 수 있다. 몇 가지 예들에서, 모션 추정 유닛 (42) 은, 이러한 기술들의 고정 소수점 구현을 허용하기 위하여, 파라미터들을 기하학적 모션 파티션 라인의 기울기 m 및 y-절편 c 로서 결정할 수도 있다. 또한, 비디오 인코더 (20) 및 비디오 디코더 (30) (도 1 및 3) 는 θ의 상이한 값들에 대한 1/tan(θ) 및 1/sin(θ) 에 대한 룩업 테이블들의 동일한 복제본들을 저장할 수도 있다. 기하학 모드 (geometry mode) 를 위하여, 비디오 인코더 (20) 는 출력 비트스트림 내에서 θ 및 ρ 에 대한 값들을 시그널링할 수도 있다. 비디오 디코더 (30) 는 시그널링된 값들을 이용하여 고정 소수점 연산들을 수행하여 비디오 인코더 (20) 에 의하여 연산된 마스크와 동일한 마스크를 연산하도록 구성될 수도 있다.
모션 추정 유닛 (42) 은, 비디오 블록을 기준 프레임 저장소 (64) 내의 기준 프레임의 비디오 블록들 (또는 파티션들) 과 비교함으로써, 인터-코딩된 프레임의 비디오 블록에 대한 모션 벡터 또는 그의 기하학적 모션 파티션을 연산한다. 모션 보상 유닛 (44) 또한 기준 프레임, 예를 들어 I-프레임 또는 P-프레임의 서브-정수 픽셀들 (sub-integer pixels) 을 보간 (interpolate) 할 수도 있다. ITU H.264 표준은 기준 프레임들을 "리스트들" 이라고 부른다. 그러므로, 기준 프레임 저장소 (64) 내에 저장된 데이터가 리스트들 안에 저장될 수도 있다. 모션 추정 유닛 (42) 은 기준 프레임 저장소 (64) 로부터의 하나 이상의 기준 프레임들의 블록들을 현재 프레임, 예를 들어 P-프레임 또는 B-프레임의 인코딩될 블록과 비교한다. 기준 프레임 저장소 (64) 내의 기준 프레임들이 서브-정수 픽셀들에 대한 값들을 포함하면, 모션 추정 유닛 (42) 에 의하여 연산된 모션 벡터는 기준 프레임의 서브-정수 픽셀 위치를 가리킬 수도 있다.
몇 가지 예들에서, 모션 벡터를 인코딩하기 위하여, 모션 추정 유닛 (42) 은 모션 벡터 및 모션 예측기 간의 차분을 연산할 수도 있다. 모션 추정 유닛 (42) 은 모션 예측기를, 인코딩되는 중인 현재 블록의 상단, 좌측, 좌측 상단, 및 우측 상단 블록들의 모션 벡터들의 메디안으로서 선택할 수도 있다. 모션 추정 유닛 (42) 은 현재 블록의 좌측 상단 블록들이 파티셔닝되었는지 여부를 결정하고, 그렇다면 이러한 파티션들이 구별되는 모션 벡터들을 가지는지 여부를 또한 결정할 수도 있다. 만일 그렇다면, 모션 추정 유닛 (42) 은 이러한 후보 모션 벡터들 모두의 메디안으로부터 모션 예측기를 선택할 수도 있다. 모션 예측기를 결정한 이후에, 모션 추정 유닛 (42) 은 모션 벡터와 모션 예측기 간의 차분을 연산할 수도 있다. 모션 추정 유닛 (42) 은 연산된 차분을 엔트로피 코딩 유닛 (56) 으로 전송하고 연산된 모션 벡터를 모션 보상 유닛 (44) 으로 전송한다.
모션 보상 유닛 (44) 은 예측성 블록에 기초하여 예측 데이터를 연산할 수도 있다. 비디오 인코더 (20) 는 모션 보상 유닛 (44) 으로부터의 예측 데이터를 코딩되는 중인 원본 비디오 블록으로부터 감산함으로써 잔여 비디오 블록을 형성한다. 합산기 (50) 가 이러한 감산 동작을 수행하는 구성 요소 또는 구성 요소들을 나타낸다.
몇 가지 예들에서, 모션 보상 유닛 (44) 은 이 개시물의 기술들에 따라서, 어느 블록에 대한 기하학적 모션 파티션 라인에 의하여 정의되는 천이 영역에 있는 해당 블록 내의 픽셀들을 필터링할 수도 있다. 예를 들어, 모션 보상 유닛 (44) 은 영역 0 및 영역 1 모두로부터의 값들을 고려하는 3x3 픽셀 필터를 이용하여 천이 영역 내의 픽셀들에 대한 예측 값들을 연산할 수도 있으며, 여기서 영역 0 및 영역 1 은 기하학적 모션 파티션들에 대응한다. 다른 예로서, 모션 보상 유닛 (44) 은 영역 0 내의 픽셀들에 대한 값 및 영역 1 내의 픽셀들에 대한 값의 가중된 합을 연산함으로써 천이 영역 내의 픽셀들에 대한 예측 값들을 연산할 수 있다. 천이 영역 내의 픽셀에 대한 예측 값을 연산한 이후에, 합산기 (50) 는 해당 픽셀에 대한 잔여 값을 그 픽셀의 예측 값과 실제 값 간의 차분으로서 연산할 수도 있다. 이러한 방식으로, 합산기 (50) 에 의하여 연산되는 잔여 값은 모션 보상 유닛 (44) 에 의하여 연산되는 평활화된 예측 값들에 기초할 수도 있다.
변환 유닛 (52) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 잔여 블록 (residual block) 에 적용하여 잔여 변환 계수 값들을 포함하는 비디오 블록을 생성한다. 변환 유닛 (52) 은 H.264 표준에 의하여 정의되며 DCT 와 개념적으로 유사한 것과 같은 다른 변환들을 수행할 수도 있다. 웨이브릿 (wavelet) 변환들, 정수 변환들, 서브-대역 변환들 또는 다른 타입의 변환들도 이용될 수 있다. 어느 경우에는, 변환 유닛 (52) 은 변환을 잔여 블록에 적용하여 잔여 변환 계수들의 블록을 생성한다. 이 변환은 잔여 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수도 있다.
몇 가지 예들에서, 변환 유닛 (52) 은 모션 보상 유닛 (44) 으로부터 다양한 크기들을 가지는 블록들을 수신할 수도 있다. 모션 보상 유닛 (44) 은, 해당 블록이 기하학적 모션 파티션 라인에 접하는지 여부에 기초하여 블록 크기를 선택하도록 구성될 수도 있다. 예를 들어, 원본 블록이 16x16 블록이라고 가정한다. 모션 보상 유닛 (44) 은 원본 블록을 네 개의 8x8 블록들로 나눌 수도 있다. 그러면, 모션 보상 유닛 (44) 은, 기하학적 모션 파티션 라인과 접하는 네 개의 8x8 블록들 중 어느 것을 4x4 블록들로 분할할 수도 있다. 변환 유닛 (52) 은 각각의 잠재적 블록 크기에 대한 변환들로 구성될 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 는 블록들에 대한 잔여 값들을 연산할 때 기하학적 모션 파티셔닝된 블록들에 대한 적응적 변환 크기 선택을 수행할 수도 있다. 비록 16x16 블록의 예가 설명되었으나, 유사한 기술들이 예를 들어 32x32, 64x64 등의 다른 크기의 블록들에도 적용될 수도 있다. 더 나아가, 모션 보상 유닛 (44) 은 예를 들어, 4x4 인 최소 블록 크기로 구성될 수도 있다.
양자화 유닛 (54) 은 잔여 변환 계수들을 양자화하여 비트율 (bit rate) 을 더 감소시킨다. 양자화 프로세스는 계수들 일부 또는 전부와 관련되는 비트 깊이 (bit depth) 를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조절함으로써 수정될 수도 있다.
양자화에 후속하여, 엔트로피 코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 콘텐츠 적응형 가변 길이 코딩 (CAVLC), 콘텍스트 적응형 이진 산술 코딩 (CABAC), 또는 다른 엔트로피 코딩 기술을 수행할 수도 있다. 엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩에 후속하여, 인코딩된 비디오는 다른 디바이스로 송신되거나 후속 송신 또는 취출을 위하여 저장될 수도 있다. 콘텍스트 적응형 이진 산술 코딩의 경우에, 콘텍스트는 인접 매크로블록들에 기초할 수도 있다.
몇 가지 경우들에서, 엔트로피 코딩 유닛 (56) 또는 비디오 인코더 (20) 의 다른 유닛은 엔트로피 코딩에 외에도 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 매크로블록들 및 파티션들에 대한 CBP 값들을 결정하도록 구성될 수도 있다. 또한, 몇 가지 경우들에서, 엔트로피 코딩 유닛 (56) 은 매크로블록 또는 그의 파티션 내에서 계수들의 가변 길이 코딩을 수행할 수도 있다. 특히, 엔트로피 코딩 유닛 (56) 은 지그재그 스캔 또는 다른 스캔 패턴을 적용하여 매크로블록 또는 파티션 내의 변환 계수들을 스캔하고 압축을 더 하기 위하여 0들의 런 (run) 들을 인코딩할 수도 있다. 엔트로피 코딩 유닛 (56) 은 인코딩된 비디오 비트스트림 내에, 송신을 위한 적합한 구문 요소들로써 헤더 정보를 구성할 수도 있다.
역양자화 유닛 (58) 및 역변환 유닛 (60) 은 역양자화 및 역변환을 각각 적용하여, 픽셀 도메인에서 잔여 블록을, 예를 들어 기준 블록으로서 추후 이용되도록 재구성한다. 모션 보상 유닛 (44) 은 잔여 블록을 기준 프레임 저장소 (64) 의 프레임들 중 하나의 예측성 블록에 가산하여 기준 블록을 연산할 수도 있다. 또한, 모션 보상 유닛 (44) 은 하나 이상의 보간 필터들을 재구성된 잔여 블록에 적용함으로써 모션 추정에서 이용하기 위한 서브-정수 픽셀 값들을 연산할 수도 있다. 합산기 (62) 는 재구성된 잔여 블록을 모션 보상 유닛 (44) 에 의하여 생성된 모션 보상된 예측 블록에 가산하여 기준 프레임 저장소 (64) 에 저장하기 위한 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의하여, 후속 비디오 프레임 내의 블록들을 인터-코딩하기 위한 기준 블록으로서 이용될 수도 있다.
도 3 은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 일 예를 예시하는 블록도이다. 도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라 예측 유닛 (74), 역양자화 유닛 (76), 역변환 유닛 (78), 기준 프레임 저장소 (82) 및 합산기 (80) 를 포함한다. 몇 가지 예들에서, 비디오 디코더 (30) 는 비디오 인코더 (20) (도 2) 와 관련하여 설명된 인코딩 패스와 일반적으로 역인 디코딩 패스를 수행할 수도 있다. 인트라 예측 유닛 (74) 은 비트스트림 내에서 수신된 인트라 예측 모드들을 이용하여 공간적으로 인접한 블록들로부터 예측 블록을 형성할 수도 있다.
모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있다. 인코딩된 블록이 기하학적 모션 파티션 라인을 이용하여 파티셔닝되는 경우, 블록의 어느 픽셀들이 어느 파티션에 대응하는지를 결정하기 위하여, 모션 보상 유닛 (72) 은 해당 블록에 대한 기하학적 모션 파티션 라인의 정의를 수신할 수도 있다. 몇 가지 예들에서, 이 라인의 정의는 블록의 원점으로부터 기하학적 모션 파티션 라인의 중심까지의 라인의 길이 ρ 및 각도 θ에 따를 수도 있다. 몇 가지 예들에서, 이러한 라인의 정의는 기하학적 모션 파티션 라인의 기울기 m 및 y-절편 c 에 따른 것일 수도 있어서, 모션 보상 유닛 (72) 이 블록의 픽셀들이 어떤 기하학적 파티션에 대응할지를 표시하는 마스크를 고정 소수점 연산을 이용하여 연산할 수도 있다.
모션 보상 유닛 (72) 은 비트스트림 내에서 수신된 모션 벡터들을 이용하여 기준 프레임 저장소 (82) 내의 기준 프레임들 내의 예측 블록을 식별할 수도 있다. 몇 가지 예들에서, 모션 벡터들은 사전에 인코딩된 블록들 또는 그들의 파티션들로부터 선택된 모션 예측기들에 상대적으로 인코딩될 수도 있다. 따라서, 모션 보상 유닛 (72) 은 해당 블록 또는 파티션에 대한 모션 예측기를 결정하고 그 이후에 수신된 차분 값을 이 모션 예측기에 가산함으로써 모션 벡터를 디코딩할 수도 있다.
모션 보상 유닛 (72) 은 또한 평활화 필터를 이용하여 기하학적 모션 파티션들 간의 천이 영역 내의 픽셀들에 대한 예측 값을 연산하도록 구성될 수도 있다. 예를 들어, 모션 보상 유닛 (72) 은, 예측 값들을 결정하기 위하여, 이러한 픽셀들에 3x3 픽셀 필터를 적용할 수도 있다. 다른 예로서, 모션 보상 유닛 (72) 은 제 1 파티션으로부터의 값 및 제 2 파티션으로부터의 값의 가중된 합을 이용하여 천이 영역 내의 픽셀에 대한 예측 값을 연산할 수도 있다.
역양자화 유닛 (76) 은 비트스트림 내에서 제공되며 엔트로피 디코딩 유닛 (70) 에 의하여 디코딩된 양자화된 블록 계수들을 역 양자화, 즉, 양자화해제 (de-quantize) 한다. 역 양자화 프로세스는, 예를 들어 H.264 디코딩 표준 내에 정의되는 바와 같은 종래의 프로세스를 포함할 수도 있다. 또한, 역 양자화 프로세스는, 적용되어야 하는 양자화의 정도 및 유사한 방법으로 역 양자화의 정도를 결정하기 위하여, 각 매크로블록에 대하여 인코더 (50) 에 의하여 연산된 양자화 파라미터 QPY 를 이용하는 것을 포함할 수도 있다.
픽셀 도메인에서 잔여 블록들을 생성하기 위하여, 역 변환 유닛 (58) 은 역 변환을, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수들에 적용한다. 모션 보상 유닛 (72) 은, 모션 보상된 블록들을 생성하는데, 이 때 보간 필터들에 기초한 보간을 수행할 수도 있다. 서브-픽셀 정밀도 (sub-pixel precision) 를 가지고 모션 추정을 위하여 이용될 보간 필터들에 대한 식별자들이 구문 요소 내에 포함될 수도 있다. 모션 보상 유닛 (72) 은, 비디오 블록의 인코딩 도중에 비디오 인코더 (20) 에 의하여 이용된 바와 같은 보간 필터들을 이용하여 기준 블록의 서브-정수 픽셀들에 대한 보간된 값들을 연산할 수도 있다. 모션 보상 유닛 (72) 은 수신된 구문 정보에 따라서 비디오 인코더 (20) 에 의하여 이용된 보간 필터들을 결정하고 이 보간 필터들을 이용하여 예측성 블록들을 생성할 수도 있다.
몇 가지 예들에서, 역변환 유닛 (78) 은 모션 보상 유닛 (72) 으로부터 인코딩된 블록에 대한 변환 크기들의 표시자들을 수신할 수도 있다. 모션 보상 유닛 (72) 은 블록이 기하학적 모션 파티션에 접하는지 여부를 결정하고, 그렇다면 최소 변환 크기, 예를 들어 4x4 픽셀들의 크기가 될 때까지 변환 크기를 반으로 감소시킬 수도 있다. 몇 가지 예들에서, 변환된 블록들은 적용할 변환의 크기를 설명하는 구문 정보를 포함할 수도 있다.
모션 보상 유닛 (72) 은 구문 정보를 이용하여, 인코딩된 비디오 시퀀스의 프레임(들) 을 인코딩하는데 이용된 매크로블록들의 크기들, 인코딩된 비디오 시퀀스의 프레임의 각 매크로블록이 어떻게 파티셔닝되었는지를 설명하는 파티션 정보, 어떻게 각 파티션이 인코딩되는지를 표시하는 모드들, 각 인터-인코딩된 매크로블록 또는 파티션에 대한 하나 이상의 기준 프레임들, 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정할 수도 있다.
합산기 (80) 는 잔여 블록들을 모션 보상 유닛 (72) 또는 인트라-예측 유닛에 의하여 생성된 대응하는 예측 블록들과 합산하여 디코딩된 블록들을 형성한다. 원하는 경우, 블록화 아티팩트들을 제거하기 위하여, 디블록킹 필터가 디코딩된 블록들을 필터링하기 위하여 적용될 수도 있다. 그러면, 디코딩된 비디오 블록들이 기준 프레임 저장소 (82) 내에 저장되는데, 이것이 후속 모션 보상을 위한 기준 블록들을 제공하고, 디스플레이 디바이스 (도 1 의 디스플레이 디바이스 (32) 와 같은 디바이스) 에 제시되기 위한 디코딩된 비디오를 생성한다.
도 4 는 기하학적 모션 파티션 라인 (116) 을 이용하여 파티셔닝된 블록 (110) 을 예시하는 개념도이다. 기하학적 모션 파티션 라인 (116) 은 블록 (110) 을 두 파티션들인 영역 (112) 및 영역 (114) 로 파티셔닝한다.
몇 가지 예들에서, 기하학적 모션 파티션 라인 (116) 은 수직 라인 (120) 의 특성에 따라서 정의될 수도 있다. 특히, x-축 (113) 및 y-축 (111) 간의 교점을 블록 (110) 의 원점으로서 정의되도록 한다. 수직 라인 (120) 은 기하학적 모션 파티션 라인 (116) 에 수직이며, 점 (124) 에서 기하학적 모션 파티션 라인 (116) 과 만난다. 각도 (118) 는 x-축 (113) 에 대한 수직 라인 (120) 의 각도에 대응한다. 거리 (122) 는 블록 (110) 의 원점과 기하학적 모션 파티션 라인 (116) 의 점 (124) 간의 거리에 대응하는데, 이것은 블록 (110) 의 원점으로부터 기하학적 모션 파티션 라인 (116) 의 수직 거리이기도 하다. 각도 (118) 는 θ (세타) 라고도 불릴 수 있고, 거리 (122) 는 ρ (로) 라고도 불릴 수 있으며, θ 및 ρ 는 위에서 정의된 바와 같다. 이러한 방식으로, 기하학적 모션 파티션 라인 (116) 이 각도 (118) 및 거리 (122) 의 조합을 이용하여 블록 (110) 에 대하여 정의될 수도 있다.
대안적으로, 기하학적 모션 파티션 라인 (116) 은 기울기 (126) 및 y-절편 (128) 에 따라서 정의될 수 있다. 기울기 각도 (126) 는 기하학적 모션 파티션 라인 (116) 의 기울기에 대응한다. Y-절편 (128) 은 기하학적 모션 파티션 라인 (116) 이 y-축 (111) 과 교차하는 점에 대응한다. 기울기 (126) 는 또한 m 을 이용하여 표현될 수도 있고, y-절편 (128) 은 c를 이용하여 표현될 수 있는데, 이들은 위에서 정의된 바와 같다. 기울기 (126) 및 y-절편 (128) 은 정수 값들로서 표현됨으로써, 픽셀이 영역 (112) 및 영역 (114) 중 어디에 속하는지를 표시하는 블록 (110) 에 대한 마스크를 연산하는데 이용될 고정 소수점 연산을 허용할 수도 있다. 기울기 (126) 및 y-절편 (128) 은 위의 수학식 1 에 의한 각도 (118) 및 거리 (120) 와 수학적으로 관련되는데, 수학식 1 은 편의를 위하여 다음과 같이 다시 쓰여진다.
[수학식 1]
Figure 112012092919579-pct00014
도 5 는 기하학적 모션 파티션 라인 (138) 을 이용하여 파티셔닝된 블록 (130) 을 예시하는 개념도이다. 기하학적 모션 파티션 라인 (138) 은 블록 (130) 을 두 개의 영역들인 영역 (132) 및 영역 (134) 으로 분할한다. 천이 영역 (136) 은 기하학적 모션 파티션 라인 (138) 에 근처의 픽셀들을 포함한다. 몇 가지 예들에서, 천이 영역 (136) 은 영역 (132) 내의 적어도 하나의 인접 픽셀 및 영역 (134) 내의 적어도 하나의 인접 픽셀을 가지는 픽셀들을 포함하도록 정의될 수도 있다. 인접 픽셀들은 상단-인접, 하단-인접, 좌측-인접, 우측-인접, 좌측상단-인접, 우측상단-인접, 좌측하단-인접, 및/또는 우측하단-인접 중 임의의 하나 또는 이들 모두를 포함할 수도 있다.
천이 영역 (136) 내의 픽셀들은 다양한 수준의 음영으로써 예시되어, 해당 픽셀들이 영역 (132) 및 영역 (134) 중 어디에 더 가까운지를 나타낸다. 특히, 이 예에서는 음영이 더 밝은 픽셀들은 영역 (132) 에 더 가까우며, 음영이 더 어두운 픽셀들은 영역 (134) 에 더 가깝다. 일 예에서, 어떤 픽셀의 인접 픽셀들 중 다수가 특정 영역 내에 속한다면 그 픽셀은 해당 영역에 더 가깝다고 언급될 수도 있다. 몇 가지 예들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 천이 영역 (136) 내의 픽셀들에 평활화 필터를 적용하도록 구성될 수도 있다.
도 6 은 3x3 픽셀 어레이 (140) 를 예시하는 개념도이다. 픽셀 어레이 (140) 는 현재 픽셀 (142) 및 인접 픽셀들 (144A-144H) (인접 픽셀들 (144)) 을 포함한다. 특히, 도 6 의 예에서, 픽셀 (144B) 은 상단-인접 픽셀에 대응하고 픽셀 (144G) 은 하단-인접 픽셀에 대응하며, 픽셀 (144D) 은 좌측-인접 픽셀에 대응하고, 픽셀 (144E) 은 우측-인접 픽셀에 대응하며, 픽셀 (144A) 은 좌측상단-인접 픽셀에 대응하고, 픽셀 (144C) 은 우측상단-인접 픽셀에 대응하며, 픽셀 (144F) 은 좌측하단-인접 픽셀에 대응하고, 및 픽셀 (144H) 은 우측하단-인접 픽셀에 대응한다.
픽셀 어레이 (140) 는 현재 픽셀 (142) 이 천이 영역 내에 있는지, 즉, 기하학적 모션 파티션 라인 근처의 영역 내에 있는지 여부를 결정하는데 이용될 수도 있다. 두 개 이상의 인접 픽셀들 (144) 이 상이한 영역들 내에 있다면, 현재 픽셀 (142) 은 천이 영역 내에 포함된다고 언급될 수도 있다. 예를 들어, 만일 인접 픽셀 (neighbor pixel) (144D) 이 영역 0 내에 있고 인접 픽셀 (144E) 이 영역 1 내에 있다면, 현재 픽셀 (142) 은 천이 영역 내에 있다고 언급될 수도 있다. 몇 가지 예들에서, 현재 픽셀 (142) 은, 인접 픽셀들 중 다수가 특정 영역 내에 있을 경우에 그 영역에 더 가깝다고 언급될 수도 있다. 예를 들어, 현재 픽셀 (142) 은 인접 픽셀들 (144A, 144B, 144C, 144D, 및 144F) 이 영역 0 내에 있고 인접 픽셀들 (144E, 144G, 및 144H) 이 영역 1 내에 있다면 영역 0 에 더 가깝다고 언급될 수도 있다.
픽셀 어레이 (140) 는 또한 현재 픽셀 (142) 의 값을 조절하기 위한 3x3 평활화 필터를 정의하는 데에도 이용될 수 있다. 필터는 현재 픽셀 (142) 및 인접 픽셀들 (144) 각각에 대한 정의된 가중치들을 가질 수도 있다. 현재 픽셀 (142) 에 대한 값을 연산하기 위하여, 픽셀 어레이 (140) 내의 픽셀들 각각의 가중치들은 대응하는 위치들에서의 픽셀들의 값들로 승산되고, 가산되며, 가중치들의 합에 의하여 나누어질 수도 있다. 일 예에서, 인접 픽셀 (144A) 는 1 의 가중치를 가지고, 인접 픽셀 (144B) 는 2 의 가중치를 가지며, 인접 픽셀 (144C) 는 1 의 가중치를 가지고, 인접 픽셀 (144D) 는 2 의 가중치를 가지며, 인접 픽셀 (144E) 는 2 의 가중치를 가지고, 인접 픽셀 (144F) 는 1 의 가중치를 가지며, 인접 픽셀 (144G) 는 2 의 가중치를 가지고, 인접 픽셀 (144H) 는 1 의 가중치를 가지며, 그리고 현재 픽셀 (142) 은 3 의 가중치를 가진다. 이러한 가중치들은 개별 픽셀들의 값에 의하여 승산되고, 그리고 15 (1+2+1+2+3+2+1+2+1) 에 의하여 나누어짐으로써 현재 픽셀 (142) 에 대한 평활화된 값을 연산할 수도 있다.
다른 예에서, 인접 픽셀 (144A) 는 0 의 가중치를 가지고, 인접 픽셀 (144B) 는 1 의 가중치를 가지며, 인접 픽셀 (144C) 는 0 의 가중치를 가지고, 인접 픽셀 (144D) 는 1 의 가중치를 가지며, 인접 픽셀 (144E) 는 1 의 가중치를 가지고, 인접 픽셀 (144F) 는 0 의 가중치를 가지며, 인접 픽셀 (144G) 는 1 의 가중치를 가지고, 인접 픽셀 (144H) 는 0 의 가중치를 가지며, 그리고 현재 픽셀 (142) 은 4 의 가중치를 가진다. 이러한 가중치들은 개별 픽셀들의 값에 의하여 승산되고, 8 (1+1+4+1+1) 에 의하여 나누어짐으로써 현재 픽셀 (142) 에 대한 평활화된 값을 연산할 수도 있다. 다른 예들에서는, 인접 픽셀들 (144) 및 현재 픽셀 (142) 에 다른 가중치들이 역시 할당됨으로써 다른 평활화 필터들을 생성할 수도 있다. 더 나아가, 인접 픽셀들 (144) 에 할당된 가중치들은 반드시 대칭적이어야 할 필요가 없다. 더 나아가, 예를 들어, 5x5, 7x7 등과 같은 더 큰 평활화 필터들도 정의될 수 있다.
도 7 은 기하학적 모션 파티션 라인으로써 파티셔닝된 블록에 대한 잔여 값을 연산할 때 평활화를 수행하기 위한 예시적인 방법을 예시하는 흐름도이다. 예를 들기 위한 목적으로써 비디오 인코더 (20) 에 대하여 설명되었지만, 도 7 의 방법이 임의의 다른 처리 유닛에 의해서도 수행될 수 있다는 것이 이해되어야 한다. 예를 들어, 도 7 의 방법은 비디오 디코더 (30) 에 의해서도 적용될 수 있다.
우선, 비디오 인코더 (20) 는 인코딩될 비디오 데이터의 일 블록을 수신한다 (150). 이 예의 목적에서, 이 블록은 인터-예측 인코딩된 프레임, 예를 들어, P- 프레임 또는 B- 프레임에 대응하는 것으로 가정한다. 모션 추정 유닛 (42) 은 해당 블록에 대한 모션 검색을 수행한다. 모션 검색의 결과로서, 모션 추정 유닛 (42) 은 해당 블록이 기하학적 모션 파티션 라인을 이용하여 파티셔닝되어야 한다고 결정할 수도 있다 (152). 결과적으로, 모션 추정 유닛 (42) 은 해당 블록을 기하학적 모션 파티션 라인을 이용하여 파티셔닝하여, 각 기하학적 모션 파티션에 대해 하나, 즉 두 개의 모션 벡터들을 생성할 수도 있다.
모션 추정 유닛 (42) 은 기하학적 모션 파티션 라인의 정의와 함께 모션 벡터들을 모션 보상 유닛 (44) 으로 전송할 수도 있다. 몇 개의 예들에서, 기하학적 모션 파티션 라인의 정의는 해당 블록의 원점부터 기하학적 모션 파티션 라인까지의 수직 라인의 각도 및 거리 값들을 이용하거나, 또는 해당 기하학적 모션 파티션 라인에 대한 기울기 및 y-절편 값들을 이용함으로써 표시될 수도 있다. 모션 보상 유닛 (44) 은 기하학적 모션 파티션 라인에 대한 정의를 이용하여 해당 블록에 대한 마스크를 연산할 수도 있다. 라인이 수직 라인의 각도 및 길이를 이용하여 정의된다면, 연산은 부동 소수점 연산을 이용하여 이루어질 수도 있다. 라인이 기하학적 모션 파티션 라인의 기울기 및 y-절편을 이용하여 정의된다면, 연산은 고정 소수점 연산을 이용하여 이루어질 수도 있다.
모션 보상 유닛 (44) 은 블록 중에서 천이 영역에 대응되는 픽셀들을 결정할 수도 있다 (154). 이러한 픽셀들은 기하학적 모션 파티션들 중 하나에 적어도 하나의 인접 픽셀을 가지고 다른 기하학적 모션 파티션 내에 다른 인접 픽셀을 가지는 픽셀들에 대응될 수도 있다. 인접 픽셀들의 세트는 해당 픽셀의 직접 이웃들 (예를 들어, 바로 상단, 하단, 및 옆) 만을 포함할 수도 있거나, 또는 해당 픽셀에 대한 대각선 이웃들도 포함할 수 있다. 그러면, 모션 보상 유닛 (44) 이 천이 영역 내의 픽셀들에 대한 평활화 프로세스를 개시할 수도 있다.
정의에 의하면, 천이 영역 내의 픽셀들은 해당 블록의 기하학적 모션 파티션들 모두에 이웃들을 포함한다. 그러므로, 그 블록의 파티션들 모두로부터의 값들을 이용하여 천이 영역 내의 픽셀들에 대한 예측 값들을 연산함으로써, 두 파티션들 간에 평활화가 일어난다 (156). 몇 가지 예들에서, 천이 영역 내의 픽셀들의 평활화는 각 파티션으로부터의 천이 영역 내의 병치되는 픽셀들에 대한 값들의 가중치 합을 연산함으로써 일어난다.
몇 가지 예들에서, 천이 영역 내의 픽셀들의 평활화는, 천이 영역 내의 픽셀을 둘러싸는 픽셀들의 값들을 평균하여 천이 영역 내의 해당 픽셀에 대한 예측 값을 연산함으로써 발생되는데, 여기서 천이 영역 내의 해당 픽셀은 각 파티션 내에 인접 픽셀들을 포함한다. 따라서, 모션 보상 유닛 (44) 은, 계수들로서 할당된 가중치들을 가지는 필터를 필터링될 픽셀 및 인접 픽셀들에 적용함으로써 천이 영역 내의 픽셀들에 대한 예측 값들을 연산할 수도 있다. 그러면, 모션 보상 유닛 (44) 은 값들 각각을 가산하고 가중치들의 합으로 나눔으로써 이들 값들을 평균하여 필터링된 픽셀에 대한 예측 값을 생성할 수도 있다.
모션 보상 유닛 (44) 은 천이 영역 내의 픽셀들 각각에 대한 예측 값들을 유사한 방식으로 연산할 수도 있다. 그러면, 비디오 인코더 (20) 는 해당 블록의 잔여 값을 예측 값들을 원본 블록으로부터, 예를 들어 합산기 (50) 를 이용하여 감산함으로써 연산할 수도 있다 (158). 이하 더 상세히 설명되는 바와 같이, 비디오 인코더 (20) 는 블록에 대한 잔여를 변환 유닛 (52) 에 의하여 변환될 가변 크기의 서브-블록들로 분할할 수도 있다. 서브-블록들에 적용되는 변환들의 크기들은, 기하학적 파티션 라인이 파티션들을 통과하는지 여부에 기초하여 적응적으로 결정될 수도 있다. 또한, 비디오 인코더 (20) 는 연산된 잔여 값을 출력할 수도 있다. 출력 동작은, 네트워크를 통한 송신, 브로드캐스팅, 컴퓨터 판독가능 매체로의 저장, 또는 다른 방식에 의한 데이터의 출력을 포함할 수도 있다.
도 7 의 방법은 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 단계, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 그리고 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 해당 블록의 천이 영역 내의 픽셀의 예측 값을 연산하는 단계, 천이 영역 내의 픽셀의 예측 값에 기초하여 해당 블록의 천이 영역 내의 해당 픽셀의 잔여 값을 연산하는 단계, 및 해당 픽셀의 잔여 값을 출력하는 단계를 포함하는 방법으로서 요약될 수 있다.
유사한 방법이 비디오 디코더 (30) 에 의하여 수행될 수 있다. 이러한 방법은 비디오 데이터의 인코딩된 블록, 해당 인코딩된 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 기하학적 모션 파티션 라인의 정의, 및 해당 블록의 천이 영역 내의 픽셀에 대한 잔여 값을 수신하는 단계, 제 1 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 그리고 제 2 파티션으로부터의 적어도 하나의 인접 픽셀에 대한 값을 적용하는 필터를 이용하여 해당 블록의 천이 영역의 내의 픽셀에 대한 예측 값을 연산하는 단계, 예측 값 및 잔여 값에 기초하여 해당 블록의 천이 영역 내의 픽셀에 대한 재구성 값을 연산하는 단계, 및 픽셀의 재구성 값을 출력하는 단계를 포함할 수도 있다.
도 8 은 적응적 변환 크기 선택을 이용하여 변환될 예시적인 일 블록 (170) 을 예시하는 개념도이다. 블록 (170) 은 기하학적 모션 파티션 라인 (172) 을 이용하여 파티셔닝되어 있다. 도 8 의 예에서, 블록 (170) 은 16x16 픽셀 블록이다. 상이한 변환들을 이용하여 블록 (170) 의 서브-블록들을 변환하기 위하여, 변환 유닛 (52) (도 2) 은 상이한 크기들의 여러 변환들로 구성될 수도 있다. 비디오 인코더 (20) 는 우선 블록 (170) 을 네 개의 8x8 블록들 (174A-174D) (8x8 블록들 (174)) 로 분할할 수 있는데, 여기서 Tr 은 변환 크기를 표시하는 "변환"을 가리킨다.
8x8 블록들 (174) 각각에 대하여, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인 (172) 이 8x8 블록을 통과하는지 여부를 결정할 수도 있다. 그러하다면, 비디오 인코더 (20) 는 8x8 블록을 4x4 블록으로 더 분할할 수도 있다. 그렇지 않다면, 비디오 인코더 (20) 는 8x8 변환을 이용하여 8x8 블록을 변환할 수도 있다.
도 8 의 예에서, 기하학적 모션 파티션 라인 (172) 은 8x8 블록들 (174B, 174C, 및 174D) 을 통과한다. 그러므로, 8x8 블록들 (174B, 174C, 및 174D) 은 비-중첩 4x4 블록들로 더 분할된다. 따라서, 8x8 블록들 (174B, 174C, 및 174D) 의 4x4 서브-블록들은 이 예에서는 4x4 변환을 이용하여 변환될 것이다. 비디오 인코더 (20) 는 4x4 의 최소 변환 크기로 구성될 수도 있으며, 따라서 4x4 블록들을 더 분할하지 않을 수도 있다. 그러나, 최소 변환 크기는 4x4 일 필요가 없고, 대신에 2x2 일 수도 있으며, 또는 비디오 인코더 (20) 는 최소 변환 크기로 구성되지 않을 수도 있다. 몇 가지 예들에서, 최소 변환 크기는 4x4 보다 클 수도 있다. 이러한 예에서는, 기하학적 모션 파티션 라인 (172) 은 8x8 블록 (174A) 을 통과하지 않으며, 따라서, 8x8 변환이 8x8 블록 (174A) 에 적용되어야 한다.
도 9 는 적응적 변환 크기 선택을 이용하여 변환될 예시적인 다른 블록 (180) 의 개념도이다. 이 예에서, 블록 (180) 은 기하학적 모션 파티션 라인 (182) 에 의하여 파티셔닝된 32x32 블록을 포함한다. 처음에는, 비디오 인코더 (20) 는 블록 (180) 을 네 개의 16x16 블록들 (184-184D) (16x16 블록들 (184) 이라고도 함) 로 파티셔닝할 수도 있다. 그러면, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인 (182) 이 16x16 블록들 (184) 중 어느 것을 통과하는지 여부를 결정할 수도 있다.
이 예에서, 기하학적 모션 파티션 라인 (182) 은 16x16 블록 (184A) 을 통과하지 않는다. 그러므로, 비디오 인코더 (20) 는 16x16 파티션 (184A) 을 16x16 파티션을 이용하여 변환할 수도 있다. 비디오 인코더 (20) 는 16x16 블록들 (184B, 184C, 및 184D) 을 도 9 에 도시된 바와 같이 8x8 블록들로 더 분할할 수도 있는데, 그 이유는 기하학적 모션 파티션 라인 (182) 이 16x16 블록들 (184B, 184C, 및 184D) 을 통과하기 때문이다. 비디오 인코더 (20) 는 기하학적 모션 파티션 라인 (182) 이 지나는 8x8 블록들 각각을, 도 9 의 예에서 다시 도시된 바와 같이 4x4 블록들로 더 분할할 수도 있다. 이 예에서, 16x16 블록 (184B) 의 하나의 8x8 블록이 4x4 블록들로 더 분할되고, 16x16 블록 (184C) 의 한 8x8 블록이 4x4 블록들로 더 분할되며, 16x16 블록 (184D) 의 세 개의 8x8 블록들이 4x4 블록들로 더 분할된다. 예를 들기 위한 목적에서, 비디오 인코더 (20) 가 4x4 의 최소 변환 크기로 구성된다는 것이 가정된다.
비디오 인코더 (20) 는 분할되지 않은 8x8 블록들을 8x8 의 변환 크기를 이용하여 변환할 수도 있고, 4x4 블록들 각각을 4x4 의 변환 크기를 이용하여 변환할 수도 있다. 비디오 인코더 (20) 는 16x16 블록 (184A) 을 16x16 변환을 이용하여 변환할 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 는 블록 (180) 의 서브-블록들에 대한 변환 크기를, 이 서브-블록들이 기하학적 모션 파티션 라인 (182) 과 접하는지 여부에 기초하여 적응적으로 결정할 수도 있다.
도 10 은 NxN 블록의 서브-블록들에 대한 변환 크기들을 결정하기 위한 예시적인 방법을 예시하는 흐름도이다. 비록 예를 들기 위한 목적으로써 비디오 인코더 (20) 에 대하여 설명되었지만, 도 10 의 방법이 임의의 다른 처리 유닛에 의해서도 수행될 수 있다는 것이 이해되어야 한다. 예를 들어, 도 10 의 방법은 비디오 디코더 (30) 에 의해서도 적용되어, NxN 블록의 서브-블록들의 변환 크기를 결정함으로써, 예를 들어 해당 서브-블록들을 역변환할 수도 있다.
우선, 비디오 인코더 (20) 는 NxN 블록을 수신한다 (200). NxN 블록은 파티셔닝된 전체 블록이거나 또는 그의 서브-블록일 수도 있다. 비디오 인코더 (20) 는 기하학적 모션 파티션 라인이 NxN 블록을 통과하는지 여부를 결정할 수도 있다 (202). 그렇지 않다면 (202 의 "아니오" 브랜치), 비디오 인코더 (20) 는 NxN 의 변환 크기를 이용하여 NxN 블록을 변환할 수도 있다 (204).
반면에, 기하학적 모션 파티션 라인이 NxN 블록을 통과한다면 (202 의 "예" 브랜치), 비디오 인코더 (20) 는 NxN 블록을 네 개의 비-중첩 (N/2)x(N/2) 블록들로 분할할 수도 있다 (206). 그러면, 비디오 인코더 (20) 는 각 (N/2)x(N/2) 블록에 대한 변환 크기를 결정할 수도 있다 (208). 이를 수행하기 위하여, 비디오 인코더 (20) 는 각 (N/2)x(N/2) 블록에 대하여 도 10 의 방법에 대한 재귀적 호 (recursive call) 를 수행할 수도 있다. 즉, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인이 각 (N/2)x(N/2) 블록을 통과하는지 여부를 결정할 수도 있다. 그 라인이 통과하지 않는 블록들에 대해서는, 비디오 인코더 (20) 는 (N/2)x(N/2) 의 변환 크기를 이용하여 변환할 수 있고, 그 라인이 통과하는 블록들에 대해서는, 비디오 인코더 (20) 는 네 개의 (N/4)x(N/4) 블록들로 추가로 서브-분할하고 각 (N/4)x(N/4) 블록에 대한 변환 크기를 결정할 수 있는데, 여기서도 잠재적으로 도 10 의 방법의 재귀적 인스턴스 (recursive instance) 를 이용할 수도 있다. 그러면, 비디오 인코더 (20) 는 변환된 서브-블록들을 출력할 수도 있다. 출력 동작은, 네트워크를 통한 송신, 브로드캐스팅, 컴퓨터 판독가능 매체로의 저장, 또는 다른 방식에 의한 데이터의 출력을 포함할 수도 있다.
도 10 의 방법과 유사한 예시적 방법은 블록이 NxN 픽셀들을 포함하는 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하는 단계, 비디오 데이터의 해당 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하는 단계, 및 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 인코딩하는 단계를 포함할 수도 있다.
유사한 방법이 비디오 디코더 (30) 에 의하여 수행될 수도 있다. 비디오 디코더에 의하여 수행되는 예시적 방법은, 블록이 NxN 픽셀들을 포함하는 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 기하학적 파티션 및 제 2 기하학적 파티션으로 파티셔닝하는 단계, 비디오 데이터의 해당 블록을 네 개의 동일한 크기의 비-중첩 (N/2)x(N/2) 서브-블록들로 분할하는 단계, 및 기하학적 모션 파티션 라인이 통과하는 서브-블록들 중 적어도 하나를 (N/2)x(N/2) 보다 작은 변환 크기를 이용하여 역변환하는 단계를 포함할 수도 있다.
아래의 의사코드는, 도 10 의 방법의 예시적인 부분 구현예로서, (x, y) 에서의 시작점을 가지는 일 블록에 대한 변환 크기를 결정하기 위한 예시적 함수 "determineTransformSize" 를 제공한다. 변수 slope 및 intercept 는 해당 블록에 대한 기하학적 모션 파티션 라인을 정의하는 기울기 및 절편 값들이다. 변수 __minTransform 은 수평 및 수직 모두에서 최소 변환 크기에 따라서 정의되는 전역 변수 (global variable) 이며, 예를 들어 4 이다. 변수 currSize 는 현재 변환 크기이며, 이것은 기하학적으로 모션 파티셔닝된 NxN 블록에 대해서는 (N/2) 으로 초기화할 수도 있다.
변수 startPartition 은 (x, y) 에서의 해당 블록의 시작 픽셀에 대한 파티션에 대응하며, 변수 curPartition 은 해당 블록의 현재 픽셀에 대한 파티션을 추적한다. startPartition 및 curPartition 값들은 c 언어와 유사한 조건 연산자 "?"를 이용하여 연산되는데, 여기서 "condition ? result1 : result2" 은 "condition" 이 참일 경우에는 result1 을 반환하고, 그렇지 않으면 result2를 반환한다. 두 개의 'for' 루프들은 블록의 전체 픽셀들을 통하여 반복한다. 만일 어떤 점에서 현재 픽셀에 대한 파티션이 시작 픽셀의 파티션과 매칭되지 않으면, 기하학적 모션 파티션 라인은 해당 블록을 통과한다. 이것은 for 루프들로 하여금 중단하게 하고, 재귀적 호로 하여금 현재 변환 크기인 currSize 가 절반으로 감소된 상태로 determineTransformSize 하게 한다. 다른 경우에는, 해당 블록의 모든 픽셀들이 동일한 파티션 내에 있는 경우, 변환 크기 currSize 가 해당 블록을 변환하는데 이용될 수 있다.
int determineTransformSize (int currSize, int x, int y, int slope, int intercept) {
if (currSize > __minTransform) {
int curPartition = 0;
int startPartition = ((y - slope * x) > intercept) ? 0 : 1;
for (int i = x; ((i < x+currSize) && (curPartition == startPartition)); i++)
for (int j = y; ((j < y+currSize) && (curPartition == startPartition)); j++)
curPartition = ((j - slope * i) > intercept) ? 0 : 1;
if (curPartition == startPartition)
return currSize;
else
return determineTransformSize (currSize / 2, x, y, slope, intercept);
}
else
return currSize;
}
도 11 은 기하학적 파티셔닝된 블록 (220) 및 인접하는 서브-블록들 (228A-228F) (인접 서브-블록들 (228)) 을 예시하는 블록도이다. 기하학적 모션 파티션 라인 (226) 은 블록 (220) 을 두 파티션들인 파티션 (222) 및 파티션 (224) 로 분할한다. 비디오 인코더 (20) 와 같은 비디오 인코더는 인접 서브-블록들 (228) 의 개별 서브-블록에 대한 모션 벡터들에 상대적으로 파티션들 (222, 224) 에 대한 모션 벡터들을 인코딩할 수도 있다. 즉, 비디오 인코더 (20) 는 인접 서브-블록들 (228) 중 어느 것이 파티션들 (222, 224) 각각의 이웃들인 것으로 간주되는지를 결정할 수도 있다.
파티션 (222) 에 대한 이웃들은 파티션 (224) 의 이웃들인 것으로 반드시 간주되지는 않으며, 이와 유사하게 파티션 (224) 에 대한 이웃들은 파티션 (222) 에 대한 이웃들인 것으로 반드시 간주되지는 않는다. 예를 들어, 비디오 인코더 (20) 는 서브-블록들 (228) 각각이 파티션 (222) 의 이웃들이지만, 서브-블록들 (228) 중 어느 것도 파티션 (224) 의 이웃들이 아닌 것으로 결정할 수도 있다. 서브-블록들 (228A 및 228E) 각각에 대하여, 그 우측 가장자리 (border) 에 위치한 픽셀들이 어느 파티션의 이웃들이라면, 서브-블록은 해당 파티션의 이웃으로서 간주될 수도 있다. 서브-블록들 (228B 및 228F) 각각에 대하여, 그 하부 가장자리에 위치한 픽셀들이 어느 파티션의 이웃들이라면, 서브-블록은 해당 파티션의 이웃으로서 간주될 수도 있다. 서브-블록 (228D) 은, 자신의 우측 하부 모서리 픽셀이 어느 파티션에 이웃이라면 해당 파티션에 이웃으로 간주될 수도 있다. 서브-블록 (228C) 은 자신의 좌측 하부 모서리 픽셀이 어느 파티션에 이웃이라면 해당 파티션에 이웃으로 간주될 수도 있다. 다른 예에서, 어느 서브-블록의 부분 가장자리 픽셀들 (partial border pixels) 이 이웃들이라면, 해당 서브-블록은 파티션에 대해 이웃으로서 간주될 수도 있다.
어느 파티션에 대한 모션 예측기를 결정하기 위하여, 비디오 인코더 (20) 는 해당 파티션에 인접하는 것으로 간주되는 서브-블록들에 대한 모션 벡터들의 메디안을 연산할 수도 있다. 어느 파티션에 인접하는 것으로 간주되는 서브-블록들 (228) 의 모션 벡터들은 또한 후보 모션 예측기들의 일 세트라고 불릴 수도 있다. 예시를 위한 목적에서 서브-블록들 (228) 각각이 파티션 (222) 에 인접하는 것으로 결정된다고 가정하면, 비디오 인코더 (20) 는 서브-블록들 (228) 각각의 모션 벡터들의 메디안을 연산하여 파티션 (222) 에 대한 모션 예측기를 결정할 수도 있다. 그러면, 비디오 인코더 (20) 는 파티션 (222) 에 대한 모션 벡터와 파티션 (222) 에 대한 모션 예측기 간의 차분을 연산하여 모션 벡터를 인코딩할 수도 있다.
예시를 위한 목적에서 서브-블록들 (228C, 228E, 및 228F) 이 파티션 (224) 에 인접하는 것으로 결정된다고 가정하면, 비디오 인코더 (20) 는 서브-블록들 (228C, 228E, 및 228F) 의 모션 벡터들의 메디안을 연산하여 파티션 (224) 에 대한 모션 예측기를 결정할 수도 있다. 그러면, 비디오 인코더 (20) 는 파티션 (224) 에 대한 모션 벡터와 파티션 (224) 에 대한 모션 예측기 간의 차분을 연산하여 모션 벡터를 인코딩할 수도 있다.
이러한 방식으로, 비디오 인코더 또는 비디오 디코더는, 서브-블록들 (228A, 228B, 228C, 및 228D) 로부터만 선택하는 종래 방법들에 비하여 후보 모션 예측기들의 더 큰 세트로부터 모션 예측기를 선택할 수도 있다. 또한, 비디오 인코더 또는 비디오 디코더는 한 파티션 (예를 들어, 파티션 (222)) 에 대한 모션 예측기를 다른 파티션 (예를 들어, 파티션 (224)) 에 대한 모션 예측기와 독립적으로 선택할 수도 있다. 그러므로, 비록 파티션들 (222, 224) 이 동일 블록 (220) 의 파티션들이라 하더라도, 파티션들 (222, 224) 에 대한 모션 예측기들은 상이할 수도 있다. 따라서, 비디오 인코더 또는 디코더는, 파티션을 포함하는 블록 즉 해당 파티션이 그 일부를 형성하는 블록이 아니라, 후보 모션 예측기들에 관련된 서브-블록들이 해당 파티션에 인접하는지 여부에 기초하여, 그 파티션에 대한 모션 예측기를 선택할 수도 있다.
도 12 는 비디오 데이터의 일 블록의 기하학적 모션 파티션들의 모션 벡터들을 인코딩하기 위한 예시적인 방법을 예시하는 흐름도이다. 예시를 위한 목적에서 비디오 인코더 (20) 를 참조하여 설명되었지만, 도 12 의 방법이 다른 처리 유닛에 의해서도 수행될 수도 있다는 것이 이해되어야 한다. 예를 들어, 도 12 의 방법은 비디오 디코더 (30) 에 의해서도 적용되어 기하학적으로 모션 파티셔닝된 블록의 인코딩된 모션 벡터들을 디코딩할 수도 있다.
우선, 비디오 인코더 (20) 는 비디오 데이터의 일 블록을 수신한다 (250). 그러면, 비디오 인코더 (20) 는 기하학적 모션 파티션을 이용하여 해당 블록을 파티셔닝할 수도 있다 (252). 그러면, 비디오 인코더 (20) 는 제 1 기하학적 모션 파티션에 대한 후보 예측기들의 세트를 결정할 수도 있다 (254). 즉, 비디오 인코더 (20) 는 이 블록에 인접하는 서브-블록들의 세트 중 어느 것이 제 1 파티션에도 인접하는 것으로 간주되는지를 결정할 수도 있다. 그러면, 비디오 인코더 (20) 는 제 1 파티션에 인접하는 서브-블록들에 대한 모션 벡터들을 취출할 수도 있다. 그러면, 비디오 인코더 (20) 는 이러한 모션 벡터들의 메디안을 연산하고 연산된 메디안을 제 1 파티션에 대한 모션 예측기로서 이용할 수도 있다 (256). 그러면, 비디오 인코더 (20) 는 제 1 파티션에 대한 모션 벡터와 제 1 파티션에 대한 모션 예측기 간의 차분을 연산하고, 제 1 파티션에 대한 예측기에 상대적으로 모션 벡터를 인코딩한다 (258).
다음으로, 비디오 인코더 (20) 는 제 2 기하학적 모션 파티션에 대한 후보 예측기들의 세트를 결정할 수도 있다 (260). 즉, 비디오 인코더 (20) 는 이 블록에 인접하는 서브-블록들의 세트 중 어느 것이 제 2 파티션에도 인접하는 것으로 간주되는지를 결정할 수도 있다. 그러면, 비디오 인코더 (20) 는 제 2 파티션에 인접하는 서브-블록들에 대한 모션 벡터들을 취출할 수도 있다. 그러면, 비디오 인코더 (20) 는 이러한 모션 벡터들의 메디안을 연산하고 연산된 메디안을 제 2 파티션에 대한 모션 예측기로서 이용할 수도 있다 (262). 그러면, 비디오 인코더 (20) 는 제 2 파티션에 대한 모션 벡터와 제 2 파티션에 대한 모션 예측기 간의 차분을 연산하고, 제 2 파티션에 대한 예측기에 상대적으로 모션 벡터를 인코딩한다 (264). 그러면, 비디오 인코더 (20) 는 인코딩된 모션 벡터들을 출력할 수도 있다. 출력 동작은, 네트워크를 통한 송신, 브로드캐스팅, 컴퓨터 판독가능 매체로의 저장, 또는 다른 방식에 의한 데이터의 출력을 포함할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 는 어떤 블록의 기하학적 모션 파티션들에 대한 모션 벡터들을, 각 파티션에 대하여 독립적으로 선택된 후보 모션 예측기들을 이용하여 서로로부터 독립적으로 인코딩할 수도 있다. 그러므로, 비디오 인코더 (20) 는 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 단계, 제 1 파티션에 대한 제 1 모션 벡터 및 제 2 파티션에 대한 제 2 모션 벡터를 결정하는 단계, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 모션 벡터를 인코딩하는 단계, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 모션 벡터를 인코딩하는 단계로서, 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접하는 블록들과는 독립적으로 결정되는, 상기 제 2 모션 벡터를 인코딩하는 단계, 및 인코딩된 제 1 및 제 2 모션 벡터들을 출력하는 단계를 포함하는 방법을 수행할 수도 있다. 또한, 비디오 인코더 (20) 는 도 11 을 참조하여 논의된 바와 같이, 종래 사용된 것보다 더 큰 모션 벡터들의 세트로부터 후보 모션 예측기들을 선택할 수도 있다.
비디오 디코더 (30) 는 인코딩된 블록에 대한 인코딩된 모션 벡터를 디코딩하기 위하여 유사한 방법을 이용할 수도 있다. 모션 예측기와 모션 벡터 간의 차분을 연산하는 대신에, 비디오 디코더 (30) 는 인코딩된 모션 벡터를 수신하고 인코딩된 모션 벡터에 대한 값을 모션 예측기에 가산하여 모션 벡터를 디코딩할 수도 있다. 따라서, 비디오 디코더 (30) 는 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 일 블록, 제 1 파티션에 대한 제 1 인코딩된 모션 벡터 및 제 2 파티션에 대한 제 2 인코딩된 모션 벡터를 수신하는 단계, 제 1 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 1 모션 예측기에 기초하여 제 1 인코딩된 모션 벡터를 디코딩하는 단계, 제 2 파티션에 인접하는 블록들에 대한 모션 벡터들로부터 선택된 제 2 모션 예측기에 기초하여 제 2 인코딩된 모션 벡터를 디코딩하는 단계로서, 제 2 파티션에 인접하는 블록들은 제 1 파티션에 인접한 블록들과는 독립적으로 결정되는, 상기 제 2 인코딩된 모션 벡터를 디코딩하는 단계, 및 디코딩된 제 1 및 제 2 모션 벡터들을 이용하여 해당 블록을 디코딩하는 단계를 포함하는 방법을 수행할 수도 있다.
도 13 은 고정 소수점 구현예를 이용하여 비디오 데이터의 일 블록을 인코딩하기 위한 예시적인 방법을 예시하는 흐름도이다. 예시를 위한 목적에서 비디오 인코더 (20) 를 참조하여 설명되었지만, 도 13 의 방법이 다른 처리 유닛에 의해서도 수행될 수도 있다는 것이 이해되어야 한다. 예를 들어, 도 13 의 방법은 비디오 디코더 (30) 에 의해서도 적용되어 비디오 데이터를 고정 소수점 구현예에서 디코딩할 수도 있다.
우선, 비디오 인코더 (20) 는 비디오 데이터의 일 블록을 수신한다 (280). 그러면, 비디오 인코더 (20) 는 기하학적 모션 파티션을 이용하여 해당 블록을 파티셔닝할 수도 있다 (282). 비디오 인코더 (20) 는 해당 블록을 파티셔닝하는데 이용되는 기하학적 모션 파티션 라인을 해당 기하학적 모션 파티션 라인에 수직이며 해당 블록의 원점에서 시작되는 라인 세그먼트의 각도 θ 및 길이 ρ 에 따라서 정의할 수도 있다.
비디오 인코더 (20) 는 각도 및 길이 값들에 대한 스텝 크기들로 구성됨으로써, 각도 및 길이 값들이 특정 비트수를 가지는 정수에 의해 저장될 수 있도록 할 수도 있다. 일 예로서, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인을 정의하는 각도 값을 5-비트 숫자 내에서 저장하도록 구성될 수도 있다. 각도 값은 1 의 스텝 크기 및 0 내지 31 의 범위를 가질 수도 있는데, 이 범위는 아래끝 및 위끝을 포함한다. 그러므로, 각도 값의 두 개의 연속하는 스텝들 간의 차분은 11.25 도 만큼의 차분을 나타낼 수도 있다. 길이 값은 블록의 크기에 의존할 수 있으며, 0 내지 N/2-1 의 범위를 갖는 유부호 (signed) 정수에 대응할 수 있는데, 여기서 이 범위는 아래끝 및 위끝을 포함하고 N 은 블록 크기를 나타낸다. 그러므로, 예를 들어, 16x16 블록들에 대해서는, 길이 값은 0과 7 사이의 유부호 정수에 대응될 수도 있고; 32x32 블록들에 대해서는, 길이 값은 0과 15 사이의 유부호 정수에 대응될 수도 있으며; 64x64 블록들에 대해서는, 길이 값은 0과 31 사이의 유부호 정수에 대응될 수도 있다.
그러나, 고정 소수점 구현을 허용하기 위해서는, 비디오 인코더 (20) 는 기하학적 모션 파티션 라인의 기울기 및 y-절편을 연산할 수도 있으며, 예를 들어 수학식 1 에 따라서 연산할 수도 있다 (284). 비디오 인코더 (20) 는 기울기 및 y-절편을 정수 값들로 표현할 수도 있다. 즉, 비디오 인코더 (20) 는 각도 및 길이 값들로부터 기울기 및 y-절편 값들을 연산하고, 기울기 및 y-절편 값들을 정수 값 예를 들어, 65536과 승산하며, 그 이후에 연산된 기울기 및 y-절편 값들을 최근접 정수로 반올림할 수도 있다. 비디오 인코더 (20) 는 결과적으로 얻어지는 기울기 및 y-절편 값들을 적합한 크기를 가지는 비트 벡터, 예를 들어 32-비트 정수 값으로서 저장할 수도 있다.
그러면, 비디오 인코더 (20) 는 해당 블록에 대한 마스크를 기울기 및 y-절편 값들을 이용하여 연산할 수도 있다 (286). 즉, 비디오 인코더 (20) 는 해당 블록의 각 점들을 통해서 반복함으로써 해당 점이 영역 0 및 영역 1 (예를 들어, 도 11 의 예에서는 파티션 (222) 또는 파티션 (224)) 중 어디에 있는지를 결정할 수도 있다. 비디오 인코더 (20) 는 해당 블록을 인코딩할 때 이 마스크를 참조하는데, 즉, 이 마스크에 기초하여 해당 블록을 인코딩한다 (288). 예를 들어, 비디오 인코더 (20) 는 어느 블록에 대한 잔여를 연산하기 위하여, 그 블록의 각 파티션의 경계들을 결정할 수도 있다. 즉, 비디오 인코더 (20) 는 이 마스크를 참조하여, 그 블록의 픽셀들에 대한 값을 제 1 파티션과 관련된 모션 벡터를 이용하여 취출할지 또는 제 2 파티션과 관련된 모션 벡터를 이용하여 취출할지를 결정할 수도 있다.
비디오 인코더 (20) 는 이러한 모션 벡터들을 이용하여 픽셀들에 대한 값들을 취출하고 이러한 값들과 인코딩될 블록 간의 차분을 연산함으로써 해당 블록에 대한 잔여를 연산할 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 는 블록 내의 픽셀들이 제 1 파티션 또는 제 2 파티션 중 어디에 대응하는지를 이 마스크를 이용하여 결정하고, 제 1 파티션 내의 픽셀들에 대한 예측 값들을 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 취출하며, 제 2 파티션 내의 픽셀들에 대한 예측 값들을 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 취출할 수도 있다.
몇 가지 예들에서, 비디오 인코더 (20) 는 이 개시물에 설명된 평활화 기법들을 이용하여 파티션들 간의 천이를 평활화할 수도 있다. 즉, 비디오 인코더 (20) 는 천이 영역 내의 블록의 픽셀들의 세트를 결정하고, 천이 영역 내의 픽셀들의 이러한 세트에 대한 예측 값들을, 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 연산할 수도 있다.
그러면, 비디오 인코더 (20) 는 인코딩된 블록과 함께, 기하학적 모션 파티션 라인을 정의하는 기울기 및 y-절편 값들을 출력할 수도 있다 (290). 출력 동작은, 네트워크를 통한 송신, 브로드캐스팅, 컴퓨터 판독가능 매체로의 저장, 또는 다른 방식에 의한 데이터의 출력을 포함할 수도 있다. 비디오 인코더 (20) 는 더 나아가 파티션들에 대한 모션 벡터들을 이 개시물의 기술들을 이용하여 인코딩할 수도 있으며, 그리고 잔여의 서브-블록들을 변환할 때 이 개시물의 적응적 변환 크기 선택 기술들을 적용할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 와 같은 비디오 인코더에 의하여 수행될 수도 있는, 도 13 의 방법에 대응하는 예시적인 방법은, 비디오 데이터의 일 블록을 기하학적 모션 파티션 라인을 이용하여 제 1 파티션 및 제 2 파티션으로 파티셔닝하는 단계, 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하는 단계로서, 기울기 값 및 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 연산하는 단계, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 표시하는 마스크를 연산하는 단계, 이 마스크에 기초하여 제 1 파티션 및 제 2 파티션을 인코딩하는 단계, 및 인코딩된 제 1 파티션, 인코딩된 제 2 파티션, 기울기 값, 및 y-절편 값을 출력하는 단계를 포함할 수도 있다.
비디오 디코더 (30) 와 같은 비디오 디코더는 비디오 데이터를 디코딩하기 위한 유사한 방법을 수행할 수도 있다. 비디오 데이터를 디코딩하기 위한 예시적인 방법은, 기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하는 단계, 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하는 단계로서, 기울기 값 및 y-절편 값은 정수 값들을 포함하는, 상기 수신하는 단계, 제 1 파티션 내의 블록의 픽셀들 및 제 2 파티션 내의 블록의 픽셀들을 표시하는 마스크를 연산하는 단계, 이 마스크에 기초하여 블록의 제 1 파티션 및 제 2 파티션을 디코딩하는 단계, 및 디코딩된 블록을 출력하는 단계를 포함할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로도 구현될 수 있다. 소프트웨어로 구현된다면, 이러한 기능들은 하나 이상의 명령어들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 송신될 수 있으며, 하드웨어 기초의 처리 유닛에 의하여 실행될 수도 있다. 컴퓨터 판독 가능한 매체는 데이터 저장 매체와 같은 컴퓨터 판독가능 매체나, 또는 예를 들어 통신 프로토콜에 따라, 한 장소에서 다른 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이러한 방법으로, 컴퓨터 판독 가능 매체는 일반적으로 (1) 비-일시적인 유형의 컴퓨터 판독가능 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 이 개시물에서 설명된 기법들의 구현을 위한 명령어들, 코드들 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능한 매체를 포함할 수도 있다.
비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타의 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 컴퓨터에 의해 액세스될 수 있는 명령어들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결도 적절하게 컴퓨터 판독가능 매체라고 칭한다. 예를 들어, 명령어들이 웹사이트, 서버, 또는 다른 원격 자원으로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 이를테면 적외선, 라디오, 및/또는 마이크로파를 이용하여 전송된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 그러나, 컴퓨터 판독 가능 저장 매체 및 데이터 저장 매체가, 연결들, 반송파들, 신호들 또는 다른 일시적 매체를 포함하지 않고, 대신에 비일시적이며 유형적인 저장 매체에 관련된 것이라는 것은 이해되어야 한다. 디스크 (Disk) 및 디스크 (disc) 는 여기서 사용되는 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하는데, disk들은 보통 데이터를 자기적으로 재생하지만, disc들은 레이저들로써 광학적으로 데이터를 재생한다. 상기한 것들의 조합들도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
명령어들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 기타 동등한 집적 또는 개별 로직 회로에 의해 실행될 수 있다. 따라서, 여기서 사용된 용어 "프로세서"는 앞서의 구조 또는 여기서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중의 어느 것이라도 가리킬 수 있다. 또한, 일부 양태들에서, 여기서 설명된 기능은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나, 또는 조합된 코덱 (codec) 내에 통합될 수도 있다. 또한, 그 기술들은 하나 이상의 회로들 또는 로직 요소들 내에서 완전히 구현될 수 있다.
이 개시물의 기법들은 무선 핸드셋, 집적회로 (IC) 또는 한 세트의 IC들 (예컨대, 칩 셋) 을 포함하는 매우 다양한 디바이스들 또는 장치들에서 구현될 수 있다. 다양한 구성요소들, 모듈들, 또는 유닛들이 개시된 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위하여 이 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의하여 반드시 구현되어야 하는 것은 아니다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은, 적합한 소프트웨어 및/또는 펌웨어와 연계하여, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호운용적 하드웨어 유닛들의 컬렉션에 의해 제공되거나 코덱 하드웨어 유닛 내에 조합될 수도 있다.
다양한 예들이 설명되었다. 이들 예들 및 다른 예들은 다음의 청구의 범위의 범위 내에 있다.

Claims (44)

  1. 비디오 데이터를 인코딩하는 방법으로서,
    기하학적 모션 파티션 라인 (geometric motion partition line) 을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝 (partitioning) 하는 단계;
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하는 단계로서, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 연산하는 단계;
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하는 단계로서, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하며, 상기 마스크를 연산하는 단계는, 상기 마스크 내의 각 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 (product) 사이의 차분치가 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하는 단계를 포함하는 상기 마스크를 연산하는 단계;
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하는 단계; 및
    상기 인코딩된 제 1 파티션, 상기 인코딩된 제 2 파티션, 상기 기울기 값, 및 상기 y-절편 값을 출력하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 마스크를 연산하는 단계는, 오직 고정 소수점 연산 (fixed point arithmetic) 을 이용하여 상기 마스크를 연산하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하는 단계는,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하는 단계;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하는 단계; 및
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  5. 제 4 항에 있어서,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하는 단계; 및
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하는 단계는,
    각도 값 및 길이 값에 기초하여 초기 기울기 값 및 초기 y-절편 값을 연산하는 단계로서, 상기 각도 값은, 상기 기하학적 모션 파티션 라인에 수직이며 원점을 지나는 라인의 x-축에 대한 각도를 포함하고, 상기 길이 값은, 상기 원점으로부터, 상기 기하학적 모션 파티션 라인에 수직인 라인이 상기 기하학적 모션 파티션 라인과 만나는 지점까지의 거리를 포함하는, 상기 초기 기울기 값 및 초기 y-절편 값을 연산하는 단계;
    상기 초기 기울기와 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱, 및 상기 초기 y-절편값과 상기 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱을 연산하는 단계; 및
    상기 기울기 값 및 상기 y-절편 값을 형성하기 위해 상기 곱들을 최근접 정수 값들로 반올림하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  7. 비디오 데이터를 인코딩하기 위한 장치로서,
    비디오 인코더를 포함하고,
    상기 비디오 인코더는,
    기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하고,
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하며, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하며,
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하고, 상기 마스크를 연산하기 위해, 상기 비디오 인코더는, 상기 마스크 내의 각 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 (product) 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하도록 구성되며,
    상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하며,
    상기 인코딩된 제 1 파티션, 상기 인코딩된 제 2 파티션, 상기 기울기 값, 및 상기 y-절편 값을 출력하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  8. 제 7 항에 있어서,
    상기 비디오 인코더는 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  9. 삭제
  10. 제 7 항에 있어서,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하기 위해, 상기 비디오 인코더는,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하고,
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하고,
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  11. 제 10 항에 있어서,
    상기 비디오 인코더는,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하고
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  12. 제 7 항에 있어서,
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하기 위해, 상기 비디오 인코더는,
    각도 값 및 길이 값에 기초하여 초기 기울기 값 및 초기 y-절편 값을 연산하고, 상기 각도 값은, 상기 기하학적 모션 파티션 라인에 수직이며 원점을 지나는 라인의 x-축에 대한 각도를 포함하고, 상기 길이 값은, 상기 원점으로부터, 상기 기하학적 모션 파티션 라인에 수직인 라인이 상기 기하학적 모션 파티션 라인과 만나는 지점까지의 거리를 포함하고,
    상기 초기 기울기와 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱, 및 상기 초기 y-절편값과 상기 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱을 연산하고,
    상기 기울기 값 및 상기 y-절편 값을 형성하기 위해 상기 곱들을 최근접 정수 값들로 반올림하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치.
  13. 비디오 데이터를 인코딩하기 위한 장치로서,
    기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하기 위한 수단;
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하기 위한 수단으로서, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 연산하기 위한 수단;
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하기 위한 수단으로서, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하고, 상기 마스크를 연산하기 위한 수단은, 상기 마스크 내의 각각의 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하기 위한 수단을 포함하는 상기 마스크를 연산하기 위한 수단;
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하기 위한 수단; 및
    상기 인코딩된 제 1 파티션, 상기 인코딩된 제 2 파티션, 상기 기울기 값, 및 상기 y-절편 값을 출력하기 위한 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  14. 제 13 항에 있어서,
    상기 마스크를 연산하기 위한 수단은, 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하기 위한 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  15. 삭제
  16. 제 13 항에 있어서,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하기 위한 수단은,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하기 위한 수단;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하기 위한 수단; 및
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하기 위한 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  17. 제 16 항에 있어서,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하기 위한 수단; 및
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하기 위한 수단을 더 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  18. 제 13 항에 있어서,
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하기 위한 수단은,
    각도 값 및 길이 값에 기초하여 초기 기울기 값 및 초기 y-절편 값을 연산하기 위한 수단으로서, 상기 각도 값은, 상기 기하학적 모션 파티션 라인에 수직이며 원점을 지나는 라인의 x-축에 대한 각도를 포함하고, 상기 길이 값은, 상기 원점으로부터, 상기 기하학적 모션 파티션 라인에 수직인 라인이 상기 기하학적 모션 파티션 라인과 만나는 지점까지의 거리를 포함하는, 상기 초기 기울기 값 및 초기 y-절편 값을 연산하기 위한 수단;
    상기 초기 기울기와 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱, 및 상기 초기 y-절편값과 상기 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱을 연산하기 위한 수단; 및
    상기 기울기 값 및 상기 y-절편 값을 형성하기 위해 상기 곱들을 최근접 정수 값들로 반올림하기 위한 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치.
  19. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행되는 경우, 프로세서로 하여금,
    기하학적 모션 파티션 라인을 이용하여 비디오 데이터의 블록을 제 1 파티션 및 제 2 파티션으로 파티셔닝하고;
    상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하며, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하며;
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하며, 상기 프로세서로 하여금 상기 마스크를 연산하게 하는 상기 명령들은, 상기 프로세서로 하여금, 상기 마스크 내의 각각의 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하게 하는 명령들을 포함하고;
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하며;
    상기 인코딩된 제 1 파티션, 상기 인코딩된 제 2 파티션, 상기 기울기 값, 및 상기 y-절편 값을 출력하게 하는, 컴퓨터 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 프로세서로 하여금 상기 마스크를 연산하게 하는 상기 명령들은, 상기 프로세서로 하여금 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  21. 삭제
  22. 제 19 항에 있어서,
    상기 프로세서로 하여금 상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 인코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하고;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하고;
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  23. 제 22 항에 있어서,
    상기 프로세서로 하여금,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하고;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  24. 제 19 항에 있어서,
    상기 프로세서로 하여금 상기 기하학적 모션 파티션 라인의 기울기 값 및 y-절편 값을 연산하게 하는 명령들은, 상기 프로세서로 하여금,
    각도 값 및 길이 값에 기초하여 초기 기울기 값 및 초기 y-절편 값을 연산하고, 상기 각도 값은, 상기 기하학적 모션 파티션 라인에 수직이며 원점을 지나는 라인의 x-축에 대한 각도를 포함하고, 상기 길이 값은, 상기 원점으로부터, 상기 기하학적 모션 파티션 라인에 수직인 라인이 상기 기하학적 모션 파티션 라인과 만나는 지점까지의 거리를 포함하고;
    상기 초기 기울기와 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱, 및 상기 초기 y-절편값과 상기 2의 거듭제곱을 포함하는 한 개 이상의 값들 각각의 곱을 연산하고;
    상기 기울기 값 및 상기 y-절편 값을 형성하기 위해 상기 곱들을 최근접 정수 값들로 반올림하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  25. 비디오 데이터를 디코딩하는 방법으로서,
    기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하는 단계;
    상기 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하는 단계로서, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 수신하는 단계;
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하는 단계로서, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하고, 상기 마스크를 연산하는 단계는, 상기 마스크 내의 각각의 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하는 단계를 포함하는, 상기 마스크를 연산하는 단계;
    상기 마스크에 기초하여 블록의 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하는 단계; 및
    상기 디코딩된 블록을 출력하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  26. 제 25 항에 있어서,
    상기 마스크를 연산하는 단계는, 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  27. 삭제
  28. 제 25 항에 있어서,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하는 단계는,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하는 단계;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하는 단계; 및
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하는 단계를 포함하는, 비디오 데이터를 디코딩하는 방법.
  29. 제 28 항에 있어서,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하는 단계; 및
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하는 단계를 더 포함하는, 비디오 데이터를 디코딩하는 방법.
  30. 비디오 데이터를 디코딩하기 위한 장치로서,
    비디오 디코더를 포함하고,
    상기 비디오 디코더는,
    기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고,
    상기 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하며, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하고,
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하며, 상기 마스크를 연산하기 위해, 상기 비디오 디코더는, 상기 마스크 내의 각각의 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하도록 구성되고,
    상기 마스크에 기초하여 블록의 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하고,
    상기 디코딩된 블록을 출력하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  31. 제 30 항에 있어서,
    상기 비디오 디코더는 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  32. 삭제
  33. 제 30 항에 있어서,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하기 위해, 상기 비디오 디코더는,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하고,
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하고,
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  34. 제 33 항에 있어서,
    상기 비디오 디코더는,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하고,
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치.
  35. 비디오 데이터를 디코딩하기 위한 장치로서,
    기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하기 위한 수단;
    상기 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하기 위한 수단으로서, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하는, 상기 기울기 값 및 y-절편 값을 수신하기 위한 수단;
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하기 위한 수단으로서, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하고, 상기 마스크를 연산하기 위한 수단은, 상기 마스크 내의 각각의 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하기 위한 수단을 포함하는, 상기 마스크를 연산하기 위한 수단;
    상기 마스크에 기초하여 블록의 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하기 위한 수단; 및
    상기 디코딩된 블록을 출력하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  36. 제 35 항에 있어서,
    상기 마스크를 연산하기 위한 수단은, 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  37. 삭제
  38. 제 35 항에 있어서,
    상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하기 위한 수단은,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하기 위한 수단;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하기 위한 수단; 및
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하기 위한 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  39. 제 38 항에 있어서,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하기 위한 수단; 및
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하기 위한 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치.
  40. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행되는 경우, 프로세서로 하여금,
    기하학적 모션 파티션 라인에 의하여 제 1 파티션 및 제 2 파티션으로 파티셔닝된 비디오 데이터의 인코딩된 블록을 수신하고;
    상기 기하학적 모션 파티션 라인을 정의하는 기울기 값 및 y-절편 값을 수신하며, 상기 기울기 값 및 상기 y-절편 값은 정수 값들을 포함하고;
    상기 기하학적 모션 파티션 라인을 정의하는 상기 기울기 값 및 상기 y-절편 값으로 정수 값을 사용하여 상기 제 1 파티션 내의 블록의 픽셀들 및 상기 제 2 파티션 내의 블록의 픽셀들을 나타내는 마스크를 연산하고, 상기 마스크는 각각 x-값들 및 y-값들을 포함하는 점들의 세트를 포함하며, 상기 프로세서로 하여금 상기 마스크를 연산하게 하는 상기 명령들은, 상기 프로세서로 하여금, 상기 마스크 내의 각각의 점에 대해, 상기 점의 y-값과 상기 기울기 값 및 상기 점의 x-값의 곱 사이의 차분이 상기 y-절편 값보다 큰지 여부를 나타내는 값으로 상기 마스크 내의 상기 점의 값을 설정하게 하는 명령들을 포함하고;
    상기 마스크에 기초하여 블록의 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하며;
    상기 디코딩된 블록을 출력하게 하는, 컴퓨터 판독가능 저장 매체.
  41. 제 40 항에 있어서,
    상기 프로세서로 하여금 상기 마스크를 연산하게 하는 상기 명령들은, 상기 프로세서로 하여금 오직 고정 소수점 연산을 이용하여 상기 마스크를 연산하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  42. 삭제
  43. 제 40 항에 있어서,
    상기 프로세서로 하여금 상기 마스크에 기초하여 상기 제 1 파티션 및 상기 제 2 파티션을 디코딩하게 하는 상기 명령들은, 상기 프로세서로 하여금,
    상기 마스크를 이용하여 블록 내의 픽셀들이 상기 제 1 파티션 또는 상기 제 2 파티션에 대응하는지 여부를 결정하고;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 1 파티션 내의 픽셀들에 대한 예측 값들을 취출하고;
    상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록으로부터 상기 제 2 파티션 내의 픽셀들에 대한 예측 값들을 취출하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  44. 제 43 항에 있어서,
    상기 프로세서로 하여금,
    천이 영역 내의 블록의 픽셀들의 세트를 결정하고;
    상기 제 1 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록 및 상기 제 2 파티션에 대한 모션 벡터에 의하여 표시되는 기준 블록에 기초하여 상기 천이 영역 내의 픽셀들의 세트에 대한 예측 값들을 연산하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020127029653A 2010-04-12 2011-04-11 기하학적 모션 파티셔닝을 위한 고정 소수점 구현 KR101515696B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US32323310P 2010-04-12 2010-04-12
US32324410P 2010-04-12 2010-04-12
US61/323,244 2010-04-12
US61/323,233 2010-04-12
US13/012,126 2011-01-24
US13/012,126 US8879632B2 (en) 2010-02-18 2011-01-24 Fixed point implementation for geometric motion partitioning
PCT/US2011/031997 WO2011130186A2 (en) 2010-04-12 2011-04-11 Fixed point implementation for geometric motion partitioning

Publications (2)

Publication Number Publication Date
KR20130025903A KR20130025903A (ko) 2013-03-12
KR101515696B1 true KR101515696B1 (ko) 2015-04-27

Family

ID=44626017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127029653A KR101515696B1 (ko) 2010-04-12 2011-04-11 기하학적 모션 파티셔닝을 위한 고정 소수점 구현

Country Status (6)

Country Link
EP (1) EP2559248A2 (ko)
JP (2) JP2013524730A (ko)
KR (1) KR101515696B1 (ko)
CN (1) CN102845062B (ko)
TW (1) TW201220851A (ko)
WO (1) WO2011130186A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019078581A1 (ko) * 2017-10-16 2019-04-25 디지털인사이트주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10362336B2 (en) * 2014-03-25 2019-07-23 Qualcomm Incorporated Palette predictor signaling with run length code for video coding
WO2016074744A1 (en) * 2014-11-14 2016-05-19 Huawei Technologies Co., Ltd. Systems and methods for processing a digital image
KR102138650B1 (ko) 2014-11-14 2020-07-28 후아웨이 테크놀러지 컴퍼니 리미티드 디지털 이미지의 블록을 처리하는 시스템 및 방법
KR102093802B1 (ko) 2014-11-14 2020-05-27 후아웨이 테크놀러지 컴퍼니 리미티드 디지털 이미지의 블록의 마스크 기반 처리를 위한 시스템 및 방법
US20180176595A1 (en) * 2015-05-12 2018-06-21 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
EP3340621B1 (en) * 2015-08-20 2023-01-25 Nippon Hoso Kyokai Image decoding device, and programs therefor
TWI603564B (zh) * 2015-10-28 2017-10-21 群邁通訊股份有限公司 感測器裝置及具有該感測器裝置之可穿戴裝置
WO2017101091A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Content based video encoding for wireless display
US10469841B2 (en) 2016-01-29 2019-11-05 Google Llc Motion vector prediction using prior frame residual
US10306258B2 (en) * 2016-01-29 2019-05-28 Google Llc Last frame motion vector partitioning
US10733766B2 (en) * 2016-10-19 2020-08-04 Google, Llc Methods and apparatus to encode and/or decode normals of geometric representations of surfaces
AU2018320382B2 (en) * 2017-08-22 2023-02-02 Panasonic Intellectual Property Corporation Of America Image encoder, image decoder, image encoding method, and image decoding method
CN112602324A (zh) * 2018-06-22 2021-04-02 Op方案有限责任公司 块水平几何划分
CN110662048A (zh) * 2018-06-28 2020-01-07 华为技术有限公司 一种图像编码方法以及设备
WO2020088689A1 (en) * 2018-11-02 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Usage of hmvp candidates in geometry partition prediction mode
CN117979023A (zh) * 2018-11-06 2024-05-03 北京字节跳动网络技术有限公司 具有几何分割的帧间预测的边信息信令
KR20210118154A (ko) 2019-01-28 2021-09-29 오피 솔루션즈, 엘엘씨 적응형 개수의 영역들을 갖는 기하학적 파티셔닝에서의 인터 예측
BR112022003641A2 (pt) 2019-09-01 2022-05-24 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processar dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador não transitórios
WO2021056219A1 (zh) * 2019-09-24 2021-04-01 北京大学 视频编解码的方法和装置
WO2021068921A1 (en) 2019-10-10 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Motion vector handling in geometry partition mode

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665342B1 (en) * 1999-07-02 2003-12-16 International Business Machines Corporation System and method for producing a still image representation of a motion video
KR100477649B1 (ko) * 2002-06-05 2005-03-23 삼성전자주식회사 다양한 프레임 사이즈를 지원하는 정수 코딩 방법 및 그를적용한 코덱 장치
JP4313710B2 (ja) * 2004-03-25 2009-08-12 パナソニック株式会社 画像符号化方法および画像復号化方法
US8606023B2 (en) * 2006-06-26 2013-12-10 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
US7756348B2 (en) * 2006-10-30 2010-07-13 Hewlett-Packard Development Company, L.P. Method for decomposing a video sequence frame
CN101822056B (zh) * 2007-10-12 2013-01-02 汤姆逊许可公司 用于视频编解码几何划分的双向预测模式划分的方法和装置
JP2009284275A (ja) * 2008-05-23 2009-12-03 Nippon Telegr & Teleph Corp <Ntt> 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラムおよびそれらのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN101605261A (zh) * 2009-07-13 2009-12-16 清华大学 一种用于视频图像分块的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Edson M.Hung et al: "On Macroblock Partition for Motion Compensation", Image Processing, 2006 IEEE International Conference, IEEE, PI, 1 Oct. 2006, pages 1697-1700..

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019078581A1 (ko) * 2017-10-16 2019-04-25 디지털인사이트주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11159793B2 (en) 2017-10-16 2021-10-26 Digitalinsights Inc. Method, device, and recording medium storing bit stream, for encoding/decoding image
US11265543B2 (en) 2017-10-16 2022-03-01 Digitalinsights Inc. Method, device, and recording medium storing bit stream, for encoding/decoding image
US11831870B2 (en) 2017-10-16 2023-11-28 Digitalinsights Inc. Method, device, and recording medium storing bit stream, for encoding/decoding image

Also Published As

Publication number Publication date
KR20130025903A (ko) 2013-03-12
JP2013524730A (ja) 2013-06-17
JP2014209743A (ja) 2014-11-06
CN102845062B (zh) 2015-04-29
CN102845062A (zh) 2012-12-26
EP2559248A2 (en) 2013-02-20
WO2011130186A2 (en) 2011-10-20
TW201220851A (en) 2012-05-16
WO2011130186A3 (en) 2012-03-08

Similar Documents

Publication Publication Date Title
KR101515696B1 (ko) 기하학적 모션 파티셔닝을 위한 고정 소수점 구현
KR101387276B1 (ko) 기하학적 모션 파티셔닝에 기인한 중첩 영역들의 평활화
EP3417613B1 (en) Geometric transforms for filters for video coding
EP2727353B1 (en) Video coding using adaptive motion vector resolution
KR101593289B1 (ko) 비디오 코딩을 위해 블록킹 현상 아티팩트들을 필터링하기
KR101864910B1 (ko) 화소 레벨 적응 인트라-평활화
KR101626734B1 (ko) 비디오 코딩을 위한 인트라 평활 필터
KR101589852B1 (ko) 비디오 코딩을 위한 2차 경계 필터링
US10887587B2 (en) Distance weighted bi-directional intra prediction
US11102474B2 (en) Devices and methods for intra prediction video coding based on a plurality of reference pixel values
KR20130030300A (ko) 사이즈 및 인트라 모드에 기초한 또는 에지 검출에 기초한 인트라 블록들 코딩을 위한 적응적 주파수 변환들

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 5