KR102552556B1 - 효율적인 저-복잡도 비디오 압축 - Google Patents

효율적인 저-복잡도 비디오 압축 Download PDF

Info

Publication number
KR102552556B1
KR102552556B1 KR1020177029569A KR20177029569A KR102552556B1 KR 102552556 B1 KR102552556 B1 KR 102552556B1 KR 1020177029569 A KR1020177029569 A KR 1020177029569A KR 20177029569 A KR20177029569 A KR 20177029569A KR 102552556 B1 KR102552556 B1 KR 102552556B1
Authority
KR
South Korea
Prior art keywords
distortion
value
distortion value
motion vector
minimum
Prior art date
Application number
KR1020177029569A
Other languages
English (en)
Other versions
KR20170134487A (ko
Inventor
칼레드 맘모우
아이하브 엠.에이. 아머
가버 시네스
존-폴 컴파뇽
제랄드 에스씨 찬
잉 루오
에드워드 에이. 해롤드
레이 장
베네딕트 치엔
Original Assignee
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이티아이 테크놀로지스 유엘씨 filed Critical 에이티아이 테크놀로지스 유엘씨
Publication of KR20170134487A publication Critical patent/KR20170134487A/ko
Application granted granted Critical
Publication of KR102552556B1 publication Critical patent/KR102552556B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • H04N19/428Recompression, e.g. by spatial or temporal decimation
    • 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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]

Landscapes

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

Abstract

요구되는 스토리지 용량에서의 상당한 감소로 귀결되는 모션 추정을 위한 왜곡 정보를 압축하는 낮은-복잡도 및 또한 효율적인 비가역 방법이 개시된다. 방법을 구현하기 위한 시스템 및 방법을 저장하기 위한 컴퓨터-판독가능한 매체가 또한 개시된다. 방법은 복수개의 트라이얼 모션 벡터들내 각각의 트라이얼 모션 벡터에 대한 왜곡 값을 결정하고 저장하는 단계를 포함한다. 각각의 트라이얼 모션 벡터는 기준 프레임에 관련하여 검색 영역의 위치를 지정한다. 방법은 저장된 왜곡 값들 중에서 최소 왜곡 값에 기초하여 비트들의 고정된 숫자로 왜곡 값들의 각각을 압축하고, 그것의 비압축된 값 대신에 각각의 압축된 왜곡 값을 재-저장하는 단계를 더 포함한다.

Description

