KR20040051710A - 이미지 압축방법 - Google Patents

이미지 압축방법 Download PDF

Info

Publication number
KR20040051710A
KR20040051710A KR1020020078669A KR20020078669A KR20040051710A KR 20040051710 A KR20040051710 A KR 20040051710A KR 1020020078669 A KR1020020078669 A KR 1020020078669A KR 20020078669 A KR20020078669 A KR 20020078669A KR 20040051710 A KR20040051710 A KR 20040051710A
Authority
KR
South Korea
Prior art keywords
image
value
data
link data
link
Prior art date
Application number
KR1020020078669A
Other languages
English (en)
Other versions
KR100532275B1 (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 KR10-2002-0078669A priority Critical patent/KR100532275B1/ko
Priority to US10/701,648 priority patent/US20040114809A1/en
Publication of KR20040051710A publication Critical patent/KR20040051710A/ko
Application granted granted Critical
Publication of KR100532275B1 publication Critical patent/KR100532275B1/ko
Priority to US11/838,508 priority patent/US20070274601A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • H04N19/98Adaptive-dynamic-range coding [ADRC]
    • 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
    • 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
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

허용 에러 부호화(Permissible-Error Encoding : PE Encoding ) 및 다이나믹 링크 사이즈 부호화(Dynamic Link-Size Encoding)를 이용하여 이미지를 압축하기 위한 이미지 압축방법이 개시된다. 이미지 압축방법은, 비손실압축 방법 예컨데 림펠-집 압축방법에 허용에러 부호화와 다이나믹 링크 사이즈방법을 선택적으로 적용하여 이미지를 압축 효율을 높일 수 있다.

Description

이미지 압축방법{METHOD FOR COMPRESSION-ENCODING AN IMAGE}
본 발명은 이미지 압축방법에 관한 것으로서, 보다 상세하게는, 비손실 압축알고리즘을 이용하여 이미지를 압축하는 이미지 압축방법에 관한 것이다.
일반적으로, 이미지를 해당 디바이스로 전송하는데 있어서, 이미지 데이터의 손실 및 화질의 저하를 최소화하여 고품질의 이미지 데이터를 전송하기 위해 전송하기 위한 이미지에 압축방법을 적용하고 있다. 최근까지 많은 이미지 압축방법이 제안되고 있으며, 이미지를 수신하는 각각의 디바이스에 따라 적절한 이미지 압축방법이 사용되고 있다.
기존의 압축방법을 크게 몇 가지 종류로 분류한다면, 비손실 압축방법과 손실 압축방법, 및 혼성 압축방법으로 나누어 볼 수 있다. 먼저, 비손실 압축방법은 텍스트(Text), 팩스(Fax), 및 프로그램과 같은 데이터가 손실되지 않아야 하는 부분에서 사용하기에 적절한 방법이다. 따라서, 비손실 압축방법은 압축된 데이터를 복원하였을 경우, 압축하기전의 데이터와 동일해야만 하는 경우에 사용된다. 두 번째, 손실 압축방법은 이미지와 같이 방대한 데이터 중에서 일부가 손실된다 하더라도 눈으로 보기에는 별 차이가 없는 경우 사용되는 압축방법이다. 마지막으로, 혼성 압축방법은 압축률을 높이기 위하여 위의 비손실 압축방법 및 손실 압축방법을 적절히 조합하여 사용하는 압축방법이다.
비손실 압축방법은 반복 억제 방법과 통계적 부호화 방법으로 나뉘어 질 수 있는데, 이러한 압축방법들은 데이터의 반복성을 이용하여 일정구간을 암호화하는 방법이다. 그 예로서는, 런-랭스 부호화(Run-Length Encoding), 패턴 치환법(Pattern Substitution), 허프만 부호화(Huffman Encoding), 및 림펠-집 부호화(Lempel-Ziv Encoding) 등이 있다.
손실 압축방법은 크게 변환기법, 양자화기법, 예측기법, 및 보간기법등으로 나눌 수 있다. 그 예로는, 이산 푸리에 변환(discrete Fourier Transform), 및 웨이블렛(Wavelet) 변환 등이 있다. 보통 비손실 압축방법은 압축 대상에 따라 20[%] ~ 50[%]의 압축률을 보이며, 손실 압축방법은 그 손실정도에 따라 현저하게 높은 압축률로 압축할 수 있다.
혼성 압축방법은 비손실 압축방법 및 손실 압축방법을 활용하여 만들어진 방법으로써, 여러 가지 이미지 표준형식으로 현재 사용되고 있으며, 그 예로는 JPEG( Joint Photographic coding Experts Group ), H.261, MPEG(Motion Picture Experts Group)등이 있다.
이하, 기존의 비손실 압축방법 중, 가장 많이 사용되고 있는 런-랭스 부호화(Run-Length Encoding)방법 및 가장 성능이 우수한 것으로 알려져 있는 림펠-집(Lempel-Ziv) 압축방법에 대하여 설명한다.
런-랭스 부호화(Run Length Encoding : 이하, RLE라 함)는 압축 대상 데이터 중 중복되는 데이터가 많을 때 유리한 압축방법이다. 이러한, RLE 압축방법은 압축방법 중 가장 간단한 방법에 속하지만 그만큼 압축 효율은 좋다고 볼 수 없다. 이러한 RLE 압축방법의 기본 원리는 중복되는 데이터와 중복된 데이터의 횟수를 표기하는 방법을 이용한다. 따라서, RLE 압축방법은 데이터가 중복되어 있어야 한다는 조건을 기초로 이용되기 때문에, 연속되지 않은 데이터에는 큰 효율을 얻을 수 없다. 그래서 RLE 압축방법은 대부분 코드가 연속되어 있는 그래픽 이미지의 압축방법 등에서 주로 이용된다. 예를 들어, "TFBBBBBBBBBBBBBCIT"와 같은 텍스트 스트링(Text string)이 있을 경우, "TF"와 "CIT"사이에 'B'가 13번 반복된다. 이때, RLE 압축방법에서는, 반복되는 "B"를 특수문자 '@'를 사용하여 "TFB@13CIT"와 같이 코딩(coding)할 수 있고, 이것은 'B'가 13번 반복된다는 뜻으로 디코딩(decoding)할 수 있다.
림펠-집(Lempel-Ziv) 압축방법은 통계적 부호화방식으로, 같은 코드(code)를 반복하는 대신 코드(code)의 패턴을 인식하여 위치 및 길이를 이용함으로써, 보다 높은 압축률을 얻을 수 있다. 따라서, 림펠-집 압축방법은 RLE 압축방법에 비하여 같은 코드(code)뿐만 아니라 같은 패턴의 경우까지 포함하므로, 많은 경우의 수가 압축될 수 있지만 복잡한 이미지의 경우에는 큰 효과를 보지 못한다. 예를 들어 "the_other_one_is_the_oldest"와 같은 텍스트 스트링(Text string)의 예제가 있다고 하자.
만약, 반복되는 패턴을 [위치, 길이]로서 표현한다면, 위의 텍스트스트링(Text string)은 아래와 같이 부호화(encoding) 될 수 있다.
"the_o[1,3]r[4,2]n[3,2]is_[1,5]ldest"
이 예제에 따른 림펠-집 압축방법은 캐랙터(character)하나의 경우는 압축하지 않고, 2개 이상의 경우에만 각각의 위치와 길이로서 표현을 하고 있다. 이러한 림펠-집 압축방법은 앞에서 복호화(decoding)된 데이터를 이용하여 다음 데이터를 복호화(decoding)하므로 그렇게 복잡한 과정이 아니며, 손쉽게 이미지 압축방법에 활용할 수 있다.
그런데, 위의 RLE 압축방법 및 림펠-집 압축방법은 압축 대상에 따라 압축률의 차이를 많이 보이며, 평균 50[%]정도의 압축률을 나타내고 있다. 이는, 압축 대상 데이터를 수십 대 일로 압축하는 손실 압축방법에 비한다면, 상당히 저조한 압축률을 나타내고 있다.
이러한, 기존의 압축방법들은 각 디바이스에 따라 그에 맞는 다양한 압축방법이 선택 및 사용되고 있다. PC(Personal Computer)상에서 이미지 포맷(Image Format)으로 활용되고 있는 "jpeg"또는 "gif" 등은 모두 이러한 압축방법을 사용하고 있는 표준이라 할 수 있다. 따라서, 자원이 풍부한 PC와 다른 임베디드 시스템(embedded system)에서 압축의 복원(decoding)속도와 메모리의 효율성을 고려한다면, 이와 같은 복잡한 이미지 포맷의 방법은 사용하기가 어렵다.
임베디드 시스템(embedded system)의 대표적인 예로서, 무선 단말기 시스템은 디스플레이 모듈(Display module)이 점차적으로 고급화되고 높은 해상도를 갖는 컬러 LCD(Liquid Crystal Display)로 변화됨에 따라 보다 화려한 이미지를 요구하고 있다. 또한, 제한된 메모리 공간에서 많은 양의 이미지 데이터를 저장하기 위하여서는 이미지 데이터에 대한 압축방법이 필수적으로 요구된다.
그런데, 기존에 제안되고 있는 우수한 압축률을 갖는 이미지 압축방법을 사용할 경우, 압축률은 좋을 수 있으나 압축된 이미지를 복원할 때 발생하는 부하로 인하여 디바이스에 별도의 CPU(Central Processing Unit)를 장착하지 않는다면 적용이 불가한 문제점이 있다. 그렇다고 비손실 압축방법을 그대로 적용할 때에는 복원 시에 부하를 줄일 수는 있어도 압축률 부분에서는 이미지의 종류에 따라 상이한 압축률을 갖는다. 비손실 압축방법은 평균 50[%]정도 밖에 되지 않는 압축률로 인하여 그렇게 좋은 성과를 기대하기는 어렵다. 무선 단말기 시스템은 압축 복원 속도도 중요하지만 메모리 사용도 제한적이므로 압축률이 저조할 때에는 이러한 압축방법을 가능한 것이 불가능하다.
예를 들어, 무선 단말기 시스템에서는 압축 복원(decoding) 시간으로 인하여 현재 표준으로 정의되어 있는 "jpeg"과 같은 혼성압축법을 사용하기가 어렵다. 특히, 1초에 적어도 6장(frame) 내지 7장(frame)의 화면 디스플레이를 위해서는 100ms 또는 200ms 내에 압축 복원(decoding)을 하여야 하지만, 혼성 압축방법을 사용할 경우에는 화면 1 frame을 디스플레이하기 위하여 1초에 가까운 시간이 걸리므로 적용이 어렵다. 물론, 디바이스에 화면 디스플레이를 위한 전용 CPU를 적용하거나 보다 빠른 클럭(Clock)의 CPU를 사용한다면, 더 빨리 압축 복원(decoding)을 할 수도 있을 것이다. 그러나, 무선 단말기와 같은 대부분의 임베디드 시스템에서는 단일 CPU를 사용하기 때문에 이러한 제약조건 아래에서는 더 나은 방법의 압축방법을 필요로 한다.
그리고, RLE 압축방법이나 림펠-집 압축방법을 무선 단말기 시스템의 이미지를 압축하는 방법으로 사용할 경우, 어느 정도의 압축 효과는 얻을 수 있으나 고급스러운 이미지나 복잡한 이미지를 사용할 경우에는 거의 압축이 되지 않는 문제점이 있다. 즉, RLE 압축방법이나 림펠-집 압축방법은 단편적이고 간단한 이미지에 대하여서만 압축의 효과가 있다. 실제로 무선 단말기 시스템에 RLE 압축방법이나 림펠-집 압축방법을 각각 적용하였을 때, RLE 압축방법은 100[%]를 압축되지 않은 원래 이미지로 가정하였을 때 75[%] ~ 85[%] 정도로 압축되고 림펠-집 압축방법은 70[%] ~ 80[%] 정도로 압축율을 얻을 수 있다. 이런 결과를 보았을 때 Lempel-Ziv방법이 RLE 방법보다 조금 우수한 결과를 보이기는 하지만, 이미지 압축을 해서 큰 효과를 기대하기는 어려운 문제점이 있다.
실제, 비손실 압축방법은 흑백 비트맵 또는 단조로운 이미지에 대한 압축에서는 큰 효과를 볼 수 있다. 그러나 이미지의 고급화와 여러 가지 이미지 처리효과로 인하여 눈으로 보기에는 같은 그림의 경우에도 그것을 표현한 비트맵의 RGB 코드(code)값은 전혀 다른 값이 되어 버리거나 또는 아주 근소한 차이를 갖는 경우가 많으므로 큰 효과를 보기가 힘들다. 이러한 이미지를 림펠-집 압축방법을 이용하여 압축하게 되면, 이미지 중 같은 패턴(pattern)으로 반복되는 경우가 아주 근소한 차이로 인하여 많이 검출되지 않음으로 인해 압축이 거의 되지 않을 수 있는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 무선 단말기 시스템에서 빠른 이미지 압축 복원과 효과적인 메모리 사용을 위한 최적의 압축률을 얻을 수 있는 이미지 압축방법을 제공하는데 있다.
본 발명의 다른 목적은, 이미지의 압축의 효율을 높이면서 압축된 이미지의 복원시 손실 율을 최소화 할 수 있는 이미지 압축방법을 제공하는데 있다.
도 1은 16비트 비트맵에서 1 픽셀을 나타내는 RGB 코드의 구성을 나타낸 도면,
도 2는 림펠-집(Lempel-Ziv) 압축방법에 따라 RGB 코드의 엔코딩 데이터의 예를 도시한 도면,
도 3은 비손실 압축방법 중 림펠-집 압축방법을 나타낸 순서도,
도 4는 도 3의 링크 데이터 등록단계를 보다 상세히 도시한 순서도,
도 5는 도 3의 림펠-집 압축방법에 따라 압축된 이미지에 대한 복호화가 수행된 상태를 나타낸 도면,
도 6은 도 4의 S123단계의 조건을 설정된 허용 가능한 에러값에 대한 조건으로 변환함에 따라 본 발명의 제1실시예를 적용하기 위한 도면,
도 7은 림펠-집 압축방법에 다이나믹 링크 사이즈 부호화를 적용함에 따라 변환된 부호화 데이터를 나타낸 도면,
도 8은 림펠-집 압축방법에 다이나믹 링크 사이즈 부호화를 적용한 이미지 압축방법의 제2실시예를 도시한 순서도,
도 9는 도 8에 의한 부호화 데이터에 대한 복호화 과정을 도시한 순서도, 그리고
도 10은 본 발명에 따른 제1실시예 및 제2실시예를 통하여 이미지 압축을 실행함에 따른 각각의 실시예에 따른 이미지의 압축률을 나타내 도면이다.
상기와 같은 목적은 본 발명에 따라, 전송하기 위한 이미지에 대해 데이터의 전송률 및 복호 성능을 높이기 위한 이미지 압축방법에 있어서, 상기 이미지에 대응하여 설정된 각각의 코드에 대해 반복 여부를 판단하고, 반복되는 코드에 대해서는 반복되는 코드의 시작위치 및 개수를 나타내는 링크 데이터(Linked Data)로 부호화하고 반복되지 않은 코드에 대해서는 해당 코드를 나타내는 링크되지 않는 데이터(Unlinked Data)로 부호화하는 제1부호화단계; 및 상기 링크 데이터의 전체 사이즈 정보를 나타내는 링크 데이터 크기를 설정하고, 상기 링크 데이터를 연속적으로 배치하여 상기 링크 데이터 크기를 연속하여 배치된 상기 링크 데이터와 이웃하여 배치하며, 상기 연속하여 배치된 링크 데이터와 이웃하여 상기 링크되지 않은 데이터를 배치하여 상기 이미지를 부호화 데이터로 부호화하는 제2부호화단계;를 포함하는 이미지 압축방법에 의해 달성된다.
상기와 같은 목적은, 상기 이미지에 대응하여 설정된 각각의 코드에 대해 반복 여부를 판단하고, 반복되는 코드에 대해서는 반복되는 코드의 시작위치 및 개수를 나타내는 링크 데이터(Linked Data)로 부호화하고 반복되지 않은 코드에 대해서는 해당 코드를 나타내는 링크되지 않는 데이터(Unlinked Data)로 부호화하는 제1부호화단계; 및 상기 링크 데이터 각각에 대해 허용 가능한 범위의 에러값를 설정하고, 상기 링크 데이터를 설정된 범위의 허용 에러값으로 부호화하는 제2부호화단계;를 포함하는 이미지 압축방법에 의해 달성된다.
이때, 허용 에러값은 가변적으로 설정이 가능하며, 상기 허용 에러값의 허용 범위가 클 수록 상기 이미지에 대한 압축 효율을 높일 수 있다.
상기와 같은 목적은, 부호화되는 상기 이미지의 픽셀에 대한 현재 포지션(pEncode) 및 상기 픽셀 중 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션(pSource)을 0으로 초기화하는 단계; 상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 지를 비교하는 단계; 상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 것으로 판단되면, 상기 현재 포지션에서부터 임의의 포지션까지의 코드값과 상기 비교 대상의 픽셀 포지션에서부터 상기 현재 포지션의 전단까지의 코드값의 차이값을 비교하는 단계; 상기 차이값에 대해 설정된 범위의 허용 가능 에러값에 포함되는 값을 하나의 허용값으로 나타내고, 상기 허용값의 중복 여부를 판단하는 단계; 및 반복되어 발생하는 허용값은 반복되어 발생하는 상기 허용값의 시작위치 및 개수를 포함하는 링크 데이터로 변환하고, 반복하여 발생하지 않는 허용값은 해당 허용값을 유지하여 상기 이미지를 부호화 데이터로 부호화하는 단계;를 포함하는 이미지 압축방법에 의해 달성된다.
상기와 같은 목적은, 부호화되는 상기 이미지의 픽셀에 대한 현재 포지션(pEncode) 및 상기 픽셀 중 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션(pSource)을 0으로 초기화하는 단계; 상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 지를 비교하는 단계; 상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 것으로 판단되면, 상기 현재 포지션에서부터 임의의 포지션까지의 코드값과 상기 비교 대상의 픽셀 포지션에서부터 상기 현재 포지션의 전단까지의 코드값에 대해 반복 여부를 판단하는 단계; 반복되는 코드값이 존재하는 경우 상기 반복되는 코드값의 시작위치 및 개수를 포함하는 링크 데이터를 생성하고, 반복되는 코드값이 존재하지 않는 경우 해당 코드값을 링크되지 않는 데이터로 유지하는 단계; 상기 링크 데이터의 전체 사이즈 정보를 설정하고, 상기 링크 데이터를 연속하여 배치하며, 상기 연속하여 배치된 링크 데이터의 전단에 상기 링크 데이터의 전체 사이즈 정보를 배치하는 단계; 및 상기 연속하여 배치된 링크 데이터의 후단에 링크되지 않은 데이터를 배치하는 단계;를 포함하는 이미지 압축방법에 의해 달성된다.
상기 링크 데이터의 전체 사이즈는 4byte 및 6byte 중 어느 하나로 설정된다.
상기와 같은 목적은, 부호화되는 상기 이미지의 픽셀에 대한 현재 포지션(pEncode) 및 상기 픽셀 중 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션(pSource)을 0으로 초기화하는 단계; 상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 지를 비교하는 단계; 상기 현재 포지션이 상기 비교 대상의픽셀 포지션 보다 작은 것으로 판단되면, 상기 현재 포지션에서부터 임의의 포지션까지의 코드값과 상기 비교 대상의 픽셀 포지션에서부터 상기 현재 포지션의 전단까지의 코드값의 차이값을 비교하는 단계; 상기 차이값에 대해 설정된 범위의 허용 가능 에러값에 포함되는 값을 하나의 허용값으로 나타내고, 상기 허용값의 중복 여부를 판단하는 단계; 반복되어 발생하는 허용값은 반복되어 발생하는 상기 허용값의 시작위치 및 개수를 포함하는 링크 데이터로 변환하고, 반복하여 발생하지 않는 허용값은 해당 허용값을 유지하여 상기 이미지를 부호화 데이터로 부호화하는 단계; 및 상기 링크 데이터의 전체 사이즈 정보를 설정하고, 상기 링크 데이터를 연속하여 배치하며, 상기 연속하여 배치된 링크 데이터의 전단에 상기 링크 데이터의 전체 사이즈 정보를 배치하고, 상기 연속하여 배치된 링크 데이터의 후단에 링크되지 않은 데이터를 배치하는 단계;를 포함하는 이미지 압축방법에 의해 달성된다.
부호화단계는 허용 에러 부호화방법이고, 상기 배치단계는 다이나믹 링크 사이즈 부호화방법이다. 허용 가능 에러값은 가변적으로 설정이 가능하며, 상기 허용 가능 에러값의 허용 범위가 클 수록 상기 이미지에 대한 압축 효율을 높일 수 있다. 링크 데이터의 전체 사이즈는 4byte 및 6byte 중 어느 하나로 설정된다.
본 발명에 따르면, 비손실압축 방법에 허용에러 부호화(Permissible-Error Encoding : PE Encoding )와 다이나믹 링크 사이즈(Dynamic Link-Size)방법을 선택적으로 적용하여 이미지를 압축함으로써, 이미지 압축에 대한 효율을 높일 수 있다. 예를 들어, 비손실 압축 중 림펠-집 압축 알고리즘을 적용할 수 있다. 또한, 대상 이미지에 대해 허용에러 부호화의 압축방법을 적용하여 근소한 차이를 같은코드값으로 부호화 처리함으로써, 기존의 림펠-집 압축방법만을 이용하여 이미지를 압축하는 것에 비하여 월등히 좋은 압축효과를 얻을 수 있다. 그리고, 림펠-집 압축방법에 따라 부호화된 이미지에 허용 에러 부호화를 적용한 이미지에 대하여 다이나믹 링크 사이즈 부호화방법을 추가로 적용함으로써, 이미지에 대해 3번 압축하는 효과를 얻을 수 있어 보다 높은 압축 효율을 얻을 수 있다.
이하, 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
본 발명의 실시예는 비트맵 이미지를 압축하기 위한 알고리즘으로써 기존의 림펠-집 압축방법을 사용하고, 본 실시예에 따라 제시되는 허용에러 부호화방법 및 다이나믹 링크 사이즈 부호화방법을 적용하는 방법이 기술된다.
본 실시예를 설명함에 앞서, 림펠-집 압축방법에 대해 기술한다. 이미지를 나타내는 방법에는 여러 가지가 있으나 비트맵(Bitmap)을 표현하는 RGB 코드(code)값이 대표적이라 할 수 있다. 이미지의 컬러비트(colorbit)에 따라 여러 종류의 비트맵(Bitmap)으로 나누어 질 수 있다. 예를 들어, 24비트 비트맵의 경우 R-G-B가 각각 8비트(bits)씩 구성되고, 16비트 비트맵의 경우에는 R-G-B가 각각 5비트-6비트-5비트로 구성되는 등, 디바이스에 따라 달라지게 된다. 1 픽셀(pixel)을 표현하기 위하여 16비트 비트맵의 경우에는 2 바이트(bytes)가 필요하게 된다. 그러므로, "128 ×160" 사이즈의 이미지를 16비트 비트맵으로 표현하게 되면 아래 [수학식 1]과 같이 40 킬로바이트(Kbytes)의 메모리가 필요하게 된다.
128 ×160 ×2 = 40960 [bytes] = 40 [Kbytes]
도 1은 16비트 비트맵에서 1 픽셀(pixel)을 나타내는 RGB 코드(code)의 구성을 나타낸 도면이다. 도시된 바와 같이, 1픽셀의 RGB 코드 구성은 R-G-B가 각각 5비트-6비트-5비트의 구성을 가지고 있다. 이에 따라, 레드(Red) 및 블루(Blue)는 0~31의 값을 가질 수 있고, 그린(Green)은 0~63의 값을 가질 수가 있다.
한편, 림펠-집 압축방법은 반복되는 패턴을 부호화하여 하나의 링크(link)로서 출력하는 방식이다. 여기서, 링크는 반복되는 패턴의 시작위치와 반복되는 패턴의 개수로 구성된다. 본 발명의 실시예에서는 림펠-집 압축방법에서의 압축 단위를 RGB 코드로 하고 연속되는 픽셀의 RGB 코드값을 비교하여 같은 패턴의 RGB 코드값이 나타나게 되었을 때 하나의 링크로 출력함으로써 부호화를 수행하게 된다. 패턴을 비교하여 일치하는 패턴이 없을 경우에는 그대로 로(raw) 데이터를 부호화 데이터에 포함시키고 링크로 구성된 부분에서는 패턴의 길이에 따라 압축의 효과가 달라질 것이다. 도 2는 이러한 림펠-집 압축방법에 따라 압축된 RBG코드의 부호화 데이터를 나타낸 도면이다. 도시된 바와 같이, 림펠-집 압축방법에 따라 압축된 부호화데이터(D)는 중복 패턴에 대해 링크된 데이터(Linked Data)(L) 및 중복 패턴이 존재하지 않는 링크되지 않는 데이터(Unlinked Data)(L)를 포함한다.
림펠-집 압축방법은 반복되는 패턴의 데이터를 발견하게 되면, 반복된 패턴의 데이터를 링크 데이터(Linked Data)로 만들어 부호화된 데이터에 포함시킨다. 이때, 단위 링크 데이터의 포맷(format)은 "Link Identifier", "Start Offset", 및 "Matched Number"를 갖는다. "Link Identifier"는 복호(decoding)시에 다른 데이터와 구분하여 다음 2개의 데이터가 링크 데이터(Linked Data)라는 것을 구분하기위한 구분자 기능을 위한 것이다. "Start Offset"는 현재 링크가 연속된 픽셀의 스트림(stream) 중 몇 번째 스트림과 일치하는지를 나타내는 값이다. "Matched Number"는 현재의 옵셋(offset)에서부터 일치하는 스트림의 개수를 나타낸다.
여기에서 "Link Identifier"는 현재 부호화하는 이미지의 모든 RGB 코드값과 다른 값이어야만 한다. 그 이유는 복호시에 다른 RGB 코드와 같은 코드가 "Identifier"로 사용되었을 때, 그 코드가 실제 RGB 코드인지 아니면 "Link Identifier"로 사용된 것인지를 구별할 수가 없기 때문이다. 만약 16비트 비트맵을 부호화할 때에는 전체 이미지를 검색하여 사용하지 않는 RGB 코드값을 "Link Identifier"로 사용할 수 있고 그보다 작은 n비트 비트맵의 경우에는 첫 번째 비트를 "Link Identifier"로 인식하도록 할 수 있다. 그리고 "Start Offset"은 전체 이미지를 픽셀 단위의 RGB 코드로 나열하였을 때에 몇 번째 픽셀부터 일치하는 패턴이 존재하는지를 나타내는 항목이다. 또한, "Matched Number"는 "Start offset"부터 일치하는 패턴의 개수를 나타낸다.
도 3은 비손실 압축방법 중 림펠-집 압축방법을 나타낸 순서도이다. 먼저, 대상 이미지를 압축하기 위해 필요한 각 가변치(variable)를 초기화한다(S100). 이때, 가변치는 "MaxPixel", "pEncode", 및 "pSource"가 있다. "MaxPixel"는 부호화될 전체 픽셀의 개수이고, "pEncode"는 부호화되는 픽셀의 현재 포지션(position)이며, "pSource"는 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션을 나타낸다. 이에 따라, S100단계에서는, "MaxPixel"을 현재 이미지의 가로×세로 픽셀로 초기화되고, "pEncode" 및 "pSource"는 처음이므로 각각 0으로 초기화된다.
가변치가 초기화되면, "pEncode"와 "MaxPixel"의 포지션을 비교한다(S110). 이때, "pEncode"의 포지션이 "MaxPixel"의 포지션 보다 작지 않은 것으로 판단되면, 부호화 동작을 끝낸다. "pEncode"의 포지션이 "MaxPixel"의 포지션 보다 작은 것으로 판단되면, 현재 픽셀과 이전 픽셀을 비교하여 pEncode 내지 (pEncode+α)까지의 포지션과 일치하는 스트림을 pSource 내지 (pSource-1) 사이의 포지션에서 찾아 각 픽셀에 대해 일치하는 개수, 즉 각 픽셀에 대해 반복되는 패턴의 개수가 가장 큰 값을 링크 데이터(Linked Data)로 등록시킨다(S120).
이에 따라, 반복되는 패턴의 존재 유무에 따라 등록된 링크 데이터가 존재하는지를 판단하고(S130), 등록된 링크 데이터가 존재하는 것으로 판단되면 부호화 데이터로 링크 데이터를 출력한다(S140). 또한, 등록된 링크 데이터가 존재하지 않는 것으로 판단되면, 부호화 데이터로 pEncode 포지션의 RGB 코드를 출력한다(S150). 이에 따라, 최종적으로 얻어지는 데이터는 도 2와 같은 형식을 갖게된다.
S140단계에서 부호화 데이터로 링크 데이터를 출력하게 되면, 부호화되는 픽셀의 현재 포지션 pEncode을 링크 데이터의 크기 만큼 증가한다(S160). 도면에서는 링크 데이터의 크기를 α로 설정하고 있다. S150단계에서 부호화 데이터로 pEncode 포지션의 RGB 코드를 출력하게 되면, 부호화되는 픽셀의 현재 포지션 pEncode을 1 픽셀 증가한다(S170). S160단계 및 S170단계를 수행하면, 비교 대상이 될 이전 픽셀의 포지션 pSource를 설정한다(S180). 이렇게 설정된 pSource에기초하여 S110단계 내지 S180단계를 반복 수행하게 된다.
S180단계에서 pSource 값이 0이 된다면 부호화의 시간이 길어지는 대신 최적의 링크 데이터를 찾게 되므로 압축의 효율이 높아질 것이며, pEncode의 값에 따라 일정한 윈도우(Window)의 크기를 갖게 된다면 부호화 시간은 줄어들어도 최적의 링크 데이터가 아니므로 압축 효과가 떨어질 것이다.
도 4는 도 3의 링크 데이터 등록단계(S120)를 보다 상세히 도시한 순서도이다. 먼저, pEncode가 pSource보다 작은 것으로 판단되면, pEncode값을 기준으로 비교하며 증가하는 포지션인 pEncMove를 pEncode로, pSource값을 기준으로 비교하며 증가하는 포지션인 pSrcMove를 pSource로, 및 비교를 시작하기 위한 pSource의 offset인 nOffset을 0으로 초기화한다(S121).
pEncMove, pSrcMove 및 nOffset이 초기화되면, pEncMove가 pSrcMove보다 큰지를 판단한다(S122). pEncMove가 pSrcMove보다 크지 않은 것으로 판단되면, 이미지의 압축 동작을 종료한다. pEncMove가 pSrcMove보다 큰 것으로 판단되면, 현재 이미지의 픽셀순으로 정렬된 RGB 코드 스트림인 Stream[pEncMove]와 이전 이미지의 픽셀순으로 정렬된 RGB 코드 스트림인 Stream[pSrcMove]가 같은지를 비교한다(S123). Stream[pEncMove]와 Stream[pSrcMove]가 같은 것으로 판단되면, pEncMove, pSrcMove, 및 비교결과가 일치하는 스트림(Stream)의 개수인 nMatch를 각각 1씩 증가시킨다(S124).
Stream[pEncMove]와 Stream[pSrcMove]가 같지 않은 것으로 판단되면, 비교결과가 일치하는 스트림(Stream)의 개수인 nMatch가 링크 데이터 판단을 위해 설정된링크 데이터 최소값(Minimum Link Size : MLS)보다 큰지를 판단한다(S125). 이때, 링크 데이터 최소값의 설정은 각 픽셀의 구성이 3픽셀 정도의 크기를 가지고 있으므로 3픽셀 이하의 데이터를 링크 데이터로 표현하게 되면, 압축이 되지 않고 오히려 부호화 데이터의 크기가 커지는 결과를 초래하게 된다. 따라서, 비교된 데이터의 크기가 어느 정도의 크기 이상이 될 때에만 비교결과가 일치하는 스트림의 개수인 nMatch를 링크 데이터를 추가한다. 만약, 비교결과가 일치하는 스트림의 개수인 nMatch가 링크 데이터 최소값보다 큰 것으로 판단되면, nMatch를 링크 데이터로 추가한다.
pEncode와 pSource를 비교하는 윈도우 맵핑과정 중에서 기존의 링크 사이즈 보다 더 큰 비교 결과를 갖는 nMatch를 얻게되면, 이전 nMatch에 대응하여 추가된 링크 데이터를 새로운 nMatch에 대응하는 링크 데이터로 대체시킨다(S126). 즉, 여러 개의 추출된 링크 데이터 중에서 가장 일치하는 데이터가 많은 nMatch를 링크 데이터로 선택하게 된다.
비교를 시작하기 위한 pSource의 offset인 nOffset을 1증가시키고, pEncMove를 pEncode로, pSrcMove를 pSrcMove에 nOffset을 더한 값으로 설정한다(S127). 이에 따라, nOffset, pEncMove, 및 pSrcMove가 새로 설정되면, 부호화되는 픽셀의 현재 포지션인 pEncode와 부호화될 전체 픽셀의 개수인 MaxPixel이 같은지를 판단한다(S128).
부호화되는 픽셀의 현재 포지션인 pEncode와 부호화될 전체 픽셀의 개수인 MaxPixel이 같은 것으로 판단되면 S126단계에서 얻어진 링크 데이터에 대해 S130단계를 수행하고, pEncode와 MaxPixel이 같지 않은 것으로 판단되면 S122단계 내지 S127단계를 수행한다.
도 5는 도 3의 림펠-집 압축방법에 따라 압축된 이미지에 대한 복호화가 수행된 상태를 나타낸 도면이다. 도시된 바와 같이, 림펠-집 압축방법에 의해 부호화될 때 등록된 링크 데이터를 분석하여 그 해당 데이터를 복사하여 놓으면 복호화된다. 부호화되는 픽셀의 포지션을 1씩 증가하며 "Link Identifier"를 만날 때까지 링크되지 않은 데이터(Unlinked Data)를 복사한다. 링크되지 않은 데이터(Unlinked Data)는 그 자체가 RGB 코드값이므로 다른 처리가 불필요하다. 그리고 "Link Identifier"를 발견하였을 경우에는 "Start Offset"과 "Matched Number"를 분석(parsing)함으로써 이전 픽셀로부터 해당 데이터를 복사할 수 있다. 이와 같은 과정으로 복호화를 하였을 경우, 그 속도는 로 데이터(Raw Data)를 그대로 사용하는 만큼 디바이스의 CPU에 부담을 줄일 수 있음으로 해서 빠른 화면전환의 경우에도 부드럽게 복호화가 가능하다.
도시된 바에 따르면, 연속된 픽셀의 RGB 코드를 압축하였을 때, "Link Identifier"가 "0xFFFF"이고 각각의 링크가 어떤 값으로 복호화 되는지를 나타내고 있다.
이하, 상기 서술한바와 같은 림펠-집 압축방법에 본 발명에 따른 허용에러 부호화(Permissible-Error Encoding)라는 부호화방법을 적용하여 이미지를 압축하는 방법의 제1실시예에 대해 설명한다.
이미지의 비트맵(Bitmap)은 각 픽셀이 도 1에 도시된 바와 같이, RGB 코드로이루어져 있고 R-G-B 각각의 값에 따라서 이미지의 색이 결정된다. 이미지의 색 팔레트를 만들기 위하여 인덱싱(indexing)을 어떻게 하느냐에 따라 색깔이 달라지겠지만, 기본적인 팔레트를 사용한다고 가정하였을 때 R-G-B 값은 각각의 이웃하는 색과 그렇게 많은 차이가 나지 않는다. 즉, 어떤 픽셀값의 R이 25의 값을 가지고 있을 때와 26이나 24를 가지고 있을 때와는 눈으로 식별하기에 큰 차이가 없다. 물론 G, B값도 마찬가지이다.
본 실시예에서는 상기의 원리를 이용하여 기존의 림펠-집 압축방법에 허용에러 부호화(Permissible-Error Encoding)라는 부호화방법을 적용하여 이미지를 압축한다. 원래의 림펠-집 압축방법은 비손실 압축방법이지만 부호화할 때에 압축이 잘 되는 방향으로 에러를 유발시켜서 부호화한다면, 많은 압축효과를 볼 수 있다.
도 4의 S123단계에서 현재 픽셀과 이전 픽셀의 RGB 코드값이 같은지를 비교한다. 여기에서 두 개의 코드값이 같다면 비교를 계속하고, 다르다면 비교를 멈춤으로 해서 상당히 조건이 제한적이다. 만약 이 조건을 상기와 같이 비교 대상이 데이터에 대해 허용 가능한 여유를 둔다면 좀 더 많은 픽셀이 비교조건에서 통과되어 좀 더 많은 링크 데이터를 생성할 수 있고 링크 데이터가 많이 생성되면 압축률을 보다 높일 수 있을 것이다. 그러므로 도 4의 S123단계의 조건을 도 6과 같이 S123'단계의 조건으로 바꾸어 준다면 압축률을 보다 높일 수 있다. 도 6에서 허용 가능한 에러(err)값을 보다 많이 주면 줄 수록 원래의 이미지는 손실이 있지만 압축률은 그만큼 높아질 수 있다.
도 6에 도시된 가변값 중 "err"은 두 픽셀 사이의 허용 에러값이고, "R(pE,pS)"는 pE픽셀과 pS픽셀의 레드 코드(Red code)의 차이값이며, "G(pE, pS)"는 pE픽셀과 pS픽셀의 그린 코드(Green code)의 차이값이다. 또한, "B(pE, pS)"는 pE픽셀과 pS픽셀의 블루 코드(Blue code)의 차이값이고, "pE"는 "pEncMove"이며, "pS"는 "pSrcMove"이다.
이하, 상기 서술한 바와 같은 림펠-집 압축방법에 본 발명에 따른 다이나믹 링크 사이즈 부호화(Dynamic Link-size Encoding)라는 부호화방법을 적용하여 이미지를 압축하는 방법의 제2실시예에 대해 설명한다.
림펠-집 압축방법의 기본 개념은 상기에서 기술한바와 같이 반복되는 스트림(stream)을 링크 데이터(Linked Data)로 바꾸어 부호화 데이터(Encoding Data)에 포함시키는 방법이다. 링크 데이터의 포맷(Format)은 여러 가지가 될 수 있으나 꼭 필요한 것은, 소스 픽셀(source pixel)의 옵셋(offset) 및 일치하는 픽셀(pixel)의 개수이다. 상기에서는 "Link Identifier"라는 것을 사용하여 소스 픽셀의 옵셋 및 일치하는 픽셀의 개수를 표현하였으나, 16비트 비트맵의 경우 "Link Identifier"를 정의하기 위하여서는 전체의 이미지를 검색하여 사용하지 않는 RGB 코드를 찾아내는 과정이 더 요구된다. 그러나 이러한 링크 데이터를 모두 모아서 하나의 헤더(header)로 표시한다면 이러한 "Link Identifier"는 더 이상 필요하지 않고 그 대신에 각각의 링크가 삽입되어 처리되어야 할 픽셀의 옵셋이 필요하게 된다. 그리고 부호화 데이터의 맨 앞에는 링크 데이터의 크기를 나타내어 링크되지 않은 데이터(Unlinked Data)와 구별하여 줄 수 있어야 한다. 그러므로 상기에서 제시한 링크 데이터의 포맷을 아래와 같이 변경하여 나타낼 수 있다.
링크 데이터의 포맷은, "Start Offset", "Encode Offset", 및 "Matched Number"를 갖는다. "Start Offset"는 현재 링크가 연속된 픽셀의 스트림 중에서 몇 번째 스트림과 일치하는지를 나타내는 값이다. "Encode Offset"은 현재 링크의 데이터로부터 얻어내는 스트림을 몇 번째 픽셀에 위치해야하는지를 나타내는 값이다. "Matched Number"는 현재의 옵셋에서부터 일치하는 스트림의 개수를 나타내는 값이다.
링크 데이터의 형식을 상기와 같은 방법으로 변경하면, 도 2에 도시된 림펠-집 압축방법에 따라 생성된 데이터를 도 7과 같은 부호화 데이터로 변경할 수 있다. 따라서, 림펠-집 압축방법 및 다이나믹 링크 사이즈 부호화(Dynamic Link-size Encoding)에 의해 압축된 부호화 데이터는 링크 데이터의 사이즈정보(Linked Data Size), 링크 데이터(Linked Data), 및 링크되지 않은 데이터(Unlinked Data)로 표현된다.
이와 같은 방법으로 부호화 데이터를 바꾼다 하더라도 도 2에 도시된 부호화 데이터와 비교할 때 압축률에 있어서는 별 차이가 없다. 만약 전체 픽셀 개수가 65,536(16-Bit)보다 작다고 가정한다면, 하나의 링크 데이터의 크기는 "Start Offset(2byte)", "Encode Offset(2byte)", "Matched Number(2byte)"로 총 6byte가 된다. 그러나 도 7과 같이 변경된 후에는 각 링크 유닛(Linked Unit)을 다이나믹하게 정할 수 있게 된다.
도 3 및 도 4에서 제시한 부호화 과정 중에 도 3의 S140단계 내지 S150단계에서 부호화 데이터를 추출하게 되는데, S140단계에서는 링크 데이터(Linked Data)를 출력하고 S150단계에서는 링크되지 않은 데이터(Unlinked Data)를 출력한다. 그리고 도 4의 S126단계에서 출력할 링크 데이터를 만들어 주는데, 이 과정에서 링크 데이터를 먼저 결정하고 도 3의 S140단계에서 링크 데이터를 출력할 때 링크 데이터의 크기를 경우에 따라 다르도록 다이나믹하게 적용할 수 있다.
도 8은 림펠-집 압축방법에 다이나믹 링크 사이즈 부호화를 적용한 이미지 압축방법의 제2실시예를 도시한 순서도이다.
도 3의 S130단계에서 이미지 중 중복되는 패턴값이 존재하는 것으로 판단되면, 소스 픽셀(Source pixel)의 시작 위치를 나타내는 "Start_Offset(2byte)"을 추가한다(S141). 현재 링크의 Encode_Offset(pE(n))에서 이전 링크의 Encode_Offset(pE(n-1))을 뺀 값(pE(n)-pE(n-1))이 128보다 작고, "Matched_Number"가 256보다 작은지를 판단한다(S142).
"pE(n)-pE(n-1)"이 128보다 작고, "Matched_Number"가 256보다 작은 것으로 판단되면, "pE(n)-pE(n-1)"의 결과값에 대응하는 Encode_Offset(1byte)을 추가한다(S143). Encode_Offset(1byte)가 추가되면, Matched_Number(1byte)를 추가한다(S144). 따라서, 림펠-집 압축방법에 의해 압축된 데이터에 대해 다이나믹 링크 사이즈를 적용함으로써, 총 4byte의 링크 데이터를 생성한다(S145). 즉, 총 4byte의 링크 데이터의 포맷은 2byte의 "Start_Offset", 1byte의 "pE(n)-pE(n-1)", 및 1byte의 "Matched_Number"로 구성된다.
한편, "pE(n)-pE(n-1)"이 128보다 작지 않거나 및 "Matched_Number"가 256보다 작지 않은 것으로 판단되면, "pE(n)-pE(n-1)"의 결과값에 대응하는Encode_Offset(2byte)을 추가한다(S146). Encode_Offset(2byte)가 추가되면, Matched_Number(2byte)를 추가한다(S147). 따라서, 림펠-집 압축방법에 의해 압축된 데이터에 대해 다이나믹 링크 사이즈를 적용함으로써, 총 6byte의 링크 데이터를 생성한다(S148). 즉, 총 6byte의 링크 데이터의 포맷은 2byte의 "Start_Offset", 2byte의 "pE(n)-pE(n-1)", 및 2byte의 "Matched_Number"로 구성된다.
도 8에서와 같이 림펠-집 압축방법에 다이나믹 링크 사이즈 부호화를 적용할 수 있는 이유는 "Start_Offset"의 값은 각 링크마다 랜덤(Random)하게 설정되는 반면에 "Encode_Offset"의 값은 이전 링크보다 항상 큰 값으로 설정될 수밖에 없으므로 실제의 링크 데이터에 출력하는 값을 현재 링크의 "Encode_Offset"대신에 이전 링크의 "Encode_Offset"과의 차이를 출력하게 되면 보다 작은 값으로 현재 "Encode_Offset"을 표현 할 수 있으므로 1 byte에 표현이 가능하다. 그리고 "Matched Number"의 값도 항상 256을 초과하는 것이 아니기 때문에 이러한 두 가지 조건이 모두 만족하게 되었을 때 4 byte의 링크 데이터 사이즈 부호화를 적용함으로써 다이나믹 링크 사이즈 부호화에 따른 이미지의 압축을 구현할 수 있다.
도 9는 도 8에 의한 부호화 데이터에 대한 복호화 과정을 도시한 순서도이다. 먼저, 링크 데이터의 무빙 옵셋(moving offset)인 "nMove"를 0으로 초기화하고, 부호화된 데이터를 저장하는 "Encoded buffer"로부터 부호화 데이터(encoded data)에 대한 전체 링크 사이즈인 "nLinkSize"를 로딩한다(S210). 여기서, "Encoded buffer"로부터 "nLinkSize"를 로딩하는 이유는, 부호화 데이터에서 첫 번째 2byte는 링크 데이터 리스트의 전체 크기를 나타내기 때문에 부호화 데이터에 대한 전체 링크 사이즈를 나타내는 "nLinkSize"를 로딩한다. 링크 데이터의 무빙 옵셋인 "nMove"를 0으로 초기화 및 부호화 데이터에 대한 전체 링크 사이즈인 "nLinkSize"가 로딩되면, 초기화된 "nMove"가 전체 링크 사이즈인 "nLinkSize"보다 작은지를 판단한다(S211).
"nMove"가 "nLinkSize"보다 작지 않은 것으로 판단되면, 모든 링크된 데이터에 대한 복호화가 끝난 것을 의미하므로 스트림 버퍼(stream buffer)에 잔존하는 링크되지 않은 데이터(Unlinked Data)를 출력한다(S212). 이에 따라, 압축된 이미지에 대한 복호화 동작을 종료한다(S213).
한편, "nMove"가 "nLinkSize"보다 작은 것으로 판단되면, "Encoded buffer"(2byte)로부터 링크 데이터 포맷의 Start_Offset을 추출하고, Encode_Offset값의 첫 번째 비트(bit)를 기초로 링크의 크기가 4 byte인지 6 byte인지를 분석한다(S214). 분석 결과에 따라 링크의 크기가 6 byte인지를 판단한다(S215). 링크 크기가 6 byte인 것으로 판단되면, 링크 데이터로부터 2 byte의 "Encode_Offset" 및 2 byte의 "Matched_Number"를 로딩한다(S216). 또한, 링크 데이터의 무빙 옵셋(Moving Offset)인 "nMove"를 6 증가시킨다.
S215단계에서 링크 크기가 6 byte가 아닌 것으로 판단되면 링크 크기가 4 byte인 것으로 판단하고, 링크 데이터로부터 1 byte의 "Encode_Offset" 및 1 byte의 "Matched_Number"를 로딩한다(S217). 또한, 링크 데이터의 무빙 옵셋(Moving Offset)인 "nMove"를 4 증가시킨다.
S216단계 및 S217단계를 수행하게 되면, 링크되지 않은 데이터를 저장하는 버퍼(Unlinked data buffer)로부터 링크되지 않은 스트림(Unlinked_stream)에서 링크 데이터의 "Encode_Offset"까지의 데이터를 복호된 데이터를 저장하는 버퍼인 "Decoding buffer"로 출력한다(S218). 링크 데이터로부터 "Start_Offset"에서 "Matched_Number"까지의 스트림을 복사하여 "Decoding buffer"로 출력한다(S219). 이에 따라, "Start_Offset"에서 "Matched_Number"까지의 스트림을 이용하여 부호화된 링크 데이터를 복호한다. 이와 같이, S212단계에서 처럼 모든 링크 데이터를 복호한 후에 나머지 잔존하는 링크되지 않은 데이터(Unlinked Data)를 모두 출력하게 되면, 압축된 이미지에 대한 복호동작이 종료된다.
도 10은 본 발명에 따른 제1실시예 및 제2실시예를 통하여 이미지 압축을 실행함에 따른 각각의 실시예에 따른 이미지의 압축률을 나타내 도면이다. 이때, 림펠-집 압축방법이 통계적 부호화 방법을 기본으로 하고 있으므로 이미지의 RGB 코드값에 따라서 서로 다른 결과가 나타날 수 있지만, 도 10의 예에서는 림펠-집 압축방법에 허용에러 부호화(Permissible-Error Encoding)방법과 다이나믹 링크 사이즈(Dynamic Link Size)방법을 적용할 때 얼마나 압축 효과가 좋아지는지를 설명하고자 한다.
아래의 본 예의 이미지 전체 픽셀 사이즈는 14,336픽셀(=128×112)이고 1픽셀 당 16비트 비트맵 데이터를 부호화하였다. 16비트 비트맵이므로 1픽셀 당 2byte의 크기를 가지므로, 전체 원본 이미지의 크기는 28,672 bytes가 된다. 모든 부호화방법은 림펠-집 압축방법을 사용하였으며, 허용에러 부호화의 효과를 보이기위하여 에러 율(Error Rate)을 하나씩 증가하며 보여주었다. 그리고 다이나믹 링크 사이즈의 효과를 보이기 위하여 각 허용에러 부호화의 경우마다 적용여부에 따른 압축 크기를 표시, 비교, 및 분석할 수 있도록 하였다. 각각의 복호된 이미지의 손상여부는 허용에러 부호화에 따라 차이가 있을 뿐 다이나믹 링크 사이즈는 이미지의 손상을 시키는 것과 무관하므로 본 예와 같이 나타낼 수 있다. 또한 각각의 이미지의 손상 정도를 표시하기 위하여 실제 표시되는 이미지의 사이즈를 1.5배 확대하여 표시하였다.
각각의 실시 케이스(Case) 마다 허용 에러 부호화 율 값은 RGB 코드값으로써 원본의 이미지가 갖는 RGB 코드값과 비교하였을 때, ±n 만큼의 차이를 갖더라도 같은 RGB 코드로 인정하도록 부호화한 조건이다. 그리고 다이나믹 링크 사이즈의 적용여부는 다이나믹 링크 사이즈 방법을 적용하였을 때와 적용하지 않았을 때를 나누어 부호화 데이터의 크기를 비교한 것이다. 비교 결과에서 볼 수 있듯이 각각의 부호화된 후 복호되었을 경우의 이미지는 허용 에러 부호화 율이 높아질 수록 더 많은 손상이 진행되지만, 그 차이는 확대하여 보았을 경우에만 아주 미소하다는 것을 알 수 있다. 더군다나 허용 에러 부호화가 ±1정도만 된다면 원본 이미지와 거의 차이가 없을 정도로 이미지의 손실이 감지되기가 어렵다. 그러나 허용 에러 부호화 율이 높아지면 높아질 수록 압축률은 점점 좋아져서 ±3정도 되었을 때는 압축률이 38[%]까지 떨어진다. 게다가 다이나믹 링크 사이즈를 적용하였을 경우, 압축률은 최고 29[%]까지 압축되는 효과를 볼 수 있음을 확인할 수 있다.
본 발명에 따르면, 비손실압축 방법인 림펠-집(Lempel-Ziv) 압축방법에 허용에러 부호화(Permissible-Error Encoding : PE Encoding )와 다이나믹 링크 사이즈(Dynamic Link-Size)방법을 선택적으로 적용하여 이미지를 압축함으로써, 이미지 압축에 대한 효율을 높일 수 있다.
또한, 대상 이미지에 대해 허용에러 부호화의 압축방법을 적용하여 근소한 차이를 같은 코드값으로 부호화 처리함으로써, 기존의 림펠-집 압축방법만을 이용하여 이미지를 압축하는 것에 비하여 월등히 좋은 압축효과를 얻을 수 있다.
그리고, 림펠-집 압축방법에 따라 부호화된 이미지에 허용 에러 부호화를 적용한 이미지에 대하여 다이나믹 링크 사이즈 부호화방법을 추가로 적용함으로써, 이미지에 대해 3번 압축하는 효과를 얻을 수 있어 보다 높은 압축 효율을 얻을 수 있다.
이상에서는 본 발명에서 특정의 바람직한 실시예에 대하여 도시하고 또한 설명하였다. 그러나, 본 발명은 상술한 실시예에 한정되지 아니하며, 특허 청구의 범위에서 첨부하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능할 것이다. 특히, 상기에 상술한 본 발명의 제1실시예 및 제2실시예는 별도로 적용하여 실시될 수도 있고, 제1실시예 및 제2실시예를 함께 적용하여 실시될 수도 있다.

Claims (11)

  1. 전송하기 위한 이미지에 대해 데이터의 전송률 및 복호 성능을 높이기 위한 이미지 압축방법에 있어서,
    상기 이미지에 대응하여 설정된 각각의 코드에 대해 반복 여부를 판단하고, 반복되는 코드에 대해서는 반복되는 코드의 시작위치 및 개수를 나타내는 링크 데이터(Linked Data)로 부호화하고 반복되지 않은 코드에 대해서는 해당 코드를 나타내는 링크되지 않는 데이터(Unlinked Data)로 부호화하는 제1부호화단계; 및
    상기 링크 데이터의 전체 사이즈 정보를 나타내는 링크 데이터 크기를 설정하고, 상기 링크 데이터를 연속적으로 배치하여 상기 링크 데이터 크기를 연속하여 배치된 상기 링크 데이터와 이웃하여 배치하며, 상기 연속하여 배치된 링크 데이터와 이웃하여 상기 링크되지 않은 데이터를 배치하여 상기 이미지를 부호화 데이터로 부호화하는 제2부호화단계;를 포함하는 것을 특징으로 하는 이미지 압축방법.
  2. 전송하기 위한 이미지에 대해 데이터의 전송률 및 복호 성능을 높이기 위한 이미지 압축방법에 있어서,
    상기 이미지에 대응하여 설정된 각각의 코드에 대해 반복 여부를 판단하고, 반복되는 코드에 대해서는 반복되는 코드의 시작위치 및 개수를 나타내는 링크 데이터(Linked Data)로 부호화하고 반복되지 않은 코드에 대해서는 해당 코드를 나타내는 링크되지 않는 데이터(Unlinked Data)로 부호화하는 제1부호화단계; 및
    상기 링크 데이터 각각에 대해 허용 가능한 범위의 에러값를 설정하고, 상기 링크 데이터를 설정된 범위의 허용 에러값으로 부호화하는 제2부호화단계;를 포함하는 것을 특징으로 하는 이미지 압축방법.
  3. 제 2항에 있어서,
    상기 허용 에러값은 가변적으로 설정이 가능하며, 상기 허용 에러값의 허용 범위가 클 수록 상기 이미지에 대한 압축 효율이 높은 것을 특징으로 하는 이미지 압축방법.
  4. 전송하기 위한 이미지에 대해 데이터의 전송률 및 복호 성능을 높이기 위한 이미지 압축방법에 있어서,
    부호화되는 상기 이미지의 픽셀에 대한 현재 포지션(pEncode) 및 상기 픽셀 중 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션(pSource)을 초기화하는 단계;
    상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 지를 비교하는 단계;
    상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 것으로 판단되면, 상기 현재 포지션에서부터 임의의 포지션까지의 코드값과 상기 비교 대상의 픽셀 포지션에서부터 상기 현재 포지션의 전단까지의 코드값의 차이값을 비교하는 단계;
    상기 차이값에 대해 설정된 범위의 허용 가능 에러값에 포함되는 값을 하나의 허용값으로 나타내고, 상기 허용값의 중복 여부를 판단하는 단계; 및
    반복되어 발생하는 허용값은 반복되어 발생하는 상기 허용값의 시작위치 및 개수를 포함하는 링크 데이터로 변환하고, 반복하여 발생하지 않는 허용값은 해당 허용값을 유지하여 상기 이미지를 부호화 데이터로 부호화하는 단계;를 포함하는 것을 특징으로 하는 이미지 압축방법.
  5. 제 4항에 있어서,
    상기 허용 가능 에러값은 가변적으로 설정이 가능하며, 상기 허용 가능 에러값의 허용 범위가 클 수록 상기 이미지에 대한 압축 효율이 높은 것을 특징으로 하는 이미지 압축방법.
  6. 전송하기 위한 이미지에 대해 데이터의 전송률 및 복호 성능을 높이기 위한 이미지 압축방법에 있어서,
    부호화되는 상기 이미지의 픽셀에 대한 현재 포지션(pEncode) 및 상기 픽셀중 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션(pSource)을 초기화하는 단계;
    상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 지를 비교하는 단계;
    상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 것으로 판단되면, 상기 현재 포지션에서부터 임의의 포지션까지의 코드값과 상기 비교 대상의 픽셀 포지션에서부터 상기 현재 포지션의 전단까지의 코드값에 대해 반복 여부를 판단하는 단계;
    반복되는 코드값이 존재하는 경우 상기 반복되는 코드값의 시작위치 및 개수를 포함하는 링크 데이터를 생성하고, 반복되는 코드값이 존재하지 않는 경우 해당 코드값을 링크되지 않는 데이터로 유지하는 단계;
    상기 링크 데이터의 전체 사이즈 정보를 설정하고, 상기 링크 데이터를 연속하여 배치하며, 상기 연속하여 배치된 링크 데이터의 전단에 상기 링크 데이터의 전체 사이즈 정보를 배치하는 단계; 및
    상기 연속하여 배치된 링크 데이터의 후단에 링크되지 않은 데이터를 배치하는 단계;를 포함하는 것을 특징으로 하는 이미지 압축방법.
  7. 제 6항에 있어서,
    상기 링크 데이터의 전체 사이즈는 4byte 및 6byte 중 어느 하나인 것을 특징으로 하는 이미지 압축방법.
  8. 전송하기 위한 이미지에 대해 데이터의 전송률 및 복호 성능을 높이기 위한 이미지 압축방법에 있어서,
    부호화되는 상기 이미지의 픽셀에 대한 현재 포지션(pEncode) 및 상기 픽셀 중 반복되는 패턴을 찾기 위한 비교 대상의 픽셀 포지션(pSource)을 초기화하는 단계;
    상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 지를 비교하는 단계;
    상기 현재 포지션이 상기 비교 대상의 픽셀 포지션 보다 작은 것으로 판단되면, 상기 현재 포지션에서부터 임의의 포지션까지의 코드값과 상기 비교 대상의 픽셀 포지션에서부터 상기 현재 포지션의 전단까지의 코드값의 차이값을 비교하는 단계;
    상기 차이값에 대해 설정된 범위의 허용 가능 에러값에 포함되는 값을 하나의 허용값으로 나타내고, 상기 허용값의 중복 여부를 판단하는 단계;
    반복되어 발생하는 허용값은 반복되어 발생하는 상기 허용값의 시작위치 및 개수를 포함하는 링크 데이터로 변환하고, 반복하여 발생하지 않는 허용값은 해당 허용값을 유지하여 상기 이미지를 부호화 데이터로 부호화하는 단계; 및
    상기 링크 데이터의 전체 사이즈 정보를 설정하고, 상기 링크 데이터를 연속하여 배치하며, 상기 연속하여 배치된 링크 데이터의 전단에 상기 링크 데이터의 전체 사이즈 정보를 배치하고, 상기 연속하여 배치된 링크 데이터의 후단에 링크되지 않은 데이터를 배치하는 단계;를 포함하는 것을 특징으로 하는 이미지 압축방법.
  9. 제 8항에 있어서,
    상기 부호화단계는 허용 에러 부호화를 수행하는 단계이고, 상기 배치단계는 다이나믹 링크 사이즈 부호화를 수행하는 단계인 것을 특징으로 하는 이미지 압축방법.
  10. 제 9항에 있어서,
    상기 허용 가능 에러값은 가변적으로 설정이 가능하며, 상기 허용 가능 에러값의 허용 범위가 클 수록 상기 이미지에 대한 압축 효율이 높은 것을 특징으로 하는 이미지 압축방법.
  11. 제 10항에 있어서,
    상기 링크 데이터의 전체 사이즈는 4byte 및 6byte 중 어느 하나인 것을 특징으로 하는 이미지 압축방법.
KR10-2002-0078669A 2002-12-11 2002-12-11 이미지 압축방법 KR100532275B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2002-0078669A KR100532275B1 (ko) 2002-12-11 2002-12-11 이미지 압축방법
US10/701,648 US20040114809A1 (en) 2002-12-11 2003-11-05 Image compression method
US11/838,508 US20070274601A1 (en) 2002-12-11 2007-08-14 Image compression method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0078669A KR100532275B1 (ko) 2002-12-11 2002-12-11 이미지 압축방법

Publications (2)

Publication Number Publication Date
KR20040051710A true KR20040051710A (ko) 2004-06-19
KR100532275B1 KR100532275B1 (ko) 2005-11-29

Family

ID=32501351

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0078669A KR100532275B1 (ko) 2002-12-11 2002-12-11 이미지 압축방법

Country Status (2)

Country Link
US (2) US20040114809A1 (ko)
KR (1) KR100532275B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1560338A1 (de) * 2004-01-27 2005-08-03 Siemens Aktiengesellschaft Verfahren zur Speicherung von Prozesssignalen einer technischen Anlage
JP4438062B2 (ja) * 2004-10-06 2010-03-24 キヤノン株式会社 符号化装置、符号化装置の制御方法
KR20110138076A (ko) * 2010-06-18 2011-12-26 삼성전자주식회사 데이터 저장 장치 및 그것의 쓰기 방법
US9571698B1 (en) * 2012-03-30 2017-02-14 EMC IP Holding Company LLC Method and system for dynamic compression module selection
US9843702B1 (en) 2012-03-30 2017-12-12 EMC IP Holding Company LLC Method and system for dynamic compression module selection
US9843802B1 (en) 2012-03-30 2017-12-12 EMC IP Holding Company LLC Method and system for dynamic compression module selection
CN104809748B (zh) * 2015-05-13 2017-10-24 西安电子科技大学 基于变采样率和线性均值预测的图像压缩感知方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0818799A (ja) * 1994-04-26 1996-01-19 Konica Corp 画像処理装置
JP3240495B2 (ja) * 1994-09-14 2001-12-17 エー・アイ・ソフト株式会社 データの可逆符号化方法および装置、並びに、伸長装置
US5625712A (en) * 1994-12-14 1997-04-29 Management Graphics, Inc. Iterative compression of digital images
NL1000489C2 (nl) * 1995-06-02 1996-12-03 Oce Nederland Bv Werkwijze en inrichting voor comprimeren en decomprimeren van digitale beeldsignalen.
JPH09181610A (ja) * 1995-12-26 1997-07-11 Advantest Corp パターン圧縮方法及び装置
US5861827A (en) * 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search
GB9626359D0 (en) * 1996-12-19 1997-02-05 Olivetti Telemedia Spa Method for encoding digital information
US5930399A (en) * 1997-04-03 1999-07-27 Microsoft Corporation Data encoding for a communication channel supporting a subset of the characters to be transmitted
US6021227A (en) * 1997-06-30 2000-02-01 Hewlett-Packard Company Image compression system including encoder having run mode
WO1999044368A1 (en) * 1998-02-27 1999-09-02 Kanebo Limited Image data processing device and processing method
JP4242970B2 (ja) * 1998-07-09 2009-03-25 富士通株式会社 データ圧縮方法及びデータ圧縮装置
US6118904A (en) * 1998-08-27 2000-09-12 The United States Of America As Represented By The National Security Agency Method of encoding data to minimize the number of codewords
US6404927B1 (en) * 1999-03-15 2002-06-11 Exar Corporation Control point generation and data packing for variable length image compression
US6169499B1 (en) * 1999-06-19 2001-01-02 Unisys Corporation LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
US6351566B1 (en) * 2000-03-02 2002-02-26 International Business Machines Method for image binarization
US6522784B1 (en) * 2000-04-11 2003-02-18 International Business Machines Corporation Enhanced compression of gray-level images
JP2002091407A (ja) * 2000-09-20 2002-03-27 Ricoh Co Ltd 画像表示装置
US6707400B2 (en) * 2001-08-02 2004-03-16 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for fast longest match search
KR20020008101A (ko) * 2001-12-12 2002-01-29 주식회사 애니콤소프트웨어 데이터의 비트 인덱스 압축방법
US7373008B2 (en) * 2002-03-28 2008-05-13 Hewlett-Packard Development Company, L.P. Grayscale and binary image data compression
US6646578B1 (en) * 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method

Also Published As

Publication number Publication date
KR100532275B1 (ko) 2005-11-29
US20040114809A1 (en) 2004-06-17
US20070274601A1 (en) 2007-11-29

Similar Documents

Publication Publication Date Title
Hsieh et al. Lossless compression of VQ index with search-order coding
RU2417518C2 (ru) Эффективное кодирование и декодирование блоков преобразования
JP5039545B2 (ja) 映像符号化装置、映像符号化方法、および映像システム
US4028731A (en) Apparatus for compression coding using cross-array correlation between two-dimensional matrices derived from two-valued digital images
US8902992B2 (en) Decoder for selectively decoding predetermined data units from a coded bit stream
US5673042A (en) Method of and an apparatus for compressing/decompressing data
JP4760727B2 (ja) データ圧縮装置とその復号装置、それらの方法、及びプログラム
US20070274601A1 (en) Image compression method
JP2000295113A (ja) ハフマン符号化データ圧縮装置
KR101277712B1 (ko) 영상 처리 방법 및 장치
US6947606B2 (en) Skim encoding method for compression of a two dimensional array of data
US6078696A (en) HVQ compression of data and printing hints
Rizzo et al. Overlap and channel errors in adaptive vector quantization for image coding
EP0973339A2 (en) Compression by splitting each word and applying lossy compression to least significant bits
JP3266419B2 (ja) データ圧縮・伸長方式
Kim et al. Image compression using chain coding for electronic shelf labels (ESL) systems
US7164369B2 (en) System for improving storage efficiency of digital files
Bist et al. IMPROVED IMAGE COMPRESSION USING LOSSLESS HUFFMAN ENCODING (I2COM)
US20220172403A1 (en) Electronic shelf label managing server, display device and controlling method thereof
WO2005074146A1 (en) Data encoding using multi-dimensional redundancies
Hilles et al. Image coding techniques in networking
CN116156185A (zh) 一种基于增量优化的图像压缩和恢复方法
JP4377352B2 (ja) データ圧縮装置およびデータ圧縮プログラム
Akhtar et al. A Novel Image Compression Technique using Simple Arithmetic Addition
JPH06164944A (ja) 画像データの圧縮方法およびその装置ならびに画像データの復元方法およびその装置

Legal Events

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

Payment date: 20121030

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee