KR20030029611A - 블록 코딩된 비디오 신호의 코드 아티팩트 감소 방법 - Google Patents

블록 코딩된 비디오 신호의 코드 아티팩트 감소 방법 Download PDF

Info

Publication number
KR20030029611A
KR20030029611A KR10-2003-7000140A KR20037000140A KR20030029611A KR 20030029611 A KR20030029611 A KR 20030029611A KR 20037000140 A KR20037000140 A KR 20037000140A KR 20030029611 A KR20030029611 A KR 20030029611A
Authority
KR
South Korea
Prior art keywords
pixels
mask
block
edge
group
Prior art date
Application number
KR10-2003-7000140A
Other languages
English (en)
Inventor
스테펜버나드 스트리터
브라이언데이빗 브런스윅
리처드제임스 데이비스
앤드류제임스스튜어트 슬로
프랭크안툰 보스텐보쉬
Original Assignee
포비든 테크날러지즈 피엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포비든 테크날러지즈 피엘씨 filed Critical 포비든 테크날러지즈 피엘씨
Publication of KR20030029611A publication Critical patent/KR20030029611A/ko

Links

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/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

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

Abstract

비디오 이미지 프레임의 개별 화소들을 나타내는 디지털 데이터가 판독되고, 전송이나 저장용으로 8*8의 화소 블록을 설명하는 일련의 이진 코드 워드로 인코딩된다. 상기 코드 워드가 디코딩될 때, 다른 블록대상을 나타내는 비디오 이미지 프레임의 영역을 나타내는 화소 세트가 타블록과 중복될 때에 관해 평가가 이루어진다. 전체 영역을 구성하는 의문의 블록의 서브영역들이 식별되고, 그 화소 광도와 크로미넌스값 및 이들 값들이 서브영역들을 인위적으로 한정하는 경계 간의 전이를 부드럽게 하도록 영역 사이에서 보간된다. 한 블록 내 모든 화소에 대한 광도값을 나타내는 마스크 라이브러리는 압축 과정을 개선시키기 위해 가용해질 수 있다.

Description

