KR101503829B1 - 데이터 압축 장치 및 방법 - Google Patents

데이터 압축 장치 및 방법 Download PDF

Info

Publication number
KR101503829B1
KR101503829B1 KR1020070091048A KR20070091048A KR101503829B1 KR 101503829 B1 KR101503829 B1 KR 101503829B1 KR 1020070091048 A KR1020070091048 A KR 1020070091048A KR 20070091048 A KR20070091048 A KR 20070091048A KR 101503829 B1 KR101503829 B1 KR 101503829B1
Authority
KR
South Korea
Prior art keywords
block
range
difference
data
domain
Prior art date
Application number
KR1020070091048A
Other languages
English (en)
Other versions
KR20090025885A (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 삼성전자주식회사
Priority to KR1020070091048A priority Critical patent/KR101503829B1/ko
Priority to US12/203,097 priority patent/US8059016B2/en
Priority to TW97133952A priority patent/TWI357224B/zh
Priority to JP2008229007A priority patent/JP4814291B2/ja
Priority to CN2008102129261A priority patent/CN101383616B/zh
Priority to EP08163739.9A priority patent/EP2034738B1/en
Publication of KR20090025885A publication Critical patent/KR20090025885A/ko
Priority to JP2011138752A priority patent/JP5008106B2/ja
Application granted granted Critical
Publication of KR101503829B1 publication Critical patent/KR101503829B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • 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/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals

Abstract

데이터 압축 장치가, 탐색 범위 내의 도메인블록들을 탐색하며, 탐색된 도메인블록과 레인지 블록의 데이터를 비교하여 차이값을 발생하며 차이값에 따른 코스트를 생성하는 탐색기와, 탐색기에서 선택된 코스트의 도메인 블록과의 거리 및 코스트정보를 레인지 블록의 압축 데이터로 코딩하는 코더로 구성되며, 레인지블록은 압축 대상 데이터의 블록이고 도메인 블록은 레인지 블록과 비교 대상 데이터의 블록인 것을 특징으로 한다.
압축, 탐색, 코딩

Description

데이터 압축 장치 및 방법{DEVICE AND METHOD FOR COMPRESSING DATA}
본 발명은 데이터 압축 장치 및 방법에 관한 것이다.
일반적으로 메모리를 사용하는 디지털 장치는 메모리를 효과적으로 사용하기 위한 다양한 방법들이 사용되고 있다. 그 중 한 가지 방법이 라이트모드시 데이터를 압축하여 메모리에 저장하고, 리드 모드시 압축 저장된 데이터를 복원하는 기술이다. 이런 경우 상기 압축률을 높이면 메모리 효율은 높아지지만 압축 속도 및 복원 속도가 저하되어 메모리 억세스 타임이 길어지고, 압축율을 적게 하면 메모리 억세스 타임은 빠르게 수행할 수 있지만 메모리 효율이 저하된다. 따라서 디지털 장치의 메모리를 효율적으로 사용하기 위해서는 고 압축률 및 고속의 복원을 만족시킬 수 있는 압축 및 복원 방법이 필요하다.
본 발명의 실시예에 따른 데이터 압축 방법은 매크로 블록의 데이터를 정방향 및 역방향 코딩하면서 압축 속도를 크게 저하시키지 않으면서 최소의 코스트를 가지는 도메인 블록을 탐색하여 압축율을 향상시킬 수 있는 방법을 제안한다. 또한 테이블(global table, local table 등)에 압축 데이터를 효율적으로 저장하여 압축시 자주 발생되는 블록 차이 값에 대한 코스트를 낮게 설정하므로써 저장되는 데이터의 압축율을 향상시킬 수 있는 방법을 제안한다. 또한 압축율이 좋지 않은 매크로 블록은 예외처리하여 압축율과 복원 속도 조정이 가능하도록 하는 방법을 제안한다.
본 발명의 실시예에 따른 데이터를 압축 장치가, 탐색 범위 내의 도메인블록들을 탐색하며, 상기 탐색된 도메인블록과 레인지 블록의 데이터를 비교하여 차이값을 발생하며, 상기 차이값에 따른 코스트를 생성하여 최소의 코스트를 가지는 도메인 블록과의 거리 및 차이정보를 생성하는 탐색기와, 상기 탐색기에서 선택된 도메인 블록과의 거리 및 차이정보를 상기 레인지 블록의 압축 데이터로 코딩하는 코더로 구성되며, 상기 레인지블록은 압축 대상 데이터의 블록이고 도메인 블록은 상기 레인지 블록과 비교 대상 데이터의 블록인 것을 특징으로 한다.
또한 본 발명의 실시예에 따른 데이터를 압축하는 방법이, 탐색범위 내에서 도메인블록들을 탐색하며, 탐색된 도메인블록과 레인지 블록의 데이터를 비교하여 차이값을 발생하며, 상기 차이값에 따른 최소의 코스트를 가지는 도메인 블록과의 거리 및 차이정보를 생성하는 탐색 과정과, 상기 선택된 도메인 블록과의 거리 및 차이 정보를 상기 레인지 블록의 압축 데이터로 코딩하는 과정으로 이루어지며, 상기 레인지블록은 압축 대상 데이터의 블록이고 도메인 블록은 상기 레인지 블록과 비교 대상 데이터의 블록인 것을 특징으로 한다.
본 발명의 실시예에 따른 데이터 압축 장치 및 방법은 역방향 코딩(backward coding) 방법을 사용하여 압축 속도를 크게 저하시키지 않고 압축률을 높일 수 있으며, 또한 자주 사용되는 압축 데이터를 테이블에 저장하고 코딩시 테이블을 이용하여 압축 데이터를 생성하므로써 압축율을 향상시킬 수 있고, 압축 효율이 떨어지는 블록은 예외처리 블록으로 처리하여 압축률과 복원 속도 조정을 가능하게 할 수 있다.
이하 본 발명의 바람직한 실시예들의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 도면들 중 동일한 구성들은 가능한 한 어느 곳에서든지 동일한 부호들을 나타내고 있음을 유의하여야 한다.
하기 설명에서 매크로 블록의 비트수, 숏블럭의 수 및 비트수, 거리 정보 및 차이 정보, 테이블들의 임계값 등과 같은 구체적인 예시 등과 같은 특정 상세들이 본 발명의 보다 전반적인 이해를 제공하기 위해 나타나 있다. 이들 특정 상세들 없이 또한 이들의 변형에 의해서도 본 발명이 용이하게 실시될 수 있다는 것은 이 기술분야에서 통상의 지식을 가진 자에게 자명할 것이다.
본 발명의 실시예에서 "매크로블록(macro block)"이라는 용어는 데이터를 압축하는 최소 단위를 의미한다. "숏 블록(short block)"은 매크로블록을 구성하는 단위로써, 두 개 이상으로 구성될 수 있으며, 본 발명의 실시예에서 상기 숏블럭은 16비트 크기를 가진다고 가정한다. 본 발명의 실시예에서 상기 매크로 블록은 두 개의 숏으로 구성되었다고 가정한다. "레인지 블록(range block)"은 압축하고자 하는 하나 이상의 매크로 블록을 의미한다. "도메인 블록(domain block)"은 레인지 블록을 압축하기 위해 참조되는 매크로 블록을 의미한다."거리정보(distance infomation)"는 레인지 블록과 도메인 블록 간의 거리를 의미하는 거리값(distance value) 및 거리값의 변경 여부를 표시하는 거리플래그(distance flag) 등을 포함할 수 있다. 거리플래그는 각 매크로 블록마다 주어지며 레인지 블록의 구성을 나타낸다. "차이 정보(difference infomation)"는 레인지 블록과 도메인 블록 간의 데이터 차를 의미하는 차이값(difference value) 및 차이 값이 존재 여부를 표시하는 차이플래그(differnce flag)를 포함할 수 있다. 여기서 데이터 차이는 두 블록의 데이터를 배타적 논리합(exclusive OR, XOR)한 값을 의미한다. "코스트(cost)"는 상기 차이값을 계산하여 압축 데이터로 메모리에 저장되는 데이터의 길이(비트수) 결정한다."예외처리(exception handling)"는 압축률이 높지 않을 경우 데이터 압축 을 하지 않음(raw data를 그대로 사용)을 의미한다. "글로벌 테이블(global table)"은 고정 테이블(fixed entry table)로써, 상기 차이 값(difference value)을 인덱스로 한다. "로컬 테이블(local table)"은 가변 테이블(floating entry table)로써, 압축 중에 발생 빈도 수가 높은 매크로 블록들을 인덱스로 한다. "탐색범위(searching range)"는 레인지 블록의 위치에서 도메인 블록을 탐색하기 위한 범위를 의미한다. "정방향 코딩 (forward coding)"은 현재 코딩되는 하나의 매크로 블록으로 구성된 레인지블록을 최소의 코스트로 코딩하는 도메인 블록을 탐색 범위에서 코딩하는 것을 의미하며,"역방향 코딩(backward coding)"는 현재 코딩된 하나의 매크로 블록을 포함하여 이전에 코딩된 레인지 블록들을 재구성하여 코스트를 줄이기 위한 코딩을 의미한다. 즉, 상기 정방향 코딩은 압축기가 순차적으로 선택되는 하나의 매크로블록으로 구성되는 레인지 블록을 일차적으로 코딩하는 것을 의미하며, 역방향 코딩은 현재 코딩한 매크로 블록을 포함하여 이전에 코딩된 레인지블록을 재구성하여 압축률을 향상시키는 것을 의미한다."데이터(data)"는 프로그램 및 사용자 데이터들을 포함하는 용어로써 모든 데이터를 통칭하는 의미로 사용될 것이다.
본 발명의 압축기(compressor)는 데이터를 압축할 때, 압축할 데이터인 레인지 블록의 길이를 결정하고, 상기 레인지 블록과 동일 또는 유사한 데이터를 가지는 도메인 블록을 탐색하며, 상기 레인지 블록과 탐색된 도메인 블록 간의 거리 및 차이를 코딩하여 압축하는 방법을 제안한다. 여기서 데이터는 2진 데이터(binary data)가 될 수 있으며, 펌웨어(firm ware) 및 소프트웨어(software)와 같은 프로그 램의 코드 데이터를 포함하는 모든 데이터들이 될 수 있다.
일반적으로 데이터를 압축하는 압축기 및 압축해제기(decompressor)는 고압축율 및 고속의 복원 기능을 가지는 것이 바람직하다. 이때 압축기의 압축율을 높이면 압축기의 압축속도 또는 압축해제기의 복원 속도가 저하된다. 본 발명은 상기 탐색범위 내에서 도메인 블록을 탐색할 때 다음과 같은 방법으로 압축율 및 복원속도를 향상시킨다.
첫 번째로 압축기는 레인지 블록을 탐색 범위 내의 도메인 블록들과 비교할 때 이전 매크로 블록을 코딩 할 때 구성된 검색대상(reference list)에 대하여 정방향 및 역방향으로 코딩하여 탐색 범위 내에서 상기 레인지블록과 최소 코스트를 가지는 도메인 블록을 선택한다.
두 번째로 압축시 레인지 블록과 도메인 블록으로 빈번하게 발생되는 블록들의 차이 값들을 실험적으로 측정하며, 상기 측정된 차이값에 따른 코스트를 생성한다. 그리고 상기 블록 차이값을 인덱스로 사용하고 해당 인덱스 위치에 상기 생성된 코스트로 차이값을 코딩하는 값을 저장한다. 이때 가장 빈번하게 발생되는 블록들의 차이값들을 최소 코스트로 매핑하므로써 데이터의 압축율을 향상시킬 수 있다. 압축률을 더욱 향상시키기 위하여 전체 빈도 수에 따른 글로벌 테이블과 영역별 빈도 수에 따른 로컬 테이블을 둔다. 여기서 상기 글로벌 테이블은 상기 압축기 자치에 구비될 수 있으며, 또한 압축시 메모리의 특정 위치에 저장할 수도 있다. 그리고 상기 로컬 테이블은 압축기가 데이터를 압축하는 중에 글로벌 테이블에는 없으나 특정한 영역에 빈번하게 발생되는 레인지 블록과 도메인 블록의 차이값 및 코스트를 테이블화하여 메모리에 저장할 수 있다. 여기서 상기 글로벌 테이블은 압축 전에 미리 만들어지는 고정테이블로써, 상기 압축기가 라이트모드시 저장되는 모든 데이터에 적용되는 테이블이 될 수 있다. 그리고 상기 로컬 메모리는 가변 테이블로써 부분 영역 데이터의 압축에서만 사용되는 테이블이 될 수 있다.
세 번째로 압축기는 매크로 블록 단위의 데이터를 압축하며, 탐색 범위 내에서 레인지 블록과 동일 또는 유사한 도메인 블록이 없으면 상기 레인지 블록의 데이터를 압축하지 않고 예외처리한다. 즉, 상기 레인지 블록이 탐색범위 내의 모든 도메인 블록들과 비교하여 동일한 도메인 블록이 없거나 유사한 도메인 블록이 없는 경우(예를들면 복수의 숏블록들 중에서도 적어도 하나의 숏블록도 동일하지 않은 경우), 상기 레인지 블록의 압축은 압축하지 않은 경우에 비해 크게 좋지 않게 된다. 이런 경우, 상기 압축기는 해당하는 레인지 블록을 예외블록으로 처리하여 예외처리플래그와 함께 해당 레인지 블록의 데이터를 압축하지 않고 그대로 저장한다. 상기와 같이 예외처리 블록을 사용하면 압축률 및 압축 해제시 복원 속도를 향상시킬 수 있게 된다.
즉, 본 발명의 실시예에 따른 데이터 압축 방법은 매크로 블록의 데이터를 정방향 및 역방향 코딩하면서 압축 속도를 크게 저하시키지 않으면서 가장 낮은 코스트를 가지는 도메인 블록을 탐색하여 압축율을 향상시킬 수 있는 방법을 제안한다. 또한 테이블(global table, local table 등)에 압축 데이터를 효율적으로 저장하여 압축시 자주 발생되는 블록 차이 값에 대한 코스트를 낮게 설정하므로써 저장되는 데이터의 압축율을 향상시킬 수 있는 방법을 제안한다. 또한 압축율이 좋지 않은 매크로 블록은 예외처리하여 압축율과 복원 속도 조정이 가능하도록 하는 방법을 제안한다.
도 1은 본 발명의 실시예에 따른 레인지블록 및 도메인 블록 구성을 설명하기 위한 도면이다.
상기 도 1을 참조하면, 본 발명의 실시예에 따른 압축기는 압축 대상 블록인 레인지블록 R과 참조 블록인 도메인 블록 간의 거리(distance = 레인지 블록과 도메인 블록 간의 거리)를 계산하고, 상기 레인지 블록 데이터를 상기 도메인 블록 데이터와 비교하여 그 차이(레인지 블록 데이터와 도메인 블록 데이터의 XOR 연산 값)를 계산한 후, 이 두 계산 값(거리 및 차이)으로 레인지 블록의 압축 데이터를 생성한다. 이때 상기 레인지 블록은 하나 이상의 매크로 블록으로 구성될 수 있으며, 상기 도메인 블록의 크기는 상기 레인지블록과 동일한 크기를 가지는 블록이 될 수 있다. 그리고 상기 매크로블록은 숏 블록으로 분할(partition)되거나 또는 숏 블록을 사용하지 않을 수 있다. 이하 설명되는 본 발명의 실시예에서는 상기 도 1에 도시된 바와 같이 매크로 블록이 두 개의 숏블록으로 구성된 경우를 가정하여 설명한다.
본 발명의 실시예에서는 상기 매크로 블록은 2개의 숏블록으로 구성되며, 상기 숏블록은 16비트(2 byte)로 구성된다고 가정한다. 상기 레인지블록의 도메인블록들은 상기 레인지블록 이전의 일정한 범위(즉, 탐색범위) 내에 나타나는 같은 크기를 가지는 매크로 블록이 될 수 있다. 여기서 상기 레인지 블록은 서로 겹치지 않으며 인테저(integer) 단위로 할당(align)된다. 그리고 도메인 블록들은 서로 겹 칠 수 있으며, 숏블록단위(숏블록이 8비트이면 바이트 단위, 16비트이면 2바이트 단위, ...)로 할당된다. 예를들어 압축할 데이터가 5개의 매크로블록(MB0-MB4)이고 숏블록의 번호가 SB0-SB9인 경우, 상기 레인지블록은 SB0-SB1, SB2-SB3, SB4-SB5, ---, SB8-SB9의 순서로 할당될 수 있다. 그리고 상기 레인지 블록이 SB8-SB9인 경우, 상기 도메인 블록은 SB6-SB7, SB5-SB6, SB4-SB5, ..., SB1-SB2, SB0-SB1로 할당될 수 있다. 그리고 상기 레인지 블록의 압축은 상기 도메인 블록의 거리 정보 및 차이정보로 구성되며, 이때 선택되는 도메인 블록은 탐샘 범위 내에서 상기 레인지 블록과 가장 낮은 코스트의 거리정보 및 차이정보를 가지는 도메인블록이 된다.
상기 거리는 레인지 블록과 선택된 도메인 블록 간의 이격 거리를 의미하는 것으로, 각 레인지 블록들의 압축 데이터로 사용되므로 압축률에 큰 영향을 미친다. 따라서 상기 거리는 일정 크기로 제한하여 사용하는 것이 바람직하며, 상기 설정된 거리 크기에 따라 상기 탐색범위가 결정된다. 또한 상기 레인지 블록의 길이가 길면 거리에 사용하는 비트는 절감되나 차이값을 나타내는 비트 수가 증가되며, 이로인해 상기 레인지블록의 길이도 압축률에 큰 영향을 미친다. 따라서 상기 정보의 압축을 효과적으로 하기 위해서는 상기 탐색범위(차이의 비트수) 및 레인지 블록의 길을 적정하게 설정하여야 한다.
또한 본 발명의 실시예에서는 상기 레인지 블록을 압축할 때 정방향 및 역방향 코딩 방법을 이용하여 빠른 속도로 최적(near optimum solution)의 도메인 블록을 탐색하는 방법을 제안한다. 본 발명의 실시예에서는 매크로 블록을 압축할 때 매크로 블록을 압축하는 코스트(cost)가 최소가 되도록 한 다음 뒷 방향으로 매크로 블록을 포함하여 이미 압축된 매크로블록들의 코스트가 최소가 되도록 갱신(update)한다. 즉, 본 발명의 실시예에서는 탐색 범위 내에서 정방향(앞 방향)의 매크로블록들을 탐색하여 코스트가 최소가 되도록 압축하며, 이후 다시 뒷방향(역방향)으로 이미 압축된 매크로블록들의 코스트를 확인하여 도메인 블록의 길이 및 거리를 조정한다.
도 2는 본 발명의 실시예에 따라 역방향 코딩에 따른 압축 효과를 예시하는 도면이다.
본 발명의 실시예에서는 역방향으로 현재 압축하는 매크록 블록을 포함하여 이미 압축된 매크록 블록들에 하여 거리 코스트(distance cost)와 차이 코스트(difference cost)가 최적화되는 레인지 블록 크기(range block size) k를 구한다. 이런 경우 일반적인 방법은 레퍼런스 블록(reference block)과 일치하지 않는 매크로 블록들은 같은 레인지블록에 속하지 않는다. 그러나 본 발명의 실시예에 따른 매크로 블록이 도메인 블록과 같지 않는 경우도 레인지 블록에 속할 수 있게 한다.
상기 도 2에서 레인지 블록을 3개로 하여 코스트 T=cost(A,A)+cost(X,Y)+cost(B,B)가 되나, 보다는 레인지 블록을 1개로 하여 코스트 U=cost(AXB,AYB)가 된다. 이런 경우 코스트 T는 적어도 2개의 거리 값을 가지는 반면 코스트 U는 하나의 거리 값을 가지고 X와 Y가 같지 않더라도 X와 Y의 차이값을 코딩한 cost(X,Y)는 적은 값을 가질 수 있으므로, U<T가 가능하다. 상기 도 2에 서 매크로 블록 X가 레퍼런스 블록 Y와 같지 않은 경우도 같은 레인지 블록에 속할 수 있다.
도 3a 및 도 3b는 본 발명의 실시예에 따라 탐색 범위 내에서 도메인 블록들을 정방향 및 역방향 코딩하여 압축 대상인 레인지 블록에 대한 최적의 도메인 블록을 선택하는 방법을 설명하기 위한 도면이다. 상기 압축기는 레인지 블록이 설정되면, 탐색 범위 내에 존재하는 도메인블록들을 정방향 및 역방향 코딩하여 코스트가 가장 낮은 도메인 블록을 선택한 후, 상기 선택된 도메인 블록과 레인지 블록 간의 거리 및 코스트를 압축 데이터로 생성한다. 도 3a는 본 발명의 실시예에 따른 정방향 코딩의 실행 절차를 설명하기 위한 도면이고, 도 3b는 본 발명의 실시예에 따른 역방향 코딩의 실행 절차를 설명하기 위한 도면이다. 여기서 상기 레인지 블록은 B,C[26,27](26 및 27번째 숏블럭)이고, 탐색 범위는 [10,11,12,..,25](10번 숏블록에서 25번 숏블록) 까지인 경우를 가정하여 설명하기로 한다.
상기 도 3a 및 도 3b를 참조하면, 상기 레인지 블록 B,C[26:27]에 대한 정방향 코딩은 탐색범위 내의 도메인 블록들을 순차적으로 선택하며, 상기 선택된 도메인 블록과 상기 레인지 블록 F,B[25:26]의 숏블럭 데이터들을 비교한다. 이후 상기 압축기는 상기 역방향 코딩을 수행하면서 비교된 도메인 블록들 중에서 상기 레인지 블록과 거리가 가장 가까우며 차이값이 적은 도메인 블록을 선택한다. 즉, 상기 도 3a와 같은 경우, 상기 압축기는 정방향 및 역방향 코딩을 수행하면서 상기 레인지 블럭 B,C[26:27]와 가장 유사하고 거리가 가까운 도메인 블록 B,C[20:21]을 찾는다. 여기서 도메인 블록 B,C[14:15]은 차이값에서는 도메인 블록 B,C[20:21]와 같은 코스트를 가지지만 거리 코스트가 더 크므로 도메인 블록 B,C[20:21]이 선택되어 이에 대한 거리정보와 차이값이 저장된다. 이런 경우 상기 압축기는 상기 레인지 블록 A,B[22,23]은 거리값이 4이며 차이값이 0인 도메인 블록(A,B[18,19])을 선택하고, 레인지 블록 E,F[24,25]는 거리값이 8 며 차이값이 0인 도메인 블록(E,F[16,17])을 선택하며, 레인지 블록 B,C[26,27]은 거리값이 6이며 차이값이 0인 도메인 블록(B,C[21,22])를 선택한다.
이때 상기 역방향 코딩을 수행하는 과정에서 다수개의 매크로 블록을 그룹화하여 탐색한다. 예를들면 상기 도 3b에서 상기 레인지 블록 B,C[26:27]에 대한 역방향 코딩은 레인지 블록 A,B,E,F,B,C[22:27] - 도메인 블록 A,B,D,F,B,C[10:15]의 하나의 거리 값으로 구성된 코딩은 도 3에 도시된 바와 같이 도메인 블록 B,C[20:21] - 레인지 블록 B,C[26:27], 도메인 블록 E,F[16:17] - 레인지 블록 E,F[24:25], 도메인 블록 A,B[18:19] - 레인지 블록 A,B[22:23]의 세 개의 거리값으로 구성된 코딩보다 적은 코스트를 가지므로 이전에 코딩된 결과를 재구성 하여 압축률을 높일 수 있게 된다. 여기서 하나의 거리 값으로 구성된 코딩이 같지 않은 값이(F[25], E[24], D[12]) 있어서 차이값에 대한 코스트가 세 개의 거리 값으로 구성된 코딩보다 크지만 거리 값을 두 개 적게 사용하므로 전체 코스트는 줄어든다. 이런 경우 상기 압축기는 레인지 블록 A,B,E,F,B,C[22:27]을 도메인블럭 A,B,D,F,B,C[10:15]와 비교하여 거리 값 12, 차이값은 0, DF XOR EF, 0으로 코딩하게 된다.
도 4는 본 발명의 실시예에 따른 압축 방법(range block encoding)의 절차를 도시하는 흐름도이다. 이를 위하여, 먼저 상기 압축기는 블록의 각 참조 위치(reference position)에 대하여, 뒷 방향으로 현재의 코스트를 최대로 절감하는 길이(length)를 구하고, 세이빙이 최대 세이빙(maximum saving) 보다 크면 최적 길이(optimum length)와 참조 블록에 대한 정보를 갱신한다. 여기서 상기 세이빙(saving)은 길이 내에서 레인지 블록들의 코스트 절감의 합을 의미한다. 두 번째로 상기 압축기는 최적 참조 블록과 최적 길이에 대한 블록들의 코딩을 갱신한다. 세 번째로 상기 압축기는 일정한 범위 마다 차이 코딩을 최적화하는 로컬 테이블을 생성하며, 상기 로컬 테이블은 글로벌 테이블을 참조하여 압축 저장한다.
상기 도 4를 참조하면, 압축기는 111단계에서 설정된 레인지 블록의 참조 블록 위치에 대하여 역방향 코스트 세이빙(backward cost saving)이 최대가 되는 길이를 구한다. 도 5는 상기 도 4의 111단계에서 최적화 절차를 수행하는 동작을 설명하기 위한 도면이다. 상기 도 5를 참조하면, 도 5의 151단계에서 압축기는 길이 이내의 각 레인지 블록에 대하여 세이빙 값, 즉 코스트의 합(saving = old cost - new cost)의 합을 구한다. 상기 세이빙 값을 구한 후, 압축기는 153단계에서 상기 세이빙 값이 최대 세이빙값 보다 큰가 검사하며, 크지 않은 경우에는 이전의 값들을 그대로 유지하면서 157단계로 진행한다. 그러나 상기 153단계에서 상기 세이빙 값이 최대 세이빙 값 보다 크면 큰 경우에는 155단계에서 상기 최대 세이빙 값을 상기에서 계산된 세이빙값으로 갱신하고, 최적화 길이(opt length)를 상기 151단계의 길이로 갱신하며, 최적 참조 블록(reference)을 상기 151단계에의 참조 블록으로 변경한다. 이후 압축기는 157단계에서 길이가 최대 길이보다 큰가 검사하며, 그 렇지 않으면 159단계에서 길이를 1 증가시킨 후 상기 151단계로 되돌아가며, 상기 최대길이보다 크면, 압축기는 157단계에서 이를 감지하고 161단계에서 레인지 블록의 위치를 해시 테이블(hash table)에 삽입하고 상기 도 4로 리턴한다.
그러면 압축기는 도 4의 113단계 및 115단계를 수행하면서 상기 세이빙 값이 최대 세이빙값 보다 큰가 검사하며, 크지 않은 경우에는 이전의 값들을 그대로 유지하며, 세이빙 값이 최대 세이빙 값 보다 크면 큰 경우에는 상기 최대 세이빙 값을 갱신하고, 최적화 길이(opt length)를 갱신하며, 최적 참조 블록(reference)을 변경한다. 이후 압축기는 117단계에서 상기 참조 블록이 테이블에 있는가 검사하며, 참조 리스트에 있으면 참조 리스트에서 해당 데이터를 읽은 후 111단계로 진행하며, 없으면 121단계에서 최적 참조블록과 최적 길이에 대하여 레인지 블록의 코딩을 갱신한다. 참조 리스트는 이전의 레인지 블록을 코딩 할 때 이후의 레인지 블록에 대한 빠른 탐색을 위하여 쇼트(short: 16 bit) 단위로 큐(queue)에 등록 된다. 하나의 매크로 블록에 대한 탐색대상은 두 개의 쇼트 중 적어도 하나가 같은 위치들로 구성된다.
코딩 후 압축기는 123단계에서 차이 코딩 테이블(difference coding table)을 갱신한다. 도 6은 상기 도 4의 123단계에서 차이 코딩 테이블을 갱신하는 절차를 도시하는 흐름도이다. 상기 도 6을 참조하면, 압축기는 181단계에서 특정 레인지 블럭 R을 코딩후, 183단계 - 184단계를 수행하면서 해당 코딩 레인지 블럭 R이 반복적으로 처리된 회수 N (초기값은 0)의 값을 1 증가 시키고 증가된 N의 값이 정해진 T (Threshold) 값보다 작으면 다시 다음 레인지블럭 R을 코딩하여 위의 과정 을 반복한다. 그리고 만약 증가된 N값이 T (Threshold)보다 크면 185단계에서 로컬 프리퀀시(local frequency)와 코스트 세이빙(cost saving) 값에 따라 로컬 테이블을 구성한다. 이후 압축기는 187단계에서 갱신 코스트가 코스트 세이빙 값 보다 작은가 검사하여 작으면 189단계에서 로컬 테이블의 코딩 테이블을 갱신한다.
상기와 같이 생성되는 로컬 테이블은 상기 글로벌 테이블과 함께 레인지 블록의 데이터를 압축하기 위한 테이블로 사용된다. 도 7a는 본 발명의 실시예에 따른 글로벌 테이블의 특성을 설명하기 위한 도면이며, 도 7b는 로컬 테이블의 특성을 설명하기 위한 도면이다.
상기 도 7a를 참조하면, 글로벌 테이블은 미리 만들어지는 테이블(pre-defined statistics value)로써, 데이터 압축시 실험적으로 빈번하게 발생되는 차이값들을 추출하여 저장한 값들을 저장한다. 따라서 상기 글로벌 테이블은 갱신을 할 수 없는 테이블이며, 압축시 글로벌 테이블의 데이터를 읽기만 가능하다. 따라서 글로벌 테이블은 고정 테이블이 될 수 있으며, 고정된 테이블 크기를 가진다. 본 발명의 실시예에서 상기 글로벌 테이블은 8비트[0,...,255]의 크기를 가진다고 가정한다. 상기 글로벌 테이블의 인덱스는 0에서 255가 될 수 있으며, 각 인덱스에 저장되는 데이터는 레인지 블록 및 도메인 블록의 배타적 논리합 값이 될 수 있다.(x result = [statistics value A] XOR [statistics value B]). 따라서 상기 도 7a와 같은 글로벌 테이블을 사용하는 경우, 압축기는 두 매크로 블록의 차이값들 중에서 가장 빈번하게 발생되는 차이값을 0,1,2,3,...,255로 할당하여 압축 효율을 높일 수 있다.
상기 도 7b를 참조하면, 로컬 테이블은 데이터를 압축 하는 중에 생성하는 테이블로써, 본 발명의 실시예에서는 동일한 값이 3회 이상 발생되고 상기 발생되는 동일한 값이 상기 글로벌 테이블이 등록되지 않은 값인 경우에 해당 값을 로컬 테이블이 등록한다. 상기 로컬 테이블은 압축기의 탐색기에서 생성할 수 있다. 상기 로컬 테이블은 갱신이 가능하며, 데이터를 압축하는 중에 상기 테이블에 리드 및 라이트가 가능하다. 상기 로컬 테이블은 가변적으로 등록 가능하며(floating entry), 상기 로컬 테이블의 크기는 상기 글로벌 테이블의 크기 보다 큰 값으로 설정한다. 본 발명의 실시예에서 상기 로컬 테이블의 크기는 8비트[256,...,511]의 크기를 가진다고 가정한다. 이런 경우 상기 로컬 테이블의 인덱스는 256에서 511이 될 수 있으며, 각 인덱스에 저장되는 데이터는 상기 레인지 블록 및 도메인 블록의 배타적 논리합 값이 될 수 있다.(y result = [dynamic value A] XOR [dynamic value B]. 따라서 상기 도 7b와 같은 로컬 테이블은 압축기가 데이터를 압축하는 중에 생성하게 되며, 먼저 발생되는 차이값들로부터 테이블 인덱스 256, 257, ..., 512로 할당할 수 있다.
여기서 상기 압축기의 특징을 압축의 구성, 역방향 코스트 세이빙(backward cost saving), 차이 코딩(difference coding), 거리 코딩(distance coding), 압축해제 속도 제어(decoding speed control)의 순서로 살펴본다.
먼저 상기 압축의 구성을 살펴보면, 각 매크로 블록은 2개의 숏 블록으로 구성된다고 가정하며, 각 숏 블록은 16비트로 구성된다고 가정한다. 상기 레인지 블록의 도메인 블록은 상기 레인지 블록 이전의 탐색 범위 내에 존재하는 같은 크기 의 블록들이 될 수 있다. 그리고 상기 레인지 블록은 서로 겹치지 않으며 인테저(integer) 단위로 배열(align)되며, 상기 도메인 블록들은 서로 겹칠 수 있으며 바이트(byte) 단위로 배열될 수 있다. 그리고 레인지 블록의 압축은 도메인 블록과의 거리 및 차이로 구성된다.
두 번째로 역방향 코스트 세이빙의 동작를 살펴보면, 매크로블록의 참조 리스트(reference list)는 매크로 블록과 적어도 하나의 숏 블록이 일치하는 위치들로 구성되고, 매크록 블록 이전의 매크로 블록들이 압축될 해시 테이블(hash table)에 저장된다. 그리고 역방향으로 같은 거리 값으로 현재의 코스트를 최대로 세이빙하는 길이 k를 구한다. 여기서 상기 세이빙은 k 개의 레인지 블록에서 코스트 절감의 합을 의미한다. 이후 최적 레퍼런스와 최적 길이에 대하여 레인지 블록들의 압축을 갱신한다. 즉, 상기 압축기는 도 4의 111단계 - 121단계를 수행하면서 최적화 단계를 수행하는데, 이는 다음과 같다. 먼저 압축기는 길이 이내의 각 레인지 블록에 대하여 saving = old cost - new cost의 합을 구한다. 이후 상기 압축기460은 현재의 세이빙이 최대 세이빙 보다 큰가(saving>max saving)를 검사하며, 맞으면 상기 압축기460은 파라미터 값들을 갱신한다. 이후 압축기는 길이가 최대 길이보다 작은가(length < max lengt) 검사한다. 이때 상기 길이가 최대 길이보다 작으면 상기 길이를 하나 증가시킨 후 다음 단계를 진행하기 위하여 상기 과정으로 되돌아가며, 상기 길이가 최대길이이면 상기 레인지 블록의 위치를 해시 테이블(hash_table, (R))에 삽입한다.
세 번째로 상기 압축기460의 차이 값을 결정하는 절차를 살펴보면, 상기 차 이 압축(difference coding)은 숏 블록 단위의 배타적 논리합 값을 코딩하는데, 상기 코딩 방법은 복원 속도의 요구사항에 따라 선택된다. 글로벌 테이블(global table)은 큰 범위(global frequency)의 압축에 효율적인 엔트로피 코딩 테이블이다. 그리고 로컬 테이블은 상기 글로벌 테이블을 참조하여 압축한 후 저장한다. 상기 로컬 테이블의 구성은 테이블 압축률과 차이 압축 코스트(difference coding cost)를 고려하여 테이블 엔트리(table entry)들의 갱신이 결정된다.
네 번째로 상기 압축기의 거리값을 결정하는 절차를 살펴보면, 상기 거리 압축(distance coding)은 복원속도 및 압축률을 고려하여 다음과 같은 두 가지 방법을 선택할 수 있다. 그 하나는 현재의 레인지 블록의 거리가 이전 레인지 블록의 거리와 같으면 이전 레인지 블록과 같음을 나타내는 1비트로 표시하고, 이전 레인지 블록의 거리와 다르고 256 이하이면 10비트로 표시하며, 그 이외의 경우에는 18비트로 표시한다. 그리고 다른 방법은 거리는 모두 16비트로 표시하고, 거리 시퀀스(distance sequence을 압축하여 별도로 저장한다. 본 발명의 실시예에서는 전자의 방법을 사용하는 것으로 가정한다.
다섯 번째로 복원 속도 제어(decoding speed control) 방법을 살펴보면, 대형 매크로 블록(large macro block : LMB)는 m개의 매크로 블록들로 구성된다. 그리고 각 LMB의 압축 코스트가 임계값(threshold value: t) 보다 크면 코딩하지 않고 그 자체를 별도 저장한다. 이런 LMB들은 예외처리 블록(exception handling block)라 칭하기로 한다. 상기 예외처리 블록들은 복원 과정이 매우 간략하므로 복원 속도를 향상시키게 된다. 상기 복원 속도의 조정은 단순히 임계 값 t를 조정하 면 된다.
상기한 바와 같이 본 발명의 실시예에 따른 데이터 압축기는 다음과 같은 특징을 가진다. 먼저 하나의 매크로 블록을 압축할 때 레인지 블록의 범위(partition)를 조정하여 매크로 블록의 데이터 압축률을 향상시킬 수 있다. 두 번째로 코스트를 직접 최소화(minimize)하지 않고 이미 압축된 코스트의 세이빙이 최대화(maximize)되는 위치를 찾아서 위의 첫 번째에서 실행하는 압축시간을 개선할 수 있다. 즉, 코스트를 직접 최소화시키면 레인지 블록의 길이가 가변이므로 시간 복잡도(time complexity)가 매우 커지게 된다. 세 번째로 본 발명의 실시예에서는 매크로 블록을 다수개의 숏 블록(여기서는 두 개의 숏블록을 사용함)들을 사용하고, 압축시 레인지 블록의 적어도 하나의 숏블록이 일치하는 포지션을 해싱(hashing)하여 압축 실행 속도를 향상시키는 동시에 레인지 블록의 연속성을 보장한다. 네 번째로 글로벌 테이블에 대비하여 로컬 테이블 구성을 코스트 세이빙 연산에 의해 결정한다. 다섯 번째로 글로벌 테이블과 로컬 테이블을 압축에 의해 저장하고, 압축시 이를 이용하여 매크로 블록의 데이터를 압축한다.
상기와 같은 본 발명의 실시예에 따른 압축기의 구성 및 동작을 구체적으로 살펴본다.
도 8은 본 발명의 실시예에 따른 상기 압축기의 구성을 도시하는 도면이다.
상기 도 8을 참조하면, 로더(loader)210은 다운로드되는 데이터(raw binary data)를 로딩한다. 여기서 상기 로더210은 상기 코더240에서 압축하는 데이터의 크기(압축 프레임의 크기)의 데이터를 로딩한다. 여기서 상기 압축프레임이라는 용어 는 상기 코더가 데이터를 압축하는 크기(또는 탐색기에서 탐색범위 크기)를 의미한다. 그리고 버퍼는 상기 로더210에 의해 로딩되는 압축 프레임의 데이터를 일시 버퍼링하는 기능을 수행한다.
탐색기220은 상기 로딩된 압축 프레임의 데이터에서 탐색범위를 결정하고, 레인지 블록을 확인한 후 상기 탐색범위 내에 위치된 도메인블록들과 상기 레인지 블록을 비교하여 두 블록 간의 차이 값을 생성하고, 상기 생성된 차이 값에 따른 코스트를 계산하며, 가장 코스트가 낮은 도메인 블록의 거리 정보 및 코스트 값을 결정한다. 이때 상기 탐색기220은 정방향 코딩에서 상기 매크로 블록 크기의 레인지 블록과 탐색 범위 내의 도메인 블록들 중 코스트가 가장 적은 블록을 찾은 후 역방향 코딩에서 이전에 코딩된 레인지 블록들과 상기 매크로 블록이 포함 된 코스트를 최적화 하는 레인지 블록의 길이 및 거리를 결정한다. 그리고 상기 탐색 과정에서 상기 레인지 블록과 도메인 블록의 차이 값을 계산한 후, 동일하면 도메인 블록과의 거리 정보 및 동일함을 나타내는 차이정보를 생성하고, 다르면 상기 도메인 블록의 거리 정보 및 두 블록의 다름을 타내는 차이정보를 생성한다. 여기서 상기 차이정보는 두 블록의 동일 여부를 나타내는 차이 플래그 및 다른 경우 다름을 표시하는 차이플래그 및 차이값으로 구성될 수 있다. 여기서 상기 차이 값은 두 블록의 비교 결과 값(예를들면 배타적 논리합 값)을 그대로 사용할 수 있으며, 상기 차이값을 코스트로 변환한 값, 또는 상기 코스트를 변형한 값 등으로 사용할 수 있다. 본 발명의 실시예에서는 상기 비교 결과 값으로부터 코스트를 계산하고, 상기 계산된 코스트를 테이블의 인덱스로 변환하여 차이값을 생성하는 경우를 예로들어 설명하기로 한다. 이런 경우 상기 탐색기220은 코스트 테이블을 구비할 수 있다. 여기서 상기 코스트테이블은 계산된 코스트들에 대응되는 테이블의 인덱스 정보를 저장하는 테이블이 될 수 있다. 여기서 상기 테이블은 글로벌 및 로컬 테이블이 될 수 있으며, 상기 테이블 인덱스에 대응되는 위치에 상기 차이값이 저장될 수 있다. 또한 상기 탐색기220은 상기 탐색범위 내에서 정방향 코딩을 하면서 레인지 블록과 선택되는 도메인 블록의 데이터를 비교하여 차이값을 생성하고, 상기 코스트테이블에서 차이값에 대응되는 코스트를 계산한다. 그리고 역방향 코딩을 하여 상기 생성된 코스트를 보관하고 있는 코스트와 비교하여 현재 생성된 코스트가 더 낮으면 상기 코스트를 갱신하고 그렇지 않으면 이전 코스트를 유지한다. 상기와 같은 동작을 반복하면서 상기 레인지블록과 탐색범위 내의 도메인블록들을 비교하면서 가장 낮은 코스트를 탐색하며, 탐색 종료시 상기 코스트 테이블에서 탐색된 가장 낮은 코스트에 해당하는 테이블 인덱스를 선택한다. 이후 상기 탐색기220은 상기 선택된 코스트에 대응되는 도메인 정보와의 거리정보 및 테이블 인덱스를 상기 코더240에 전달하며, 다음 레인지 블록을 선택하여 위와 같은 동작을 반복 수행한다.
상기 코더240은 글로벌 테이블 및/또는 로컬 테이블을 구비할 수 있다. 또한 상기 글로벌 테이블 및 로컬 테이블은 상기 버퍼에 버퍼링될 수 있다. 상기 글로벌 테이블은 상기 도 7a에서 설명된 바와 같이 고정 테이블(fixed table)로써 실험적으로 측정하여 이를 테이블화한다. 상기 로컬 테이블은 상기 도 7b에서 설명된 바와 같이 가변 테이블(variable table)로써, 현재 압축하는 데이터에 대해서만 가변적으로 생성되는 테이블이 될 수 있다. 여기서 상기 글로벌 테이블 및 로컬 테이블 은 상기 코스트에 의해 결정되는 테이블 인덱스에 의해 위치가 지정되며, 상기 테이블 인덱스 위치에 레인지 블록과 도메인 블록의 차이값이 저장되는 테이블이다. 이하 설명되는 본 발명의 실시예에서는 글로벌 테이블 및 로컬 테이블을 모두 사용하는 경우를 가정하여 설명될 것이다. 그러나 상기 글로벌 테이블 또는 로컬 테이블 중의 어느 하나만 사용하여 데이터를 압축할 수도 있다. 상기 코더240은 상기 코스트 값에 대응되는 위치에 저장된 테이블 인덱스를 레인지 블록의 코딩 데이터로 처리한다. 여기서 상기 코스트는 상기 탐색기220에서 계산될 수 있으며, 상기 탐색기220은 레인지블록과 도메인 블록의 차이 정보를 토대로 상기 코스트를 계산할 수 있으며, 상기 코스트를 이용하여 코스트테이블에서 테이블 인덱스를 억세스한다. 여기서 상기 테이블 인덱스는 글로벌 테이블 및/또는 로컬 테이블의 인덱스가 될 수 있다. 그리고 상기 탐색기220은 상기 레인지 블록과 도메인 블록의 거리 정보(거리 플래그 및 거리 값) 및 상기 테이블 인덱스를 포함하는 차이정보를 상기 코더240에 전달한다. 그러면 상기 코더240은 상기 거리정보 및 차이정보를 압축 데이터로 코딩한다.
상기 탐색기220 및 코더240의 동작을 살펴본다. 본 발명의 실시예에서는 상기 레인지블록은 두 개 이상의 숏블록으로 구성되는 경우를 가정하고 있다. 상기 탐색기220은 상기 레인지블록과 도메인 블록의 차이를 계산하여 코스트를 계산한다. 이때 레인지 블록과 도메인 블록이 차이 값이 0이면, 즉 동일하면, 코스트 값은 0(또는 매우 작은 코스트 값)으로 계산된다. 그리고 레인지 블록과 도메인 블록을 구성하는 숏블록이 적어도 하나 이상 동일하면, 동일한 숏블록의 코스트는 0이 되고, 다른 숏블록의 코스트는 두 숏블록의 차이값에 의해 계산된다. 상기와 같은 방법으로 상기 탐색기220은 상기 레인지블록의 숏 블록의 데이터와 상기 탐색범위 내의 도메인블록들의 숏 블록 데이터를 비교하면서 가장 낮은 코스트를 가지는 숏블록들로 구성된 도메인 블록을 선택한다. 이때 상기 탐색기220은 탐색 범위 내에서 도메인 블록들을 정방향 검색을 하면서 코스트를 계산하고, 상기 계산된 코스트를 역방향으로 탐색하면서 현재 보관하고 있는 가장 낮은 코스트와 비교한 후, 현재 탐색된 코스트가 낮으면 현재 도메인블록과의 거리정보 및 코스트를 갱신한다. 따라서 상기 탐색 범위 내의 도메인블록을 탐색을 종료하면, 상기 탐색기220은 탐색 범위 내에서 상기 레인지 블록과 가장 낮은 코스트를 가지는 도메인 블록의 거리 정보 및 코스트 값을 보관하게 된다. 이후 상기 탐색기220은 상기 코스트를 이용하여 코스트테이블에서 테이블 인덱스를 구하고, 상기 거리정보와 함께 상기 테이블 인덱스를 포함하는 차이정보를 코더240에 전달한다. 이때 상기 차이정보는 차이플래그 및 테이블 인덱스를 포함할 수 있으며, 레인지블록과 도메인 블록이 동일한 경우 상기 테이블 인덱스는 포함되지 않는다. 본 발명의 실시예에서는 상기 탐색기220이 차이정보를 생성할 때, 레인지 블록과 도메인 블록의 데이터가 일치하면 차이플래그를 리세트(차이플래그 = 0)시키고, 차이플래그만으로 이루어지는 차이정보를 생성한다. 그러나 상기 레인지블러과 도메인 블록의 데이터가 일치하지 않으면, 상기 탐색기220은 차이플래그를 세트(차이플래그=1)시키고 차이값에 따른 코스트에 의해 선택되는 테이블 인덱스 정보를 포함하는 차이정보를 생성한다.
그러면 상기 코더240은 상기 차이정보의 차이플래그를 분석하여 두 블록이 동일한 데이터이면 상기 거리정보 및 차이플래그를 레인지 블록의 압축 데이터로 코딩한다. 그리고 상기 차이정보의 차이플래그를 분석하여 테이블 인덱스를 포함하고 있으며, 상기 코더240은 상기 테이블 인덱스에 대응되는 테이블(글로벌 테이블 및/또는 로컬 테이블)에서 두 블록의 차이값을 확인한 후, 상기 차이값이 정상적인 차이값(즉, 상기 탐색기220에서 탐색된 차이값과 동일한 차이값)이면 상기 거리정보 및 차이정보를 레인지 블록의 압축 데이터로 코딩한다.
또한 본 발명의 제2실시예에서는 상기 압축기는 예외블록처리부250을 더 구비할 수 있다. 여기서 상기 예외블록은 레인지 블록과 도메인 블록의 차이 값이 설정된 임계값 보다 커서 압축 효과가 거의 없는 블록이 될 수 있다. 예를들면 상기 레인지 블록 및 도메인 블록들은 상기 도 1에서 설명된 바와 같이 매크로 블록 단위의 크기를 가지고, 상기 매크로 블록은 두 개 이상의 숏블록들로 구성될 수 있다. 이런 경우 상기 탐색기220은 상기한 바와 같이 레인지 블록을 결정하고, 탐색 범위 내의 도메인블록들을 정방향 및 역방향 코딩하여 차이값(즉, 코스트)이 가장 작은 도메인 블록을 선택한다. 그러나 상기 설정된 레인지 블록과 선택된 도메인 블록의 숏블록 데이터가 모두 동일하지 않으면(즉, 레인지 블록 및 도메인 블록의 숏블록 데이터들이 모두 다르면), 현재의 레인지 블록 데이터를 압축하는 효과가 현저하게 떨어진다. 이런 경우 본 발명의 실시예에서는 해당하는 레인지 블록의 데이터를 압축하지 않고(no coding) 그대로 저장하며, 예외블록으로 처리하였음을 표시하는 플래그를 생성한다. 이는 압축해제기에서 메모리에 압축 저장된 데이터를 복원할 때 예외처리 블록의 데이터는 압축해제 과정을 수행하지 않고 직접 복원할 수 있게 되어 디코딩 속도를 개선할 수 있게 된다. 본 발명의 제2실시예에서는 상기 코더240이 글로벌 테이블 및 로컬 테이블을 구비하고, 차이정보의 차이 플래그를 2비트로 구성하여 상기 예외블록으로 처리하는 예외플래그를 함께 표시하는 방법을 제안한다. 이런 경우 상기 차이 플래그는 하기 <표 1>과 같이 구성할 수 있다.
차이플래그 비고
0 레인지 블록과 도메인 블록의 데이터가 같은 경우
01 레인지 블록과 도메인 블록의 데이터가 다르고,
인덱스가 글로벌 테이블의 인덱스인 경우
10 레인지 블록과 도메인 블록의 데이터가 다르고
인덱스가 로컬 테이블의 인덱스인 경우
11 레인지 블록과 도메인 블록의 데이터가 다르고
인덱스 글로벌 테이블 및 로컬 테이블에 존재하지 않는 경우
(즉, 예외처리 블록의 데이터인 경우
상기 탐색기220은 레인지블록 블록과 선택된 도메인 블록의 숏블록 데이터들을 상기한 바와 같이 탐색 범위 내의 도메인블록들을 정방향 및 역방향 검색하여 가장 낮은 코스트를 가지는 도메인 블록을 선택한다. 먼저 선택된 도메인블록의 데이터가 상기 레인지블록의 데이터와 동일하면 상기 탐색기220은 선택된 도메인블록과 레인지블록의 거리정보 및 동일함을 타내는 차이 플래그(차이플래그 = 0)를 생성하여 코더240에 전달한다. 두 번째로 선택된 도메인 블록의 데이터가 상기 레인지 블록 데이터와 다르고 두 블록의 차이값에 의해 생성된 코스트가 글로벌 테이블의 인덱스이면, 상기 탐색기220은 상기 선택된 도메인블록과 레인지블록의 거리 정보 및 글로벌 테이블 인덱스에 존재함을 나타내는 차이플래그(차이플래그 = 01) 및 글로벌 테이블 인덱스를 포함하는 차이정보를 생성하여 상기 코더240에 전달한다. 세 번째로 선택된 도메인 블록의 데이터가 상기 레인지 블록 데이터와 다르고 두 블록의 차이값에 의해 생성된 코스트가 로컬 테이블의 인덱스이면, 상기 탐색기220은 상기 선택된 도메인블록과 레인지블록의 거리 정보 및 로컬 테이블 인덱스에 존재함을 나타내는 차이플래그(차이플래그 = 10) 및 로컬 테이블 인덱스를 포함하는 차이정보를 생성하여 상기 코더240에 전달한다. 네 번째로 상기 레인지 블록과 도메인 블록의 데이터가 다르고 두 블록의 차이값에 의해 생성된 코스트가 글로벌 및 로컬 테이블에 존재하지 않으면, 상기 탐색기220은 상기 차이플래그를 예외처리플래그로 설정하고 이를 상기 코더240에 알린다.
그러면 상기 코더240은 상기 차이 플래그를 분석하여 레인지 블록의 데이터를 코딩한다. 먼저 상기 차이플래그가 두 블록의 데이터가 동일함을 나타내는 플래그(차이플래그 = 0)이면, 상기 코더240은 상기 선택된 도메인 블록의 거리정보 및 차이플래그를 상기 레인지 블록의 압축 데이터로 코딩한다. 두 번째로 상기 차이플래그가 글로벌 테이블의 인덱스를 가지는 데이터임을 나타내는 플래그(차이플래그 = 01)이면, 상기 코더240은 상기 선택된 도메인 블록의 거리정보 및 차이플래그 및 글로벌테이블 인덱스로 이루어지는 차이정보를 레인지 블록의 압축 데이터로 코딩한다. 세 번째로 상기 차이플래그가 로컬 테이블의 인덱스를 가지는 데이터임을 나타내는 플래그(차이플래그 = 10)이면, 상기 코더240은 상기 선택된 도메인 블록의 거리정보 및 차이플래그 및 로컬 테이블 인덱스로 이루어지는 차이정보를 레인지 블록의 압축 데이터로 코딩한다.
네 번째로 상기 차이 플래그가 예외처리 플래그(차이플래그 = 11)이면, 상기 코더240은 예외블록처리부250을 구동하여 상기 레인지블록의 데이터를 코딩하지 않고 그대로 메모리에 저장되도록 한다. 이런 경우 상기 메모리에는 상기 예외블록으로 처리된 레인지블록의 코딩되지 않은 데이터가 저장되며, 차이플래그는 예외처리플래그가 저장된다. 본 발명의 실시예에서는 상기 예외블록처리부250이 상기 코더240과 독립적으로 구성되는 경우를 가정하여 설명하고 있지만, 상기 예외블록처리부250은 상기 코더240에 포함되는 구성으로도 구현할 수 있다.
이하의 설명에서는 본 발명의 제2실시예에 따른 압축기를 가정하여 설명하기로 한다.
도 9는 상기 탐색기220의 동작을 설명하기 위한 도면이다. 상기 도 9에서 레인지 블록은 391과 같이 8번 및 9번 숏블록인 경우를 가정하고 있다. 이런 경우 도메인 블록은 역시 두 개의 숏블록들을 대상으로 하며, 도 9의 경우 도메인 블록은 6번 및 7번 숏블록, 5번 및 6번 숏블록, 4번 및 5번 숏블록, 3번 및 4번 숏블록, 2번 및 3번 숏블록, 1번 및 2번 숏블록 그리고 0번 및 1번 숏블록 등이 될 수 있다. 그리고 상기 도 9의 393과 같은 압축 대상의 데이터들이 다운로딩되어 로더210에 의해 버퍼에 버퍼링된 상태이다.
상기 도 9를 참조하면, 310단계에서 탐색기220은 탐색범위를 로드하며, 여기서 탐색 범위는 2, 4, 8, 16, ..., 65536 매크로 블록이 될 수 있다. 여기서 상기 탐색범위는 상기한 바와 같이 코더240이 데이터를 압축하기 위한 단위(압축 프레임)가 될 수 있다. 상기 탐색범위를 결정한 후, 탐색기220은 320단계에서 압축할 대상인 레인지 블록을 로드하며, 여기서 상기 레인지 블록은 8번 및 9번 숏 블록이라고 가정한다. 이후 상기 탐색기220은 330단계에서 상기 레인지 블록을 탐색 범위 내의 각 도메인 블록들과 비교할 수 있도록 도메인 블록들을 선택한다. 여기서 상기 도메인 블록의 선택은 레인지 블록의 위치에서 정방향 코딩하면서 도메인 블록을 선택하며, 이때 상기 도메인 블록은 숏블록 단위로 이동되면서 선택될 수 있다. 상기 도메인 블록을 선택한 후, 탐색기220은 340단계에서 상기 선택된 도메인 블록의 데이터를 상기 레인지 블록의 데이터와 비교한다. 이때 상기 비교 연산은 배타적 논리합 연산이 될 수 있다. 이후 상기 탐색기220은 350단계에서 상기 도메인블록과의 거리정보를 산출하고, 360단계에서 상기 두 블록 간의 차이 값에 따른 코스트를 계산한다. 여기서 상기 거리정보는 거리 플래그 및 거리 값으로 구성될 수 있다. 또한 상기 코스트값은 두 블록의 비교 결과 값이 차이값을 토대로 계산한다. 그리고 상기 코스트를 코스트테이블에 인덱싱하여 테이블 인덱스를 구한다. 여기서 상기 테이블 인덱스는 상기 글로벌 테이블 또는 로컬 테이블의 인덱스가 될 수 있다.
상기와 같은 과정을 수행하면서 상기 탐색기220은 상기 레인지 블록과 탐색 범위 내의 도메인블록들의 거리 정보 및 코스트를 계산하며, 상기 코스트를 코스트 테이블에서 탐색하여 테이블 인덱스를 구한다. 이때 상기 탐색기220은 상기 코스트에 의해 탐색되는 테이블 인덱스들 중에서 가장 작은 값을 가지는 테이블 인덱스를 선택한다. 즉, 정방향 코딩을 하면서 도메인 블록과의 거리 정보 및 코스트를 계산하고(즉, 레인지 블록을 선택한 후 순차적으로 도메인블록들을 선택하면서 거리정보 및 코스트를 계산하고), 상기 코스트를 이용하여 코스트테이블에서 테이블 인덱스를 결정한다. 이후 역방향 코딩을 하여 상기 결정된 테이블 인덱스와 현재까지 탐색하면서 보관하고 있는 가장 낮은 테이블 인덱스를 비교하며, 이전의 테이블 인덱스가 더 작은 값을 가지면 이전의 테이블 인덱스를 유지하고 그렇지 않으면(즉, 현재의 테이블 인덱스가 더 작은 값을 가지면) 상기 테이블 인덱스 값을 갱신하여 저장한다. 즉, 상기 탐색기220은 현재의 테이블 인덱스가 더 작으면 현재 탐색된 도메인 블록과의 거리정보 및 차이값에 따른 테이블 인덱스를 갱신 저장하고, 그렇지 않으면 이전 탐색 과정에서 보관하고 있는 거리정보 및 테이블 인덱스를 그대로 유지한다. 상기와 같은 동작을 반복 수행하면, 상기 탐색기220은 상기 레인지 블록과 탐색범위 내에서 가장 낮은 코스트를 가지는 도메인 블록과의 거리 정보 및 테이블 인덱스를 저장하게 된다.
그러나 상기 탐색기220에서 레인지 블록을 구성하는 숏블록들 중의 어느 한 숏블록도 탐색범위 내의 숏블록들과 동일하지 않은 경우, 해당 레인지 블록의 압축효과는 좋지 않게 된다. 이런 경우 본 발명의 제2실시예에서는 해당하는 레인지 블록을 예외블록으로 처리한다. 즉, 탐색기220은 레인지 블록의 숏블록들을 탐색범위 내의 도메인 블록의 숏블록들과 비교하면서 일치하는 수 이상의 숏블록을 탐색하지 못한 경우, 예외처리플래그를 생성하여 해당 하는 레인지 블록의 코스트를 계산하지 않는다. 예를들면 레인지 블록 및 도메인 블록의 크기를 가지는 매크로블록이 N개의 숏블록들로 구성되고, 레인지 블록 및 탐색 영역 내의 도메인 블록들을 비교할 때, 두 매크로 블록에서 일치하는 숏블록의 수가 M개 이하인 경우, 상기 탐색기220은 해당하는 레인지 블록을 예외처리 블록으로 설정할 수 있다. 이런 경우, 상기 탐색기220은 해당 레인지 블록을 예외처리블록으로 결정하고 예외처리플래그를 세트시킨다. 본 발명의 실시예에서는 상기 <표 1>에 도시된 바와 같이 차이 플래그를 이용하여 예외처리플래그를 처리하며, 이런 경우 상기 차이플래그는 11이 될 수 있으며, 이런 경우 테이블 인덱스른 생성하지 않는다.
본 발명의 실시예에서 상기 레인지 블록 및 도메인 블록은 두 개의 숏블록들로 구성되는 경우를 가정하여 설명하고 있다. 이런 경우 상기 N=2이며, M=0으로 설정할 수 있다. 이런 경우 상기 탐색기는 레인지 블록의 숏블록들과 탐색 범위 내의 모든 도메인 블록들의 숏블록이 동일하지 않은 경우, 해당 레인지 블록을 예외처리블록으로 결정하고 차이플래그를 "11"로 결정하여 예외처리 블록임을 표시한다.
또한 상기 탐색기220은 로컬 테이블을 생성할 수 있다. 즉, 상기 도 7b에 도시된 바와 같이 상기 탐색기220은 글로벌 테이블에 등록되지는 않았지만 동일한 차이값(레인지 블록과 도메인 블록 간의 차이값)이 설정된 횟수(여기서는 3회가 될 수 있음) 이상 발생되면, 이를 로컬 테이블에 등록한다. 이때 상기 로컬 테이블의 코스트(테이블 인덱스)는 상기 글로벌 테이블의 코스트(테이블 인덱스)보다는 더 큰 값을 갖도록 설정한다. 그리고 상기 코스트 및 테이블인덱스는 코스트테이블에 등록한다. 상기한 바와 같이 로컬 테이블을 사용하는 경우, 압축기는 상기 글로벌 테이블에는 등록되지 않았지만 자주 발생되는 차이값을 테이블에 등록하여 압축을 효율적으로 수행할 수 있게 된다.
상기와 같은 탐색 과정이 종료되면, 상기 탐색기220은 370단계에서 상기 저장하고 있는 거리 정보 및 차이정보(테이블 인덱스를 포함할 수 있음)를 코더240에 전달한다.
상기 도 9의 경우, 상기 탐색기220은 도 9의 393과 같이 버퍼링된 데이터들을 매크로 블록 단위로 설정하고, 현재의 레인지 블록인 8번 및 9번 블록의 앞에 위치되는 도메인 블록들을 6번 및 7번, 5번 및 6번, 4번 및 5번, ...., 0번 및 1번 블록의 순으로 인덱싱하여 탐색을 한다. 그리고 상기 탐색기220은 상기 레인지 블록의 데이터를 선택되는 도메인 블록의 데이터와 비교하여 그 결과 값을 출력한다. 이런 경우, 상기 탐색기220은 레인지 블록과 도메인 블록을 비교하여 차이값을 생성하는데, 6번 및 7번 숏블록이 도메인 블록으로 선택되는 시점에서 E XOR B, C XOR B를 생성하고, 5번 및 6번 숏블록이 도메인 블록으로 선택되는 시점에서 B XOR B, E XOR B를 생성하고, 4번 및 5번 블록이 도메인 블록으로 선택되는 시점에서 B XOR B, B XOR B를 생성하고, 3번 및 4번 숏블록이 도메인 블록으로 시점에서 F XOR B, B XOR B를 생성하고, 2번 및 3번 숏블록이 도메인 블록으로 선택되는 시점에서 D XOR B, F XOR B를 생성하고, 1번 및 2번 숏블록이 도메인 블록으로 선택되는 시점에서 B XOR B, D XOR B를 생성하고, 0번 및 1번 숏블록이 도메인 블록으로 선택되는 시점에서 A XOR B, B XOR B를 생성한다. 그리고 상기 도메인 블록들과 레인지 블록 간의 거리정보도 생성한다.
이후 상기 탐색기220은 생성된 차이 값을 토대로 코스트를 계산하는데, 레인지 블록이 도메인 블록과 동일한 경우(도 9에서 4번 및 5번 숏블록) 코스트는 0이 될 수 있으며, 두 개의 숏블록들 중 하나의 숏블록이 동일한 경우(5번 및 6번 숏블록, 3번 및 4번 숏블록, 1번 및 2번 숏블록, 0번 및 1번 숏블록) 코스트는 최소 코스트로 계산될 수 있고, 두 개의 숏블록이 모두 다른 경우 코스트는 높은 코스트로 계산될 수 있다. 도 9와 같은 경우, 상기 탐색기220은 370단계에서 상기 4번 및 5번 숏블록의 거리 정보(거리플래그 1, 거리값 4)와 두 블록 데이터가 동일함을 나타내는 차이플래그(여기서는 diff flag = 0이 될 수 있음)를 상기 코더240에 전달한다. 그러나 상기 4번 및 5번 숏블록과 같은 코스트가 0(또는 0에 근접한 값)인 도메인 블록이 없는 경우, 상기 탐색기220은 코스트가 가장 낮은 도메인 블록의 거리 정보 및 차이정보를 생성하여 코더240에 전달한다. 여기서 상기 차이정보는 두 블록의 데이터가 서로 다름을 타내는 차이플래그(여기서는 diff flag = 01 또는 10) 및 테이블 인덱스(상기 계산된 코스트에 대응되는 코스트테이블에 저장된 테이블 인덱스)를 포함하는 정보가 될 수 있다. (예를들어 0번 및 1번 숏블록인 경우, 거리정보(거리플래그 1, 거리값 8) 및 차이정보(차이플래그 01, 글로벌 테이블 인덱스))
그러면 코더240은 상기 거리 정보 및 차이정보(차이플래그 및 테이블 인덱스) 이용하여 레인지블록의 데이터를 압축한다. 도 10은 상기 코더240에서 레인지 블록의 데이터를 압축하는 절차를 도시하는 흐름도이다. 상기 도 10은 코더240이 예외블록 처리 기능을 구비하는 경우를 도시하고 있다. 그러나 상기 코더240은 상기 예외블록 처리 기능을 구비하지 않을 수도 있다. 이런 경우 상기 압축기는 예외블록처리부250을 구비하지 않으며, 코더240은 상기 예외블록으로 처리되어야 하는 블록(예를들면 레인지 블록을 구성하는 숏블록들 중의 하나의 숏블록도 탐색 범위 내의 모든 숏블록과 동일하지 않은 경우)도 상기한 바와 같이 코스트를 계산하여 코딩할 수 있다.
상기 도 10을 참조하면, 로더210은 411단계에서 다운로딩된 데이터를 로드하여 버퍼에 버퍼링하는데, 이때 상기 로드되는 데이터는 매크로 블록 및 숏블록 단위로 분할(partition)된다. 이때 상기 로딩되는 데이터의 앞단에 위치되는 매크로블록들은 비교할 대상, 즉 도메인 블록들이 없거나 또는 적은 수의 도메인 블록들과 비교하여 코딩되어야 한다. 이런 경우, 비교할 대상인 도메인 블록들이 많지 않으므로, 상기 압축기는 레인지 블록의 압축을 효과적으로 할 수 없게 된다. 따라서 압축시 압축 프레임의 앞에 위치되는 설정된 수의 매크로블록들은 압축 절차를 수행하지 않고 예외처리 블록으로 처리하는 것이 바람직하다. 상기 로더210은 상기 압축 프레임 크기로 데이터를 로딩하며, 탐색기220은 로딩되는 데이터를 레인지 블록 및 도메인 블록으로 분할하여 탐색하기 시작한다. 이때 로딩되는 데이터의 앞부분은 참조 대상인 도메인 블록이 없거나 또는 매우 작은 수의 도메인 블록들을 가지게 된다. 이런 경우, 상기 탐색기220은 레인지 블록과 동일한 또는 유사한 도메인 블록을 탐색하기 어려우며, 따라서 압축 효율도 저하된다. 따라서 본 발명의 실시예에서 상기 탐색기220은 로딩되는 압축 프레임 데이터에서 설정된 크기의 매크로 블록들은 예외블록으로 처리한다. 상기 도 10에서는 로딩되는 압축 프레임 데이터에서 16 매크로블록(MB0-MB15)을 예외블록 처리하는 것을 예시하고 있다. 따라서 압축 시작시, 상기 코더240은 435단계에서 상기 매크로블록 MBO - MB15를 예외처리 블록을 처리한 후 433단계에서 예외처리 블록으로 저장한다. 이때 상기 코더240은 상기 예외처리블록의 데이터를 압축하지 않고 그대로 저장한다.
상기 예외처리블록 처리 후, 탐색기220은 상기 도 9에 도시된 바와 같이 탐색범위를 설정한 후 레인지블록과 탐색범위 내의 도메인블록들을 로딩한 후 이들 블록들을 비교하고, 상기 레인지 블록에 대한 거리 정보 및 차이정보를 코더240에 전달한다.
그러면 상기 코더240은 415단계에서 차이플래그를 검사하여 레인지 블록과 도메인 블록의 데이터가 동일한가(코스트 = 0) 검사하며, 동일하면 417단계에서 탐색기220에서 상기 레인지블록의 데이터를 생성된 거리정보 및 차이 플래그로 코딩하여 압축 데이터를 생성한 후, 419단계에서 메모리에 버퍼링한다. 즉, 상기 레인지블록 및 탐색된 도메인 블록의 데이터가 동일하면, 상기 코더240은 레인지 블록과 도메인 블록 간의 거리 정보 및 레인지블록과 동일함을 나타내는 차이플래그(차이플래그 = 0)를 상기 레인지 블록의 압축 데이터로 생성한다.
그러나 상기 415단계에서 레인지 블록과 동일한 도메인 블록이 없는 경우(차이플래그≠0), 상기 코더240은 421단계에서 상기 테이블 인덱스를 확인하고, 423단계에서 상기 테이블에서 이를 확인한다. 이때 상기 테이블 인덱스는 상기 탐색기220에서 두 블록의 차이 값에 의해 생성되는 정보로써, 상기 글로벌 테이블(및/또는 로컬 테이블)의 테이블 인덱스가 될 수 있다. 여기서 상기 테이블 인덱스를 확인하는 이유는 상기 탐색기220에서 탐색된 코스트가 글로벌 테이블 및/또는 로컬 테이블에 존재하는가 확인하기 위함이다. 즉, 상기 글로벌 테이블 및/또는 로컬 테이블은 상기 코스트에 의해 결정되는 테이블 인덱스를 사용하며, 압축해제기가 압축데이터를 복원할 때 상기 테이블 인덱스에 의해 레인지 블록과 도메인 블록의 차이 값을 추출할 수 있게 된다. 따라서 상기 탐색기22에서 생성된 테이블 인덱스가 상기 테이블의 인덱스로 사용되어야만 해당 레인지 블록의 압축 데이터를 복원할 수 있게 된다. 이때 상기 차이플래그가 글로벌 테이블의 인덱스임을 표시하는 차이플래그(차이플래그 = 01)이면, 상기 코더240은 425단계에서 상기 테이블 인덱스 값이 글로벌테이블에 존재하는가 검사하며, 상기 글로벌 테이블에 존재하면 419단계에서 거리정보 및 차이정보를 메모리에 저장한다. 이때 거리정보는 상기 레인지블록과 거리 플래그 및 해당하는 도메인 블록과의 거리값이 될 수 있으며, 차이정보는 차이 플래그 및 글로벌 테이블의 인덱스 값이 될 수 있다. 또한 상기 차이플래그가 로컬 테이블의 인덱스임을 표시하는 차이플래그(차이플래그 = 10)이면, 상기 코더240은 427단계에서 로컬 테이블을 탐색한다. 여기서 상기 로컬 테이블은 상기 도 7b에 도시된 바와 같이 탐색기220에 생성되는 테이블로써, 상기 글로벌 테이블에 등록되지 않았으면서 설정 횟수 이상 반복적으로 탐색되는 차이값이 존재하는 차이 값들이 등록된다. 이때 상기 로컬테이블에 상기 테이블 인덱스 값이 존재하면, 상기 코더240은 429단계에서 이를 감지하고, 419단계에서 거리정보 및 차이정보를 메모리에 저장한다. 상기와 같이 상기 차이플래그가 0이 아니고, 상기 차이플래그가 "01" 또는 "10"이면, 상기 코더240은 상기 차이플래그 값 및 상기 글로벌 테이블 또는 로컬 테이블의 테이블 인덱스로 이루어지는 차이정보를 상기 거리정보와 함께 메모리에 저장한다.
그러나 상기 429단계에서 상기 차이플래그가 예외처리 플래그이면, 상기 코더240은 429단계에서 이를 감지하고, 431단계에서 예외블록처리부250을 구동한다. 그러면 예외블록처리부250은 431단계에서 예외처리플래그를 메모리에 저장한 후, 433단계에서 레인지블록의 데이터를 압축하지 않고 그대로 저장한다. 즉, 상기 레인지블록이 탐색범위 내의 도메인블록과 동일하지 않으며, 또한 상기 글로벌 테이블 및 로컬테이블에 존재하지 않으면, 코더240은 예외블록처리부250을 통해 예외처리플래그와 함께 압축되지 않은 데이터를 그대로 저장한다.
상기한 바와 같이 상기 코더240은 레인지 블록의 데이터를 압축하지 않고 메모리에 저장할 수 있다. 예를들면, 상기 레인지 블록을 구성하는 숏 블록 데이터들이 탐색 범위 내에 존재하는 도메인 블록들의 숏블록 데이터와 동일하지 않거나 또는 동일한 숏 블록이 존재하더라도 코스트가 높은 경우 상기 레인지 블록을 예외처리 블록으로 처리한다. 즉, 레인지 블록과 도메인 블록의 차이 값이 글로벌 및 로컬 테이블에 존재하지 않으면, 해당 레인지 블록의 데이터를 압축하지 않고 그대로 저장한다. 이런 경우 상기 코더240은 이를 예외블록처리부(exception handler)250에 통보하고, 상기 예외블록처리부250은 해당 레인지블록의 데이터를 압축하지 않고 메모리에 그대로 저장한다. 여기서 상기 예외블록처리부250은 코더240 내부에 구성할 수도 있다.
상기 압축기는 상기와 같은 동작을 반복하면서 로딩되는 레인지 블록들의 데이터들을 압축한 후 상기 메모리에 저장한다. 이때 상기 제2보조메모리에 저장되는 압축 데이터는 거리정보, 차이 정보 및 예외처리블록 등으로 구성될 수 있다. 따라서 상기 메모리에 하기 <표 2>와 같이 거리정보, 차이정보 및 예외처리 블록들의 저장된다.
메모리 비고
거리정보 - 거리플래그가 1이면 도메인블록과의 거리값과 함께 저장
- 거리플래그가 0이면 거리값은 저장하지 않음
차이 정보 - 차이플래그가 0이면 테이블 인덱스 없이 차이플래그만 저장
- 차이플래그가 01이면 차이플래그 및 글로벌 테이블 인덱스를 차이정보로 저장
- 차이플래그가 10이면 차이플래그 및 로컬 테이블 인덱스를 차이정보로 저장
예외처리블록 - 차이플래그가 11이면 예외처리플래그로 간주하고, 차이플래그를 차이정보로 저장하고 메모리에는 코딩하지 않은 레인지 블록 데이터를 그대로 저장
상기한 바와 같이 상기 압축기는 레인지 블록의 앞에 위치되는 탐색 범위 내에 존재하는 도메인블록들을 레인지블록과 비교하여 차이값을 구한 후, 차이 값에 따른 코스트를 계산하며, 가장 낮은 코스트를 가지는 도메인 블록과의 거리 정보 및 차이정보를 이용하여 레인지 블록의 데이터를 압축한다. 상기 도 9에서 레인지 블록과 탐색범위 내의 세 번째[4,5] 도메인 블록 간의 차이가 제로이므로, 상기 코더240은 상기 세 번째 도메인 블록까지의 거리 및 차이 값을 압축 데이터로 생성한다.
그러나 상기 도 9에서 첫 번째[6,7] 및 다섯 번째[2,3] 도메인 블록과 같이 탐색 범위 내에 도메인블록들이 상기 레인지 블록과 같은 숏블록이 없는 경우, 상기 코더240은 상기 레인지 블록을 예외처리 블록으로 처리한다.
또한 두 번째[5,6], 네 번째[3,4], 여섯 번째[1,2] 및 일곱 번째[0,1] 도메인 블록과 같이, 상기 레인지 블록의 숏블록들 중 하나의 숏블록과 탐색 범위 내의 도메인 블록의 하나의 숏블록이 동일한 경우, 상기 코더240은 상기 탐색 범위 내의 도메인블록들과 레인지 블록의 코스트 합을 계산하고, 가장 낮은 코스트 합을 가지는 도메인 블록과 상기 레인지 블록 간의 거리 및 차이 정보(차이플래그 및 테이블 인덱스)를 압축 데이터로 결정한다. 이때 상기 코더240이 글로벌 테이블 및/또는 로컬 테이블을 구비하는 경우, 상기 코더240은 상기 차이 값을 상기 테이블의 인덱스로 적용하여 테이블의 해당 인덱스 위치에 존재하는 정보를 압축 데이터로 결정한다. 이런 경우 상기 레인지 블록의 압축 데이터는 도메인 블록과 의 거리 및 상기 테이블의 정보가 될 수 있다.
도 11은 상기 도 9에 도시된 바와 같은 데이터가 로더210에 의해 로딩되어 버퍼에 버퍼링된 후, 탐색기220에 의해 레인지 블록과 가장 낮은 값을 가지는 도메인 블록의 코스트를 계산되는 경우, 코더240이 상기 탐색기220에서 출력되는 거리정보 및 차이정보를 이용하여 각 레인지 블록들의 데이터를 코딩하는 절차를 구체적으로 도시하는 도면이다.
상기 도 11에서 숏블록 [0,1,2,3,4,5](proc-1)는 로딩시 예외블록으로 처리하는 블록으로 가정하며, [6,7](proc-2), [8,9](proc-3), [10,11](proc-4)이 레인지 블록으로 선택되는 경우의 탐색기220 및 코더240의 동작 절차를 구체적으로 살펴본다.
상기 도 11을 참조하면, 로더210은 도 11의 참조번호 510과 같은 압축 프레임 데이터를 로드하여 내부 버퍼에 버퍼링한다. 그러면 코더240은 512단계에서 상기 510과 같은 데이터에서 예외처리할 블록들의 데이터를 로드한 후, 514단계 및 516단계에서 상기 로드한 블록 데이터들을 예외처리한다. 이때 상기 예외처리되는 블록들은 6개의 숏블록(3개의 매크로 블록)[0,1,2,3,4,5]이 될 수 있다. 상기 516단계에서 예외처리되는 블록은 도 11의 참조번호 518과 같이 메모리에 저장된다. 상기와 같이 로드되는 압축 프레임 데이터에서 설정된 수의 매크로 블록들을 예외처리하는 것은 상기한 바와 같이 압축 효율이 떨어지기 때문이며, 이런 경우 로딩되는 압축 프레임 데이터의 시작 부분에 위치되는 설정된 수의 매크로 블록을 예외처리하여 복호 효율을 향상시키는 것이 바람직하다. 따라서 상기 메모리에는 예외처리된 블록들의 데이터(raw data)들이 저장된다.
상기와 같이 로드된 압축 프레임 데이터의 예외처리 블록들을 처리한 후, 압축기는 522단계에서 이후 이어지는 매크로블록들에서 레인지 블록을 선택하고, 상기 선택된 레인지 블록의 앞에 위치되는 도메인 블록들을 탐색하여 거리정보 및 차이정보를 계산하여 상기 선택된 레인지 블록의 데이터를 압축한다. 상기 도 11에서는 매크로블록 proc-2[6,7], proc-3[8,9], proc-4[10,11]이 레인지 블록으로 선택되는 경우의 압축 절차를 살펴본다.
먼저 proc-2[6,7]의 압축 절차를 살펴보면, 탐색기220은 524단계에서 상기 레인지 블록 [6,7]을 로드한 후 탐색범위를 설정한다. 여기서 상기 탐색범위는 블록 [0-5]가 될 수 있다. 이후 탐색기220은 526단계에서 정방향 및 역방향 코딩 절차를 수행하는데, 상기 탐색 범위 내의 동일한 블록이 없으므로 글로벌 및 로컬 테이블의 인덱스를 생성하지 못하고 해당 레인지 블록을 예외처리하기 위한 차이플래그("11")을 생성한다. 따라서 코더240은 562단계에서 상기 탐색기220에서 생성되는 예외처리 플래그에 의해 상기 레인지 블록 [6,7]을 예외처리하게 된다. 상기 예외블록 처리시 상기 코더240은 상기 차이플래그를 저장하는 영역에 예외처리되는 블록임을 나타내는 플래그("11")을 저장하고 예외블록의 데이터를 압축 없이 그대로 저장하며, 이때 상기 메모리에 저장되는 예외처리 블록의 데이터는 도 11의 참조번호 564와 같은 형태를 가진다.
두 번째로 proc-3[8,9]의 압축 절차를 살펴보면, 탐색기220은 524단계에서 상기 레인지 블록 [8,9]을 로드한 후 탐색범위를 설정한다. 여기서 상기 탐색범위는 블록 [0-7]이 될 수 있다. 이후 탐색기220은 526단계에서 상기 탐색범위의 도메인블록들을 정방향 및 역방향 코딩 절차를 수행한다. 이때 도메인 블록 [4,5]을 탐색할 때, 탐색기220은 상기 레인지블록[8,9]과 동일함을 감지하고 상기 도메인 블록 [4,5]에서 차이 값이 0임을 나타내는 차이 정보를 생성한다. 이런 경우, 탐색기220은 상기 레인지 블록의 숏블록 [8]에 대해서는 차이플래그=1, 차이값=4를 가지는 거리정보를 생성하고, 차이플래그=0인 차이정보를 생성하고, 숏블록 [9]에 대해서는 거리플래그=0인 거리 정보 및 차이플래그=0(상기 숏블록 [9]에서 숏블록 [5]까지의 거리는 숏블록 [8]에서 숏블록 [4]까지의 거리와 동일하므로)인 차이정보를 생성하여 코더240에 출력한다. 그러면 상기 코더240은 532단계 및 534단계에서 레인지 블록과 도메인 블록의 데이터가 동일함을 확인하고, 상기 거리정보(distance flag = 1 0, distance value = 4) 및 차이플래그(difference flag = 0, 0)로 구성되는 압축 데이터를 생성하여 메모리에 저장한다. 이때 상기 메모리에 저장되는 블록 [8,9]의 압축 데이터는 도 11의 참조번호 536과 같이 거리정보는 1 0[distance flag], 4[distance value]가 되고, 차이정보는 0 0[difference flag = 0 0]이 된다.
세 번째로 proc-4[10,11]의 압축 절차를 살펴보면, 탐색기220은 524단계에서 상기 레인지 블록 [10,11]을 로드한 후 탐색범위를 설정한다. 여기서 상기 탐색범위는 블록 [0-9]이 될 수 있다. 이후 탐색기220은 526단계에서 상기 탐색범위의 도메인블록들을 정방향 및 역방향 코딩 절차를 수행한다. 이때 도메인 블록 [0,1]을 탐색할 때, 탐색기220은 상기 레인지블록[10,11]과 유사함을 감지하고, 이에 따른 거리정보 및 차이정보를 생성한다. 이때 상기 레인지 블록의 숏블록 [10]과 도메인 블록의 숏블록 [0]은 동일하므로, 탐색기220은 해당 숏블록 위치에 차이값이 0임을 나타내는 차이 정보를 생성한다. 이런 경우, 탐색기220은 거리 플래그=1, 거리값=10을 가지는 거리정보를 생성하고, 차이플래그=0인 차이정보를 생성하여 코더240에 출력한다. 또한 레인지 블록의 숏블록 [11]과 도메인 블록의 숏블록[1]은 서로 다른 데이터이므로, 탐색기220은 두 숏블록의 차이값[C XOR B]을 계산하고, 상기 차이값에 대응되는 코스트를 계산한 후, 상기 코스트테이블에서 상기 코스트에 따른 테이블 인덱스를 결정한다. 이런 경우 탐색기220은 거리플래그 = 0(상기 숏블록 [11]에서 숏블록 [1]까지의 거리는 숏블록 [10]에서 숏블록 [0]까지의 거리와 동일하므로)으로 생성하고, 차이플래그 및 상기 결정된 테이블 인덱스로 이루어지는 차이정보를 코더240에 출력한다. 여기서 상기 테이블 인덱스는 글로벌 테이블의 인덱스로 가정한다. 이런 경우 상기 차이정보는 차이플래그=01 및 글로벌 테이블 인덱스 Gtbl idx로 이루어질 수 있다.
그러면 상기 코더240은 532단계 및 534단계에서 레인지 블록의 숏블록 [10]과 도메인 블록의 숏블록 [0]의 데이터가 동일함을 확인하고, 상기 거리정보(distance flag = 1, distance value = 10) 및 차이플래그(difference flag = 0)로 구성되는 압축 데이터를 생성하여 메모리에 저장한다. 그리고 상기 레인지 블록의 숏블록 [11]은 도메인 블록의 숏블록 [1]과 동일하지 않으므로, 코더240은 542단계 및 544단계를 수행하여 탐색기220에서 출력되는 테이블 인덱스를 544와 같은 테이블에 탐색한다. 이때 상기 테이블 인덱스가 상기 도 11의 참조번호 544와 같은 테이블에서 검색되면, 코더240은 548단계에서 상기 검색된 코스트[Gtbl idx = code(C:B)]를 차이 값(differce value)으로 저장한다. 즉, 코더240은 레인지블록의 숏블록 [11]의 압축 데이터로 거리플래그 = 0인 거리정보와 차이플래그 = 01, 차이값 = [Gtbl idx = code(C:B)]인 차이정보를 압축 데이터로 생성하여 550과 같이 메모리에 저장한다.
도 11의 참조번호 550은 도 11의 참조번호 510과 같은 압축 프레임 데이터를 로딩한 후, 탐색기220 및 코더240이 숏블록 [0-11]까지의 데이터가 압축되어 메모리에 저장되는 형태를 표시하고있다.
도 1은 본 발명의 실시예에 따른 레인지블록 및 도메인 블록 구성을 설명하기 위한 도면
도 2는 본 발명의 실시예에 따라 역방향 탐색에 따른 압축 효과를 예시하는 도면
도 3a 및 도 3b는 본 발명의 실시예에 따라 탐색 범위 내에서 도메인 블록들을 정방향 및 역방향 검색하여 압축 대상인 레인지 블록에 대한 최적의 도메인 블록을 선택하는 방법을 설명하기 위한 도면
도 4는 본 발명의 실시예에 따른 압축 방법(range block encoding)의 절차를 도시하는 흐름도
도 5는 상기 도 4에서 최적화 절차를 수행하는 동작을 설명하기 위한 도면
도 6은 상기 도 4에서 차이 코딩 테이블을 갱신하는 절차를 도시하는 흐름도
도 7a는 본 발명의 실시예에 따른 글로벌 테이블의 특성을 설명하기 위한 도면이며, 도 7b는 로컬 테이블의 특성을 설명하기 위한 도면
도 8은 본 발명의 실시예에 따른 상기 압축기의 구성을 도시하는 도면
도 9는 도 8의 상기 탐색기의 동작을 설명하기 위한 도면
도 10은 도 8의 상기 코더에서 레인지 블록의 데이터를 압축하는 절차를 도시하는 흐름도
도 11은 도 10과 같은 절차를 수행하는 코더가 거리정보 및 차이정보를 이용하여 각 레인지 블록들의 데이터를 코딩하는 절차를 구체적으로 도시하는 도면

Claims (17)

  1. 압축장치에 있어서,
    바이너리 데이터의 탐색범위를 설정하고, 상기 탐색 범위내의 도메인 블록들을 정방향 코딩하여 상기 도메인블록과 레인지블록의 데이터를 비교하여 차이값을 발생하며, 역방향 코딩하여 상기 차이값에 따른 낮은 코스트를 가지는 도메인블록의 거리 및 차이정보를 생성하는 탐색기와,
    상기 탐색기에서 선택된 도메인블록과의 거리 및 차이정보를 상기 레인지블록의 압축데이터로 코딩하는 코더로 구성되며,
    상기 레인지블록은 압축대상데이터의 블록이고 도메인블록은 상기 레인지블록과 비교대상 데이터의 블록이고,
    상기 정방향코딩은 하나의 매크로 블록으로 구성된 레인지 블록과 탐색범위 내의 도메인 블록들 중에서 코스트가 가장 적은 블록을 탐색하는 코딩이며, 역방향 코딩은 탐색범위 내에서 하나의 매크로 블록을 포함하는 정방향 코딩된 레인지 블록들을 재구성하여 코스트를 줄이는 코딩인 압축장치.
  2. 제1항에 있어서, 상기 탐색기는 상기 레인지블록과 도메인 블록 간의 블록 수인 거리값 및 거리플래그를 포함하는 거리정보 및 상기 레인지블록과 도메인 블록의 동일 여부를 나타내는 차이플래그 및 차이값을 생성하는 것을 특징으로 하는 상기 압축 장치.
  3. 제2항에 있어서, 상기 탐색기는 상기 차이값에 따른 코스트 및 테이블 인덱스를 저장하는 코스트테이블을 구비하며, 상기 차이값에 따른 코스트를 생성하고, 상기 생성된 코스트에 따른 테이블인덱스를 생성하는 것을 특징으로 하는 압축 장치.
  4. 제2항에 있어서, 상기 레인지 블록 및 도메인 블록은 각각 적어도 2개의 숏블록들로 구성되며,
    상기 탐색기는 상기 탐색범위 내의 도메인블록들을 탐색하며, 상기 정방향 코딩시 레인지블록과 도메인블록을 숏블록 단위로 비교하여 차이값 및 이에 따른 코스트를 생성하고, 낮은 거리 및 차이 코스트를 가지는 도메인 블록의 거리 및 차이정보를 생성하는 것을 특징으로 하는 상기 압축장치.
  5. 제3항에 있어서, 상기 탐색기가,
    탐색 영역을 설정하는 탐색영역설정기와,
    레인지블록을 선택하는 레인지블록 선택기와,
    상기 탐색 영역 내에 비교 대상의 도메인블록들을 선택하는 도메인블록선택기와,
    상기 선택된 도메인블록을 상기 레인지블록과 배타적 논리합 연산하여 차이값을 발생하는 비교기와,
    상기 선택된 도메인블록과 상기 레인지블록 간의 거리를 계산하여 거리플래 그 및 거리값으로 이루어지는 거리정보를 발생하는 거리계산기와,
    상기 비교기에서 발생되는 차이값에 따른 코스트를 생성하고, 낮은 거리 및 차이 코스트를 가지는 도메인 블록의 거리정보 및 차이정보를 생성하는 코스트계산기와,
    상기 차이정보 및 거리 정보를 상기 코더에 전송하는 출력부로 구성되는 것을 특징으로 하는 특징으로 하는 상기 압축장치.
  6. 제1항에 있어서, 상기 코더는 상기 거리정보 및 차이정보를 레인지블럭의 압축 데이터로 코딩하는 것을 특징으로 하는 상기 압축장치.
  7. 제6항에 있어서,
    상기 코더는 상기 코스트들에 대응되는 블록들의 차이값을 저장하는 글로벌테이블을 구비하며, 차이플래그를 분석하여 동일한 블록데이터 이면 상기탐색기에서 생성되는 거리정보 및 차이플래그를 압축데이터로 생성하고, 다른 차이값을 가지는 블록데이터 이면 상기 차이값을 글로벌테이블에서 확인하여 상기 거리정보 및 차이정보를 압축데이터로 생성하는것을 특징으로 하는 상기압축장치.
  8. 제7항에 있어서,
    상기 압축 장치는 상기 글로벌테이블에 포함되지않으며 압축중에 빈번하게 발생되는 차이값들의 코스트를 계산하여 생성되는 테이블 인로컬테이블을 더구비하며,
    상기 코더가 다른차이값을 가지는 블록데이터이며 상기 글로벌테이블에 존재하지않는경우 상기 차이값을 로컬테이블을 확인하여 상기거리정보 및 차이정보를 압축데이터를 생성하는것을 특징으로 하는 상기 압축장치.
  9. 제8항에 있어서, 상기 코더가 상기 테이블에 일치하는 차이값이 확인되지 않으면, 상기 레인지블록들을 예외블록처리하여 해당 레인지블록의 데이터를 압축데이터로 생성하는 예외블록처리부를 더 구비함을 특징으로 하는 상기 압축 장치.
  10. 데이터를 압축하는방법에 있어서,
    바이너리 데이터의 탐색범위를 설정하고, 상기 탐색 범위내에서 도메인블록들을 정방향코딩하여 상기 도메인 블록과 레인지블록의 데이터를 비교하여 차이값을 발생하며, 역방향코딩하여 상기차이값에 따른 낮은 코스트를가지는 도메인블록과의 거리정보 및 차이정보를 생성하는 탐색과정과,
    상기 선택된 도메인블록과의 거리 및 차이정보를 상기 레인지블록의 압축데이터로 코딩하는 과정으로 이루어지며,
    상기 레인지블록은 압축대상데이터의 블록이고 도메인블록은 상기 레인지블록과 비교대상 데이터의 블록이고,
    상기 정방향 코딩은 하나의 매크로 블록으로 구성된 레인지 블록과 탐색범위 내의 도메인 블록들 중에서 코스트가 가장 적은 블록을 탐색하는 코딩이며, 역방향 코딩은 탐색범위 내에서 하나의 매크로 블록을 포함하는 정방향코딩된 레인지 블록들을 재구성하여 코스트를 줄이는 코딩인 데이터 압축방법.
  11. 제10항에 있어서, 상기 탐색 과정이,
    상기 레인지블록과 선택된 도메인 블록 간의 블록 수 인 거리값 및 거리플래그를 포함하는 거리정보를 계산하는 과정과,
    상기 레인지 블록과 선택된 도메인 블록간의 차이값 및 이에 따른 코스트를 계산한 후, 도메인 블록의 거리정보 및 차이정보를 생성하는 과정으로 이루어지는 것을 특징으로 하는 상기 데이터 압축 방법.
  12. 제11항에 있어서, 상기 탐색 과정은 상기 거리정보 계산 과정 및 코스트 생성과정을 반복 수행하면서 가장 낮은 코스트를 가지는 도메인 블록의 거리 및 차이정보를 선택하며, 상기 거리정보는 선택된 도메인 블록과의 거리플래그 및 거리값으로 이루어지고 상기 차이정보는 차이플래그 및 차이값으로 이루어지는 과정을 더 구비함을 특징으로 하는 상기 데이터 압축 방법.
  13. 제12항에 있어서, 상기 코딩 과정은,
    상기 차이플래그를 분석하여 블록데이터가 동일하면 상기 거리정보 및 리세트된 차이플래그를 압축데이터로 생성하고, 상기 블록데이터가 다르면 상기 거리정보 및 차이정보를 압축데이터로 생성하는것을 특징으로하는 상기 데이터 압축방법.
  14. 제10항 에 있어서, 상기 차이값을 저장하는 글로벌 테이블을 구비하며,
    상기 코딩 과정은, 상기 블록 데이터들이 동일하면 거리정보 및 리세트된 차이플래그를 압축데이터로 생성하고, 상기 블록 데이터들이 다르면 상기 코스트를 글로벌 테이블에서 탐색하여 상기 거리정보 및 차이정보를 압축 데이터로 생성하는 것을 특징으로 하는 상기 데이터 압축 방법.
  15. 제14항에 있어서, 상기 글로벌테이블에 포함되지 않으며 압축 중에 빈번하게 발생되는 차이값들을 저장하는 로컬 테이블을 더 구비하며,
    상기 코딩과정은 글로벌테이블에 일치하는 코스트가 없으면 상기 코스트를 로컬테이블에서 탐색하여 상기 거리정보 및 코스트를 압축 데이터로 생성하는 과정을 더 구비하는 것을 특징으로 하는 상기 데이터 압축 방법.
  16. 제14항 또는 제15항에 있어서, 상기 코딩과정은 상기 테이블에 일치하는 코스트가 없으면, 상기 레인지블록들을 예외블록처리하여 블록 데이터를 압축데이터로 생성하는 과정을 더 구비함을 특징으로 하는 상기 데이터 압축 방법.
  17. 제10항에 있어서, 상기 탐색과정은
    탐색 영역을 설정하는 과정과,
    레인지블록을 선택하는 과정과,
    상기 탐색 영역 내에 비교 대상의 도메인블록을 선택하는 과정과,
    상기 선택된 도메인블록과 상기 레인지블록의 데이터를 비교하여 차이값를 발생하는 과정과,
    상기 선택된 도메인블록과 상기 레인지블록 간의 거리를 계산하는 과정과,
    상기 차이값을 코스트테이블에서 탐색하여 코스트를 생성하는 과정과,
    상기 과정을 반복하면서 가장 낮은 코스트를 가지는 도메인 블록을 선택하며, 상기 선택된 도메인 블록의 코스트 및 거리 정보를 출력하는 과정으로 구성되는 것을 특징으로 하는 특징으로 하는 상기 데이터 압축 방법.
KR1020070091048A 2007-09-07 2007-09-07 데이터 압축 장치 및 방법 KR101503829B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020070091048A KR101503829B1 (ko) 2007-09-07 2007-09-07 데이터 압축 장치 및 방법
US12/203,097 US8059016B2 (en) 2007-09-07 2008-09-02 Data compression apparatus and method
TW97133952A TWI357224B (en) 2007-09-07 2008-09-04 Data compression apparatus and method
JP2008229007A JP4814291B2 (ja) 2007-09-07 2008-09-05 データ圧縮装置および方法
CN2008102129261A CN101383616B (zh) 2007-09-07 2008-09-05 数据压缩设备和方法
EP08163739.9A EP2034738B1 (en) 2007-09-07 2008-09-05 Data compression apparatus and method
JP2011138752A JP5008106B2 (ja) 2007-09-07 2011-06-22 データ圧縮装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070091048A KR101503829B1 (ko) 2007-09-07 2007-09-07 데이터 압축 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20090025885A KR20090025885A (ko) 2009-03-11
KR101503829B1 true KR101503829B1 (ko) 2015-03-18

Family

ID=40040174

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070091048A KR101503829B1 (ko) 2007-09-07 2007-09-07 데이터 압축 장치 및 방법

Country Status (6)

Country Link
US (1) US8059016B2 (ko)
EP (1) EP2034738B1 (ko)
JP (2) JP4814291B2 (ko)
KR (1) KR101503829B1 (ko)
CN (1) CN101383616B (ko)
TW (1) TWI357224B (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100103183A1 (en) * 2008-10-23 2010-04-29 Hung-Ming Lin Remote multiple image processing apparatus
WO2013079999A1 (en) * 2011-12-02 2013-06-06 Canon Kabushiki Kaisha Methods and devices for encoding and decoding messages
US8914338B1 (en) * 2011-12-22 2014-12-16 Emc Corporation Out-of-core similarity matching
US9008073B1 (en) * 2012-12-07 2015-04-14 Maxim Integrated Products, Inc. Routing for power line communication systems
US9564918B2 (en) * 2013-01-10 2017-02-07 International Business Machines Corporation Real-time reduction of CPU overhead for data compression
US9053121B2 (en) 2013-01-10 2015-06-09 International Business Machines Corporation Real-time identification of data candidates for classification based compression
US9792350B2 (en) 2013-01-10 2017-10-17 International Business Machines Corporation Real-time classification of data into data compression domains
CN103281538B (zh) * 2013-06-06 2016-01-13 上海交通大学 基于滚动哈希和块级别帧内预测的帧内编码方法
CN104780379B (zh) * 2015-01-21 2018-03-09 北京工业大学 一种屏幕图像集合的压缩方法
US9552384B2 (en) * 2015-06-19 2017-01-24 HGST Netherlands B.V. Apparatus and method for single pass entropy detection on data transfer
CN111865326B (zh) * 2020-07-14 2023-06-23 北京灵汐科技有限公司 数据压缩方法、装置、设备及存储介质
CN115940959B (zh) * 2023-02-16 2023-06-23 国网山东省电力公司营销服务中心(计量中心) 一种低功耗的电能数据采集管理系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930006522B1 (ko) * 1991-04-06 1993-07-16 주식회사 금성사 영상신호의 대역압축 부호화장치
JPH0795586A (ja) * 1993-06-30 1995-04-07 Victor Co Of Japan Ltd 圧縮された動画像データの管理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US5455943A (en) * 1992-10-08 1995-10-03 Salient Software, Inc. Method and apparatus for finding longest and closest matching string in history buffer prior to current string
US5325091A (en) * 1992-08-13 1994-06-28 Xerox Corporation Text-compression technique using frequency-ordered array of word-number mappers
US5525982A (en) * 1994-04-15 1996-06-11 International Business Machines Corporation Method and means for character string pattern matching for compression and the like using minimal cycles per character
US5731850A (en) * 1995-06-07 1998-03-24 Maturi; Gregory V. Hybrid hierarchial/full-search MPEG encoder motion estimation
JP3305191B2 (ja) * 1996-03-19 2002-07-22 富士通株式会社 文書管理装置及びデータ圧縮方法及びデータ復元方法
US5995080A (en) * 1996-06-21 1999-11-30 Digital Equipment Corporation Method and apparatus for interleaving and de-interleaving YUV pixel data
US6101276A (en) * 1996-06-21 2000-08-08 Compaq Computer Corporation Method and apparatus for performing two pass quality video compression through pipelining and buffer management
JPH10190476A (ja) * 1996-12-27 1998-07-21 Canon Inc データ圧縮方法及びその装置
US6167083A (en) * 1997-04-04 2000-12-26 Avid Technology, Inc. Computer system and process for capture editing and playback of motion video compressed using interframe and intraframe techniques
US6492917B1 (en) * 2001-10-31 2002-12-10 Hughes Electronics Corporation System and method for implementation of the YK lossless data compression algorithm using a modular computational architecture
US20040022312A1 (en) * 2002-07-31 2004-02-05 Jones Simon R. Lossless data compression
US8168170B2 (en) 2002-10-03 2012-05-01 The Procter And Gamble Company Compositions having an inner core and at least three surrounding layers
FR2850827B1 (fr) * 2003-02-03 2005-11-04 Pagnac Andre Procede et dispositif de compression de parties d'images
JP2006524858A (ja) * 2003-04-16 2006-11-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メモリに記憶されたデータに圧縮を使用するデータ処理装置
CN1697327A (zh) * 2004-05-13 2005-11-16 皇家飞利浦电子股份有限公司 一种顺序压缩/解压缩数据的方法及装置
US7792373B2 (en) 2004-09-10 2010-09-07 Pioneer Corporation Image processing apparatus, image processing method, and image processing program
US20060069857A1 (en) * 2004-09-24 2006-03-30 Nec Laboratories America, Inc. Compression system and method
CN101206618A (zh) * 2006-09-08 2008-06-25 三星电子株式会社 融合式存储器设备及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930006522B1 (ko) * 1991-04-06 1993-07-16 주식회사 금성사 영상신호의 대역압축 부호화장치
JPH0795586A (ja) * 1993-06-30 1995-04-07 Victor Co Of Japan Ltd 圧縮された動画像データの管理方法

Also Published As

Publication number Publication date
JP4814291B2 (ja) 2011-11-16
JP2009065674A (ja) 2009-03-26
EP2034738A3 (en) 2011-09-07
CN101383616B (zh) 2013-04-10
JP5008106B2 (ja) 2012-08-22
EP2034738B1 (en) 2017-01-25
EP2034738A2 (en) 2009-03-11
US20090070357A1 (en) 2009-03-12
TWI357224B (en) 2012-01-21
JP2011250431A (ja) 2011-12-08
KR20090025885A (ko) 2009-03-11
TW200913512A (en) 2009-03-16
US8059016B2 (en) 2011-11-15
CN101383616A (zh) 2009-03-11

Similar Documents

Publication Publication Date Title
KR101503829B1 (ko) 데이터 압축 장치 및 방법
KR101454167B1 (ko) 데이터 압축 및 복원 장치 및 방법
KR101653692B1 (ko) 데이터 오브젝트 처리 방법 및 장치
US9054729B2 (en) System and method of compression and decompression
CN114244373B (zh) Lz系列压缩算法编解码速度优化方法
CN107925418B (zh) 用于混合式数据压缩和解压缩的方法、设备和系统
US10268380B2 (en) Methods, devices and systems for semantic-value data compression and decompression
US9325345B2 (en) Increasing speed of data compression
CN109716658B (zh) 一种基于相似性的重复数据删除方法和系统
EP1320196A2 (en) Data compression method
KR20080023191A (ko) 퓨전메모리 장치 및 방법
JP2006526367A (ja) 隣接比較に基づくロスレス高速画像圧縮システム
CN112380196B (zh) 一种用于数据压缩传输的服务器
US11714552B2 (en) Memory system
US8373584B2 (en) Compressing and decompressing data
KR101652735B1 (ko) 이진 데이터의 압축 및 복원 방법과 장치
Dolev et al. Entropy adaptive on-line compression
CN112463021A (zh) 数据处理方法及装置、芯片
KR20080045842A (ko) 이미지 압축 및 복원을 위한 장치 및 방법
CN117560013A (zh) 数据压缩方法和电子设备
JPWO2012095909A1 (ja) データ可逆圧縮装置及び方法並びにデータ可逆伸張装置及び方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190227

Year of fee payment: 5