KR0167092B1 - 디지탈 데이타를 통계적으로 엔코딩하는 방법 및 장치 - Google Patents

디지탈 데이타를 통계적으로 엔코딩하는 방법 및 장치 Download PDF

Info

Publication number
KR0167092B1
KR0167092B1 KR1019890702210A KR890702210A KR0167092B1 KR 0167092 B1 KR0167092 B1 KR 0167092B1 KR 1019890702210 A KR1019890702210 A KR 1019890702210A KR 890702210 A KR890702210 A KR 890702210A KR 0167092 B1 KR0167092 B1 KR 0167092B1
Authority
KR
South Korea
Prior art keywords
value
digital
data
sample
values
Prior art date
Application number
KR1019890702210A
Other languages
English (en)
Other versions
KR900701102A (ko
Inventor
애스틀 브라이언
제이 골린 스튜어트
Original Assignee
에프.토마스 던랩 2세
인텔 코포레이션
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 에프.토마스 던랩 2세, 인텔 코포레이션 filed Critical 에프.토마스 던랩 2세
Publication of KR900701102A publication Critical patent/KR900701102A/ko
Application granted granted Critical
Publication of KR0167092B1 publication Critical patent/KR0167092B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

내용없음

Description

[발명의 명칭]
디지탈 데이타를 통계적으로 엔코딩하는 방법 및 장치
[발명의 상세한 설명]
본 출원은 1987년 6월 17일에 출원되어 현재 계류 중인, 발명의 명칭이 매개변수화된(parameterized) 가변 길이 코딩인 미국 특허출원 제 063, 040호의 일부 연속출원이다.
본 발명은 효율적인 전송 또는 저장을 위해 디지탈 데이터를 통계적으로 인코딩(encoding)하는 회로에 관한 것이다.
디지탈 데이터 처리 분야에서의 발전에 따라 비교적 큰 양의 디지탈 데이터를 전송 및 처리할 수 있는 시스템이 요청되어 왔다. 그러나, 이러한 데이터는, 예컨대 표준 전화선을 통해 효율적으로 전송되거나 또는 비교적 적은 메모리에 효율적으로 저장될 수 있도록 압축되는 것이 바람직하다.
비교적 많은 양의 데이터를 전송하고 처리하는데 바람직한 디지탈 데이터 처리 시스템에 관한 한 예는 비디오 신호처리 시스템이다. 예컨대, 256개의 8비트 화소값을 각각 포함하는 240 라인으로 구성된 영상(image)을 생성하는 시스템은, 각 영상 프레임에 대해 61, 440바이트를 필요로 한다. 초당 30 프레임의 표시 속도를 가정하면, 이 시스템은 초당 1, 843, 200 바이트의 데이터 속도를 갖는다.
비디오 신호처리 시스템에서 프레임당 바이트 수는 데이터를 인코딩 함으로써 감소될 수 있다는 것은 공지된 사실이다. 비디오 데이터를 인코딩 하는 시스템은, 예컨대 발명의 명칭이 비디오 신호 인코딩인 미국 특허 제4, 125, 861호에 기술되어 있으며, 이는 본 명세서에서 참조로서 병합되어 있다. 이 참조문에서 기술된 시스템에 있어서, 비디오 데이터는 먼저 차동 펄스 코드 변조(DPCM)기술을 이용해 압축되고, 그후 가변 길이 코드(variable length code)를 이용하여 인코드되며, 이 가변 길이 부호에서, 통계적으로 더 자주 나타나는 데이터 값들은 보다 짧은 부호 워드에 할당되고, 덜 자주 나타나는 데이터 값들을 좀더 긴 부호 단어에 할당된다. 본 명세서 사용되는 이러한 형태의 인코딩을 통계적 인코딩이라 부른다.
데이터를 통계적으로 인코딩하는 한 방법은 후프만 부호(Huffman code)와 같은 최적의 가변 길이 코드를 이용하는 것이다. 이 코드를 이용하기 위하여, 전송될 데이터는 가장 빈번히 발생하는 것으로부터 가장 낮은 빈도로 발생하는 것까지의 순서가 정해지고, 후프만 코드는 예컨대 1963년에 N.Abramson에 의해 McGraw Hill사에서 발간된 정보이론 및 코딩(Iformation Theory And Coding)의 77-85 페이지에 기술되어 있는 알고리즘을 이용해서 만들어진다. 이 알고리즘은 참조로 본 명세서에 병합되어 있다. 이 방법을 이용하여, 데이터 값과 코드값 사이의 대응 관계를 제공하는 표가 인코드된 데이터와 함께 전송되어, 데이터를 디코드하는 시스템이 코드워드를 대응하는 데이터 값으로 변환시키도록 한다. 비교적 적은 양의 데이터만이 전송 또는 저장되어야 할 때, 인코드된 데이터와 함께 변환 표를 전송 또는 저장해야만 하는 별도의 부담은 이 인코딩 기술을 비실용적이게 한다.
데이터를 통계적으로 인코딩하는 제2의 방법은, 알려진 분포값에 일반적으로 근사시키는 값의 통계 분포값을 갖고 있는 데이터를 얻기 위하여, 소정의 알고리즘에 따라서 데이터를 처리하는 것이다. 이 데이터는, 알려진 분포에 대해 맞추어진 코드를 이용하여, 인코딩되고 전송된 후, 데이터를 인코드하는데 사용된 표의 역인 고정된 표(이후로 역표로 기재)를 이용해 디코드된다.
상기 인용 특허 제 4, 125, 861호는 이러한 형태의 시스템에 관한 것이다. 상기 특허에 기술된 시스템에 의해서 실행되는 DPCM 처리는 0에서 피크를 가지며 이 피크의 양측에서 대략 지수함수 형태인 분포값을 갖는 데이터를 발생시킨다. 이 데이터는 그후 판독 전용 메모리(ROM)에 저장된 프리세트 표를 이용하여 통계적으로 인코드된다. 이 데이터는 그 후 ROM에 저장되어 있는 역표를 이용하여 상기 데이터를 디코드 할 수 있는 수신기에 전송된다.
상술된 형의 시스템은, 입력 데이터를 상당히 압축시키고 변환 표가 압축된 데이터와 함께 전송되어야 할 것을 요구하지 않는 점이 장점이다. 그러나, 이러한 형태의 시스템 역시, 얻어진 압축 레벨이 보다 잘 맞추어진 통계적 인코딩 구조가 사용되었다면 얻어질 수 있는 압축 레벨만큼은 타당하지 못하다는 단점을 갖는다.
여러가지 통계 패턴을 제시하고, 인코드된 데이터에 대해 과도한 변환 표를 제공할 필요가 없도록, 데이터의 효율적인 인코딩을 생성하는 데이터 인코딩 및 디코딩 시스템이 고안된다면, 유리할 것이다.
[발명의 요약]
본 발명은, 디지탈 데이터를 통계적으로 인코딩하기 위해 맞추어진 코드를 발생시키는 시스템 내에서 구현된다. 상기 시스템은 처리기를 포함하고, 이 처리기는 데이터를 변환시켜 통계적인 분포에 대략 일치되도록 하는데, 상기 분포에서, 변환된 데이터 값들은, 0값이 가장 큰 발생 빈도를 갖고, 0보다 큰 값의 발생 빈도는 일반적으로 증가하는 크기에 대해 감소한다. 이렇게 변환된 데이터로부터 처리기는 통계적인 코드를 기술하는 다수의 매개변수를 발생시킨다. 각각의 매개변수는 연속 코드값이 한 세트를 기술하고, 이들 각 코드값은 각각 다른 데이터값에 대응한다.
본 발명의 다른 실시예에 있어서, 변환된 데이터는 매개변수로부터 발생된 코드를 이용하여 인코드되고, 이 매개변수들은 디코더로의 전송을 위해 인코드된 데이터에 연결된다.
[도면의 간단한 설명]
제1도는 본 발명을 이용한 비디오 신호 처리 시스템의 블록도.
제2도 및 제3a도 내지 제3c도는 제1도에 도시된 비디오 신호 압축기(20)의 동작을 설명하는데 유용한 다이어그램 및 값의 목록.
제4a 및 4b도는 제1도에 도시된 압축된 비디오 신호 처리기(30)의 동작 설명에 유용한 ALGOL 60 컴퓨터 프로그래밍 언어로된 컴퓨터 프로그램 목록.
제5a도 내지 제5d도는 제1도에 도시된 압축된 신호 처리기(30)의 동작 설명에 유용한 다이어그램 및 값의 목록.
제6a 및 6b도는 제1도에 되시된 통계적 인코더(40)의 동작 설명에 유용한 ALGOL 60 컴퓨터 프로그래밍 언어로된 컴퓨터 프로그램 목록.
제7도는 제1도에 도시된 통계적 디코더(50)로서 사용하기에 적당한 회로를 도시하는 블록도.
제8도는 제7도에 도시된 통계적 디코더 회로의 동작을 설명하는데 유용한 타이밍도.
[상세한 설명]
다음의 설명은 디지탈 비디오 신호 처리 시스템의 내용이다. 그러나, 여기서 설명되는 일반적인 기술은 비디오 신호 이외의 다른 데이터 형태에도 적용할 수 있음을 주목해야 한다.
도면에서, 굵은 화살표는 복수 비트 병렬 디지탈 신호를 운반하는 버스를 나타내고, 선으로된 화살표는 아날로그 신호 또는 단일 비트 디지탈 신호를 운반하는 접속을 나타낸다. 장치의 처리 속도에 따라, 신호 경로의 특정부에서 지연 보상이 요구될 수 있다. 디지탈 신호 처리 회로 설계의 당업자는 이와 같은 지연이 특정 시스템 내의 어느 곳에서 필요한 지를 알 수 있을 것이다.
제1도는 본 발명의 한 실시예를 포함하는 비디오 신호 처리 시스템의 블록도이다. 제1도에서, 예컨대 비디오 카메라인 비디오 신호 소스(10)는 비디오 신호 압축기(20)에 디지탈화된 비디오 신호를 제공한다. 다수의 비디오 압축 기술 중 임의의 것을 이용하여, 압축기(20)는 인가된 비디오 데이터를 처리할 수 있다. 두 기술, 즉 차동 펄스 코드 변조(DPCM)알고리즘과 2진 트리(tree) 분리 및 필(fill) 알고리즘이 이하에 설명된다.
압축기(20)에 의해 제공된 압축된 비디오 신호는 압축된 데이터를 통계적 인코더(40)에 의한 인코딩에 특히 적합한 형태로 변환하는 처리기(30)에 인가된다.
통계적 인코더(40)는 데이터에 대한 효과적인 코드를 발생시키고 인코드하기 위해 변환된 데이터를 처리한다. 인코드되고 변환된 데이터는 전송선(45)을 통하여 통계적 디코더(50)에 전송된다. 전송선(45)은 예컨대 인코더(40)와 디코더(50) 사이의 직렬 비트 접속부일 수 있다.
통계적 인코더(40)에 의해 통계적 디코더(50)로 전송된 데이터는, 데이터를 인코드하는데 사용된 특정 코드를 한정하는 매개변수의 세트를 포함한다. 이들 매개변수는 후술되는 바와 같이 데이터를 디코드하기 위해서 디코더(50)에 의해 사용된다. 통계적 디코더(50)에 의해 발생된 디코드된 데이터는 비디오 신호 처리기(60)에 인가되고, 이 처리기에서 상기 데이터는, 표시 장치(70)에 인가될 때, 소스(10)에 의해 원래 제공된 신호에 의해 표현되는 영상을 재생하는 신호로 변환된다.
상기 개요는 제1도에 도시된 시스템에 대한 보다 상세한 설명의 내용이다. 제1도에서, 비디오 신호 압축기(20), 압축된 신호 처리기(30) 및 통계적 인코더(40)는 공통 데이터 메모리(35)를 공유하는 개별로 프로그램된 마이크로프로세서로서 실현될 수도 있고, 또는 데이터를 홀드하고, 인코드된 비디오 신호를 생성하기 위해 차례로 마이크로프로세서를 각각의 프로세서(20, 30 및 40)로 변환시키는 프로그램을 홀드하기 위해
, 메모리(35)를 사용하는 단일 마이크로프로세서로서 실현될 수도 있다.
제2도는 제1도에 도시된 압축기(20)에 의한 일련의 입력 화소값의 DPCM인코딩의 한 예이다. 본 발명의 실시예에서 사용되는 DPCM 인코딩 기술은 상술된 미국 특허 제 4, 125, 861호에 사용된 기본 기술과 동일하다. 간략히, 각 코드값은 공급된 화소값과 이 전의 모든 코드값의 누적 합 사이의 차이값이다. 제2도에서, 소스(10)로부터의 16개의 화소값은 예의 4×4영상(210)을 발생시킨다. 이들 화소 값들은 제2도에 도시된 DPCM 압축된 데이터를 발생시키기 위해 상술된 방법을 이용하여 인코드된다.
영상이 8비트의 2진값의 시퀸스로 표현되도록 하기 위하여, 본 예에서의 DPCM 샘플에 대한 최대값은 +127이고 최소값은 -128이다. 이러한 제한의 효과는 DPCM 압축된 데이터의 첫번째 두개의 샘플값에 도시되어 있다. 제1화소값은 127로 제한되어 있고, 제2화소값은 127에 부가될때 화소값 141을 발생시키도록 증가한다. 본 발명의 실시예에서 사용된 알고리즘이 8비트 화소값으로 가정할지라도, 화소 값을 표현하는데 그보다 더 많거나 또는 적은 비트수가 사용될 수 있음을 주목해야 한다.
많은 비디오 영상으로부터 발생된 DPCM 인코드된 데이터를 분석함으로써, 본 발명자는 DPCM 인코드된 비디오 데이터는 라플라스(Laplacian) 통계 분포와 일반적으로 일치하는 것으로 판단하였다. 이러한 형태의 분포는 0에서 피크를 가지며, 크기 값의 음의 지수 함수로 근사시키는 0보다 크거나 작은 값의 통계 분포를 갖는다.
제3a, 3b 및 3c도는 2진 분할 및 필이라 불리는 인코딩 처리에 대한 개요가 도시되어 있다. 이하 설명된 알고리즘은 비디오 신호 압축기(20)에 의해 실행된다. 제1단계로, 단일 비디오 프레임을 기술하는 화소 데이터는 처리기(30)에 의해 메모리(35)에 저장된다. 이 데이터는 예컨대 4행과 4열을 갖는 직사각형 행렬로 구성된다. 이 영상 행렬은 제3a도의 직사각형(310)으로 표현된다.
이러한 간략화된 예에서, 비디오 영상(310)은 상술된 영상(210)과 동일하다. 이 영상은, 영상 화소들이 단일의 그레이 레벨(예컨대, 256 그레이 레벨의 가능한 범위중 각각 141, 112, 90 및 98을 갖는다고 간주되는, 4개의 영역(312, 314, 316 및 318)으로 구성 된다. 이 영상의 화소값 분포는 불규칙적인 것이다. 이것은, 어디에서 각 분해된 영역이 필 값으로 할당되고, 어떻게 이 분해가 효율적으로 인코드 되는지의, 영상의 간단한 2진 트리 분해를 도시하도록 의도된 것이다. 좀더 일반적인 경우에, 필(fill) (영역 화소값을 나타내는 코드)은 Ax+By+C와 같은 다항식으로 표현될 수 있다.
이러한 표현식에서 계수 A는 수평(X) 방향에서의 기울기 즉 밝기의 기울기를 나타내고, B는 수직(Y) 방향에서의 기울기를 나타내며, C는 영역 전반에 걸친 일정한 즉 단일의 밝기를 나타낸다. 제3a도의 예에서, 필 다항식 AX+BY+C의 계수 A와 B는 둘다 0이다.
2진 트리 분해는 영역을 반으로 분리하고, 그 결과의 서브-영역을 적절히 표현하는 필 값이 발견될 수 있을 때까지, 그 결과의 서브-영역 각각을 반으로 나눔으로써 실행된다.
본 예에서, 제3a도에 분리 1이라 표시되어 있는 제1분리는 영상(310)을 두개의 동일한 반으로 수평으로 나눈다. 상단에 있는 반(312)은 단일값(141)에 의해 적절히 인코드 될 수 있는 한편, 하단에 있는 반은 추가의 분리를 필요로 한다. 수직분리, 즉, 분리 2는 영상의 하단 반을 두개의 동일한 영역으로 나눈다. 오른쪽 반(314)은 값(112)에 의해 적절히 인코딩 되어 더이상 분리되지 않는다. 그러나, 왼쪽반에서는 다른 수평 분리, 즉, 분리 3이, 값 90 및 98로 각각 표현될 수 있는 두 영역(316 및 318)을 얻기위해, 요구된다.
제3b 및 3c도는 제3a도에 도시된 영상에 대한 2진 분리 및 필 표현의 디지탈 인코딩을 도시한다. 제3b도에 도시된 반전된 트리형 구조는 영상(310)의 연속 분할을 나타낸다. 이 구조는, 두 개의 가지를 형성하기 위하여 종단 노드가 아닌 각 노드가 분리되기 때문에, 2진 트리라 불린다. 트리의 상단 노드는 전체 영상(31)을 나타낸다. 영역이 분리될 때 마다 두 새로운 노드가 형성된다. 트리의 종단 노드(즉, 가지를 갖고 있지 않음)는 영역 필 값으로 인코드 된다.
제3c도는 제3b도에 도시된 트리구조를 기술하는 데이터 값의 배열을 보여주고 있다. 이 배열은 2진 트리의 7개의 노드와 정지형 값을 함유하는 한 노드에 대응하는 8행으로 구성되어 있다. 각각의 행은 노드를 기술하는 4개의 매개변수(열)을 포함한다. 제1매개변수(TYPE)는 수평분리(1), 수직분리(-1), 필(0) 또는 정지(2)노드로서 노드를 기술한다. 정지 노드는 영상에 대응하는 값을 갖지 않는다. 이 정지 노드는, 배열을 이용하는 프로그램에 대해, 마지막 노드가 처리되었음을 알려주는 지시자로서 제공된다. 제2매개변수(VALUE)는 모든 필 노드에 대한 노드의 값과 분리 노드에 대한 0값을 유지한다. 마지막 두개의 매개변수(LEFT 와 RIGHT)는 수평 또는 수직의 분리 동작과 연관된 좌우 노드를 각각 기술하는 배열에서의 엔트리에 대한 포인터(pointer)이다. 매개변수(LEFT 와 RIGHT)는 필 노드에 대해서 0값이다. 매개변수(LEFT 와 RIGHT)의 값은 제3c도의 가장 좌측에 있는 열의 번호에 대응한다.
2진 트리는 영상을 묘사하는데 사용되기 때문에, 매개변수(LEFT와 RIGHT)는 노드들 중 어느 것에도 필요치 않다. 압축된 신호 처리기(30)에 의해 실행된 동작 설명을 간략히 하기 위하여, 이들은 본 실시예에 포함된다. 2진 트리는 매개변수(LEFT 와 RIGHT)를 이용하지 않고 모든 다른 노드에 관한 임의의 노드 위치를 명백하게 한정하는 한 세트의 규정을 이용하여 생성되거나 거부(traverse)될 수 있다. 본 실시예에서, 규정은, 분리를 기술하는 데이터 바로 후에, 수평 또는 수직의 분리에 의해 발생된 상단 또는 좌측 영역에 대응하는 모든 데이터를 배치시키고, 이후 분리에 의해 발생된 하단 또는 우측 영역을 기술하는 데이터를 입력하는 것이다. 이는 본질적으로 반복 처리이고, 이는 트리의 최상부 또는 뿌리 노드에서 시작하여 모든 최종 노드가 도달될 때까지 고정된 순서로 모든 연속 노드에 대해 작용한다. 이들은 트리 구조를 기술 하는데 필요하지 않기 때문에, 매개변수(LEFT 와 RIGHT)는 인코더(40)에 의해 인코드 되지 않는다.
상술한 바와 같이, 처리기(30)는 DPCM 데이터 또는 2진 분리와 필 데이터를 통계적 인코더(40)에 의한 인코딩에 적합한 형태로 변환시킨다. 제6도를 참조로 이하 설명되는 바와 같이, 통계적 인코더는, 인코드될 값의 통계 분포가 구분적인 음의 지수함수 분포에 의해 근사될 수 있을 때, 효과적인 인코딩을 실행하는 한 세트의 코드를 이용한다. DPCM 인코드된 비디오 데이터는 일반적으로 양쪽의 음의 지수함수 분포인 라플라스 분포에 근사되는 통계분포를 나타낸다. 이러한 데이터를 통계적 인코더(40)에 의한 인코딩에 적합한 형태로 변환시키기 위해서, 압축된 신호 처리기(30)는 음의 번호를 양의 번호 사이의 틈 위치에 맵핑한다. 모든 양의 번호의 값을 두배로 하고, 음의 번호에 대한 극성을 변환시키고, 변환된 값을 두배로 하고, 그 결과로부터 1을 감산함으로써, 이러한 변환이 얻어진다. 이 알고리즘은 제4b도의 처리(SIGN_XFORM)에서 기술되었다. 제5a도는 부호 변환 동작이 가해지는 DPCM 데이터의 한 예이다. 이 데이터는 제2도를 참조로 설명된 압축된 데이터 변환된 형태이다.
2진 분리 및 필 데이터를 통계적 인코더(40)에 의한 사용을 위해 적합한 형태로 변환하는 것은 보다 복잡한 처리이다. 제4a 및 4b도는, 예컨대 제3c도에 도시된 형태의 2진분리 및 필 데이터를 제5d도에 도시된 것들과 같은 값의 시퀸스로 변환시키는, ALGOL 60 컴퓨터 언어로 된 컴퓨터 프로그램을 도시한다.
제4a및 4b도에 도시된 컴퓨터 프로그램은 도면의 오른쪽 여분에서의 행 번호를 참조로 설명된다. 제4a, 4b, 6a 및 6b도에 도시된 프로그램에 사용된 배열 요소들과 정수 변수 각각은 적어도 9-비트 데이터를 취한다고 가정하고, 따라서 +255와 -256 사이의 데이터 값을 나타낼 수 있다. 행(40)에서 선언된 배열(TREE)은 영상에 대한 2진 분리 및 필 설명을 포함한다. 배열(TREE) 및 제4a, 제6a 및 제 6b도에 도시된 컴퓨터 프로그램에 사용된 다른 배열에서의 요소의 수는 예를 들기 위한 것이다. 일반적인 비디오 데이터를 처리하기 위하여, 더 큰 수의 값이 요구될 수 있다.
배열(TREE)의 한 예가 제3c도에 도시되었다. 이 배열 내의 데이터는 1024 노드를 묘사할 수 있고, 이들 각각은 4개의 매개변수를 포함한다. 다양한 매개변수를 억세스하기 위해 사용된 값에 대한 기억하기 쉬운 연상 이름들이 행(50 내지 80)에 정의되어 있다. 매개변수(TYPE)는 수평분리, 수직분리, 필 및 정지에 대한 노드의 형태(1, -1, 0 또는 2)를 각각 가리킨다. VALUE 매개변수는 노드와 관련된 값이다. 매개변수(LEFT 와 RIGHT)는, 수평 또는 수직 분리 동작에 의해 생성되는 두 노드를 가리키는 배열(TREE)에 대한 색인(INDEX)이다. 이들 색인들은 제3c도의 가장 왼쪽열의 번호에 대응한다.
행(90)에서 선언된 배열(OUT)은 프로그램에 의해 발생되는 2진 분리 및 필의 콤팩트하고 변환된 형태이다.
변환 알고리즘의 설명을 간략히 하기 위하여, 비디오 신호 압축기(20)와 통계적 인코더(40)는 각각 입력 파일 및 출력 파일로서 각각 모델화 된다. 이들 파일들은 행(110 및 120)에서 선언된다.
행(140 내지 300)에서 선언된 처리(BRANCH_AVG)는, 순환 알고리즘을 이용하여, 뿌리 노드로부터 모든 분리 노드와 모든 필 노드를 통해 내려가 트리를 실행한다. 트리에 있는 각 분리 노드에 대하여, 처리는 우 및 좌 가지 노드의 VALUE 매개변수의 평균을 계산하고, 이 평균값을 분리 노드의 VALUE 매개변수에 할당한다.
처리(BRANCH_AVG)에 의해 사용되는 것과 동일한 알고리즘을 사용하여, 행(320 내지 540)에서 선언된 처리(R_MINUS_L)는 트리를 통해 반복적으로 진행되고, 각각의 분리 노드에 대하여 좌우 가지 노드의 VALUE 매개변수 사이의 차이를 계산하여 그 결과를 분리 노드의 VALUE 매개변수로서 저장한다.
행(550 내지 620)에서 선언된 처리(SIGN_XFORM)는 상술된 부호 변환 동작을 실행한다. 그 곳으로 통과된 모든 양의 값을 두배로 하고, 음의 값의 부호를 바꾸고, 부호가 변환된 값을 두배로 하여, 그 결과로부터 하나를 1을 감산하다.
2진 트리의 콤팩트하고 변환된 형태를 발생시키는 프로그램은 행(660)에서 제1실행 가능한 문장을 갖는다. 이 문장은 비디오 신호 압축 처리기(20)로부터 배열(TREE)을 얻는다. 상술된 바와 같이, 이 배열은 제3c도에 도시된 배열과 같은 형태이다.
행(700)에서 프로그램의 다음 단계는 뿌리 노드(배열(TREE)의 색인 0)에 대한 처리(BRANCH_AVG)를 호출한다. 이러한 호출은 전체 2진 트리를 통하여 따라가고, 최종 노드로부터 뿌리 노드까지 작업을 하면서, 각 분리 노드의 좌우 가지 노드에 대한 VALUE 매개변수의 평균을 분리 노드의 VALUE 매개변수에 위치시킨다. 이러한 변환은 제5b도에 도시되었고, 여기서 괄호( 및 )내의 값은 각 분리 노드의 VALUE 매개변수에 배치되는 가지 노드 평균값이다.
가지 평균값을 계산한 후, 행번호(710)에서의 프로그램은 128로부터 뿌리 노드에 대한 가지 평균값을 감산하여, 그 결과를 변수(ZERO_AVG)에 저장한다. 행 750에서의 프로그램에서의 다음 단계는, 각 분리 노드의 좌우 가지 노드에 대한 VALUE 매개변수 사이의 차이값을 계산하기 위하여, 처리(R_MINUS_L)를 호출한다. 이들 차이값은 각 분리 노드의 VALUE 매개변수에 저장된다.
행(790)에서 행(930)까지의 프로그램의 마지막 부분은, 2진 분리 및 필 데이터를 기술하는 제5d도에 도시된 것과 같은 값의 일련의 스트림으로 배열(TREE)내의 데이터를 변환시킨다. 이 부분의 프로그램에서, 뿌리 노드에 대한 필값(즉, ZERO_VALUE)은 색인 0에서의 배열(OUT) 내에 위치된다. 다음에 배열(TREE)내의 각 노드는 순차적으로 처리된다. 각 노드에 대한 TYPE 매개변수는 배열 (OUT)에 추가되고, 이 노드가 최종 노드가 아니면, 값(FILL) 역시 추가되며, 최종 노드는 0의 필값을 갖는다고 간주된다. 매개변수(LEFT와 RIGHT)는 값의 일련의 스트림 내에 포함되어 있지 않다. 배열(OUT)에 추가된 각 값은 부호 변환을 받게 된다.
행(925)에서의 명령문은 음의 정지값을 삽입 함으로써 배열(OUT) 내의 유효 데이터의 종료값을 생성한다. 모든 노드가 배열(OUT)에 추가되었을때, 명령문(930)은 배열(OUT)내의 데이터가 통계적 인코더(40)에 전달되게 한다.
발명자는, 상술된 동작이 비디오 영상의 2진 분리 및 필 분해를 기술하는 데이터를 발생시키고, 이는 일반 통계적으로 구분적인 음의 지수함수 분포와 일치하는 것으로 판단하였다.
변환된 DPCM 및 2진 분리 및 필 데이터를 발생 시키는데 사용된 데이터 변환 알고리즘은, 데이터가 디코드된 후, 원래의 데이터가 얻기 위하여 쉽게 전환될 수 있다.
제6a 및 6b도에 도시된 프로그램 목록은 통계적 인코더(40)가 한 세트의 데이터 값에 대한 가변 길이 코드를 발생시키는 것과, 전송을 위한 데이터 값을 인코드 하는 것으로, 통계적 인코더의 동작을 도시한다. 행(1010)에서 선언된 배열(IN)은 제4a 및 4b도에 도시된 프로그램에 사용된 배열(OUT)에 대응한다. 이 배열은 압축된 신호 처리기(30)에 의해 제공된 데이터 값을 2048가지 보유한다. 행(1010)에서 선언된 배열(STAT)은 배열(IN)내의 다양한 데이터값의 막대 그래프를 나타내는 값을 홀드한다. 행(1015)에서 선언된 파일(COMP_PROCESSOR)은 압축된 신호 처리기(30)에 대한 채널이고, 행(1020)에서 선언된 파일(XMIT_CHANNEL)은 통계적 디코더(50)에 대한 전송 채널(45)이다.
행(1025)에서 선언된 문자열 변수(DATA_OUT)는 전송 채널(45)를 통하여 통계적 디코더(50)에 보내질 인코드된 데이터를 홀드하는 2진 문자열이다. 행(1030)에서 선언된 문자열 배열(XLATE_TABLE)은 배열(IN)내의 고정 길이 데이터 워드에 대응하는 가변 길이 코드 워드를 홀드하는 변환표이다. 선언된 다른 변수는 후술되는 프로그램에서 사용되는 임시 저장 장치이다.
통계적 인코더(40)를 위한 프로그램 내의 제1의 실행 가능한 명령문은 행(1070)에 있다. 이 명령문은 압축된 신호 처리기(30)에 의해 제공된 데이터를 수신하고, 그것은 제4b도의 행(930)에 있는 명령문에 대응한다. 압축된 신호 처리기(30)로부터 수신된 데이터는 배열(IN)에 저장된다.
행(1110 내지 1170)에 있는 명령문은 배열(IN) 내의 다양한 데이터 값의 막대 그래프를 나타내는 값을 발생 시킨다. 이들 명령문에 의해 표시된 알고리즘은, 가능한 각 8비트 화소값에 대한 값인 배열(STAT) 내의 256개의 값이 초기에 0이라고 가정한다. 기간 명령문(1120 내지 1160)인 WHILE 루프에서, 배열(IN) 내의 각 유효 엔트리는 배열(STAT)로의 색인으로서 사용되고, 이 색인에 서의 값은 증가된다. 행(1170)이 실행될 때, 배열(STAT)의 개별 엔트리 0과 255사이의 가능한 각 데이터 값이 배열(IN)에서 발생되는 횟수를 포함한다. 배열(IN)내의 유효값의 전체 수는 변수(TOTAL_COUNT)에 저장된다.
배열(IN)내의 데이터를 인코드하기 위해 사용될 특정 가변 길이 코드를 기술하는 매개변수들은 제6a도의 프로그램행(1120 내지 1380)의 명령문에서의 상술한 알고리즘을 이용하여 배열(STAT) 내의 값으로부터 발생된다.
이들 명령문에 의해 실행되는 알고리즘을 이해하기 위하여, 이 시스템에 의해 사용되는 가변길이 코드의 형태를 먼저 기술하는 것이 유용하다. 이러한 형태의 코드는 다수의 레벨을 갖는 것으로 설명될 수 있다. 레벨 내의 모든 코드 워드의 시작부에서 발생하는 2진 값의 시퀸스인 접두어와, 공통의 접두어를 갖는 코드 값의 수인 모집단에 의해, 각 레벨은 한정된다. 본 발명의 본 실시예 내에서 사용된 가변 길이 코드의 형태에 대하여, 첫번째 것을 제외한 각 접두어는 연속적인 2진 1값의 시퀸스를 포함하고, 마지막 것을 제외한 모든 접두어는 2진 0값을 갖는다. 따라서, 5레벨의 가변길이 코드에 대한 접두어는 예컨대 다음표에 의해 정의된다.
Figure kpo00001
본 발명의 실시예에 사용된 통계코드의 각 레벨의 모집단은 항상 2의 거듭제곱의 적분이 된다. 다른 레벨에 대한 모집단 값은 데이터의 통계 분포에 의존한다. 본 실시예에서 실행된 바와 같이, 한 레벨은 1과 128의 다른 코드값 사이을 나타내는 코드값을 포함할 수 있다. 주어진 레벨의 모집단의 각 수는 N비트의 부호없는 2진 수로서 표시되고, 이 레벨에서의 모집단은 2 이다. 개별 코드값은 한 레벨의 모집단 내의 색인을 이 레벨의 접두어에 연결시킴으로써 발생된다. 예컨대, 표 2의 레벨과 모집단 매개변수에 의해 기술되는 코드는 표 3에 도시되었다.
Figure kpo00002
Figure kpo00003
통계적 인코더(40)에 의해 발생된 코드의 형태는 일반적으로 각 가능한 데이터 값에 대하여 다른 길이 코드 시퀸스를 이용하는 상기 인용한 미국 특허 제 4, 125, 861호에 사용된 코드 보다 더 효율적이지만, 후프만코드(Huffman code)와 같은 최적의 코드 보다는 비 효율적이다. 통계적 인코더(40)에 인가된 데이터가 음의 지수함수 분포를 나타낸다면, 발생된 코드의 효율은 최적 코드와 거의 동일하다. 이렇게 발생된 코드는 각 레벨에서 동일한 모집단을 가지며, 가능한 모든 데이터 값을 나타내기 위하여 충분한 수의 레벨을 갖는다.
상술된 알고리즘에 의해 발생된 데이터가 일반적으로 음의 지수함수 분포와 일치하는 것으로 판정되었지만, 개별 영상을 기술하는 데이터에 대하여 최상이라고 말할 수 있는 것은, 상당히 단조롭게 감소하는 통계분포를 따르는 것이다. 통계적 인코더(40)에 의해 발생된 코드는, 그것이 실제로 구분적 지수함수 분포에 의한 실제 데이터 분포를 필수적으로 모델화하기 때문에, 비교적 양호한 효율을 갖는 형태의 데이터를 인코드한다. 다른 레벨의 모집단은 본 발명의 이 실시예에서 2의 정수 제곱이라 할지라도, 다를 수 있다. 후프만코드에 대하여 다른 레벨의 모집단은 2의 정수 제곱일 필요가 없다.
상술된 코드의 설명에 비추어서, 특정 코드를 발생시키는 매개변수를 선택하는 알고리즘은 후술된다. 행(1210)에서, 배열(STAT)에 대한 색인으로 사용되는 변수(I)와 배열(TABLE)에 대한 색인으로서 사용되는 변수(LEVEL)는 0으로 설정된다. 행(1243 내지 1246)에서의 IF 명령문은, 주어진 값의 확률이 0이면, N에 7의 최대값을 할당한다. 이 명령문은 유효하지 않은 결과를 발생시키는 표현식(LOG2(0))의 계산을 예방한다. 행(1240)의 명령문은 배열(STAT)의 I번째 엔트리(entry)의 확률을 계산하여, 이 확률값을 실제의 변수(PROB)에 저장한다. 값(I)의 확률은 데이터 값의 전체 수(즉, TOTAL_COUNT)에 의해 나뉘어진 값(I)(즉, STAT[I])를 갖는 데이터 값의 수와 동일하다. 행(1250)에서, 표현식(-LOG2(PROB))의 정수부는 1만큼 감소되고, 그 결과는 변수(N)에 할당된다. 행(1255 및 1263)의 명령문은 0또는 7의 값을 변수(N)에 할당한다. 이 값이 생성될 때, 명령문(1250)은 음이거나 또는 7보다 크다.
변수 N에 할당된 값은 배열(IN)내의 값(I)의 통계적 중요성을 나타낸다. 값(I)이 배열(IN)에서 비교적 많은 횟수로 나타날때, N의 값은 비교적 작고, 값(I)이 비교적 작은 횟수로 나타날 때, N의 값은 비교적 크다. 예컨대 만약 I가 0과 같고, 배열(IN)내의 값의 25퍼센트가 0이라면, 0과 동일한 I에 대한 N의 값은 1이다. 그러나, 만약 값 0이 단지 배열(IN)내의 값의 단지 1퍼센트를 나타낸다면, 0과 같은 I에 대한 N의 값은 5이다.
본 발명의 실시예에서, 값(N)은 한 레벨의 모집단을 결정하는데 사용된다. 위에서 계산된 바와 같이, 값(N)은 현재레벨에서의 엔트리수의 밑수가 2인 로그값의 초기 평가치이다, 즉 현재 레벨의 모집단의 제1근사값은 2 이다. 변수(N)의 값이 정수이기 때문에 N을 1만큼 증분시키는 것, 즉 행 1250에서 표현식을 반올림하는 것이 바람직하다. N이 증분되야만 하는지의 여부를 결정하기 위하여, 현 레벨에서 모든 엔트리의 확률은 2 의 모집단을 근거로 합산되어 0.3820의 일정값에 비교된다. 이들 확률의 합이 이 일정값 보다 작으면 N의 값은 1만큼 증가된다. 연산의 시퀸스는 행(1265 내지 1316)에 있는 명령문으로 표현된다. 행(1320 내지 1353)의 IF명령문은 N, 즉 현 레벨에 대한 매개변수 값을 배열(TABLE)에 배치한다. 값(N)으로 표현된 엔트리 수의 두배의 수로 표가 완성되면 (즉, I+2 255이면), 현재의 레벨은 마지막 레벨이다. 현 레벨내의 엔트리 수는 두배로 되고 변수(I)는 256로 설정되어 루프가 종료된다. 행(1320)에서의 시험이 실패하면, ELSE절(행 1336 내지 1353)이 실행된다. 이 절은, 현 레벨의 모집단을 2 에 설정하고, 증가값을 현 레벨에 포함되어 있는 엔트리 후에 제1엔트리를 가리키기 위한 변수(I)에 유지된 값으로 설정한다.
행(1320)에서 행(1353)까지의 IF 명령문은, 마지막 레벨, 즉 통계 코드에 대한 매개변수 값과, 이것에로 진행하는 임의의 레벨을 차별화한다. 표 3과 관련하여 상술한 바와 같이, 코드의 마지막 레벨에 대한 접두어는 2진의 1로 끝나는 반면, 다른 코드 레벨에 대한 접두어는 모두 2진의 0으로 끝난다. 마지막 레벨을 확인하는 2진 1값의 시퀸스는 2진 0다음에 오지않기 때문에, 마지막 레벨은, 코드 워드 내의 동일 비트수에 대한 값에서 임의의 다른 레벨의 두배의 값을 나타낼 수 있다. 각 레벨이 마지막 레벨인지를 결정하기 위해 계산되는 것과 같이, 이 IF 명령문은 각 레벨을 검사한다. 마지막 레벨이라면, 마지막 레벨에 대한 매개변수 값은 계산되어져 배열(TABLE)에 할당되고, WHILE 루프는 변수(LEVEL)을 증분시키지 않고 종료된다. 그렇지 않을 경우, 중간 레벨에 대한 모집단 값은 계산되어져 레벨에 대한 매개변수 값으로 할당되고, 변수(LEVEL)은 증분되어 WHILE 루프가 다음 레벨에 대한 모집단을 계산하도록 한다. 행(1370)의 명령문은, 방금 계산된 레벨로 표현되는 배열(STAT)로부터, 값의 합만큼 TOTAL_COUNT값을 감소시킨다. 이러한 단계는, 명령문(1220 내지 1380)에 있는 WHILE 루프가, 이전의 레벨의 모집단에 관계없이 잔여 레벨에 대한 모집단을 계산하는 것을 조건으로 한다.
변수(I)가 256보다 큰 값을 가질 때까지, WHILE 루프 내의 프로그램 명령문은 지속되어 통계 코드의 다양한 레벨에 대한 모집단 값을 계산한다.
발명자는 이 알고리즘이, 데이터 값이 임의의 음의 지수함수 분포와 일치할 때는 후프만 코드와 같은 최적코드의 인코드 효율에 거의 근사시키는 가변 길이 코드를 발생시키고, 데이터 값이 일반적으로 단조롭게 감소하는 통계분포와 일치할 때는 상대적으로 효율적인 코드를 발생시키는 것으로 결정하였다. 상술한 바와 같이, 압축된 신호 처리기(30)에 의해 실행된 단계는, 적어도 일반적으로 단조롭게 감소하는 통계분포를 갖는 데이터를 발생 시키도록, 설계된다.
상술한 방법에 대안으로, 발명자는 만족스런 가변 길이 코드를 기술하는 매개변수가, 확률의 누적된 합이 0.3820보다 클때까지, 0에서 점차 증가하는 N에 대한 2 데이터 값의 확률을 누적함으로써 발생될 수 있는 것으로 결정하였다. 이러한 검사를 만족시키는 N의 값은 현재 레벨에 대한 매개변수 값이다. 이러한 알고리즘은, 하위 레벨에서의 값에 대한 통계 데이터를 제거하면서, 코드 값이 모든 가능한 데이터 값에 할당될 때까지 지속 된다.
제6a 및 6b도의 프로그램에 의해 표현된 알고리즘 내의 다음 단계는 통계 코드에 대한 변환표를 구성하는 것이다. 변환 표를 발생시키는 모범적인 알고리즘은 행(140 내지 1610)의 프로그램 명령문에 도시되어 있다.
명령문(1410)은 1비트의 0값을 2진의 문자열(BASE)에 할당한다. 행(1450)에서 행(1550)가지의 명령문을 포함하는 FOR 루프는 최종 레벨을 제외한 모든 레벨에 대한 변환표를 구성한다. 행(1470)에서, I번재 표 엔트리 내의 값(즉, I번째 레벨의 모집단에 대한 밑수가 2인 로그값)은 변수(N)에 할당된다. 행(1480)에서 행(1520)까지의 명령문에 걸치는 포개어진 FOR 루프는, 레벨(I)의 모집단의 각 구성원에 대한 2진의 문자열을 발생시키기 위하여 변수(N)의 값을 이용하고, 이 문자열 값을 배열 XLATE_TABLE내의 연속적인 위치에 입력한다. 특정 레벨의 특정수에 대해 발생된 문자열 값은, 레벨 I에 있는 모집단 내구성원의 색인을 나타내는 N비트의 2진값을 변수(BASE)에 유지된 접두어 값에 연결시킴으로써, 얻어진다. 이 동작에 의해 발생된 코드값은, 보다 상위 비트위치 내의 변수(BASE)에 유지된 값과, 보다 하위 비트 위치의 색인을 나타내는 값을 갖는다.
명령문(1530)은 1비트의 2진 1값을 MSB 위치의 변수(BASE)에 의해 유지된 값에 연결시키므로서 변수(BASE)에 할당된 값을 바꾼다. 이 값은 다음 레벨에 대한 접두어이다. 이는 다음 레벨에 대한 코드 워드를 발생시키기 위하여 사용된다.
행(1555 내지 1610)의 프로그램 명령문은 코드의 최종 레벨에 대한 변환 표의 엔트리를 생성한다. 명령문(1555)은 레벨-1의 2진 1값의 문자열인 변수(BASE)에 값을 할당한다. 이는 2 의 값에 대응한다. 행(1570 내지 1610)에 걸치는 FOR 루프는, 최종 레벨의 모집단의 각 엔트리 색인을 나타내는 N비트 2진 값을, 문자열 변수(BASE)에 포함되어 있는 접두어에 연결시키므로써, 최종 레벨에 대한 코드 워드를 형성한다.
통계적 인코더(40)에 대한 프로그램의 최종부는 프로그램의 다른 부분에 의해 발생된 통계 코드를 이용하여 배열(IN)내의 데이터를 변환한다. 행(1650)의 명령문은 배열(IN)에 대한 색인으로서 사용되는 변수(I)에 0의 값을 할당한다. 2진 문자열 변수(DATA_OUT)는 행(1660)의 명령문에 의해 0의 값을 할당 받는다. 행(1670 내지 1710)의 명령문은 배열(TABLE)의 16개의 8비트 엔트리를 문자열 변수(DATE_OUT)에 첨부시킨다. 이들 값들은, 코드 스트림으로부터 고정된 길이 데이터 값을 회복하기 위하여 통계적 디코더(50)에 의해 사용되는, 매개변수들이다. 배열(TABLE)로부터의 매개변수 값은 매개변수 값의 제곱값으로(즉, 대응 레벨에 대한 모집단으로)배열에 저장된다. 이들 값들은, 비트의 주요 순서를 반전시키는 기능(RBSTRING)을 이용하여, 값의 LSB를 먼저 문자열(DATA_OUT)에 입력하고, 값의 MSB를 마지막으로 문자열에 입력함으로서, 2진 문자열 형태로 변환된다. 매개변수 값의 비트 순서의 반전이 바람직하다. 그 이유는 매개변수 값들의 통계적 디코더(50)에 의해 2진 문자열으로부터 회복되는 후술하는 방법 때문이다. 행(1720 내지 1743)의 WHILE 루프는 배열(IN)내의 고정된 길이 데이터 값을 그들의 대응 가변 길이 코드 워드로 변환하여, 각각의 코드 워드를, 코드 워드의 MSB로부터 시작하여, 문자열 변수(DATA_OUT)에 첨가시킨다.
프로그램 내의 마지막 명령문(1770)은 인코드된 데이터를 전송 채널(45)를 통하여 통계적 디코더(50)에 보낸다. 상술한 바와 같이, 통계적 인코딩이 데이터 전송의 효율을 향상시키는데 사용된다면, 전송 채널은 직렬 비트 디지탈 신호를 운반하는 도체 일수 있거나, 또는 통계적 인코더(40)가 보다 효율적인 저장을 위해 데이터를 압축하는데 사용된다면, 다중-비트 신호를 메모리에 운반하는 버스일 수 있다. 제1도에 도시된 본 발명의 실시예에서, 통계적 인코더(40)와 통계적 디코더(50) 사이의 전송 채널(45)은 직렬 비트의 데이터 경로이다.
제7도는 통계적 디코더(50)로서, 사용하기에 적합한 회로를 도시하는 블록도이다. 제7도에 도시되어 있는 회로는, 저장 및 처리를 위해 8비트 데이터 경로를 통해 8비트 바이트로 그곳에 제공된 데이터를 분리한다. 16, 32또는 64비트 데이터 경로를 이용하는 등가 회로는 도시된 회로로부터 간단히 설계될 수 있음을 주목해야 한다. 일반적으로, 제7도에 도시된 회로는 전송채널(45)로부터 수신된 데이터를 저장하고, 디코드가 필요할 때 이 데이터를 디코더 회로에 제공하기 위한 버퍼 메모리(716)을 포함한다. 디코드 회로는 인코드 회로(40)에 의해 발생된 코드를 기술하는 매개변수의 표를 보유하는 RAM(724)을 포함한다. RAM(724)으로부터의 매개변수 값과 메모리(716)에 의해 제공된 데이터로부터 추출된 값을 가산기(738)내에서 연결함으로서, 버퍼 메모리(716)내의 데이터는 디코드된다. 디코드 작업을 실행하는 회로는 제어 회로(720)에 의해 제어된다.
통신 채널(45)을 통하여 제공된 직렬 비트 신호(DATA)는 시프트 레지스터(710)와 기록 어드레스 발생 회로(712)에 인가된다. 신호(DATA)는 예컨대 데이터를 회복하는데 필요한 클럭 신호 데이터와 함께 인코드 되는 0으로 리턴되지 않는(NRZ)신호가 될 수 있다. 본 발명의 이 실시예에서 사용된 회로(712)는 상기 클럭 신호를 재발생시켜 신호(DCK)로서 시프트 레지스터(710)에 제공하도록 신호(DATA)에 응답하는 위상 고정 루프(PLL; 도시 되지 않음)를 포함한다.
본 발명의 이 실시예에서 사용된 시프트 레지스터(710)는 8비트의 직렬-입력/병렬-출력 레지스터이다. 정상 상태의 동작, 즉 신호(DCK)가 안정화 되었을때, 기록 어드레스 발생 회로(712)는 시프트 레지스터(70)가 전송 채널(45)을 통해 제공되는 신호(DATA)의 비트 값들을 수신하도록 조절한다. 기록 어드레스 발생기(712)는 또한 데이터의 8비트가 레지스터(710)내로 시프트될 때 마자 시프트 레지스터(710)내에 홀드되어 있는 값을 신호(WLD)를 통하여 레지스터(714)가 로드하도록 조절한다.
레지스터(714)내에 유지된 8비트 값들은 버퍼 메모리(716)의 데이터 입력부에 인가된다. 기록 어드레스 발생기(712)는 기록 어드레스값(WADR)을 발생시키고, 레지스터(714)에 유지된 값을 버퍼 메모리(716)에 저장하기 위하여 버퍼 메모리 기록 가능 펄스 신호(BWE)를 발생시킨다. 기록 어드레스 값(WADR)은 회로(712) 내부의 게수기(도시되지 않음)에 의해 발생될 수 있다.
신호(BWE)는 기록 어드레스 발생기(712)에 의해 제어 회로(720)에 인가되어, 데이터 기록 작업이 진행 중임을 표시한다. 제어 회로(720)는 상기 신호를 감시하여, 데이터 기록 작업을 방해하지 않는 시간에 데이터 판독 작업이 이루어지게 한다. 제어회로(720)는 판독 어드레스 발생 회로(718)에 인가되는 신호(RREQ)를 발생시킴으로서 데이터 판독 작업을 개시한다. 이 신호는 회로(718)가 판독 어드레스 값(RADR)을 버퍼 메모리(716)에 제공하는 내부 계수기(도시되지 않음)를 증분시키도록 조정한다. 이러한 판독 어드레스값에 응답하여, 버퍼 메모리(716)는 8비트의 데이터 값을 병렬-입력, 병렬-출력 레지스터(722)에 인가시킨다.
버퍼 메모리(716)가 분리데이터 입력 및 데이터 출력 버스와, 분리 판독 및 기록 어드레스 버스를 갖고 있는 것으로 도시되어 있을 지라도, 단일 데이터 버스와 단일 어드레스 버스를 갖고 있는 메모리가 사용될 수도 있음을 주목해야 한다. 이와 같은 메모리가 사용된다면, 판독 어드레스 발생기(718)과 기록 어드레스 발생기(712)의 출력포트와, 레지스터(714)의 출력포트는 3상태 소자를 통하여 메모리의 각각의 어드레스 및 데이터 버스에 바람직하게 게이트(gate)된다. 이 메모리에 대해 사용된 레지스터(714)및 회로(712)는, 기록 작업이 진행중일 때 데이터 또는 어드레스 값을 각각의 버스에 인가시키고, 그렇지 않을 경우 버스에 대한 고임피던스를 나타내도록, 신호(BWE)에 의해 제어된다. 동일한 방법으로, 회로(718)는 신호(RREQ)에 의해 제어되어, 판독 작업이 진행중일 때 어드레스 값을 버스에 제공하고, 그렇지 않은 경우에는 고임피던스를 나타낸다.
버퍼 메모리(716)에 의해 레지스터(722)에 제공된 데이터 값은, 제어회로(720)에 의해 레지스터(722)에 인가되는, 신호(ORL)의 하강 에지(edge)에 동기가 맞춰져 로드된다. 레지스터(722)에 유지되는 데이터 값은 RAM(724)과 병렬-입력/직렬-출력 래지스터(732)에 인가된다.
본 발명의 이 실시예에서 사용된 RAM(724)은 상술한 바와 같은 통계적 인코더(40)에 의해 발생된 통계 코드를 정의하는 매개변수를 유지한다. 이들 매개변수 값은 채널(45)을 통해 통과된 데이터 스트림에 삽입된다. 이들은 디코더(50)에 의해 후술되는 인코드된 데이터를 회복하는데 사용된다. 매개변수 값이 버퍼 메모리(716)로부터 레지스터(722)에 인가될 때, 제어 회로(720)는 신호(WE)를 발생시켜, RAM(724)이 매개변수 값을 계수기(726)에 의해 제공된 어드레스 값에 의해 어드레스 지정되는 메모리 셀에 저장하도록 조정한다. 매개변수 값이 RAM(724)에 기록되었을 때, 제어 회로(720)는 신호(CCK)를 발생시켜, 계수기(726)가 그 값을 증분시키도록 조정한다.
이들 매개변수 값은 RAM(724)으로부터 판독되어 한 쌍의 레지스터 (728 및 730)에 인가될 수 있다. 레지스터(728)는 RAM(724)에 의해 제공된 매개변수 값의 MSB를 수신하도록 구성되어 있는 1비트 레지스터이다. 1비트 레지스터에 유지된 값은 신호(END)로서 제어 회로(720)에 인가된다. 레지스터(730)는 RAM(724)에 의해 제공되는 매개변수의 7개의 LSB를 수신하도록 구성되어 있는 7비트 병렬-입력, 병렬 또는 직렬-출력 레지스터이다. 새로운 매개변수 값은 제어 회로(720)에 의해 제공된 신호(MSLD)에 응답하여 레지스터(728 및 730)내로 로드된다. 레지스터 (730)내에 유지된 데이터 값은 제어 회로(720)에 의해 제공된 신호 (MSH)에 응답하여 최하위 비트 위치를 향해 시프트된다. 시프트 레지스터(730)에 의해 제공된 직렬-출력 신호는 제어 회로(720)에 인가되는 신호(LB)이다.
레지스터(730)의 비트-시프트 기능은 데이터 스트림으로부터 코드 워드의 모집단 색인부를 추츨하는데 사용된다. 이 값이 추출될때, 레지스터(730)에 유지된 2의 정수제곱인 매개변수 값은, 매개변수의 2진 1값이 레지스터의 LSB 위치를 점유할 때까지, 즉, 신호(LB)의 값이 1의 값이 될 때까지, 레지스터의 최하위 비트 위치를 향해 연속적으로 시프트된다. 이 값이 시프트됨에 따라, 모집단 색인값은 후술되는 바와 같이 로크(LOCK)단계로 한 쌍의 레지스터(734 및 735)로 시프트된다. 신호(LB)가 1의 값을 가질때, 시프트 동작은 종료되고, 모집단 색인 값은 레지스터(734 및 735)에 의해 유지된다.
레지스터(730)에 의해 제공된 7비트 병렬-출력값은 멀티플렉서(736)의 한 입력 포트에 인가된다. 소스(731)에 의해 제공된 0값의 1비트 신호는, MSB 위치에서 멀티플렉서(736)의 한 입력 포트의 7비트값과 연결되어, 8비트값을 형성한다. 멀티플렉서(736)의 제2입력 포트에는 레지스터(734및 735)로부터 데이터값이 제공된다. 이들 데이터 값은, 후술되는 바와 같이, 버퍼 메모리(716)에 의해 제공된 통계적으로 인코드된 데이터로부터 발생된다.
통계적으로 인코드된 데이터를 나타내는 8비트 값은 디코드 처리기(50)에 의해 요청되고, 이들은 버퍼 메모리(716)에 의해 제공된다. 이들 값은 제어회로(720)에 의해 제공된 신호(ORL)에 응답하여 병렬-입력/병렬-출력 레지스터(722)내로 로드된다. 레지스터(722)내에 유지된 8비트 값은 제어회로(720)에 의해 제공된 제어 신호(OSRL)에 응답하여 병렬-입력/직렬-출력 레지스터(732)에 전달된다. 레지스터(732)에 유지된 데이터 값은 제어회로(70)에 의해 제공된 신호(OSH)에 응답하여 최하위 비트 위치를 향해 시프트 된다.
8비트 데이터 값의 마지막 비트가 레지스터(732) 밖으로 시프트되면, 새로운 8비트 데이터 값이 제어회로(720)에 의해 제공된 제어신호 (OSRL)에 응답하여 레지스터(722)에 로드된다. 회로(720)는 판독 어드레스 발생기(718)를 제어하고, 또한 레지스터(722)를 제어하여 한 값이 레지스터(722)로부터 레지스터(732)에 전달되자 마자 메모리(716)로부터의 새로운 8비트 값을 로드하도록 한다. 따라서, 레지스터(732)는 신호(OSH)에 동기를 맞춰 비트 값의 연속적인 스트림을 제공할 수 있다.
신호(OSH)는 또한 직렬-입력/병렬-출력 레지스터(734)에 차례로 연결되는 1비트 레지스터(735)에 연결된다. 레지스터(735)는 레지스터(732)로 부터의 직렬 비트 출력 신호를 수신한다. 이 직렬 비트 신호는 레지스터(735)의 출력단자로부터 레지스터(734)의 LSB위치에 인가되고, 신호(OSH)에 응답하여 레지스터(734)의 상위 비트 위치를 향해 시프트된다. 레지스터(735)에 유지된 1비트 값은 신호(BT)로서 제어회로(720)에 인가된다. 레지스터(734및 735)에 유지된 8비트 값은 상술한 바와 같이 멀티플렉서(736)의 제2입력 포트에 인가된다. 이 외에도 레지스터(734)는 제어회로(720)에 의해 제공된 리세트 신호(RST)에 응답하여, 레지스터에 의해 유지된 각각의 7비트 값을 0으로 설정한다. 모집단 색인 값이 디코딩 알고리즘에 의해 요구될 때, 레지스터(734)는 리세트되고 N-1 비트 값은 레지스터(732)로부터 레지스터 쌍(734 및 735)으로 시프트된다. 이들 비트 값은 레지스터(730)가 1에서 N-1 가지 계수하는 계수기로서 작동하게 조정하는 신호(MSH)에 따라 로크단계에서 시프트된다. 이 경우에, N은 레지스터(730)에 유지된 매개변수 값으로 표현된 레벨의 모집단에 대한 밑수가 2인 로그값, 즉 매개변수 값에서의 2진 1의 비트 위치이다.
멀티플렉서(736)는, 소스(731)에 의해 제공된 0값의 MSB를 갖는 레지스터(730)에 의해 유지된 7비트 값 또는 레지스터(734 및 735)에 의해 유지된 8비트값을 가산기(738)의 한 입력 포트에 제공하기 위하여, 제어회로(720)에 의해 제공된 신호(MXC)에 의해 제어된다. 가산기(738)의 출력부는 8비트 병렬-입력/병렬-출력 레지스터(740)의 한 입력 포트에 결합되고, 그것의 출력 포트는 가산기(738)의 제2입력포트에 결합된다. 가산기(738)와 레지스터(740)의 조합은 누산기를 형성한다. 누산기 레지스터(740)에 의해 유지된 값은, 제어회로(720)에 의해 제공된 신호(ALD)가 발생될때, 바뀐다. 이 신호는 레지스터(740)가 가산기(738)에 의해 제공된 출력값을 로드하도록 제어한다. 레지스터(74)는 제어회로 (720)에 의해 제공된 신호(AR)에 의해 0값을 갖도록 리세트 될 수 있다.
가산기(738)에 의해 제공된 출력 신호는 통계적 디코더(50)의 출력 레지스타인 8비트 병렬-입력/병렬-출력 레지스터 (742)에 인가된다. 새로운 데이터 값은 제어회로(720)에 의해 제공된 출력 로드 신호(OLD)에 응답하여 레지스터(742)에 로드된다. 신호(OLD)는 디코더(50)의 출력 신호이고, 이 신호는 제1도에 도시된 바와 같이 비디오 신호 처리기(60)에 인가되어, 디코드된 데이터 값이 디코더(50)로부터 유효함을 처리기(60)에 알려준다.
디코딩 처리는 다음과 같이 진행된다. 새로운 코드 스트림이 인코더(40)에 의해 제공될 때, 전송 채널(45)을 통하여 제공된 디지탈 비트 스트림은, 이들이 수신될 때 버퍼 메모리(716)에 저장되는, 일련의 8비트 값으로 분리된다. 비트 스트림 내의 제1의 16개의 8비트 값은 코드를 기술하는 16개의 매개변수 값이다. 상술한 바와 같이, 매개변수 값들은 비트스트림 내의 워드에 관련하여 비트의 순서가 반전된다. 따라서, 레지스터(710)에 로드된 매개변수 값의 MSB는 레지스터의 MSB위치에 존재한다. 비트 스트림의 잔여 비트는 가변 길이 코드 워드이다. 상술한 바와 같이, 비트 스트림 내의 각 코드 워드의 비트는, 보다 상위 비트가 보다 하위 비트 이전에 비트 스트림으로 발생되도록, 배열된다. 8비트 값들은 점차 증가하는 어드레스 값을 갖는 메모리 셀에 저장된다. 이와 같이 저장된 값들은 16 매개변수 값 이후에 제1의 8비트 값의 LSB 위치에서 시작되는 비트 스트림을 나타내며, 버퍼 메모리(716)내의 점차 증가하는 어드레스 값을 갖는 메모리 셀을 통해 지속된다.
디코딩 처리 과정에서의 제1단계는 비트 스트림의 선두(head)에 나타나는 16개의 매개변수 값들을 RAM(724)에 로드시키는 것이다. 제1매개 변수는 어드레스 0에 로드되고, 제2매개변수는 어드레스 1에 로드되며, 이러한 식으로 어드레스 15까지 로드된다. RAM(742)에 대한 어드레스 값을 발생시키는 계수기(726)는, 매개변수 값들이 인코드된 데이터를 디코드 하는데 순차적으로 사용될 수 있도록, 0으로 리세트 된다.
매개변수 값들이 한 번 로드되면, 데이터 디코딩이 시작된다. 인코드 된 데이터를 나타내는 8비트 값들은 버퍼 메모리(716)로부터 순차적으로 판독되어 시프트 레지스터(732)에 로드된다. 코드 워드의 시작부에, 시프트 레지스터(732)에 의해 제공된 각2진 1값은 디코딩 회로가 레지스터(730)로부터의 현재 매개변수 값을 레지스터(740)내의 값에 가산한 후, 제어 회로(720)는 디코드된 값을 레지스터(724)에 보유되어 있는 누산된 값에 가산하도록 조정한다. 그후, 다음의 연속적인 매개변수 값이 새로운 현재의 매개변수로서 레지스터(730)에 로드된다. 최초의 0이 시프트 레지스터(732)에 의해 제공된 비트 스트림에서 나타날 때, 또는 END 비트 내에 2진 1을 갖는 매개변수가 나타날 때, 현재의 매개변수 값에 의해 지시되는 비트수는 레지스터(730)를 비트 시프트 계수기로 이용해 레지스터(734 및 735)내로 시프트되고, 디코딩 회로는 디코드된 데이터 값을 발생시키기 위해 레지스터(734 및 735)내로 시프드 된 값을 누적된 값에 가산하도록 조정된다. 그후, 계수기(726), 레지스터(740) 및 시프트 레지스터(734)는 다음의 인코드된 데이터 값을 디코드 하도록 준비하기 위해 리세트 된다. 레지스터(734)내의 값을 레지스터(740)내의 값에 가산한 후, 제어 회로(720)는 디코드된 값을 레지스터(724)내에 로드하기 위해 신호(OLD)를 발생시킨다.
통계적 디코더(50)의 동작은 입력 데이터 클럭신호(DCK)의 23 주기, 즉 시간 간격(T내지 T)에 걸치는, 제8도에 도시된, 타이밍도를 참조하여 설명된다. 제7도에 도시된 회로의 설명을 간단히 하기 위하여, 제7도에 도시된 회로 모두가 신호(DCK)에 동기를 맞춰 동작하는 것으로 가정한다. 그러나, 버퍼 메모리(716)로부터 인코드된 데이터를 판독하는 회로와 디코딩 동작을 실행하는 회로는 독립된 비동기 클럭 신호를 이용할 수 있다. 표 3의 코드를 다음 설명에서 참조한다.
제8도에 도시된 전체 시간 주기에서, 인코드된 데이터의 23비트는 신호(DATA)로서 통계적 인코더(40)에 의해 제공된다. 이들 비트는 신호(DCK)의 23연속 하강 천이에 동기를 맞춰 레지스터(710)내로 시프트된다. 16개의 이들 데이터 비트는 한번에 8비트씩, 시간 간격(T및 T)의 마지막에서 발생하는 신호(WLD)의 하강 천이에 동기를 맞춰 레지스터(714)에 전달된다. 이들 데이터 값은 신호(BWE와 WADR)에 의해 표시되는 바와 같이, 시간간격(T및 T)동안 버퍼 메모리(716)에 기록된다.
제8도에서의 신호의 나머지는, 통계적 디코더(50)가 코드에 대한 마지막 매개변수 값을 RAM(724)에 로드한 후, 3개의 8비트 2진값 00001001, 00000010 및 000000100(즉 9,2 및 4)를 얻기 위하여 비트 스트림 11011010100을 디코드 하는 동작을 보여준다.
16개의 매개변수 값들이 인코드된 데이터를 가지고 전송될 지라도, 단지 3개의 매개변수 값만이 본예에 해당된다. 이들 매개변수 값은 Po=000000100, P=00000010, 및 P=10001000이다.
시간 간격(T)동안, 제어회로(720)는 버퍼 메모리(716)에서 8비트 데이터 값의 판독을 요청하는 신호(RREQ)를 발생시킨다. 신호(RREQ)에 응답하여, 판독 어드레스 발생기(718)는 시간 간격(T)동안 판독 어드레스 값(RADR)을 버퍼 메모리(716)에 인가된다. 시간 간격(T)의 마지막에서, 판독 어드레스 발생기(718)는 다음의 판독 작업을 준비하기 위하여 내부 판독 어드레스 값을 증가시킨다. 인가된 판독 어드레스 값에 응답하여 버퍼 메모리(716)에 의해 제공된 값은 시간 제어회로(720)에 의해 제공된 신호(ORL)(이 신호는 간격(T)의 마지막에 나타남)의 하강 천이에 동기를 맞춰 레지스터(722)에 저장된다.
제8도는 도시된 타이밍도에서, 시간(T)에서 버퍼메모리(716)으로 부터 판독된 데이터 값은 신호(DATA)를 발생시키기 위해 통계적 인코더(40)에 의해 사용되는 코드를 기술하는 마지막 (16번째) 매개변수 값이다. 시간간격(T)동안, 시간(T)전에 증가된 계수기(726)는, RAM(724)내의 마지막 매개변수 값의 어드레스(즉, 15)를 RAM(724)내의 마지막 매개변수 값의 어드레스(즉, 15)를 RAM(724)의 어드레스 입력 포트(AD)에 제공한다. 또한, 시간간격(T)동안, 제어회로(720)는 RAM(724)이 매개변수 값을 어드레스 지정된 메모리 위치에 저항시키게 하는 신호(WE)를 발생시킨다. 마지막 매개변수 값을 RAM(724)에 저장시킨 후, 계수기(726)에 의해 유지된 값을 0으로 설정하기 위하여, 제어회로(720)는 시간 간격(T)동안 신호(CR)를 발생시킨다. 인코드된 데이터의 제1비트를 준비하기 위하여, 제어회로(72)는 시간 간격(T)의 후반부 동안 제1매개변수 값(P)을 레지스터 쌍(728 및 730)에 로드시키기 위한 신호(MSLD)를 발생시킨다.
시간 간격(T)동안, 제어회로(720)는 버퍼 메모리(716)로부터 다음의 연속 8비트값의 판독을 요청하는 신호(RREQ)를 발생시킨다. 이 값은 신호(ORL)의 하강 천이와 동기를 맞춰 시간 간격(T)의 마지막에 레지스터(722)에 로드된다. 레지스터(722)에 유지된 8비트값은 시간 간격(T)의 마지막에 나타나는 신호(OSRL)의 하강천이와 동기를 맞춰 레지스터(732)에 전달된다.
시간간격(T)동안, 제어회로(720)는 레지스터(740)내의 모든 비트를 리세트시키는 신호(AR)을 펄스식으로 발생시켜 누산기를 초기화시킨다.
시간간격(T)동안, 제어회로(720)는 버퍼 메모리(716)로부터 메모리 판독 작업을 개시하고, 판독된 값을 레지스터(722)에 저장한다. 또한 시간 간격(T)동안, 제어회로(720)는 레지스터(732)의 LSB위치의 비트값(즉, 제1코드워드의 MSB)을 레지스터(735)에 전달시키는 신호(OSH)를 발생시킨다. 이 비트 값은 시간 간격(T)의 중간에 나타나는 신호(OSH)의 하강 천이와 동기를 맞춰 전달된다. 제8도에 도시된 타이밍도에서, 이 비트값은 2진 1이다. 따라서, 시간 간격(T)의 중간에서, 레지스터(735)에 의해 유지된 값을 나타내는 신호(BT)는 1의 값을 갖는다. 1의 값을 갖는 신호(BT)에 응답하여, 제어회로(720)는 신호(MXC)의 값을 2진 1로 변화시키고, 이는 멀티플렉서(736)가, 소스(731)로부터의 MSB위치에서 2진 0을 갖는, 레지스터(730)로부터의 현재의 매개변수 값을 가산기(738)에 인가시키도록 조정한다. 가산기(738)는 이 값과 레지스터(740)에 의해 유지된 0값을 더한다. 이들 두 값의 합은 시간 간격(T)의 중간에 나타나는 신호(ALD)의 하강 천이와 동기를 맞춰 레지스터(740)에 저장된다.
신호(CCK)는 계수기(726)에 유지된 값을 증분시키도록 발생되어, 제2매개변수값(P)이 RAM(724)의 출력 포트에서 유효하도록 한다. 시간 간격(T)동안 제어회로(720)는 제2매개변수 값이 레지스터(728 및 730)에 로드되게 하는 신호(MSLD)를 발생시킨다. 또한, 회로(720)는 시프트 레지스터(732)가 코드 워드의 다음의 연속 비트를 시프트 레지스터(735)에 제공하게 하는 신호(OSH)를 발생시킨다. 본 예에서, 이 비트 값은 2진 1이다.
1값으로 된 신호(BT)에 응답하여, 제어회로(720)는 멀티플렉서(736), 가산기(738)및 레지스터(740)가 레지스터(730)에 의해 유지된 제2 매개변수 값(P)을 레지스터(740)에 이미 유지된 값에 더하도록 조정한다. 이 결과는 시간 간격(T)의 중간에서 나타나는 신호(ALD)의 하강 천이에 동기를 맞춰 레지스터(740)에 저장된다.
시간 간격(T)동안, 제어회로(720)는 계수기(726)을 증분시키는 신호(CCK)를 발생시켜, 출력포트에서 제3매개변수(P)를 제공도록 RAM(724)를 조정한다.
시간 간격(T)에서, 제3매개변수는 레지스터(730)에 로드되고, 인코드된 데이터의 다음의 비트는 시프트 레지스터(732)에 의해 레지스터(735)에 제공된다. 이 예에서, 1비트 레지스터(728)에 유지된 제3매개변수 값의 END 비트는 2진 1이다. 레지스터(728)에 의해 제공된 2진 1값인 신호(END)에 응답하여, 제어회로(720)는 신호(MXC)를 논리 0으로 변화시키고, 이는 멀티플렉서(736)가 레지스터(734 및 735)에 의해 유지된 값을 가산기(738)에 인가하도록 조정한다. 신호(END)에 대한 2진 1의 값은 제어 회로(720)가 신호(RST)를 발생시켜 시프트 레지스터(734)의 7비트가 0으로 설정하도록 조정한다.
시간 간격(T)의 후반부 동안, 제어회로(720)는 신호(MSH)를 발생시켜, 레지스터(730)에 의해 유지된 제3매개변수 값의 7개의 LSB가 낮은 하위 비트를 향해 1비트 위치만큼 시프트되도록 한다. 이 모드에서, 레지스터(730)는 시프트 레지스터(732)로부터 레지스터 쌍(735 및 734)로 시프트 되는 비트 수를 계수하는 계수기로서 사용된다. 본 실시예에서, 제어회로(720)는, 시간 간격(T)의 시작에서 2진 1이 레지스터(730)의 LSB 위치내로 시프트될 때까지, 시간 간격(TT및 T)동안 신호(MSH 및 OSH)의 펄스를 록크 단계로 발생시킨다. 이 펄스가 나타날 때, 레지스터(730)에 의해 제공된 신호(LB)는 1의 값을 갖고, 이는 제어회로(720)가 2진 0값에서 신호(OSH 와 MSH)를 유지하도록 조정한다. 시간 간격(T)의 시작에서, 레지스터 쌍(734 및 735)은 제1가변길이 코드 워드의 모집단 색인(즉, 00000011)을 유지한다.
멀티플렉서(736)는 레지스터 쌍(734 및 735) 내의 8비트 값을 가산기(738)에 인가하도록 조정되기 때문에, 가산기의 출력값은 상기 값과 레지스터(740)에 의해 유지된 값의 합이 된다. 이 합은 디코드된 데이터 값이다. 이 값은 시간 간격(T)의 후반부 중에 제어회로(720)에 발생된 신호(OLD)에 의해 출력 레지스터(742)에 로드된다.
제어회로(720)가 출력 레지스터(742)를 조정하여 출력 데이터 값을 로드하도록 함에 따라, 레지스터(740)의 내용을 0으로 설정하기 위해 신호(AR)를 발생시킨다.
시간 간격(T)동안, 다음의 연속 코드 워드의 제1비트, 즉 2진 0은 레지스터(735)내로 시프트된다. 레지스터(735)에 의해 제공된 신호(BT)를 위한 2진 0은, 신호(END)를 위한 2진 1의 값과 동일한 효과를 갖는다. 시간 간격(T및 T)동안, 제어회로(720)는, 시간 간격(T)동안 신호(LB)가 2진 1값을 가질 때가지, 비트 스트림으로 부터의 비트를 레지스터(734 및 735)의 더 상위 비트 위치로 시프트시키고, 이와 동시에 레지스터(730)에 유지된 매개변수 0의 비트를 더 하위 비트 위치로 시프트 시킨다. 이러한 시프팅이 이루어질 때, 레지스터 쌍(734 및 735)의 값은 가산기(738)에 인가되어 레지스터(740)에 유지된 0값과 합산된 후, 시간 간격(T)의 마지막에 나타나는 신호(OLD)의 하강 천이와 동기를 맞춰 출력 레지스터(742)에 저장된다.
제7도에 도시된 회로는 나머지의 시간 간격(T내지T)에 대해 상기와 같은 방법으로 동작한다. 시간 간격(T및 T)의 마지막에서 디코더에 의해 제공된 값은 각각 9와 2이다. 제8도의 타이밍도는, 시간 간격(T)의 마지막에서 데이터 값 4를 얻기 위하여, 인코드된 2진 값 100의 디코딩에 관한 것이다.
통계적 디코더(50)에 의해 제공된 데이터 값은, 데이터 값을 필드 또는 프레임 저장 메모리(도시안됨)에 저장하고 저장된 데이터를 표시장치(70)에 표시를 위해 처리할 수 있는, 비디오 신호 처리기(60)에 인가된다.
상술된 본 발명의 실시예에 있어서, 비디오 신호 처리기(60)는 화소값들이 디코더(50)에 의해 제공될때 이 화소값들을 처리하기에 충분한 속도로 동작하는 것으로 가정하고 있다. 저속의 비디오 신호 처리기를 이용하는 시스템에서, 처리기(60)가 디코더에 의해 제공된 데이터를 받아들일 준비가 되어있지 않을 때, 디코더의 동작을 정지하는 회로(도시안됨)를 디코더에 설치하는 것이 바람직할 수 있다. 이 회로는 제어회로(720)에 포함될 수 있으며, 신호(OSH, MSH, ORSL 및 MSLD)의 발생을 금지시키기 위하여, 처리기(60)에 의해 제공된 WAIT 신호(도시안됨)에 응답할 수 있다.

Claims (8)

  1. 디지탈 샘플을 인코딩 하기 위한 장치에 있어서, 디지탈 샘플의 소스와, 상기 소스에 결합되어, 변환된 디지탈 샘플을 생성시키기 위해 디지탈 샘플을 변환시키되, 디지탈 샘플값이 연속적으로 점점 증가하는 값을 가지는 상기 변환된 디지탈 샘플의 통계 발생 빈도(statistical frequencies of occurrence)가 그들의 각각의 발생 빈도 값에서 일반적으로 단조로운 감소를 나타내는 변환 수단과, 상기 변환된 디지탈 샘플을 수신하도록 결합되어, 상기 변환된 디지탈 샘플을 인코딩하는데 적합한 통계 코드를 한정하는 다수의 매개 변수 값을 발생시키도록 프로그램된 계산 수단을 구비하되, 상기 각각의 매개변수 값이 상기 변환된 디지탈 샘플의 한 세트의 연속적인 값을 제각기 나타내는 한 세트의 연속적인 코드를 기술하는(describes) 인코딩 수단을 포함하는 것을 특징으로 하는 디지탈 샘플 인코딩 장치.
  2. 제1항에 있어서, 상기 인코딩 수단의 계산 수단은 상기 복수의 매개변수 값을 사용하여, 상기 변환된 디지탈 샘플을 인코드하고, 인코드된 데이터를 생성하고, 상기 인코드된 샘플이 디코딩 장치에 의해 디코드될 수 있도록 상기 인코드 된 샘플에 복수의 매개 변수값을 연결시키도록 또한 프로그램되는 것을 특징으로 하는 디지탈 샘플 인코딩 장치.
  3. 제2항에 있어서, 상기 소스가 제1 및 제2의 극성을 가진 디지탈 샘플을 제공하고, 상기 디지탈 샘플을 변환시키는 상기 수단은 상기 디지탈 데이터 값을 상기 제1극성만을 갖는 변환된 디지탈 데이터 값으로 변환시키는 수단을 구비하되, 상기 제2극성을 갖는 상기 디지탈 데이터 값은 상기 변환된 디지탈 데이터 값을 생성시키도록 상기 제1극성을 가진 디지탈 데이터 값들 중에서 인터리브(interleave)된 값으로 극성과 크기가 바뀌는 것을 특징으로 하는 디지탈 샘플 인코딩 장치.
  4. 디지탈 샘플을 인코딩 하는 방법에 있어서, 상기 디지탈 샘플을 처리하여, 변환된 디지탈 샘플을 발생시키되, 디지탈 샘플이 특정 값을 갖는 변환된 디지탈 샘플의 통계 발생 빈도가 그 특정 값의 크기에 역 비례하는 디지탈 샘플 처리 단계와, 상기 변환된 디지탈 샘플의 각각의 값의 상대 발생 빈도를 나타내는 값의 표를 생성하는 단계와, 상기 값의 표를 처리하여, 다수의 매개변수 값들을 생성시키되, 상기 각각의 매개변수 값은, 각각의 코드 값이 상기 변환된 디지탈 샘플의 하나의 값을 나타내는 한 세트의 코드 값을 기술하고, 코드 값 내의 2진 비트의 수는, 상기 변환된 디지탈 샘플의 모든 다른 값에 관하여, 코드 값에 의해 표현되는 변환된 디지탈 샘플 값의 발생 빈도에 역 비례하는, 표 처리 단계와, 상기 다수의 매개변수 값에 의해 한정된 통계 코드를 사용하여 상기 변환된 디지탈 샘플을 인코딩하며, 인코드된 디지탈 샘플을 발생시키는 인코딩 단계와, 상기 매개변수 값을 상기 인코드된 디지탈 샘플에 연결시키는 단계를 포함하는 것을 특징으로 하는 디지탈 샘플 인코딩 방법.
  5. 제4항에 있어서, 상기 디지탈 샘플은 제1및 제2극성(polarities)을 가지며, 상기 디지탈 샘플을 처리하여, 변환된 디지탈 샘플을 생성시키는 디지탈 샘플 처리 단계는, 상기 제1극성을 가진 상기 각각의 디지탈 샘플에 상기 소정의 계수를 곱하여, 상기 제1비율로 정해진 디지탈 샘플을 생성시키는 단계와, 상기 제2극성을 가진 상기 각각의 디지탈 샘플에 상기 소정의 계수를 곱하여, 제2비율로 정해진 디지탈 샘플을 생성시키는 단계와, 상기 각각의 제2비율로 정해진 샘플에 소정의 값을 가산하여, 수정된 샘플을 얻는 단계와, 상기 각각의 수정된 샘플의 극성을 변경시켜, 상기 제1비율로 정해진 디지탈 샘플의 극성과 동일한 극성으로 하는 단계를 포함하는 것을 특징으로 하는 디지탈 샘플 인코딩 방법.
  6. 제4항에 있어서, 상기 디지탈 샘플은 제1 및 제2극성을 가지며, 상기 디지탈 샘플을 처리하여, 변환된 디지탈 샘플을 발생시키는 상기 디지탈 샘플 처리 단계는, 상기 제1극성을 가진 상기 각각의 디지탈 샘플에 소정의 계수를 곱하여, 제1비율로 정해진 디지탈 샘플을 생성시키는 단계와, 상기 제2극성을 가진 상기 각각의 디지탈 샘플에 소정의 계수를 곱하여 제2비율로 정해진 디지탈 샘플을 발생시키는 단계와, 상기 각각의 제2비율로 정해진 샘플의 극성을 변경시켜, 상기 제1비율로 정해진 샘플의 극성과 동일한 극성으로 하는 단계와, 상기 각각의 극성이 변경된 제2비율로 정해진 샘플에 소정의 값을 가산하는 단계를 포함하는 것을 특징으로 하는 디지탈 샘플 인코딩 방법.
  7. 비디오 신호를 처리하는 시스템에 있어서, 상기 비디오 신호를 나타내는 디지탈 데이터 소스와, 상기 디지탈 소스에 결합되어, 상기 디지탈 데이터를 압축하여, 압축된 디지탈 데이터를 생성시키는 압축 수단과, 상기 압축된 디지탈 데이터를 처리하여, 변환된 디지탈 데이터를 생성시키되, 디지탈 데이터가 특정 값을 갖는 디지탈 데이터의 통계 발생 빈도는 데이터 값이 증가함에 따라 단조롭게 감소하는, 압축된 디지탈 데이터 처리 수단과, 상기 변환된 디지탈 데이터를 수신하도록 결합되고, 상기 변환된 디지탈 데이터를 인코딩 하는데 적합한 통계 코드를 한정하는 다수의 매개변수값을 발생시키도록 프로그램되어 있는 계산 수단을 구비하되, 상기 매개변수 값의 각각의 값은 상기 변환된 디지탈 데이터의 한 세트의 값을 제각각 나타내는 한 세트의 연속 코드 값을 기술하는(describe), 인코딩 수단을 포함하는 것을 특징으로 하는 비디오 신호 처리 시스템.
  8. 제7항에 있어서, 상기 인코딩 수단의 계산 수단은 상기 다수의 매개 변수 값을 사용하여 상기 변환된 디지탈 데이터를 인코드시켜, 인코드된 데이터를 생성하고, 디코딩 프로세서에 전송을 위해 상기 인코드된 데이터에 다수의 매개변수 값을 연결시키도록 또한 프로그램되는 것을 특징으로 하는 비디오 신호 처리 시스템.
KR1019890702210A 1988-03-31 1989-03-29 디지탈 데이타를 통계적으로 엔코딩하는 방법 및 장치 KR0167092B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US175,915 1988-03-31
US07/175,915 US5045853A (en) 1987-06-17 1988-03-31 Method and apparatus for statistically encoding digital data
PCT/US1989/001303 WO1989009517A1 (en) 1988-03-31 1989-03-29 Method and apparatus for statistically encoding digital data

Publications (2)

Publication Number Publication Date
KR900701102A KR900701102A (ko) 1990-08-17
KR0167092B1 true KR0167092B1 (ko) 1999-03-20

Family

ID=22642193

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019890702210A KR0167092B1 (ko) 1988-03-31 1989-03-29 디지탈 데이타를 통계적으로 엔코딩하는 방법 및 장치

Country Status (8)

Country Link
US (1) US5045853A (ko)
EP (1) EP0425496B1 (ko)
JP (1) JP2819174B2 (ko)
KR (1) KR0167092B1 (ko)
AU (1) AU622663B2 (ko)
CA (1) CA1321012C (ko)
DE (1) DE68926676T2 (ko)
WO (1) WO1989009517A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68916038T2 (de) * 1989-09-29 1994-10-27 Bell Telephone Mfg Adaptives transformationskodierungssystem.
JP3085465B2 (ja) * 1989-10-31 2000-09-11 オリンパス光学工業株式会社 画像データの符号化装置および符号化方法
JP3012698B2 (ja) * 1991-01-29 2000-02-28 オリンパス光学工業株式会社 画像データの符号化装置および符号化方法
US5857088A (en) * 1991-10-24 1999-01-05 Intel Corporation System for configuring memory space for storing single decoder table, reconfiguring same space for storing plurality of decoder tables, and selecting one configuration based on encoding scheme
AU3247393A (en) * 1991-12-23 1993-07-28 Intel Corporation Circuitry for decoding huffman codes
US5734784A (en) * 1992-03-25 1998-03-31 Kabushiki Kaisha Toshiba High data rate system and method for video recording and playback
US5351047A (en) * 1992-09-21 1994-09-27 Laboratory Automation, Inc. Data decoding method and apparatus
US5615020A (en) * 1993-05-13 1997-03-25 Keith; Michael System and method for fast huffman decoding
JPH08147479A (ja) * 1994-11-17 1996-06-07 Hitachi Ltd 画像出力装置並びに画像復号化装置
US5793896A (en) * 1995-03-23 1998-08-11 Intel Corporation Ordering corrector for variable length codes
US5748790A (en) * 1995-04-05 1998-05-05 Intel Corporation Table-driven statistical decoder
US5646618A (en) * 1995-11-13 1997-07-08 Intel Corporation Decoding one or more variable-length encoded signals using a single table lookup
US5848195A (en) * 1995-12-06 1998-12-08 Intel Corporation Selection of huffman tables for signal encoding
KR100319919B1 (ko) * 1996-07-06 2002-06-20 윤종용 가변 확률모형을 사용한 개선된 산술 부호화기 및/또는 복호화기
US5821887A (en) * 1996-11-12 1998-10-13 Intel Corporation Method and apparatus for decoding variable length codes
US6253165B1 (en) * 1998-06-30 2001-06-26 Microsoft Corporation System and method for modeling probability distribution functions of transform coefficients of encoded signal
US7024409B2 (en) * 2002-04-16 2006-04-04 International Business Machines Corporation System and method for transforming data to preserve privacy where the data transform module suppresses the subset of the collection of data according to the privacy constraint
US8806324B2 (en) * 2007-08-03 2014-08-12 Sap Ag Annotation data filtering of computer files
US8077063B2 (en) * 2010-01-18 2011-12-13 Freescale Semiconductor, Inc. Method and system for determining bit stream zone statistics
US8866645B2 (en) * 2012-10-02 2014-10-21 The Boeing Company Method and apparatus for compression of generalized sensor data
CN113987556B (zh) * 2021-12-24 2022-05-10 杭州趣链科技有限公司 数据处理方法和装置、电子设备、存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3883847A (en) * 1974-03-28 1975-05-13 Bell Telephone Labor Inc Uniform decoding of minimum-redundancy codes
JPS5255313A (en) * 1975-10-30 1977-05-06 Kokusai Denshin Denwa Co Ltd Facsimile signal coding system
JPS5390749A (en) * 1977-01-19 1978-08-09 Nec Corp Huffman decoder circuit
US4125861A (en) * 1977-08-18 1978-11-14 Bell Telephone Laboratories, Incorporated Video signal encoding
US4386416A (en) * 1980-06-02 1983-05-31 Mostek Corporation Data compression, encryption, and in-line transmission system
US4396906A (en) * 1980-10-31 1983-08-02 Sri International Method and apparatus for digital Huffman encoding
US4369463A (en) * 1981-06-04 1983-01-18 International Business Machines Corporation Gray scale image data compression with code words a function of image history
AU555476B2 (en) * 1981-10-15 1986-09-25 Motorola, Inc. Binary encoding
CA1211219A (en) * 1982-06-30 1986-09-09 Hideo Kuroda Digital data code conversion circuit for variable- word-length data code
JPS5992688A (ja) * 1982-11-19 1984-05-28 Fuji Photo Film Co Ltd 適応形画像圧縮方式
US4563671A (en) * 1983-05-18 1986-01-07 At&T Bell Laboratories Coding technique
US4574382A (en) * 1983-10-05 1986-03-04 International Business Machines Corporation Variable length character code system
US4725815A (en) * 1984-01-16 1988-02-16 International Business Machines Corporation Method for encoding and decoding a digital image
US4631521A (en) * 1984-12-31 1986-12-23 Wang Laboratories, Inc. Method and apparatus for differential run-length coding
GB8502924D0 (en) * 1985-02-05 1985-03-06 British Telecomm Image encoding
US4646061A (en) * 1985-03-13 1987-02-24 Racal Data Communications Inc. Data communication with modified Huffman coding
JPH0821863B2 (ja) * 1985-04-13 1996-03-04 キヤノン株式会社 データ処理方法
US4754492A (en) * 1985-06-03 1988-06-28 Picturetel Corporation Method and system for adapting a digitized signal processing system for block processing with minimal blocking artifacts
JPS62152225A (ja) * 1985-12-26 1987-07-07 Canon Inc 予測符号化装置

Also Published As

Publication number Publication date
EP0425496A1 (en) 1991-05-08
JPH03503708A (ja) 1991-08-15
DE68926676D1 (de) 1996-07-18
WO1989009517A1 (en) 1989-10-05
KR900701102A (ko) 1990-08-17
US5045853A (en) 1991-09-03
AU622663B2 (en) 1992-04-16
AU3410689A (en) 1989-10-16
EP0425496B1 (en) 1996-06-12
CA1321012C (en) 1993-08-03
JP2819174B2 (ja) 1998-10-30
DE68926676T2 (de) 1997-02-20

Similar Documents

Publication Publication Date Title
KR0167092B1 (ko) 디지탈 데이타를 통계적으로 엔코딩하는 방법 및 장치
US5045852A (en) Dynamic model selection during data compression
KR970007357B1 (ko) 가변- 길이 엔코더된 데이타 디코딩 장치
RU2125765C1 (ru) Способ и устройство сжатия символов, стохастический кодер (варианты)
US6195026B1 (en) MMX optimized data packing methodology for zero run length and variable length entropy encoding
US5260693A (en) Method and system for lossless and adaptive data compression and decompression
JP3484310B2 (ja) 可変長符号器
US6292114B1 (en) Efficient memory mapping of a huffman coded list suitable for bit-serial decoding
KR100246878B1 (ko) 역이산 코사인변환 프로세서, 이산 코사인 변환계수의 매트릭스를 역변환하기 위한 방법 및 그 장치
US6049330A (en) Method and apparatus for optimizing storage of compressed images in memory
WO1995014350A1 (en) Quadtree-structured walsh transform coding
WO2000002319A1 (en) Real time algorithms and architectures for coding images compressed by dwt-based techniques
KR19990014761A (ko) 디지탈 정보신호 부호화 방법 및 장치
US5594435A (en) Permutation-based data compression
KR100604364B1 (ko) 정보신호의 연산 인코딩 및 디코딩
KR100959837B1 (ko) 패러미터 값들을 코드워드 인덱스들로 매핑하기 위한최적의 방법 및 시스템
JP3990464B2 (ja) ディジタルビデオ信号プロセッサのためのデータ効率のよい量子化テーブル
US6094151A (en) Apparatus and method for finite state machine coding of information selecting most probable state subintervals
US5708431A (en) Method for compression coding of potentially unbounded integers
US10938411B1 (en) Compression and/or decompression of activation data
KR100221337B1 (ko) Mpeg-2 복호화기의 역양자화기
JPH0936749A (ja) 符号化復号化装置およびこれに用いられる符号化方法
JPS6352812B2 (ko)
KR100207428B1 (ko) 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법
Chang et al. Compression gain aspects of JPEG image compression

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J2X1 Appeal (before the patent court)

Free format text: APPEAL AGAINST DECISION TO DECLINE REFUSAL

B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120919

Year of fee payment: 15

EXPY Expiration of term