블록 코딩된 비디오 신호의 코드 아티팩트 감소 방법{METHOD FOR REDUCING CODE ARTIFACTS IN BLOCK CODED VIDEO SIGNALS}
대역폭 제한 때문에 인터넷 상에서 실시간으로 비디오 전송을 가능하게 하는 고효율 압축 기술을 개발할 필요가 있다. 통상적으로 56000bps 모뎀에서 풀스크린, 풀모션비디오를 전송하기 위해서는 적어도 1000배 이상의 압축이 필요하다.
발명의 목적은 이러한 압축 기술을 제공하는 것이다.
압축될 비디오는 다수의 프레임으로 구성된다고 생각할 수 있고, 각각의 프레임은 개별 화소들로 구성된다. 각각의 화소는 세가지 구성요소로 나타낼 수 있다. 가령, RGB(적, 녹, 청)나 YUV(광도와 두개의 크로미넌스값)로 나타낼 수 있다. 이 구성요소들 각각이 몇비트씩을 차지할 수 있고, 통상적으로 각 구성요소가 8비트면 충분하다. 사람의 눈은 화소값 U와 V의 변부 위치보다 화소값 Y의 변부 위치를 보다 잘 감지한다. 이러한 이유로, 여기서 선호되는 구현은 화소에 대한 YUV법을 사용하였다.
이미지 크기는 변할 수 있다. 화소가 많을수록 고해상도가 되지만, 그 댓가로 데이터 속도를 희생하여야 한다. 소스 비디오가 PAL 포맷일 경우, 이미지 필드는 초당 25프레임으로 288라인을 가진다. 직사각형 화소들은 384*288 화소의 소스 이미지 크기를 부여한다. 선호되는 구현은, 잡음이 되기 쉽고 통상적으로 TV 세트에 디스플레이되지 않는 변부 화소들을 제거하기 위해, 384*288 화소 이미지의 중앙 화소를 이용하여 376*280화소의 해상도를 가진다.
화소들은 개별적으로 압축하기 어렵지만, 각 화소와 그 인접 화소간에 높은 상관관계를 가진다. 압축을 돕기 위해, 이미지는 이 응용프로그램에서 "수퍼-블록"이라 불리는 장방형 구성요소로 나누어진다. 이는 그 고유 구조를 가지는 단일 실체로 생각할 수 있다. 이 블록들은 어떤 크기도 가질 수 있으나, 아래 설명되는 선호되는 실시예에서, 수퍼블록은 모두 동일 크기로서 8*8 화소 스퀘어이다.
각각의 수퍼블록이 개별적으로 압축될 경우 압축 과저에서 생긴 오류가 수퍼블록간 변부 사이에서 조합되어 블록간 변부를 강조함으로서 압축의 블록형 성질을 나타내며, 이는 바람직하지 않다. 압축해제나 디스플레이 과정이 수퍼블록 경계 사이에서 어떤 가시적인 아티팩트를 가능한 제거하는 점이 중요하다.
본 발명은 디지털 비디오 정보 처리 방법에 관한 것이다. 이 디지털 비디오 정보는 저장 및 전송, 가령 인터넷 상에서의 전송을 위해 압축된다.
도 1은 8*8 화소 수퍼블록으로 나눈 376*280 화소의 전형적 이미지.
도 2는 64 화소로 나눈 8*8 화소의 전형적 수퍼블록의 도면.
도 3은 변화하는 수퍼블록간 갭이 어떻게 인코딩되는 지를 설명하는 순서도.
도 4는 수퍼블록 마스크 압축 종류의 예 도면.
도 5는 변부 및 보간 변부 수퍼블록 종류가 압축되는 방법의 도면.
도 6은 예측가능한 수퍼블록 종류가 압축되는 방법의 도면.
도 7은 수퍼블록 내 화소들이 어떻게 보간되는 지를 보여주는 도면.
도 8은 인접 수퍼블록간 영역들이 어떻게 짝지워지는 지를 보여주는 도면.
도 9는 재생시의 앤티-앨리어싱이 구현되는 방법을 보여주는 도면.
발명에 따라, 전송이나 저장을 위해 압축 형태로 디지털 비디오 정보를 처리하고, 그후 재구축되는 디지털 비디오 정보를 얻기 위해 압축 형태의 정보를 압축해제하는 방법이 존재하며, 이 방법은,
- 일련의 이진 코드 워드로 비디오 이미지 프레임의 개별 화소를 나타내는 디지털 데이터를 읽어들이고,
- 개별 화소들을 나타내는 워드로부터 추가적인 코드워드를 도출하도록 암호화하며, 이때 각각의 코드워드는 블록이나 다른 화소 그룹을 나타내며,
- 재구축되는 비디오 이미지 프레임의 개별 화소를 나타내는 이진 코드 워드로 구성되는 일련의 이진 코드 워드를 앞서 디코딩한 비디오 이미지 프레임과 함께 추가적인 코드워드로부터 도출하도록 디코딩하며, 이때 상기 디코딩 동작은 식별가능한 객체를 나타내는 원 비디오 이미지 프레임의 영역(Y1, Y2, Y3a, Y4a)을 집합적으로 나타내는 화소 세트가 상기 한개보다 많은 추가 코드워드에 의해 인코딩되는 화소의 블록이나 그룹으로 완전히 덮거나 중복되는 과정을 포함하고, 이러한 경우에,
- 영역을 구성하는 각각의 그룹이나 블록의 서브영역(Y1, Y2, Y3a, Y4a)을 식별하고,
- 추가 코드워드에서 이 서브영역들을 위해 인코딩된 밝기(광도), 색상(크로미넌스), 또는 그 외 다른 조합을 포함한 화소값을 결정하고, 그리고
- 서브 영역의 범위를 정하는 경계간의 전이를 부드럽게 하기 위해 상기 영역에 대해 재구축되는 비디오 이미지 프레임의 화소사이에서 각 서브영역으로부터 이 화소값들을 보간하는,
이상의 단계를 포함한다.
발명은 앞서 언급한 처리 방법에 대해 적절한 화소값의 인코딩 방법과, 디스플레이나 재생을 위해 이러한 정보를 디코딩하는 방법에까지 확장될 수 있다.
추가 코드워드 도출은 그룹이나 블록에 관하여 다음의 1), 2) 데이터를 구축하는 과정을 포함할 수 있다.
1) 그룹이나 블록의 모든 화소의 광도값을 나타내기 위한 다수의 광도값, 그리고
재구축되는 비디오 이미지 프레임에 대한 각 화소의 적절한 광도값 결정하는 데 어느 광도값이 사용되는 지를 나타내는 수단으로 마스크를 이용하여 여러개의 대표 광도값이 있는 경우에,
2) 대표 광도값
인코딩 동작은 동일 비디오 이미지 프레임에서 이전 그룹이나 블록에 대한, 그리고 또다른 프레임에서 동일 그룹이나 블록에 대한 값 1), 2) 각각을 평가하고, 그리고 지정된 순서로 이들 값을 비교하여 차이 및 변화를 감지하며, 그 이후 새 값이나 값의 차이가 압축 형태로 포함되는 과정들을 포함한다.
이 방법은,
- 화소 블록이나 화소그룹을 설명하는 추가 워드를 개별 화소를 나타내는 워드로부터 도출하도록 인코딩하고, 이때, 각각의 화소 블록이나 그룹은 적어도 8*8개의 개별 화소(수퍼블록)의 블록 구성요소의 광도 표현을 포함하는 단일 파생 워드로 설명되며,
- 각각의 화소 블록에 대해 줄어든 숫자의 광도값(통상적으로 네 개 미만)을 구축하며,
- 디스플레이용 각 화소의 적절한 광도값을 결정하는 데 가능한 광도값 중 어느 것이 사용될 지를 표시하는 수단으로 변경가능한 저장 마스크 시리즈를 제공하고,
- 차이 및 변화를 감지하기 위해 그룹을 구성하는 요소들의 지정 순서로 한 프레임의 대응부를 나타내는 워드를 다른 프레임과 비교하고 평가하며, 그리고
- 이러한 변화를 반영하기 위해 업데이트를 필요로하는 마스크들을 식별하고 그리고 이러한 차이를 나타내기 위해 가장 적절한 것으로 새 마스크를 선택하고 전송을 위해 새 마스크를 저장하는,
이상의 단계를 포함한다.
각 화소 블록은 헤더, Y, U, V 값 중 한개 이상, 그리고 선행 블록과 상기 마스크에 관련한 블록 위치 표시를 내장한 코드워드로 설명된다(선호됨). 각 블록의 마스크는 동일 마스크 값을 가진 화소들이 동일 영역에 놓이는 것으로 간주되는 영역으로 블록을 효과적으로 분할한다. 이후, 서로 다른 블록의 동일 마스크값이 이 블록들의 대응하는 영역을 반드시 나타내는 것은 아니다. 따라서, 인접 블록과 중복되는 이미지 부분을 표시하기 위해 또다른 표시("joins")가 블록 설명에 최적으로 포함된다. 각 코드워드의 헤더 부분은 이 프레임 상에서 변경된 블록의 상기 구성요소를 규정하고, 허프만(Huffman) 인코딩된다.
코드워드의 마스크 부분은 아래와 같은 부분을 표시할 수 있다. 즉,
1) 복소 마스크가 완전히 균일해질 때 새로 생성된 마스크, 또는,
2) 변화가 최소인 경우처럼 앞서 채택한 마스크와의 차이를 표시.
종류 1)의 마스크는 아래를 포함하는 마스크 라이브러리로부터 선택할 수 있다.
a) 균일한 0: 전체 마스크가 0들을 포함한다.
b) 균일한 1: 전체 마스크가 1들을 포함한다.
c) 직선 변부: 블록 중심으로부터 거리가 주어지고 수직으로부터 경사도가 주어질 때 두 대조되는 영역간의 직선 경계
d) 보간 변부: 한 프레임으로부터 주어진 제 1 변부와 또다른 프레임으로부터 주어진 제 2 변부, 그리고 두 프레임간 관련 블록의 위치로부터 보간에 의해 계산되는 직선 변부
e) 예측가능: 이 블록의 내용을 확인하기 위해 홀로 인접 블록으로부터 정보를 이용
f) 순수: 어떤 고도 압축 상태도 알려져 있지 않고, 각각의 세부분할이 균일할 때까지 블록을 네 개로 반복하여 나누는 분할 기술을 이용하여 블록이 압축된다.
종류 2)의 마스크는 아래의 사항을 포함하는 마스크 라이브러리로부터 선택할 수 있다.(자신과는 다른 마스크 엔트리를 가지는 한개 이상의 인접부를 가질 경우, 화소가 변부 위에(on an edge) 있다고 간주됨):
a) 1 diff along edge: 단일 화소가 변경되었고 이 화소가 변부위에 있다.
b) 1 diff not along edge: 단일 화소가 변경되었고 이 화소는 변부위에 있지 않다.
c) 2 diff sided edge: 정확히 두 화소가 변경되었고 이 둘 모두 변부 위에 있고 동일 마스크 값을 가진다.
d) 2 diff non-sided edgd: 정확하게 두 화소가 변경되었고 이 둘은 변부 위에 위치하고 서로 다른 마스크값을 가진다.
e) 2 diff not on edge: 정확하게 두 화소가 변경되었고 이 둘이 변부 위에 있지 않다.
f) n diff sided edge(n>2): 정확하게 n개의 화소가 변경되었고 이들 모두는 변부 위에 놓이며, 모두 동일한 마스크 값을 가진다.
g) n diff non-sided edge(n>2): 정확하게 n개의 화소가 변경되었고 이들은 모두 변부 위에 있으며, 서로 다른 마스크 값을 가진다.
h) n diff not on an edge(n>2): 정확하게 n개의 화소가 변경되었고 이들 모두가 변부위에 있지 않다.
i) big edge: 모든 화소 변화가 변부 위에 있다.
j) big diff sided: 모든 화소 변경이 변부의 동일 변에 있다.
k) fractal: 어떤 고압축 방식도 알려져 있지 않으며, 블록은 각각의 서브분할이 균일할 때까지, 또는 2x2 블록내 각 화소의 값이 명백하게 규정되는 경우에 개별 화소들의 수준에 도달하였을 때까지, 이를 네 개로 반복하여 나눔으로서 프랙털(fractal) 기술을 이용하여 압축된다.
l) n x n box: 블록 내 모든 변경된 화소가 n개 변의 정사각형 내에 들어맞으며, 그래서 정사각형의 위치와 그 내용이 모두 암호화된다.
일반적인 프레임 시퀀스에서, 일부 프레임에서 주어진 블록에 변경이 가해질 것이고, 또다른 프레임에서는 변경이 가해지지 않을 것이다. 각각의 프레임에 대해어느 블록들이 변경되었는 지 각각의 프레임에 대해 명시하는 대신에, 좀 다른 접근법을 채택하는 것이 선호된다. 각각의 블록에 대하여 이 접근법에서는, 변경되는 프레임이 명시된다. 이는 주어진 블록에 대한 코드워드가 수많은 프레임에 대해 유효한 것으로 명시될 수 있고 데이터 속도를 떨어뜨릴 수 있다는 것을 의미한다.
비디오의 전형적인 프레임 시퀀스에서, 화자(speaker)의 입술처럼 급속하게 변화하는 대상의 영역을 나타내는 프레임 부분들은 빈번한 업데이트를 필요로하는 블록들을 가진다. 이에 비해 배경 영역은 상대적으로 정적이다. 그러나 급속하게 변하는 부분들이 이전에 정적인 부분으로 이동할 수 있고, 그 역도 가능하다. 이를 효율적 방식으로 수용하기 위해, 일시적 갭 코딩 기법이 정의가능한 두 상태를 지원하며, 이 중 하나는 정해진 위치에서 급속한 변화를 위해 최적화되며 또다른 하나는 정해진 위치에서 앞서에 비해 한적한 변화에 대해 최적화된다. 발명의 방법은 변화 성질에 따라 적절한 상태를 자동으로 선택하는 추가단계를 포함하는 것이 선호된다.
발명의 구현에서, n 화소 세트로부터 m 화소 서브세트를 인코딩할 필요가 있다. m 화소 서브세트는 차후에 사용될 수 있는 화소세트이다. 2의 배수인 n choose m을 선택하는 것이 비교적 드물기 때문에 복잡해진다. m은 2의 배수이다. 발명에 따라, 길이 INT(log2(n choose m))과 1+INT(log2(n choose m))의 길이를 가지는 코드워드가 채택된다. 채택될 코드워드 선택은 가용한 가장 짧은 코드워드의 총 수를 최대화하는 것이다. 변경되거나 갱신된 마스크를 나타내는 적절한 마스크 종류가 있는 모든 경우에 n이 최소화되는 것을 보장하도록, 마스크 종류가 나타낼수 있는 변경사항을 변경하고자 하는 화소들과 상관시키도록 마스크 종류가 선택된다.
수퍼블록 경계와 중복될 수 있는 영역을 형성하기 위해 가능한 인접 수퍼블록을 바탕으로 수퍼블록 마스크를 일치시키는 기술을 채택하는 것이 바람직하다. 이 기술 구현은 다음과 같다.
1) 한 수퍼블록의 변부를 따라 마스크의 1들이나 0들이 변환될 수 있을 경우, 즉, 인접 수퍼블록의 변부를 따라 마스크의 0들이나 1들의 서브세트로 한 화소에 의해 공간적으로 변환될 수 있을 경우, 인접 수퍼블록의 인접 변부를 따르는 화소와, 수퍼블록의 어떤 변부를 따르는 화소를 일치시킨다. 그리고
2) 수퍼블록의 영역들의 강도인 Y값이 서로의 지정 한도 내에 있다. 비압축 이미지 데이터가 가용할 경우, 단계 2)를 다음의 3)으로 대체함으로서 압축 과정에서 더 좋은 결과를 얻을 수 있다.
3) 단계 1)에 따른 서브세트를 취하고, 1)에서 언급된 변부의 양 변 사이에 비압축 이미지로 화소의 강도를 취하며, 이 범위들이 지정 중복 한도 내에 있을 경우 각 수퍼블록 내 1)에서 일치되는 변부들과 같은 마스크 값을 가진 화소를 취하고, 이들을 동일 영역의 일부로 다룬다.
일반적으로, 쌍선형 보간을 이용하여 화소에 가장 가까운 네 개의 수퍼블록으로부터 네 개의 Y값을 보간함으로서 디스플레이되는 각각의 Y값을 계산하는 것이 매우 효과적이다. 한개보다 많은 Y값이 각각의 수퍼블록에 대해 기술될 경우에도, 어느 값이 채택될 지를 선택하는 것이 필요하다. 또한 발명에 따라, 보간을 이해채택될 Y값들은 이러한 정합 영역으로부터 Y값을 이용하여 그리고 수퍼블록 경계 사이에서 일치하는 영역들을 구축함으로서 선택된다. 수퍼블록 경계사이 영역을 일치시키는 기술은 다음과 같다.
1) 수퍼블록의 변부를 따르는 마스크의 1들이나 0들이 변환될 수 있는 경우, 즉, 인접 수퍼블록의 변부를 따르는 마스크의 0이나 1들의 서브세트로 한 화소만큼 공간적으로 변환될 수 있을 경우, 인접 수퍼블록의 인접 변부를 따르는 화소와 수퍼블록의 어떤 변부를 따르는 화소들을 일치시킨다. 그리고,
2) Y값, 즉, 수퍼블록의 영역의 강도는 서로 지정 한도 내에 있다.
가장 가까운 화소에 대한 변부 위치 근사에 의해 유발되는 수퍼블록 내 마스크 경계를 따라 들쭉날쭉한 변부의 문제점을 개선하기 위해 압축 비디오 데이터의 압축해제 및 재생성에 관한 특별한 앤티-앨리어싱(anti-aliasing) 기술을 채택하는 것이 바람직하다. 이러한 기술은 아래의 과정들을 포함한다.
1) 앤티-앨리어싱될 대조 마스크 값간의 경계 위 두 인접 화소를 식별한다.
2) 이 화소 위치에서의 경계가 거의 수직이 되려는 지 거의 수평이 되려는 지를 구축한다.
3) 경계의 수평 섹션이나 수직 섹션의 종료 위치를 구축하고, 이 위에서는 인접 화소들이 수평이나 수직 방향으로만 경계를 추적함으로서 놓여, 화소 쌍들이 경계의 동일 변에 놓이게 된다.
4) 단계 3)에서 마스크값이 변경된 각각의 화소를 따라 중간의 지점을 식별하는 과정에서 대응하는 종료 위치의 중간점을 구축한다.
5) 각각의 두 인접 화소에 대하여, 경계의 실제 이치의 최적 추정치를 서브화소 정확도로 제공하기 위해 이 중간점과 어떤 중간 화소를 연결시키는 직선을 채택한다.
6) 직선 라인의 각 변에 놓인 화소 영역에 비례하는 값을 이러한 직선 라인과 교차하는 각각의 화소에 대하여 확인하고, 그리고
7) 단계6)에서 구축한 비의 가중치로 이용하는 경계의 각 변에 대한 영역의 값의 가중 평균치를 채택한다.
앞으로 설명되는 실제 실시예에서, 화소 그룹은 수퍼블록으로 알려진 8x8 화소 블록으로 구성된다.
각각의 수퍼블록은 그 구성자 화소의 내장 YUV 정보로 인코딩된다.
U 정보와 V 정보는 Y정보보다 더 낮은 공간 해상도로 저장되며, 한 구현에서는 모든 수퍼블록에 대해 U와 V각각에 단 하나의 값만이 배당된다.
단일 수퍼블록 내 각 화소에 대한 Y값을 근사할 수 있다. 여러 경우에, 하나의 수퍼블록에는 한개의 대상이나 그 일부만이 존재한다. 이 경우에, 이런 경우에, 특히 압축해제시 이미지 재생성을 돕는데 인접 수퍼블록의 콘텍스트가 사용될 때, 전체 수퍼블록 화소 Y값을 근사하기 위해서 단일 Y값이면 충분하다.
추가적인 여러 경우에, 한 수퍼블록에서 두 대상, 또는 두 대상의 일부만이 존재한다. 이 경우에는, 특히, 인접 수퍼블록의 콘텍스트가 압축해제시 이미지 재구축을 돕는데 사용될 때 한쌍의 Y값이 전체 수퍼블록 Y값을 근사하는 데 충분하다. 두개의 Y값이 존재하는 경우에, 원 수퍼블록을 재구축할 때 각 화소에 대해 두개의 Y값중 어느 것이 사용될 지를 보여주기 위해 마스크가 사용된다. 이 마스크들은 그 내용에 따라 여러 방식으로 압축될 수 있고, 왜냐하면 마스크 분포가 매우 꼬여있다고 드러나기 때문이다. 게다가, 마스크는 프레임 사이 작은 양만큼 변화하는 경우가 잦아서, 여러 다른 프레임 상의 마스크간 차이를 효율적으로 압축시킨다.
이미지 품질 개선은 두개보다 많은 Y값을 가진 마스크를 이용함으로서 얻을 수 있으나, 이는 어떤 Y값을 이용하는 지를 명시하는 데 필요한 정보량을 증가시킨다.
전형적인 프레임 시퀀스에서, 수퍼블록 중 일부만이 이전 프레임으로부터 변경되며, 이들 중 상당수가 예측가능한 방식으로 변화한다. 이는 이미 변경된, 또는 예측불가한 방식으로 변경된 수퍼블록만을 저장함으로서 상당한 데이터 속도 감소를 얻을 수 있다는 것을 의미한다.
주어진 프레임에서 어느 수퍼블록이 변경되었는 지를 명시하는 최적의 방법은 비디오 콘텐트의 성질에 달려있다. 예를 들어, 몇 개 프레임이 변하지만 이 변화하는 프레임 내에서는 크게 변할 때, 변화하는 수퍼블록간 공간적 갭을 저장하는 것이 효율적인 압축 방법이다. 이 방법은 코덱의 이전 구현에 사용된다. 다른 한편, 각각의 프레임에서 단 몇 개의 수퍼블록이 변하지만 이들이 공간적으로 상관될 때, 수퍼블록 변화간 시간 갭을 저장하는 것이 보다 효율적이다. 저속 데이터 응용프로그램의 경우, 이것이 매우 효율적이며, 일시적 갭츨 압축하기 위한 방법이 여기서 설명된다.
이미지를 구성하는 각각의 수퍼블록은 여러 구성요소로 이루어진다. 가령, 광도, 크로미넌스, 각 영역의 형태들로 이루어진다. 수퍼블록의 여러 다른 태양이 여러 다양한 방식으로 인코딩될 수 있고, 각각의 구성요소는 프레임마다 변화할 수도 있고 변화하지 않을 수도 있다. 실제로, 어느 한 프레임에서 가능한 변화 분포는 매우 꼬여있어서, 가변 길이 코드워드를 이용함으로서 상당한 압축이 가능하다.
코드 워드 분포는 비디오 섹션 사이에서 변하고, 따라서 이용할 최적 코드워드도 변화한다. 비디오 각 섹션에 대해 새로이 계산된 코드워드를 이용하는 것이 유용하다고 발견되었으며, 이 코드워드들은 각 비디오 섹션의 시작시 자체적으로 인코딩된다.
384*288, 376*280, 320*240 화소의 비디오 프레임들이 수퍼블록이라 불리는 8*8 화소 크기의 화소블록으로 나누어진다(도 2 참고).
이 구현에서, 각각의 블록은 다음의 정보를 내장한다.
2Y 값(통상적으로 각각 8비트)
1U값(통상적으로 8비트)
1V값(통상적으로 8비트)
이 수퍼블록을 재구축할 때 이용할 Y값을 명시하는 64비트의 마스크
비디오 헤더
각각의 수퍼블록은 하나의 코드워드로 이루어지고, 이 코드워드는 어느 요소가 현 프레임에서 업데이트되고 이 요소들 중 어느것이 인코딩되는 지를 명시한다. 가장 흔한 조합의 코드워드는 비압축 코드워드에 앞서 예외 코드워드로 저장되는 더욱 흔하지 않은 코드워드로 압축된다. 허프만 표는 헤더로 비디오 섹션이나 각 비디오의 시작시 저장된다.
수퍼블록 헤더를 코딩하는 허프만
각각의 비디오는 유사한 내용을 가질 수 있는 장면이나 섹션으로 나누어진다. 수퍼블록 헤더는 이 비디오 섹션 각각의 시작부에 인코딩된다. 수퍼블록 헤더는 평균 5.5비트 가량이다.
헤더에 내장될 정보는 다음과 같다.
1비트: Y최대값이 변하였는 지 여부
1비트: Y최소값이 변하였는 지 여부
2비트: UV가 변하지 않았는 지 여부
V가 변하지 않고 U가 +/-1만큼 변하였는 지 여부
U가 변하지 않고 V가 +/-1만큼 변하였는 지 여부
UV가 (-1,-1), (1,-1),(1,1), 또는(-1,1) (1+2비트) 만큼 변하였는 지 여부, 또는 UV가 1+10비트로 스크래치로부터 골내는 지 여부
2비트: 히스토리에서 가장 최근 프레임의 이용 여부
히스토리에서 가장 최신의 한 프레임의 이용 여부
히스토리에서 이전 프레임의 이용 여부
1비트: 작은 모션 벡터가 이용되는 지 여부
7비트: 사용할 마스크 종류(아래 마스크 섹션 참고)
2비트: 재생시 인접 수퍼블록 내 영역간 연결이 추정되는 방식: 부정확하면 교정한 것으로 추정:
디폴트 추정을 이용할지 여부
최종 프레임을 이용할지 여부
연결이 그 전체에서 골낸 것인지 여부
각각의 비디오 섹션은 본 섹션의 수퍼블록 헤더에 사용되는 코드워드의 인코딩으로 시작된다. 50% 설정에서 가장 먼 확률을 가진 것들이 코드워드에서 높은 비트이고, 가장 가까운 50%인 것이 최종 비트이도록, 헤더의 비트를 소팅한다. n 헤더 비트가 사용될 때, 허프만 헤더 워드의 비트 정렬은 n!의 이용가능성을 가진 숫자로 전달된다.
코드워드는 길이 순서로 전달된다. 각각의 코드워드 길이에 대하여, 코드워드는 수치 순으로 소팅된다. 각각의 코드워드에 대하여, 현재와 차후의 코딩되지 않은 헤더 워드간의 차에서 비트 번호에 대한 4비트 숫자를 전달한다. 이 차이는 1의 높은 비트로 시작되고, 따라서 이를 전달하지 않는다.
헤더를 워드 크기로 만들기 위해 나머지 비트들을 전달한다.
각각의 코드워드 길이에 대하여 반복한다.
(커트같은) 상당한 변화와 비-커트(non-cuts)가 있는 프레임들 사이에서 상기 코드워드의 주파수 분포가 다르다는 것이 드러났다. 이 종류의 프레임에 대한 헤더가 고유 호프만 코드워드를 가질 경우, 이는 압축 후 낮은 데이터 속도를 부여한다.
임시 갭(Temporal Gaps)
어느 프레임에서 모든 수퍼블록이 변경되는 것은 아니다. 어떤 주어진 프레임에서 어느 수퍼블록이 변경되었는 지를 명시하는 최선의 방법은 비디오 콘텐트의 성질에 달려있다. 예를 들어, 몇 프레임만이 변하지만 변화하는 프레임에서는 크게 변할 경우, 변화하는 수퍼블록간 공간적 갭이 효율적인 압축 방법이다. 다른 한편, 단 몇 개의 수퍼블록만이 각 프레임에서 변경되지만 이들이 공간적으로 상관될 경우, 수퍼블록 변화간 일시적 갭을 저장하는 것이 보다 효율적이다. 저속 데이터 응용프로그램의 경우, 이는 보다 효율적이고 일시적 갭을 압축하기 위한 방법이 여기서 설명된다.
일시적 갭을 이용함으로서, 시간에 대하여 크게 변하는 작은 공간 영역이 작은 갭동안 짧은 코드워드를 가지며, 정적 영역은 인접 블록에 대한 갭에 어떤 영향도 미치지 않는다. 수퍼블록은 시간에 대한 실제 갭의 분포에 따라 정적(static)과 동적(dynamic) 사이를 동적으로 스위칭할 수 있다.
본 구현(도 3)에서, 비디오 섹션의 시작부의 코드워드는 수퍼블록이 전체 비디오 섹션에서 변경되지 않았는 지를 코딩한다. 이 경우에, 이 위치에서 수퍼블록은 다시 언급되지 않는다.
두개의 추가적인 경우가 있다. 업데이트 경우에, 0, 1, 2의 갭이 코드워드, 0, 01, 001로 나타난다. 갭이 길면 000에 이어 아래와 같은 정적인 갭(static gap)이 나타난다.
정적인 경우에, 30 미만의 갭이 5비트로 코딩되고, 30 이상의 갭은 로그2(필름길이) 비트로 인코딩되며, 필름 종료까지의 갭은 5비트로 인코딩된다.
업데이트 경우의 갭이 8 이상일 경우, 상태는 정적인 경우로 넘어가고, 정적인 경우의 갭이 5보다 작을 경우 이 상태는 동적인 경우로 넘어간다.
데이터 속도를 최소화하는 스위칭 케이스에 대한 정확한 값은 비디오에 따라 약간씩 다르게 발견된다.
각 수퍼블록의 구조는 구성요소 화소들의 Y값을 바탕으로 하는 한개의 Y값으로 전체 수퍼블록을 덮는 한가지 영역이거나, 화소 Y 성분 값들을 바탕으로 여러 다른 Y값을 가지는 두개의 서브 영역이다. Y값은 프레임마다 다를 수 있다. 수퍼블록내 Y값들은 재생에 사용할 정확한 Y값을 계산하기 위해 각 화소에 대한 범위 및 위치 정보와 조합될 수 있다.
이미지 품질은 필요시 2개보다 많은 Y값을 사용함으로서 개선된다.
UV
각각의 수퍼블록은 U값과 V값을 가진다. 이미지 품질 향상을 위해, 서로 다른 Y값을 가지는 두개의 영역이 존재할 경우, 두 영역에는 서로 다른 값의 U와 V가 할당될 수 있다.
Y 마스크 압축
각각의 수퍼블록 내 각각의 화소마다 한개의 엔트리를 가지는 Y 마스크는 재생시 화소 Y값을 계산할 때 이 수퍼블록으로부터 어느 베이스 Y값이 사용될 지를 명시하는 데 사용된다. Y 마스크는 비균일할 경우 그 수퍼블록을 영역들로 나눈다. 이 영역으로부터 Y, U, V는 수퍼블록 외부 화소로부터 정보를 이용하여 계산되거나 각각의 수퍼블록과 함께 저장될 수 있다.
균일한 수퍼블록간 보간
균일한 수퍼블록 이 서로 인접할 때, 각각의 블록을 나타내는 데 사용되는 Y와 V값 사이의 쌍선형 보간은 재생시 각 화소에 대해 사용될 Y, U, V 값을 알아내는 데 사용된다(도 7). 이 경우에, x1, x2, x3, x4라고 표시되는 수퍼블록 S1, S2, S4, S5의 코너들이 S1, S2, S3, S4에 대한 Y값의 가중 평균치로부터 계산된다.
인접 수퍼블록으로부터 수퍼블록 마스크 일치
도 8을 보자. 인접 수퍼블록 상의 또다른 변부 서브세트인 변부를 맞추어보자. 균일한 수퍼블록과 인접 블록들이 한 종류의 8개 화소를 가진 경우를 고려해보자. 대응하는 수퍼블록 영역의 Y값들은 수퍼블록 경계를 가로지르는 동일한 구조의일부로 상기 영역들을 다루기 위해 한도 내(일반적으로 백색의 1/16)에서 일치되어야 한다. 따라서, 도 8의 경우에, 서브세트 테스트는 한 영역에 대한 후보로 Y1, Y2a, Y3a, Y4a를, 그리고 제 2 영역에 대한 후보로 Y2b, Y3b, Y4b를 제공할 것이다. 어느 영역 내 Y값이 충분히 닫힐 경우, 이들은 수퍼블록 경계를 가로지르는, 동일한 더 큰 영역의 일부로 추정될 수 있다.
비균일한 수퍼블록간 Y값 보간
수퍼마스크가 한 수퍼마스크 내 한개보다 많은 영역을 표시할 때, 화소에 가장 가까운 네 개의 수퍼블록 내 일치 영역의 Y값들 사이에 보간이 있어야 한다(도 7).
Y최소값과 Y최대값의 중앙값은 이들이 위치하는 블록 중심의 위치에 대응하고, 또는 각 색상의 화소들의 중심에 대응한다. 각 색상의 중심은 더 좋아 보이지만, 가중치가 1/256의 정수배에 있지 않을 것이기 때문에 재생하는 데 시간이 더 걸릴 수 있다. 자바의 재생속도는 더 빠르지만 덜 정확한 중앙 위치가 최선임을 나타낸다.
히스토리
수퍼블록 마스크가 변경될 때마다, 앞서 발생한 프레임 리스트에 구마스크가 포함된다. 마스크가 변경될 때마다, 새 마스크와 이전에 저장된 모든 히스토리 값간의 차이가 연구되고, 마스크간 가장 간결한 차이가 인코딩된다. 이것이 수퍼블록 마스크의 가장 짧은 표현이라면, 압축된 비트스트림에 사용된다.
히스토리의 실제 코드워드 길이와 이에 필요한 고정점 크기는 새 수퍼블록의가장 짧은 표현을 찾아내는 데 사용된다.
디코딩될 수 있는 수퍼블록의 보다 제한된 모델을 가짐으로서 유사 코드워드의 수를 감소시키면 완전한 일치가 히스토리에서 발견되는 기회가 증가한다.
한 구현에서, 히스토리는 가장 최근의 128 프레임을 내장한다.
히스토리는 모든 수퍼블록 마스크를 내장하지는 않으나 가장 최근 프레임을 내장할 가능성이 더 높게 배열될 때 최선으로 동작한다.
위치
히스토리의 인접 수퍼블록을 명시하는 데 필요한 추가 정보는 어떤 임의 시간에 마스크와 인접 마스크간 차이를 코딩하는 것이 최선이라는 것을 의미한다.
모션 추정
각 블록의 작은 모션에 관한 정보가 인코딩될 수 있다. 예를 들어, 주어진 히스토리가 어느 한 방향으로 단일 화소 모션을 가진다는 것이 인코딩될 수 있다. 이로 인해 마스크 장체와 프레임간 마스크 내 차이점이 모두 압축하기 어려울 때조차 프레임간 작은 차만큼 이동하는 마스크를 효율적으로 인코딩할 수 있다.
한 구현에서, 수평방향이나 수직방향, 또는 두방향 모두로의 단일 화소 모션은 마스크 모션이 사용되는 각각의 수퍼블록에 대한 헤더에 인코딩된다.
마스크 변경에 대한 인코딩
마스크 내 데이터는 카테고리로 나누어진다. 각 수퍼블록을 자장 낮은 데이터 속도로 암호화하는 것이 각각의 경우에 이용된다.
여러 다른 종류의 마스크 일부가 도 4, 5, 6에 도시된다. 도 4에서, 열 A는가능한 수퍼블록 마스크를 도시하고, 열 B는 가능한 업데이트 마스크를 도시하며, 열 C는 수퍼블록 마스크내 어느 화소가 열 A와 B 사이에서 어떻게 변경되었는 지를 도시한다. 열 B의 변화에 대한 요점은 열 D-G에 도시된다. 열 D는 변경되지 않은 수퍼블록에 대한 도면이고, 열 E의 검은 정사각형은 마스크 내 화소 세트가 어떻게 나타나는 지를 도시하며, 열 F는 화소 세트로부터 언세트로 변경된 화소가 어떻게 표시되는 지를 나타내고, 열 G는 언세트로부터 세트로 변경된 화소가 어떻게 나타나는 지를 도시한다.
설명은 아래와 같이 주어진다.
비변경(Unchanged):
수퍼블록 마스크는 이전 프레임으로부터 변경되지 않는다. 이 경우에, 헤더는 이 정보를 내장할 것이고 어떤 추가 정보도 받지 않는다.
균일 0(Uniform 0):
마스크는 완전히 0이다.
균일 1(Uniform 1):
마스크는 전부 1이다.
1 diff along edge:
수퍼블록 마스크는 이전 프레임에서 대응하는 수퍼블록으로부터 변경된 한개의 화소를 가진다. 이 변화는 한 변부에서 발생한다. 즉, 이전 프레임에서 가장 가까운 인접물과는 다른 마스크 색상인 화소이다.
1 diff not along edge:
수퍼블록 마스크는 이전 프레임 상의 대응하는 수퍼블록으로부터 변경된 한 화소를 가진다. 이 변화는 변부상에서 발생하지 않는다. 즉, 이전 프레임에서 가장 가까운 인접물과 동일한 색상을 띤 화소이다.
2 diff sided edge:
수퍼블록 마스크는 이전 프레임에서 대응하는 수퍼블록으로부터 변경된 두개의 화소를 가진다. 이 변화들이 한 변부의 동일 변에서 발생한다. 즉, 두 경우에 마스크의 한개의 0이 1로 플립되고, 마스크의 1이 0으로 플립된다.
2 diff non-sided edge:
수퍼블록 마스크는 이전 프레임에서 대응하는 수퍼블록으로부터 변경된 두개의 화소를 가진다. 예를 들어, 한개의 화소인 마스크 내 0이 1로 플립되고, 나머지 하나인 1이 마스크 내에서 0으로 플립된다.
2 diff not on edge:
수퍼블록 마스크는 이전 프레임에서 대응하는 수퍼블록으로부터 변경된 두 화소를 가진다. 화소들은 변부 상에 있지 않다.
3, 4,... diff sided edge:
앞서의 2-diff sided edge와 비슷하지만, 대응하는 수의 화소들이 변경된다.
3, 4,... diff non-sided edge:
앞서의 2 diff non-sided edge와 비슷하지만, 대응하는 수의 화소들이 변경된다.
big edge:
수퍼블록 마스크와 이전 프레임으로부터의 대응하는 수퍼블록 마스크간 모든 변화가 한 변부를 따른다. 아래 언급되는 n choose r 코딩 기법을 이용하여 어느 화소가 변경되었는 지를 명시한다.
big diff sided:
마스크에 대한 모든 변화는 제 1 마스크 색상으로부터 제 2 마스크 색상으로이며, 이 변화를 설명하는 데 필요한 가능한 코드워드의 숫자를 감소시킨다.
fractal:
대부분의 비트가 언세트(unset)라고 가정하자. 어느 비트가 설정되었는 지에 관한 정보를 전달한다. 균일하다면 0을 사용하고, 균일하지 않다면 1을 사용하며, 8x8블록을 네 개의 4x4블록으로 나누고 이를 반복한다. 이 네 개의 화소 각각에 대해 이용할 마스크 색상을 명시하기 위해 네 개의 비트만을 kt용하기 위해 2x2에서 중단한다.
n x n 박스(1<n<8)
모든 변경 화소가 8x8 수퍼블록의 2x2 서브세트로 발생한다. 수퍼블록 내 각 박스의 위치, 변경된 화소의 숫자, 그리고 변경된 화소들의 조합을 전달한다.
직선 변부(straight edge):
이 수퍼블록은 직선 변부에 의해 근사될 수 있다(도 5a). 이는 중심(d)으로부터 변부의 5비트 최근거리와 5비트 각도로 표시된다. 현재의 방식에서, 두 5비트 값들이 가능한 범위에 대해 균등하게 분포되었다. 재생시, 변부는 수퍼블록 마스크로 거꾸로 변환된다.
보간한 직선 변부(interpolated straight edge):
수퍼블록의 전체 시퀀스는 시간상으로 이격된 최초 마스크와 최종 마스크 사이를 보간함으로서 근사될 수 있다(도 5b, 5c, 5d 참조). 최초 프레임과 최종 프레임이 모두 변부인 경우에, 변부를 정의하는 매개변수들인 중간 프레임을 제공하기 위해 그 사이에서 보간된다. 도 5b, 5d는 보간 종점을 표시하고, 도 5c는 시간상 중간점을 도시한다.
현재의 구현으로 인해, 64프레임까지 보간할 수 있고, 아래와 같은 단순한 코딩을 이용할 때에도 26비트의 코드워드 길이를 제공한다.
중심(5비트로 코딩)과 각도(5비트로 코딩)로부터 최소 거리를 가지는 변부에 의해 블록을 나타낸다.
모션의 시점과 종점에서 이 매개변수들을 산출하여 예를 들어 64프레임까지 보간을 저장하고, 어떤 시간에 마스크가 어떻게 보이는 지를 산출하기 위해 그 사이에서 선형으로 매개변수들을 보간한다.
일부 오류는 시퀀스를 따르는 어떤 점에서 허용될 수 있으나, 모든 오류는 변부 자체를 따라 발생하여야 한다. 인접 수퍼블록과 일관성을 더 양호하게 유지하기 위하여, 인코딩되는 수퍼블록 변부의 추정된 마스크 화소들의 오류는 수퍼블록 변부에 있지 않는 오류보다 더 중대한 것으로 처리된다. 전체적으로, 모든 프레임에서 수용가능한 오류율을 가지는 가장 긴 시간에서의 보간이 이용된다.
예측가능(predictable):
예측가능한 변화가 발생하였는 지를 표시하기 위해 전용 0비트 코드워드가사용된다. 재생 프로그램은 그후 이를 해역함에 있어 가장 명백한 선택을 취한다(도 6 참조).
인접 수퍼블록이 한 변부를 통과하는 경우에, 이는 수퍼블록이 그 인접부와 연결되는 점에서 연속적으로 부드럽도록 선택되는 베지어 곡선(Bezier curve)이다. 베지어가 가로지르는 에측가능한 수퍼블록의 두 변 각각에서 교차점과 정확한 기울기를 알아내기 위해 공지된 인접 수퍼블록 변부에 가장 알맞은 직선을 이용한다. 이 라인에 가장 알맞은 길이가 베지어 곡선의 기울기 벡터 길이로 사용된다.
중앙 수퍼블록 S가 0비트 코드워드로 인코딩되는 이 과정은 도 6에 도시된다. S1과 S4의 변부들은 S2와 S3를 따라 계속되기 때문에 변부를 예측하는 데 사용된다. S 내 두 영역 A와 B의 강도는 인접 수퍼블록의 맞닫는 영역으로부터 추정된다.
다른 경우도 쉽게 예측할 수 있다. 나머지와는 다른 단 하나의 화소만이 존재하는 경우에, 예측가능한 선택은 균일한 수퍼블록을 가지는 것이다.
변부들이 여러 다른 변부로 둘러싸이는 경우에 Y 표현이나 그 이상이 사용될 수 있다.
raw:
일부 마스크는 공지 패턴에 부합하지 않는다. 이 경우에, 이 마스크들은 앞서와 유사한 프랙털 압축을 이용하여 압축되는 비트 마스크로 나타나지만, 각각의 마스크 비트가 각각의 스케일로 설정, 또는 재설정되는 지에 관한 정보를 가진다.
n choose m 코딩:
크기 n의 세트에서 가능한 m 화소 서브세트 중 어느 하나가 효율적으로 코딩되어야 하는 경우가 자주 있다. 이 선택에는 어떤 내부 구조도 없고, 모든 것은 대략 동등하게 이루어진다. 이 경우에 n choose m이 2의 배수가 아닐 경우, 코딩은 길이 INT(log2(n choose m))과 1+INT(log2(n choose m))의 코드워드를 취하는 과정을 포함하고, 따라서, 가능한 짧은 코드워드만큼 많이 디코딩시 모호성없이 사용된다.
이 방법으로, n을 감소시키는 과정을 포함한 어떤 기술도 m에 의해 변경된 화소를 인코딩하는 데 필요한 평균 비트수를 줄일 것이다. 따라서 변화하는 가능한 화소수를 제한하는 새 종류의 마스크가 채택될 것이고, 그 사이에서 선택할 소수의 조합을 보일 것이고 더 낮은 데이터 속도를 보일 것이다.
앤티-앨리어싱(Anti-aliasing):
도 9 참조.
Y최소값과 Y최대값 간의 변부들은 현재 날카로운 개별 화소들을 보여준다. 효과적인 서브화소 정확도를 부여하기 위해 이 변부들을 따라 앤티-앨리어싱을 가능하게 할만큼 충분한 정보가 있다.
앞서 언급한 바와 같이, 여러 다른 영역간의 변부들은 단 두개의 Y값들이 각각의 뉴에 사용됨에 따라 매우 들쭉날쭉하게 보일 수 있다. 변부를 따르는 범위들을 이용함으로서 변부들이 존재하는 곳을 우리가 산출해내면, 우리는 변부들을 앤티-앨리어싱할 수 있고, 이 변부들을 원본과 더욱 일치하게 할 수 있다.
모든 변부 화소의 경우, 화소가 위치하는 최장 수평변부나 최장 수직변부가수평인지 수직인 지를 알아내야 한다. 그후 이 길이가 가용 처리 시간에 좌우되는 한도를 넘을 경우, 소량의 화소나, 이 수평/수직 섹션 말단의 중간점을 발견해야 한다. 그후 국부적인 Y최소값과 Y최대값과 변부 말단의 중간점들을 맞닫게 하는 라인의 면적비로 Y최대값과 Y최소값을 가지는 이 변부 화소에 대하여 그레이 스케일을 이용해야 한다.
도 9에서는 거의 수평인 변부가 도시되며, A1-A8의 값이 앤티-앨리어싱에 의해 변경되지 않을 것이다. 이는 C1-C8도 마찬가지다. B1-B8의 값은 1/16*A+15/16*B에서부터 15/16*A+1/16*B로 선형으로 변화할 것이다. 즉, 변부가 w1과 w2 사이에서 움직이고 각각의 화소가 변부의 각각의 변 위의 가중 평균에 의해 가릴 경우 얻을 값들로 선형으로 변화할 것이다.
도 9에서, 변부는 이 변부 섹션을 따르는 가장 긴 방향의 종점인 점 x1과 x2를 맞닫게함으로서 근사되며, 따라서 E1과 D2에 대하여, 1/4*D1+3/4*E2와, 3/4*D1+1/4*E1의 강도를 제공한다.
얇은 스틱, 즉, 한 화소 폭의 스틱이 변경되지 않고 남아야 한다.
변부가 볼록할 경우, 외부 긴 변부의 중간에 짧은 변부의 중간을 맞닫게 하는 두 선을 생각해보자. 원 외부를 앤티-앨리어싱하도록 이 면적을 이용하자. 이것이 맞닫는 변부는 돌출없이 앨리어싱 상태로 남는다.
두 변이 변경되지 않는 정사각형 변부를 남긴다.
도 9에서, x1과 x2 사이에서 변부를 이끌어내며, 강도 D2와 E1은 각각 D2와 E2, 그리고 E1과 D1의 가중 평균치로 조절된다.

Claims (19)

  1. 전송이나 저장을 위해 압축 형태로 디지털 비디오 정보를 처리하고, 그후 재구축되는 디지털 비디오 정보를 얻기 위해 압축 형태의 정보를 압축해제하는 방법으로서, 이 방법은,
    - 일련의 이진 코드 워드로 비디오 이미지 프레임의 개별 화소를 나타내는 디지털 데이터를 읽어들이고,
    - 개별 화소들을 나타내는 워드로부터 추가적인 코드워드를 도출하도록 암호화하며, 이때 각각의 코드워드는 블록이나 다른 화소 그룹을 나타내며,
    - 재구축되는 비디오 이미지 프레임의 개별 화소를 나타내는 이진 코드 워드로 구성되는 일련의 이진 코드 워드를 앞서 디코딩한 비디오 이미지 프레임과 함께 추가적인 코드워드로부터 도출하도록 디코딩하며,
    이때 상기 디코딩 동작은 식별가능한 객체를 나타내는 원 비디오 이미지 프레임의 영역(Y1, Y2, Y3a, Y4a)을 집합적으로 나타내는 화소 세트가 상기 한개보다 많은 추가 코드워드에 의해 인코딩되는 화소의 블록이나 그룹으로 완전히 덮거나 중복될 때를 결정하는 과정을 포함하고, 이러한 경우에,
    - 영역을 구성하는 각각의 그룹이나 블록의 서브영역(Y1, Y2, Y3a, Y4a)을 식별하고,
    - 추가 코드워드에서 이 서브영역들을 위해 인코딩된 화소값을 결정하고, 그리고
    - 서브 영역의 범위를 정하는 경계간의 전이를 부드럽게 하기 위해 상기 영역에 대해 재구축되는 비디오 이미지 프레임의 화소사이에서 각 서브영역으로부터 이 화소값들을 보간하는,
    이상의 단계를 포함하는 것을 특징으로 하는, 전송이나 저장을 위해 압축 형태로 디지털 비디오 정보를 처리하고, 그후 재구축되는 디지털 비디오 정보를 얻기 위해 압축 형태의 정보를 압축해제하는 방법.
  2. 제 1 항에 있어서, 어느 서브영역이 동일 영역을 나타내는 지를 명시하는 추가적 결합 코드워드를 압축 포맷이 포함하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 디코딩 동작은 어느 서브영역들이 동일 영역을 나타내는 지를 추정하기 위해 지정 알고리즘을 이용하는 과정을 포함하고, 인코딩 동작은 이 알고리즘이 효과적일 때 압축 포맷으로부터 추가 결합 코드워드를 생략하는 것을 특징으로 하는 방법.
  4. 제 1 내지 3 항 중 한 항에 있어서, 추가 코드워드 도출은 그룹이나 블록에 관한 아래의 데이터, 즉,
    1) 블록이나 그룹의 모든 화소의 광도값을 나타내는 다수의 광도값, 그리고,
    - 재구축된 비디오 이미지 프레임에 대한 각 화소의 적절한 광도값 결정시 어느 대표 광도값이 사용될 지를 표시하는 수단으로 마스크를 이용하여 다중 대표광도값이 존재하는 경우에,
    2) 한개의 대표 크로미넌스값
    을 구축하는 과정을 포함하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서, 인코딩 동작은 동일 비디오 이미지 프레임 내, 또는 또다른 프레임의 동일 그룹이나 블록 내 이전 그룹이나 블록에 대한 값 1)과 2) 각각을 평가하고, 지정 순서로 이 값들을 비교하여, 차이와 변화를 감지하고 새 값이나 값 차이가 압축 형태에 포함되는 것을 특징으로 하는 방법.
  6. 제 4 항 또는 5 항에 있어서,
    - 인접 그룹이나 블록간 공유 변부의 한 변 위의 서브영역내 화소들이 공유 변부의 나머지 변의 서브영역 내 화소들 서브세트로 한 화소만큼 공간적으로 바뀔 때, 그리고
    - 서브영역들의 인코딩된 광도값들이 서로의 지정 한도내에 있을 때
    마스크에 표시되는 동일한 대표 광도값을 가지는 화소 세트로 서브영역들이 식별되고, 인접 그룹이나 블록의 두 서브영역들이 더 큰 영역으로 짝지워지는 것을 특징으로 하는 방법.
  7. 제 4 항 또는 5 항에 있어서,
    - 인접 그룹이나 블록간 공유 변부의 한 변 위의 서브영역내 화소들이 공유변부의 나머지 변부의 서브영역 내 화소들 서브세트로 한 화소만큼 공간적으로 바뀔 때, 그리고
    - 공유 변부의 한 변 위 서브영역에 놓인 원 비디오 이미지 프레임 내 상기 화소들의 광도값 범위가 공유 변부의 나머지 변 위 서브영역에 놓인 원 비디오 이미지 프레임 내 상기 화소들의 광도값 범위에 대해 지정된 관계를 가질 때,
    마스크에 표시되는 동일한 대표 광도값을 가지는 화소 세트로 서브영역들이 식별되고, 인접 그룹이나 블록의 두 서브영역들이 더 큰 영역으로 짝지워지는 것을 특징으로 하는 방법.
  8. 제 4 항 또는 5 항에 있어서, 추가 코드워드 각각은 관련 그룹이나 블록에 관한 모든 데이터에 대하여, 어느 값들이 변경되고 새 값이나 값의 차가 어떻게 인코딩되는 지를 표시하는 플랙 세트(a set of flag)로 시작되는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서, 각 추가 코드워드의 시작에서의 플랙 세트는 플랙에 대한 상기 값의 빈도에 따라 가변 길이로 인코딩되는 것을 특징으로 하는 방법.
  10. 제 9 항에 있어서, 커트에 대응하는 비디오 이미지 프레임 상의 그룹이나 블록에 대하여, 또는 다른 비디오 이미지 프레임 상의 블록이나 그룹에 대하여 독립적으로 주파수에 따라 플랙 세트가 인코딩되는 것을 특징으로 하는 방법.
  11. 제 4 항에 있어서, 한개 이상의 추가 코드워드의 마스크 부분은 이전에 채택된 마스크로부터 차이를 나타내고, 이 차이는 독자적인 것과는 다른 마스크 엔트리를 가지는 한개 이상의 인접부를 가질 경우 한 변부 상에 한 화소가 있다고 고려되는 원칙 하에서 마스크의 라이브러리(도 4)로부터 상기 차이가 선택되며, 마스크의 라이브러리는,
    1) 명시된 숫자의 화소들이 변경되었고 이들 모두가 한 변부 위에 있는 경우의 한 변부를 따르는 차이,
    2) 명시된 숫자의 화소들이 변경되었고 이들 모두가 한 변부 위에 있지 않은 경우의 한 변부를 따르지 않는 차이, 그리고
    3) 명시된 숫자의 화소들이 변경되었고 이들 모두가 한 변부 위에 있으며 이들 모두는 마스크에 의해 표시되는 동일한 대표 광도값을 가지는 경우의 한 변을 따르는 변 차이(sided difference)
    를 가지는 마스크를 포함하는 것을 특징으로 하는 방법.
  12. 제 4 항에 있어서, 추가 코드워드의 마스크 부분이 이전에 채택된 마스크의 공간 변환을 나타내는 것을 특징으로 하는 방법.
  13. 제 4 항에 있어서, 추가 코드워드의 마스크 부분이 마스크 라이브러리(도 5)로부터 선택되고, 상기 마스크 라이브러리는,
    1) 그룹이나 블록의 중심으로부터 주어진 거리와 수직에 대하여 주어진 경사의 두 광도값 사이에서 직선 경계가 위치하는 직선 변부,
    2) 직선 변부가 한 프레임으로부터 주어진 제 1 변부와 이어지는 프레임으로부터 주어진 제 2 변부 사이의 보간에 의해, 그리고 이 두 프레임 사이의 관련 그룹이나 블록의 시간 위치에 의해 직선 변부가 계산되는 보간 변부, 그리고
    3) 인접 그룹이나 블록 자체로부터의 정보가 마스크를 형성하는 역할을 하는 예측가능한 변부
    를 포함하는 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서, 인접 그룹이나 블록의 마스크(도 6) 내 변부들의 곡선들을 외삽함으로서 예측 변부 경우가 구축되는 것을 특징으로 하는 방법.
  15. 제 1 항 내지 14 항 중 한 항에 있어서, 한 그룹이나 블록이 변경되지 않고 수많은 일련의 비디오 이미지 프레임에서 일정한 경우에, 추가 코드워드가 다수의 비디오 이미지 프레임(일시적 갭)을 포함하고, 다수의 비디오 이미지 프레임동안 그룹이나 블록이 변경되지 않는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서, 한 그룹이나 블록에서 변경의 차이 빈도에 대하여 최적화된 일시적 갭 코딩을 위해 여러 다른 상태를 채택하는 과정을 추가로 포함하는 것을 특징으로 하는 방법.
  17. 제 1 항 내지 16 항 중 한 항에 있어서, 재구축되는 비디오 이미지 프레임 상의 영역 사이에 앤티-앨리어싱 경계를 적용하는 과정을 추가로 포함하는 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서, 영역간 경계의 한 변 위 두 인접 화소들을 식별함으로서 앤티앨리어싱이 적용되고,
    - 이 위치의 경계가 거의 수직에 가까운지 수평에 가까운지를 구축하며,
    - 경계의 동일 변 위 대응하는 화소쌍들이 모두 있을 때까지 수평방향이나 수직방향으로 경계를 추적함으로서 경계의 수평 섹션이나 수직 섹션의 양방향 종료 위치를 구축하고,
    - 경계의 수평이나 수직 섹션의 대응하는 종료 위치 중간점을 구축하며,
    - 경계의 실제 위치의 최적 추정치를 서브화소 정확도로 제공하기 위해 이 중간점들을 연결하는 직선을 채택하고, 그리고
    - 추정된 직선 경계의 각 변 위에 놓이는 화소의 면적에 비례하여 가중된 영역 화소값 사이의 앤티앨리어싱된 화소값들을 재구축된 비디오 이미지 프레임의 경계 상의 화소들에게 할당하는,
    이상의 단계를 추가로 포함하는 것을 특징으로 하는 방법.
  19. 제 18 항에 있어서, 종료 위치가 지정 거리보다 멀지 않고 종료 위치가 가장가까운 점에서 발견되지 않을 경우 이 거리가 사용된다고 가정함으로서 종료 위치를 구축하도록 경계를 추적하는 단계를 추가로 포함하는 것을 특징으로 하는 방법.