효율적인 저-복잡도 비디오 압축
본 출원은 2015년 4월 6일에 출원된 U.S. 정규 특허 출원 No. 14/679,799의 우선권을, 이의 내용은 참조로서 본 출원에 통합된다.
본 발명은 전반적으로 비디오 프로세싱에 관한 것으로, 보다 상세하게는, 비디오 압축에 관한 것이다.
비디오 인코더들은 인코딩 되어야만 하는 이미지 데이터의 양을 줄이기 위해서 모션-보상된 예측(motion-compensated prediction)을 적용한다. 이것은 연속적인 프레임들간의 시간적인 상관관계(temporal correlation)를 활용함으로써 수행된다. 예를 들어, 만약 비디오가 정적상태 백그라운드에 대비하여 움직이는 오브젝트를 보인다면, 백그라운드를 나타내는 정보가 획득된 후에는 움직이는 오브젝트를 나타내는 정보만 인코딩될 필요가 있다. 기준 프레임과 현재 인코딩되고 있는 프레임간의 오브젝트 모션은 모션 벡터(motion vector)들에 의해 설명된다.
모션-보상된 예측 또는 모션 추정 (ME : motion estimation)은 현재 프레임의 각각의 가능한 픽셀 블럭 사이즈에 대하여, 앞에서 인코딩된 프레임 소위 기준 프레임(reference frame)내의 블럭들 중에서 "최상으로-가능한(best-possible)" 매칭을 찾는 단계를 포함한다. 대부분의 인코더들은 예측자(predictor)로서 어떤 블럭을 선택함으로써 유도되는 왜곡을 측정한다. "최상으로-가능한" 매칭은 비트율 예산(bitrate budget)에 의존하는 왜곡 값을 최소화함으로써 선택된다. 비트율이 증가함에 따라 왜곡은 증가하는 경향이 있기 때문에, 비트율 예산에 의존하는 "최상으로-가능한" 매칭을 찾는 것은 RD(rate-distortion) 최적화로 지칭된다.
고도로 정확한 ME 알고리즘들은 계산적 복잡도 및 메모리 대역폭에 관해 엄청나게 비용이 많이 든다. ME의 복잡도(complexity)는 최신 고효율 비디오 인코딩 (HEVC : High Efficiency Video Encoding) 표준에 따라 훨씬 증가하였고, 이는 4x8 픽셀들로부터 64x64 픽셀들까지의 예측 블럭 사이즈들을 허용하지만, 반면에 이전에 통상 사용되던 표준들은 흔히 8X8 픽셀들의 블럭들을 사용했다. 모든 가능한 블럭 사이즈에 대하여 최상 매칭(best match)를 찾는 것은 중복 계산들(redundant computations)을 수반하기 때문에, 소프트웨어 및/또는 하드웨어 비디오 인코더들의 실제적인 구현예들은 보다 적은 블럭들 (예를 들어, 4x8, 8x8 및 16x16)의 왜곡 값들을 저장하여 더 큰 블럭들 (예를 들어, 32x32 및 64x64)의 RD 코스트들을 평가할 때 그것을 재사용한다.
이런 병합-기반(merge-based) 전략들은 낮은 계산 복잡도(computational complexity) 및 메모리 대역폭 코스트에서 정확한 모션 추정을 제공하는 장점을 제공한다. 그러나, 모든 가능한 블럭 사이즈 및 모션 벡터의 조합에 대하여 왜곡 값들이 저장될 필요가 있기 때문에 이들 장점들은 고 스토리지 요건들의 코스트에서 획득된다.
요구되는 스토리지 용량에서의 상당한 감소로 귀결되는 모션 추정을 위한 왜곡 정보를 압축하는 낮은-복잡도 및 또한 효율적인 방법이 개시된다. 방법을 구현하기 위한 시스템 및 방법을 저장하기 위한 컴퓨터-판독가능한 매체가 또한 개시된다. 상기 방법은 일 실시예에서, 복수개의 트라이얼 모션 벡터들내 각각의 트라이얼 모션 벡터에 대한 왜곡 값을 결정하고 저장하는 단계를 포함한다. 각각의 트라이얼 모션 벡터는 기준 프레임에 관련하여 검색 영역의 위치를 지정한다. 상기 방법은 상기 저장된 왜곡 값들 중에서 최소 왜곡 값에 기초하여 비트들의 고정된 숫자로 상기 왜곡 값들의 각각을 압축하고, 그것의 비압축된 값 대신에 각각의 압축된 왜곡 값을 재-저장하는 단계를 더 포함한다.
첨부 도면과 결부하여 예시의 방식으로 제공되는 후술하는 설명으로부터 더욱 상세한 이해를 가질 수 있다.
도 1은 비디오 프로세싱내 모션 추정 정보를 압축하는 방법의 일 예를 도시한다.
도 2는 검색 영역의 예를 도시한다.
도 3은 비디오 프로세싱내 모션 추정 정보를 압축하는 방법의 다른 예를 도시한다.
도 4는 하나 이상의 개시된 방법 실시예들이 구현될 수 있는 예시적인 시스템의 블록도이다.
도 1은 비디오 프로세싱내 모션 추정 정보를 압축하는 방법의 일 예를 도시한다. 현재 프레임내 이미지 픽셀들의 블럭에 대한 검색 영역이 정의된다 (105). 검색 영역은 기준 프레임의 면적보다 더 적은 면적을 가질 수 있고 고정된 형상 또는 가변적 형상을 가질 수 있다. 기준 프레임에 관련한 검색 영역의 위치는 모션 벡터(motion vector)에 의해 정의된다. 트라이얼 모션 벡터(trial motion vector)가 복수개의 모션 벡터들 (110)에서 선택된다. 선택된 모션 벡터에 대한 왜곡 값이 결정되고 저장된다 (115). 이 시퀀스는 각각의 트라이얼 모션 벡터에 대한 왜곡 값이 결정되고 저장될 때까지 (120) 계속된다.
각각의 트라이얼 모션 벡터에 대한 왜곡 값이 결정되고 저장된 후에, 저장된 왜곡 값들 중에서 최소 왜곡 값이 결정된다(125). 그런다음, 각각의 저장된 왜곡 값들은 비트들의 고정된 숫자로, 또는 비트들의 고정된 숫자를 이용하여 압축되고, 압축은 최소 왜곡 값을 이용한다. 각각의 압축된 왜곡 값은 그런다음에 그것의 비압축된 값 대신에 다시 저장된다 (130). 이런 식으로, 상이한 트라이얼 모션 벡터들에 대한 왜곡 값들을 저장하는데 요구되는 스토리지 공간(storage space)의 양이 상당히 축소될 수 있다.
왜곡 값(distortion value)은 한정되는 것은 아니지만, 절대 차이 값들의 합 (SAD : sum of absolute difference), 절대 변환 차이 값들의 합 (SATD : sum of absolute transformed difference) 또는 제곱 오차의 합(SSE : sum of square errors)을 포함하는 임의의 많은 알려진 방법들을 이용하여 결정될 수 있다. 일반적으로, 왜곡 측정값들은 이하의 특성들을 나타낸다:
1) 그것들은 양의 정수들 또는 제로(0)이다;
2) 그것들은 고 공간적인 상관관계(spatial correlation)들을 가지며 - 즉, 소정의 블럭에 대하여, 인접한 모션 벡터들은 근접한 왜곡 값들을 갖는다; 및
3) 보다 적은 블럭들의 적은 왜곡 값들과 관련된 트라이얼 모션 벡터들은 선택될 더 높은 확률을 가진다.
이런 방법들에서, 검색 영역내 픽셀 값들은 기준 프레임내 대응하는 영역에 픽셀 값들과 비교된다. 이들 비교 결과를 나타내는 숫자들은 그런다음 두개의 그룹들의 픽셀 값들이 얼마나 유사한지 또는 얼마나 상이한지의 측정치들로서 역할을 하는 - 왜곡 값 - 단일 숫자로 결합된다. 일 실시예에서, 비트들 (230)의 고정된 숫자(fixed number)로서 왜곡 값들을 압축하고 디코딩하는 것은 단지 합산, 시프트(shift), 및 비트단위의 AND 연산들을 요구하는 방법들을 이용하여 수행될 수 있고, 그렇게 함으로써 방법의 실행을 단순화하고 속도를 올릴 수 있다. 이런 방법들은 온-더-플라이(on-the-fly) 인코딩 및 디코딩에 대하여 적절할 수 있다. 이런 방법의 일 예로서, 왜곡 값을 압축하는 것은 두개의 바이너리 정수들 p 및 q을 결정하고 저장하는 것에 의해 수행될 수 있고, 둘 모두는 유저-정의된 비트 길이를 가져서 모든 가능한 이런 바이너리 정수 쌍들에 대하여 표현:
Figure 112017101092702-pct00001
방정식 (1)
은 압축되고 있는 왜곡 값에 가장 근접하고, Dk는 최소 왜곡 값이고, s는 고정된 압축 시프트(compression shift)이다. 압축된 왜곡 값 D'은 그런다음에
Figure 112017101092702-pct00002
방정식 (2)
로서 표현될 수 있고, 여기서 "
Figure 112017101092702-pct00003
"는 "에 의해 근사된다(is approximated by)"로 읽혀질 수 있다. 나중 계산들을 위해서, 디코딩된 왜곡 값 D은 저장된 p 및 q을 탐색함으로써 그리고 값
Figure 112017101092702-pct00004
방정식 (3)
을 계산함으로써 획득될 수 있고, 여기서 ? ="는 "와 같다(is equal to)"로 읽혀진다. 이 실시예의 특정예에서, p의 유저-정의된 비트 길이는 6일 수 있고 q의 유저 정의된 비트 길이는 2일 수 있고, 왜곡 값은 8 비트들로 압축된다. 그와는 대조적으로, 과거에, SAD 또는 SATD의 비-압축된 저장된 값들은 16-24 비트들에 의해 표현되었다.
방정식 2에 왜곡 값을 압축하기 위한 알고리즘의 예는 :
// 유저-정의된 파라미터들
const unsigned int SAD_COMPRESSION_NUM_BITS = 8;
const unsigned int SAD_COMPRESSION_SHIFT0 = 4;
const unsigned int SAD_COMPRESSION_SHIFT1 = 6;
const unsigned int SAD_COMPRESSION_MASK0 = (1<<SAD_COMPRESSION_SHIFT1) - 1;
const unsigned int SAD_COMPRESSION_MASK1 = (1<<(SAD_COMPRESSION_NUM_BITS-SAD_COMPRESSION_SHIFT1)) - 1;
// 압축 프로세스
unsigned int compress_sad(unsigned int sad, unsigned int Dk)
{
// subtract Dk
sad -= Dk;
// compute p and q
unsigned int q = 0;
unsigned int p = (sad >> SAD_COMPPSION_SHIFT0);
while (p > SAD_COMPPSION_MASQ0)
{
p = (p >> 1);
++q;
}
p = (sad + (1 << (q+SAD_COMPPSION_SHIFT0-1))) >> (q+SAD_COMPPSION_SHIFT0);
// 만약 범위 밖이면 p 및 q 캡핑(cap)
if (q>SAD_COMPPSION_MASQ1) q = SAD_COMPPSION_MASQ1;
if (p>SAD_COMPPSION_MASQ0) p = SAD_COMPPSION_MASQ0;
// p 및 q를 하나의 부호없는(unsigned)정수 값에 결합
unsigned int res = p + (q << SAD_COMPPSION_SHIFT1);
return res;
}
방정식 3에서의 왜곡 값을 디코딩하기 위한 알고리즘의 예제는:
// 유저-정의된 변수들
const unsigned int SAD_COMPRESSION_NUM_BITS = 8;
const unsigned int SAD_COMPRESSION_SHIFT0 = 4;
const unsigned int SAD_COMPRESSION_SHIFT1 = 6;
const unsigned int SAD_COMPRESSION_MASK0 = (1<<SAD_COMPRESSION_SHIFT1) - 1;
const unsigned int SAD_COMPRESSION_MASK1 = (1<<(SAD_COMPRESSION_NUM_BITS-SAD_COMPRESSION_SHIFT1)) - 1;
// 압축 해제 프로세스
unsigned int decompress_sad(unsigned int res, unsigned int Dk)
{
return ((res & SAD_COMPRESSION_MASK0) << ((res >> SAD_COMPRESSION_SHIFT1) + SAD_COMPRESSION_SHIFT0)) + Dk;
}
예컨대 상기에서 설명된 방법들을 이용하여 결정된 정확도(accuracy)는 도면들 2 및 3에 도시된 방법들을 이용하여 개선될 수 있다. 도 2는 서브영역들로 분할된 검색 영역 (200)의 일 예를 도시하고, 서브영역들은 검색 영역 (200)내에 더 적은 정사각형들로 도시된다. 검색 영역 (200)은 비록 이들 특징부들 - 형상들, 서브영역들의 수, 등 -의 어떤 것도 제한하는 것으로 간주되지 않지만 7X7 어레이내 49 서브영역들로 분할된 정사각형으로 예시된다. 검색 영역 (200)은 앞에서 설명된 소정의 블럭에 대한 최소 왜곡 값을 갖는 검색 영역을 나타낸다. 중심 서브영역 (205)의 위치는 대략 검색 영역 (200)과 관련된 앞에서 결정된 모션 벡터를 나타낸다. 각각의 다른 서브영역들의 위치는 앞에서 결정된 모션 벡터와 다른 그러나 거기에 근접한 모션 벡터를 나타낸다.
도 3 은 최소 왜곡과 앞에서 결정된 모션 벡터를 개선하는 방법을 도시한다. 최소화 검색 영역(minimizing search region)이 스토리지로부터 탐색된다 (310). 이 최소화 검색 영역은 앞에서 설명된 최소 왜곡 값으로 귀결되는 앞에서 결정된 트라이얼 모션 벡터와 관련된다. 최소 검색 영역은 도 2 에 도시되고 상기에서 설명된 (315) 대로 서브 영역들로 분할된다. 그런다음 이들 서브영역들의 서브셋(subset)이 선택된다 (320). 제한하는 것으로 해석되지 않는 이런 서브셋의 예가, 도 2에 검은 정사각형(210)들에 의해 도시된다. 서브셋이 아닌 서브영역들은 더 밝은 정사각형들 (215)로 도시된다. 서브셋은 최소 왜곡 값과 관련된 트라이얼 모션 벡터와 관련된 서브영역(205) 주변에 집중될 수 있다. 서브셋내 서브영역들의 밀도는 중심 서브영역 (205)으로부터 거리가 증가함에 따라 축소될 수 있고, 최상의 모션 벡터는 중심 (205)에 더 근접한 것이 더 가능성이 있다는 아이디어를 반영한다.
도 3으로 돌아가서, 서브영역들의 서브셋이 정의된 후에, 새로운 왜곡 값이 서브셋 내 각각의 서브영역에 대하여 결정되고 저장된다 (325). 각각의 새로운 왜곡 값은 방법 예컨대 앞에서 설명된 방법들을 이용하여 저장하기 전에 압축될 수 있다. 새로운 최소 왜곡 값은 서브셋으로부터 결정된 새로운 왜곡 값들 가운데 결정되고, 새로운 최소 왜곡 값과 관련된 새로운, 개선된 모션 벡터가 결정된다 (330).
대안으로서, 서브셋이 아닌 각각의 서브영역, 예컨대 도 2에 서브영역들 (215)에 대한 왜곡 값은, 서브셋 (210)내 서브영역들에 대하여 저장된 왜곡 값들을 이용하여 보간될 수 있다. 보간된 왜곡 값들은 그런 다음 앞에서 결정된 모션 벡터를 개선할 때 서브셋 (210)에 대하여 결정된 왜곡 값들과 함께 사용될 수 있다.
도 4는 하나 이상의 개시된 실시예들이 구현될 수 있는 예시적인 시스템(400)의 블록도이다. 시스템(400)은 예를 들어, 컴퓨터, 게임 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비젼, 모바일 폰 또는 태블릿 컴퓨터를 포함할 수 있다. 시스템(400)는 프로세서(402), 메모리(404), 스토리지 디바이스(406), 하나 이상의 입력 디바이스(408) 및 하나 이상의 출력 디바이스(410)를 포함한다. 또한, 시스템(400)은 선택적으로 입력 드라이버(412) 및 출력 드라이버(414)를 포함할 수 있다. 시스템(400)이 도 4에 도시되지 않은 추가적인 요소를 포함할 수 있다는 것이 이해된다.
프로세서(402)는 중앙 처리 장치(CPU), 그래픽 프로세싱 유닛(GPU), 동일 다이 상에 위치된 CPU 및 GPU 또는 하나 이상의 프로세서 코어를 포함할 수 있으며, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(404)는 프로세서(402)와 동일한 다이 상에 위치될 수 있거나, 프로세서(402)와는 별개로 위치될 수 있다. 메모리(404)는 휘발성 또는 비휘발성 메모리, 예를 들어 랜덤 액세스 메모리(RAM), 동적 RAM 또는 캐시를 포함할 수 있다.
스토리지 디바이스(406)는 고정형 또는 제거가능 스토리지, 예를 들어 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광 디스크 또는 플래시 드라이브를 포함할 수 있다. 입력 디바이스(408)는 비디오 카메라, 비디오 디스크 플레이어, 또는 다른 비디오 이미지 소스, 키보드, 키패드, 터치스크린, 터치패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 측정 스캐너 또는 네트워크 접속(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함할 수 있다. 출력 디바이스(410)는 비디오 스크린, 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 광, 안테나, 네트워크 접속(예를 들어 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함할 수 있다.
입력 드라이버(412)는 프로세서(402) 및 입력 디바이스(408)와 통신하며, 프로세서(402)가 입력 디바이스(408)로부터 입력을 수신할 수 있게 한다. 출력 드라이버(414)는 프로세서(402) 및 출력 디바이스(410)와 통신하고, 프로세서(402)가 출력 디바이스(410)에 출력을 전송할 수 있게 한다. 입력 드라이버(412) 및 출력 드라이버(414)는 선택적인 컴포넌트이며, 입력 드라이버(412) 및 출력 드라이버(414)가 존재하지 않는다면 시스템(400)은 동일 방식으로 동작할 것이라는 것에 유의한다.
시스템 (400)은 앞에서 설명된 비디오 프로세싱에 모션 추정 정보를 압축하는 방법의 실시예들을 수행하도록 구성될 수 있다. 예를 들어, 메모리 (404) 또는 스토리지 디바이스 (406)는 블럭 및 복수개의 트라이얼 모션 벡터들에 대한 검색 영역(search region)을 저장하도록 구성될 수 있다. 프로세서 (402)는 상기 복수개의 트라이얼 모션 벡터들내 각각의 트라이얼 모션 벡터와 관련된 왜곡 값(distortion value)을 결정하도록 구성될 수 있고, 각각의 트라이얼 모션 벡터는 블럭에 관련하여 검색 영역의 위치를 지정한다. 프로세서 (402)는 메모리 (404) 또는 스토리지 디바이스 (406)내 왜곡 값들을 저장하도록 구성될 수 있다. 프로세서 (402)는 저장된 왜곡 값들 및 그것의 관련된 트라이얼 모션 벡터 가운데 최소 왜곡 값을 결정하도록 구성될 수 있다. 프로세서 (402)는 최소 왜곡 값을 이용하여 비트들의 고정된 숫자로서 왜곡 값들의 각각을 압축하고, 메모리 (404) 또는 스토리지 디바이스 (406)내 각각의 압축된 왜곡 값을 재저장(re-store)하도록 구성될 수 있다.
다수의 변형이 본 출원에서의 개시에 기초하여 가능하다는 것이 이해되어야 한다. 특히 특징 및 요소가 조합하여 상술되었지만, 각 특징 또는 요소는 다른 특징 및 요소 없이 단독으로, 또는 다른 특징 및 요소와 함께 또는 이들 없이 다양한 조합으로 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로 구현될 수 있다. 적절한 프로세서는 예시의 방식으로, 범용 프로세서, 특수 목적 프로세서, 통상적인 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 연관된 하나 이상의 마이크로프로세서, 컨트롤러, 마이크로컨트롤러, 어플리케이션 특정 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 회로, 임의의 다른 유형의 집적 회로(IC) 및/또는 상태 머신을 포함한다. 이러한 프로세서는 프로세싱된 하드웨어 기술 언어(HDL) 명령 및 넷리스트(컴퓨터 판독가능 매체에 저장될 수 있는 명령)를 포함하는 다른 중간 데이터의 결과를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 본 발명의 양태를 구현하는 프로세서를 제조하기 위해 반도체 제조 프로세스에서 사용되는 마스크워크(maskwork)일 수 있다.
본 출원에 제공되는 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 컴퓨터 판독가능 저장매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 컴퓨터 판독가능 저장매체의 예는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 제거 가능 디스크와 같은 자기 매체, 자기-광 매체, CD-ROM 디스크와 같은 광 매체 및 디지털 다용도 디스크(DVD : digital versatile disk)를 포함한다.

Claims (20)

  1. 비디오 프로세싱내 모션 추정 정보를 압축하는 방법에 있어서, 상기 방법은,
    복수개의 트라이얼 모션 벡터들내 각각의 트라이얼 모션 벡터(trial motion vector)에 대한 왜곡 값(distortion value)을 결정하고 저장하는 단계로서, 각각의 트라이얼 모션 벡터는 기준 프레임(reference frame)에 관련하여 검색 영역(search region)의 위치를 지정하는, 상기 결정하고 저장하는 단계; 및
    상기 저장된 왜곡 값들 중에서 최소 왜곡 값에 기초하여 비트들의 고정된 숫자(fixed number)로 상기 왜곡 값들의 각각을 압축하고, 그것의 비압축된 값 대신에 각각의 압축된 왜곡 값을 재-저장하는 단계(re-storing)를 포함하되,
    상기 왜곡 값들의 각각을 압축하는 단계는 바이너리 정수들 p 및 q을 결정하고 저장하는 단계를 포함하고, 둘 모두는 유저-정의된 비트 길이를 가지며, 상기 바이너리 정수 p는 일련의 비트들(a series of bits)을 포함하고, 상기 바이너리 정수 q는 고정된 압축 시프트 값 s에 따라 상기 바이너리 정수 p가 시프트되는 정도를 결정하고, 및
    상기 압축된 왜곡 값은 q 및 s에 기초하여 시프트된 상기 p의 값만큼 상기 최소 왜곡 값을 초과하는, 방법.
  2. 청구항 1에 있어서,
    상기 왜곡 값은, 절대 차이 값들의 합 (SAD : sum of absolute difference), 절대 변환 차이 값들의 합 (SATD : sum of absolute transformed difference) 또는 제곱 오차의 합(SSE : sum of square errors) 중 하나인, 방법.
  3. 청구항 1에 있어서,
    상기 왜곡 값들의 각각을 압축하는 단계는 단지 합산, 시프트(shift), 및 비트단위의(bitwise) AND 연산들을 요구하는, 방법.
  4. 청구항 1에 있어서,
    p의 상기 유저-정의된 비트 길이는 6이고 q의 상기 유저-정의된 비트 길이는 2인, 방법.
  5. 청구항 1에 있어서,
    나중 계산들을 위하여 각각의 압축된 왜곡 값을 디코딩하는 단계를 더 포함하되, 상기 디코딩된 값은
    Figure 112017110902869-pct00014
    와 같고, Dk는 상기 최소 왜곡 값을 포함하는, 방법.
  6. 청구항 1에 있어서,
    상기 최소 왜곡 값과 관련된 상기 트라이얼 모션 벡터를 갖는 최소화 검색 영역을 탐색하는 단계;
    상기 최소화 검색 영역을 서브영역들로 재분할하는 단계(subdividing);
    상기 최소 왜곡 값과 관련된 상기 트라이얼 모션 벡터 주변에 대략 집중된 상기 서브영역들의 서브셋을 정의하는 단계;
    상기 서브셋내 각각의 서브영역에 대한 왜곡 값을 결정하는 단계; 및
    상기 서브셋내 각각의 서브영역에 대한 상기 왜곡 값으로부터 최소 왜곡 값과 관련된 새로운 모션 벡터를 결정하는 단계에 의해 최소 왜곡과 관련된 상기 트라이얼 모션 벡터를 개선시키는 단계(refining)를 더 포함하는, 방법.
  7. 청구항 6에 있어서,
    상기 서브셋 내의 서브영역들에 대하여 저장된 왜곡 값들을 이용하여 상기 서브셋이 아닌 각각의 서브영역에 대한 왜곡 값을 보간하는 단계(interpolating)를 더 포함하는, 방법.
  8. 비디오 인코딩을 위한 시스템에 있어서,
    프로세서; 및
    스토리지 디바이스를 포함하되,
    상기 시스템은 비디오 프로세싱내 모션 추정 정보를 압축하는 방법을 수행하도록 구성되고, 상기 방법은:
    상기 프로세서가 복수개의 트라이얼 모션 벡터들내 각각의 트라이얼 모션 벡터(trial motion vector)에 대한 왜곡 값(distortion value)을 결정하고 상기 스토리지 디바이스에 저장하는 단계로서, 각각의 트라이얼 모션 벡터는 기준 프레임에 관련하여 검색 영역의 위치를 지정하고; 및
    상기 프로세서가 상기 저장된 왜곡 값들 중에서 최소 왜곡 값에 기초하여 비트들의 고정된 숫자로 상기 왜곡 값들의 각각을 압축하는 단계로서, 상기 스토리지 디바이스에 각각의 압축된 왜곡 값을 재-저장하되,
    상기 프로세서는 바이너리 정수들 p 및 q을 결정하고 상기 스토리지 디바이스에 저장함으로써 상기 왜곡 값들의 각각을 압축하도록 구성되고, 둘 모두는 유저-정의된 비트 길이를 가지며, 상기 바이너리 정수 p는 일련의 비트들을 포함하고, 상기 바이너리 정수 q는 고정된 압축 시프트 값 s에 따라 상기 바이너리 정수 p가 시프트되는 정도를 결정하고, 및
    상기 압축된 왜곡 값은 q 및 s에 기초하여 시프트된 상기 p의 값만큼 상기 최소 왜곡 값을 초과하는, 시스템.
  9. 청구항 8에 있어서,
    상기 프로세서는 절대 차이 값들의 합 (SAD : sum of absolute difference), 절대 변환 차이 값들의 합 (SATD : sum of absolute transformed difference) 또는 제곱 오차의 합(SSE : sum of square errors) 중 하나로서 상기 왜곡 값을 결정하도록 구성된, 시스템.
  10. 청구항 8에 있어서,
    상기 프로세서는 단지 합산, 시프트, 및 비트단위의 AND 연산들을 이용하여 상기 왜곡 값들의 각각을 압축하도록 구성되는, 시스템.
  11. 청구항 8에 있어서,
    상기 프로세서는 p에 대하여 6 그리고 q에 대하여 2의 유저-정의된 비트 길이를 이용하여 상기 왜곡 값들의 각각을 압축하도록 구성된, 시스템.
  12. 청구항 8에 있어서,
    상기 프로세서는 나중 계산들을 위하여 각각의 압축된 왜곡 값을 디코딩하도록 구성되고, 디코딩은 값
    Figure 112017110902869-pct00015
    을 계산하는 것을 포함하고, Dk는 상기 최소 왜곡 값을 포함하는, 시스템.
  13. 청구항 8에 있어서,
    최소 왜곡과 관련된 상기 트라이얼 모션 벡터를 개선시키도록 더 구성되고, 상기 프로세서는,
    상기 최소 왜곡 값과 관련된 상기 트라이얼 모션 벡터를 갖는 최소화 검색 영역을 상기 스토리지 디바이스로부터 탐색하고;
    상기 최소화 검색 영역의 미리 정의된 서브영역들의 미리 정의된 서브셋내 각각의 서브영역에 대한 왜곡 값을 결정하고 상기 스트리지 디바이스에 저장하고, 상기 미리 정의된 서브셋은 상기 최소 왜곡 값과 관련된 상기 트라이얼 모션 벡터 주변에 대략 집중되고; 및
    상기 서브셋내 각각의 서브영역에 대한 상기 왜곡 값으로부터 최소 왜곡 값과 관련된 새로운 모션 벡터를 결정하도록 구성된, 시스템.
  14. 청구항 13에 있어서,
    상기 프로세서는 상기 서브셋 내의 서브영역들에 대하여 저장된 왜곡 값들을 이용하여 미리 정의된 서브영역들의 미리 정의된 상기 서브셋이 아닌 각각의 서브영역에 대하여 왜곡 값을 보간하도록 더 구성된, 시스템.
  15. 비-일시적 컴퓨터-판독가능한 스토리지 매체에 있어서,
    복수개의 트라이얼 모션 벡터들내 각각의 트라이얼 모션 벡터(trial motion vector)에 대한 왜곡 값(distortion value)을 결정하고 저장하는 단계로서, 각각의 트라이얼 모션 벡터는 기준 프레임에 관련하여 검색 영역의 위치를 지정하는, 상기 결정하고 저장하는 단계; 및
    상기 저장된 왜곡 값들 중에서 최소 왜곡 값에 기초하여 비트들의 고정된 숫자로 상기 왜곡 값들의 각각을 압축하고, 그것의 비압축된 값 대신에 각각의 압축된 왜곡 값을 재-저장하는 단계에 의해 프로세싱 시스템에서 실행될 때, 상기 시스템이 모션 추정 정보를 압축하게 하는 명령들을 포함하되,
    상기 왜곡 값들의 각각을 압축하는 단계는 바이너리 정수들 p 및 q을 결정하고 저장하는 단계를 포함하고, 둘 모두는 유저-정의된 비트 길이를 가지며, 상기 바이너리 정수 p는 일련의 비트들(a series of bits)을 포함하고, 상기 바이너리 정수 q는 고정된 압축 시프트 값 s에 따라 상기 바이너리 정수 p가 시프트되는 정도를 결정하고, 및
    상기 압축된 왜곡 값은 q 및 s에 기초하여 시프트된 상기 p의 값만큼 상기 최소 왜곡 값을 초과하는, 비-일시적 컴퓨터-판독가능한 스토리지 매체.
  16. 청구항 15에 있어서,
    상기 왜곡 값들의 각각을 압축하는 단계는 단지 합산, 시프트, 및 비트단위의 AND 연산들을 요구하는, 비-일시적 컴퓨터-판독가능한 스토리지 매체.
  17. 청구항 15에 있어서, 상기 압축하는 단계는,
    상기 최소 왜곡 값과 관련된 상기 트라이얼 모션 벡터를 갖는 최소화 검색 영역을 탐색하는 단계;
    상기 최소화 검색 영역을 서브영역들로 재분할하는 단계(subdividing);
    상기 최소 왜곡 값과 관련된 상기 트라이얼 모션 벡터 주변에 대략 집중된 상기 서브영역들의 서브셋을 정의하는 단계;
    상기 서브셋내 각각의 서브영역에 대한 왜곡 값을 결정하고 저장하는 단계; 및
    상기 서브셋내 각각의 서브영역에 대한 왜곡 값으로부터 최소 왜곡 값과 관련된 새로운 모션 벡터를 결정하는 단계에 의해 최소 왜곡과 관련된 상기 트라이얼 모션 벡터를 개선시키는 단계를 더 포함하는, 비-일시적 컴퓨터-판독가능한 스토리지 매체.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020177029569A 2015-04-06 2016-04-05 효율적인 저-복잡도 비디오 압축 KR102552556B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/679,799 US9819962B2 (en) 2015-04-06 2015-04-06 Efficient low-complexity video compression
US14/679,799 2015-04-06
PCT/CA2016/050392 WO2016161507A1 (en) 2015-04-06 2016-04-05 Efficient low-complexity video compression

Publications (2)

Publication Number Publication Date
KR20170134487A KR20170134487A (ko) 2017-12-06
KR102552556B1 true KR102552556B1 (ko) 2023-07-06

Family

ID=57017266

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177029569A KR102552556B1 (ko) 2015-04-06 2016-04-05 효율적인 저-복잡도 비디오 압축

Country Status (6)

Country Link
US (1) US9819962B2 (ko)
EP (1) EP3281410B1 (ko)
JP (1) JP6680796B2 (ko)
KR (1) KR102552556B1 (ko)
CN (1) CN107431821B (ko)
WO (1) WO2016161507A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513732B2 (en) 2020-08-13 2022-11-29 Raytheon Company Fast data compression for systems with large dynamic ranges or other systems

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1311063C (en) 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
EP0547826A1 (en) 1991-12-18 1993-06-23 Raytheon Company B-adaptive ADPCM image data compressor
US6141382A (en) * 1998-09-18 2000-10-31 Sarnoff Corporation Using estimated distortion values
US7092584B2 (en) 2002-01-04 2006-08-15 Time Warner Entertainment Company Lp Registration of separations
US7194035B2 (en) * 2003-01-08 2007-03-20 Apple Computer, Inc. Method and apparatus for improved coding mode selection
US7088276B1 (en) * 2004-02-13 2006-08-08 Samplify Systems Llc Enhanced data converters using compression and decompression
CN101227614B (zh) * 2008-01-22 2010-09-08 炬力集成电路设计有限公司 视频编码系统的运动估计装置及其方法
EP2387004B1 (en) * 2010-05-11 2016-12-14 Dassault Systèmes Lossless compression of a structured set of floating point numbers, particularly for CAD systems
US9083983B2 (en) * 2011-10-04 2015-07-14 Qualcomm Incorporated Motion vector predictor candidate clipping removal for video coding
US9131210B2 (en) * 2012-03-16 2015-09-08 Texas Instruments Incorporated Low-complexity two-dimensional (2D) separable transform design with transpose buffer management
CN102932642B (zh) * 2012-11-13 2015-06-24 北京大学 一种帧间编码快速模式选择方法
JP6154643B2 (ja) 2013-03-29 2017-06-28 Kddi株式会社 動画像符号化装置、動画像符号化装置のデプスイントラ予測方法およびプログラム、ならびに動画像復号装置、動画像復号装置のデプスイントラ予測方法およびプログラム
CN111800641B (zh) * 2013-06-13 2023-08-25 上海天荷电子信息有限公司 同模式采用不同种类重构像素的图像编码解码方法和装置

Also Published As

Publication number Publication date
US20160295234A1 (en) 2016-10-06
WO2016161507A1 (en) 2016-10-13
EP3281410B1 (en) 2019-11-27
CN107431821A (zh) 2017-12-01
JP6680796B2 (ja) 2020-04-15
JP2018514146A (ja) 2018-05-31
EP3281410A1 (en) 2018-02-14
EP3281410A4 (en) 2018-12-05
CN107431821B (zh) 2021-11-05
KR20170134487A (ko) 2017-12-06
US9819962B2 (en) 2017-11-14

Similar Documents

Publication Publication Date Title
US11818389B2 (en) Method and device for encoding/decoding motion vector
TWI705699B (zh) 用於線性成分樣本預測之新樣本集合及新向下取樣方案
CN112385223B (zh) 取决于模式的帧内平滑(mdis)与帧内内插滤波器切换的组合
KR20230125348A (ko) 다중 참조 예측을 위한 움직임 벡터 개선
TW202038611A (zh) 用於視訊寫碼之三角運動資訊
WO2013042888A2 (ko) 머지 후보 블록 유도 방법 및 이러한 방법을 사용하는 장치
CN112425164B (zh) 多个可分离变换选择的变换变体
US20180352221A1 (en) Image encoding method and device, and image decoding method and device
TW202123711A (zh) 解碼器側優化工具開關控制
US20190273928A1 (en) Scanning orders for non-transform coding
US10462479B2 (en) Motion picture encoding device, motion picture encoding method, and storage medium storing motion picture encoding program
TW202101994A (zh) 視訊寫碼中之雙向光學流
TW202002654A (zh) 具有群組分流位元子之係數寫碼
KR20170126934A (ko) 컨텐츠-적응적 b-픽쳐 패턴 비디오 인코딩
US9736477B2 (en) Performing video encoding mode decision based on motion activity
KR102552556B1 (ko) 효율적인 저-복잡도 비디오 압축
JP7437426B2 (ja) インター予測方法および装置、機器、記憶媒体
US20160057429A1 (en) Coding apparatus, method, computer product, and computer system
US11528485B2 (en) Encoding apparatus and program
CN113794884B (zh) 一种编解码方法、装置及其设备
KR102009634B1 (ko) 영상 보정 정보 부호화 및 복호화 방법 및 장치
JP2009267726A (ja) 動画像符号化装置、録画装置、動画像符号化方法、動画像符号化プログラム
WO2024213139A1 (en) System and method for intra template matching
WO2021046692A1 (en) Resolution-adaptive video coding with conditional interpolation filters
WO2022191947A1 (en) State based dependent quantization and residual coding in video coding

Legal Events

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