KR10-2003-7000140A 2000-07-07 2001-07-05 블록 코딩된 비디오 신호의 코드 아티팩트 감소 방법 KR20030029611A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0016838.5A GB0016838D0 (en) 2000-07-07 2000-07-07 Improvements relating to representations of compressed video
GB0016838.5 2000-07-07
PCT/GB2001/003031 WO2002005561A1 (en) 2000-07-07 2001-07-05 Method for reducing code artifacts in block coded video signals

Publications (1)

Publication Number Publication Date
KR20030029611A true KR20030029611A (ko) 2003-04-14

Family

ID=9895307

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-7000140A KR20030029611A (ko) 2000-07-07 2001-07-05 블록 코딩된 비디오 신호의 코드 아티팩트 감소 방법

Country Status (7)

Country Link
US (1) US20030156651A1 (ko)
EP (1) EP1316219A1 (ko)
JP (1) JP2004503153A (ko)
KR (1) KR20030029611A (ko)
AU (1) AU2001267754A1 (ko)
GB (2) GB0016838D0 (ko)
WO (1) WO2002005561A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4240283B2 (ja) * 2002-10-10 2009-03-18 ソニー株式会社 復号装置及び復号方法
GB2408871A (en) * 2003-11-10 2005-06-08 Forbidden Technologies Plc Data and digital video data compression
EP2213098A2 (en) * 2007-10-16 2010-08-04 Thomson Licensing Methods and apparatus for video encoding and decoding geometrically partitioned super blocks
EP2449784A1 (fr) * 2009-07-03 2012-05-09 France Telecom Prédiction d'un vecteur mouvement d'une partition d'image courante de forme géometrique ou de taille différente de celle d'au moins une partition d'image de référence voisine, codage et décodage utilisant une telle prédiction
US8879632B2 (en) * 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
GB201700086D0 (en) 2017-01-04 2017-02-15 Forbidden Tech Plc Codec
DE102018122297A1 (de) * 2018-09-12 2020-03-12 Arnold & Richter Cine Technik Gmbh & Co. Betriebs Kg Verfahren zur Kompression und Dekompression von Bilddaten
CN117408657B (zh) * 2023-10-27 2024-05-17 杭州静嘉科技有限公司 一种基于人工智能的人力资源服务系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5337085A (en) * 1992-04-10 1994-08-09 Comsat Corporation Coding technique for high definition television signals
JP2624087B2 (ja) * 1992-07-02 1997-06-25 松下電器産業株式会社 映像信号復号化方法
EP0721286A3 (en) * 1995-01-09 2000-07-26 Matsushita Electric Industrial Co., Ltd. Video signal decoding apparatus with artifact reduction
KR0181030B1 (ko) * 1995-03-28 1999-05-01 배순훈 이진화상을 이용한 비트플랜 압축전송장치
US5850294A (en) * 1995-12-18 1998-12-15 Lucent Technologies Inc. Method and apparatus for post-processing images
KR100242636B1 (ko) * 1996-03-23 2000-02-01 윤종용 블록화효과 및 링잉노이즈 감소를 위한 신호적응후처리시스템
KR100463004B1 (ko) * 1997-03-20 2005-06-02 주식회사 팬택앤큐리텔 Mpeg-4vop부호화방법
KR100269125B1 (ko) * 1997-10-25 2000-10-16 윤덕용 양자화효과감소를위한영상데이터후처리방법및장치
US6396956B1 (en) * 1998-03-31 2002-05-28 Sharp Laboratories Of America, Inc. Method and apparatus for selecting image data to skip when encoding digital video
US6668097B1 (en) * 1998-09-10 2003-12-23 Wisconsin Alumni Research Foundation Method and apparatus for the reduction of artifact in decompressed images using morphological post-filtering
US6427031B1 (en) * 1998-12-31 2002-07-30 Eastman Kodak Company Method for removing artifacts in an electronic image decoded from a block-transform coded representation of an image

Also Published As

Publication number Publication date
EP1316219A1 (en) 2003-06-04
AU2001267754A1 (en) 2002-01-21
GB2366472A (en) 2002-03-06
GB0116482D0 (en) 2001-08-29
WO2002005561A1 (en) 2002-01-17
GB2366472B (en) 2004-11-10
JP2004503153A (ja) 2004-01-29
US20030156651A1 (en) 2003-08-21
GB0016838D0 (en) 2000-08-30

Similar Documents

Publication Publication Date Title
JP6490264B2 (ja) 再構成された画像のサンプルのセットのための補償オフセットを復号するための方法および装置
US10939112B2 (en) Method and device for video coding and decoding
WO2020253831A1 (zh) 一种编解码方法、装置及存储介质
EP1834487B1 (en) Method for improved entropy coding
US6639945B2 (en) Method and apparatus for implementing motion detection in video compression
ES2240263T3 (es) Matriz de cuantificacion para el codificado de imagenes fijas y en movimiento.
JPH10257488A (ja) 画像符号化装置および画像復号化装置
US20190068981A1 (en) Storing and retrieving lossy-compressed high bit depth image data
US20230319265A1 (en) Intra prediction method and device, decoder, and encoder
KR20230111254A (ko) 인트라 예측 방법, 인코더, 디코더 및 저장 매체
US20230262221A1 (en) Method and device for video coding and decoding
JP2024506156A (ja) ビデオ符号化のための残差および係数の符号化
KR20030029611A (ko) 블록 코딩된 비디오 신호의 코드 아티팩트 감소 방법
JP2018509069A (ja) 画像符号化方法及び装置並びに画像復号方法及び装置
KR100255754B1 (ko) 이진 형상 신호 부호화 방법
JP3462867B2 (ja) 画像圧縮方法および装置、画像圧縮プログラムならびに画像処理装置
KR950015103B1 (ko) 통계적으로 인코드된 디지탈 칼라 비디오 데이타를 압축 및 감압하는 방법 및 시스템
KR20020026189A (ko) 고정된 비율 압축을 이용하는 효율적인 비디오 데이터엑세스
US20090304073A1 (en) Systems and Methods for the Bandwidth Efficient Processing of Data
KR20010110053A (ko) 동화상 정보의 압축 방법 및 그 시스템
WO2016119746A1 (zh) 图像编码方法及装置、图像解码方法及装置
TWI832661B (zh) 圖像編解碼的方法、裝置及存儲介質
CN107027035A (zh) 编码多维数字信号的方法和设备及解码的相应方法和设备
KR100495001B1 (ko) 이미지 압축 부호화 방법 및 시스템
JPS598475A (ja) 色彩画像の符号化方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid