KR102138892B1 - 데이터 무손실 압축 장치 및 그 방법 - Google Patents

데이터 무손실 압축 장치 및 그 방법 Download PDF

Info

Publication number
KR102138892B1
KR102138892B1 KR1020190117696A KR20190117696A KR102138892B1 KR 102138892 B1 KR102138892 B1 KR 102138892B1 KR 1020190117696 A KR1020190117696 A KR 1020190117696A KR 20190117696 A KR20190117696 A KR 20190117696A KR 102138892 B1 KR102138892 B1 KR 102138892B1
Authority
KR
South Korea
Prior art keywords
identifier
compressed
code
compression
generated
Prior art date
Application number
KR1020190117696A
Other languages
English (en)
Inventor
심인보
Original Assignee
심인보
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 심인보 filed Critical 심인보
Priority to KR1020190117696A priority Critical patent/KR102138892B1/ko
Application granted granted Critical
Publication of KR102138892B1 publication Critical patent/KR102138892B1/ko
Priority to PCT/KR2020/012393 priority patent/WO2021060758A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6041Compression optimized for errors
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • 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/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 데이터 무손실 압축 장치 및 그 방법을 개시한다. 즉, 본 발명은 코딩된 데이터 안에서 0과 1의 개수가 평균적으로 비슷해지도록 심벌을 코딩하고, 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙을 수행함으로써, 인터리빙된 코드가 해당 코드북에 존재하여 압축될 확률을 높이게 하고, 이후 해당 코드북을 참조하면서 인터리빙된 코드를 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축한다. 이처럼 평균값과 편차값을 갖는 코딩된 데이터의 통계적 특성을 이용하여 코딩된 데이터를 압축함에 따라 압축 효율을 향상시킬 수 있다.

Description

데이터 무손실 압축 장치 및 그 방법{Apparatus for compressing data losslessly and method thereof}
본 발명은 데이터 무손실 압축 장치 및 그 방법에 관한 것으로서, 특히 코딩된 데이터 안에서 0과 1의 개수가 평균적으로 비슷해지도록 심벌을 코딩하고, 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙을 수행하고, 인터리빙된 코드를 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축하는 데이터 무손실 압축 장치 및 그 방법에 관한 것이다.
무손실 압축 방식은 압축된 데이터를 다시 복원(decompress)하였을 때 압축되기 이전의 원래 데이터와 모든 비트가 일치하도록 하는 압축 방법으로, 문장(text)이나 부호 데이터, 수치 데이터 파일 등을 압축하는데 사용하며, DPCM(Differential Pulse Code Modulation), RLC(Run Length Coding), 엔트로피 부호화 등이 있다.
이러한 무손실 압축 방식 중 엔트로피 부호화 방식은 심벌이 나올 확률에 따라 심벌을 나타내는 코드의 길이를 달리하는 부호화 방법이다.
한국등록특허 제10-1268934호 [제목: 데이터 압축/해제장치 및 방법]
본 발명의 목적은 코딩된 데이터 안에서 0과 1의 개수가 평균적으로 비슷해지도록 심벌을 코딩하고, 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙을 수행하고, 인터리빙된 코드를 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축하는 데이터 무손실 압축 장치 및 그 방법을 제공하는 데 있다.
본 발명의 다른 목적은 압축된 코딩된 데이터에 대해서 압축비율이 미리 설정된 기준값 미만일 때까지 압축된 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙 과정과, 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축하는 과정을 반복적으로 수행하는 데이터 무손실 압축 장치 및 그 방법을 제공하는 데 있다.
본 발명의 실시예에 따른 데이터 무손실 압축 장치는 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리 및 변환 허프만 트리를 생성하고, 상기 생성된 허프만 트리 및 변환 허프만 트리를 근거로 각 문자에 대한 허프만 코드워드 및 변환 허프만 코드워드를 각각 생성하고, 입력 데이터에 미리 설정된 주기로 상기 생성된 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 코딩된 데이터를 생성하고, 상기 생성된 코딩된 데이터에 인터리빙을 적용하여 인터리빙된 코드를 생성하고, 상기 생성된 인터리빙된 코드를 미리 설정된 압축단위별 크기인 자연수 N으로 나눠 복수의 블록을 생성하고, 상기 인터리빙된 코드를 압축하기 위해 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 생성된 복수의 블록을 압축하고, 상기 복수의 블록 중에서 압축을 수행한 블록에는 미리 설정된 비트수의 오버헤드 값을 추가하고, 압축을 수행하지 않은 블록에는 미리 설정된 비트수의 다른 오버헤드 값을 추가한 후, 오버헤드가 추가된 복수의 압축된 코드를 합쳐서 하나의 압축 코드를 생성하고, 상기 인터리빙된 코드 및 상기 생성된 압축 코드 간의 압축비율을 산출하고, 상기 산출된 압축비율이 상기 임계값 미만일 때, 최종 압축된 상태의 압축 코드의 맨 앞에 누적된 압축 횟수에 해당하는 코드를 추가하여 최종 압축 코드를 생성하는 제어부; 및 상기 생성된 최종 압축 코드를 다른 단말에 전송하는 통신부를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 제어부는, 상기 판단 결과, 상기 산출된 압축비율이 상기 임계값 이상일 때, 상기 압축된 압축 코드에 대해서 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 수행하고, 반복 수행된 압축 횟수를 누적할 수 있다.
본 발명과 관련된 일 예로서 상기 변환 허프만 트리는, 상기 허프만 트리에서 좌측의 0과 우측의 1에 대해서 각각 좌측과 우측의 값을 반대로 전환한 상태의 트리일 수 있다.
본 발명과 관련된 일 예로서 상기 인터리빙은, 블록 인터리빙, 콘볼루션 인터리빙 및, 블록 및 콘볼루션 인터리빙 중 어느 하나를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 개수 식별자는, 상기 인터리빙된 코드에서 0 또는 1의 개수가 몇 개인지를 확인하기 위해서 사용되는 식별자이고, 상기 위치 식별자는, 상기 인터리빙된 코드에서 0 또는 1의 위치를 확인하기 위해서 사용되는 식별자이고, 상기 구별 식별자는, 동일한 상기 개수 식별자 및 위치 식별자를 가지는 서로 다른 코드를 식별하기 위해서 사용되는 식별자일 수 있다.
본 발명의 실시예에 따른 데이터 무손실 압축 방법은 제어부에 의해, 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리 및 변환 허프만 트리를 생성하는 단계; 상기 제어부에 의해, 상기 생성된 허프만 트리 및 변환 허프만 트리를 근거로 각 문자에 대한 허프만 코드워드 및 변환 허프만 코드워드를 각각 생성하는 단계; 상기 제어부에 의해, 입력 데이터에 미리 설정된 주기로 상기 생성된 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 코딩된 데이터를 생성하는 단계; 상기 제어부에 의해, 상기 생성된 코딩된 데이터에 인터리빙을 적용하여 인터리빙된 코드를 생성하는 단계; 상기 제어부에 의해, 상기 생성된 인터리빙된 코드를 미리 설정된 압축단위별 크기인 자연수 N으로 나눠 복수의 블록을 생성하는 단계; 상기 제어부에 의해, 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 생성된 복수의 블록을 압축하는 단계; 상기 제어부에 의해, 상기 복수의 블록 중에서 압축을 수행한 블록에는 미리 설정된 비트수의 오버헤드 값을 추가하고, 압축을 수행하지 않은 블록에는 미리 설정된 비트수의 다른 오버헤드 값을 추가한 후, 오버헤드가 추가된 복수의 압축된 코드를 합쳐서 하나의 압축 코드를 생성하는 단계; 상기 제어부에 의해, 상기 인터리빙된 코드 및 상기 생성된 압축 코드 간의 압축비율을 산출하는 단계; 상기 제어부에 의해, 상기 산출된 압축비율이 미리 설정된 임계값 이상인지 여부를 판단하는 단계; 상기 판단 결과, 상기 산출된 압축비율이 상기 임계값 이상일 때, 상기 제어부에 의해, 상기 압축된 압축 코드에 대해서 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 수행하고, 반복 수행된 압축 횟수를 누적하는 단계 및 상기 판단 결과, 상기 산출된 압축비율이 상기 임계값 미만일 때, 상기 제어부에 의해, 최종 압축된 상태의 압축 코드의 맨 앞에 상기 누적된 압축 횟수에 해당하는 코드를 추가하여 최종 압축 코드를 생성하는 단계를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 생성된 복수의 블록을 압축하는 단계는, 상기 압축단위별 크기인 N보다 비트수가 작은 상기 복수의 블록 중 마지막 블록은 압축을 수행하지 않는 과정; 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 복수의 블록 중 특정 블록을 압축할 수 있을 때, 상기 특정 블록에 대한 압축 과정을 수행하는 과정; 및 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 복수의 블록 중 다른 특정 블록을 압축할 수 없을 때, 상기 다른 특정 블록에 대한 압축 과정을 생략하는 과정을 포함할 수 있다.
본 발명은 코딩된 데이터 안에서 0과 1의 개수가 평균적으로 비슷해지도록 심벌을 코딩하고, 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙을 수행함으로써 인터리빙된 코드가 해당 코드북에 존재하여 압축될 확률을 높이게 하고, 이후 해당 코드북을 참조하면서 인터리빙된 코드를 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축한다. 이처럼 코딩된 데이터의 통계적 특성을 이용하여 코딩된 데이터를 압축함에 따라 압축 효율을 향상시킬 수 있는 효과가 있다.
또한, 본 발명은 압축된 코딩된 데이터에 대해서 압축비율이 미리 설정된 기준값 미만일 때까지 압축된 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙 과정과, 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축하는 과정을 반복적으로 수행함으로써, 무손실 압축 방식에 대한 신뢰도를 높일 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 데이터 무손실 압축 장치의 구성을 나타낸 블록도이다.
도 2는 본 발명의 실시예에 따른 데이터 무손실 압축 방법을 나타낸 흐름도이다.
도 3 및 도 4는 본 발명의 실시예에 따른 허프만 트리 및 변환 허프만 트리의 예를 나타낸 도이다.
도 5는 본 발명의 실시예에 따른 허프만 코드워드 및 변환 허프만 코드워드의 예를 나타낸 도이다.
도 6은 본 발명의 실시예에 따른 인터리빙 과정의 예를 나타낸 도이다.
도 7은 본 발명의 실시예에 따른 코드북의 예를 나타낸 도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 본 발명의 실시예에 따른 데이터 무손실 압축 장치(10)의 구성을 나타낸 블록도이다.
도 1에 도시한 바와 같이, 데이터 무손실 압축 장치(10)는 통신부(100), 저장부(200), 표시부(300), 음성 출력부(400) 및 제어부(500)로 구성된다. 도 1에 도시된 데이터 무손실 압축 장치(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 1에 도시된 구성 요소보다 많은 구성 요소에 의해 데이터 무손실 압축 장치(10)가 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 데이터 무손실 압축 장치(10)가 구현될 수도 있다.
상기 데이터 무손실 압축 장치(10)는 스마트 폰(Smart Phone), 휴대 단말기(Portable Terminal), 이동 단말기(Mobile Terminal), 폴더블 단말기(Foldable Terminal), 개인 정보 단말기(Personal Digital Assistant: PDA), PMP(Portable Multimedia Player) 단말기, 텔레매틱스(Telematics) 단말기, 내비게이션(Navigation) 단말기, 개인용 컴퓨터(Personal Computer), 노트북 컴퓨터, 슬레이트 PC(Slate PC), 태블릿 PC(Tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(Wearable Device, 예를 들어, 워치형 단말기(Smartwatch), 글래스형 단말기(Smart Glass), HMD(Head Mounted Display) 등 포함), 와이브로(Wibro) 단말기, IPTV(Internet Protocol Television) 단말기, 스마트 TV, 디지털방송용 단말기, AVN(Audio Video Navigation) 단말기, A/V(Audio/Video) 시스템, 플렉시블 단말기(Flexible Terminal), 디지털 사이니지 장치 등과 같은 다양한 단말기에 적용될 수 있다.
상기 통신부(100)는 유/무선 통신망을 통해 내부의 임의의 구성 요소 또는 외부의 임의의 적어도 하나의 단말기와 통신 연결한다. 이때, 상기 외부의 임의의 단말기는 외부에 구성된 데이터베이스(미도시), 서버(미도시) 등을 포함할 수 있다. 여기서, 무선 인터넷 기술로는 무선랜(Wireless LAN: WLAN), DLNA(Digital Living Network Alliance), 와이브로(Wireless Broadband: Wibro), 와이맥스(World Interoperability for Microwave Access: Wimax), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), IEEE 802.16, 롱 텀 에볼루션(Long Term Evolution: LTE), LTE-A(Long Term Evolution-Advanced), 광대역 무선 이동 통신 서비스(Wireless Mobile Broadband Service: WMBS) 등이 있으며, 상기 통신부(100)는 상기에서 나열되지 않은 인터넷 기술까지 포함한 범위에서 적어도 하나의 무선 인터넷 기술에 따라 데이터를 송수신하게 된다. 또한, 근거리 통신 기술로는 블루투스(Bluetooth), RFID(Radio Frequency Identification), 적외선 통신(Infrared Data Association: IrDA), UWB(Ultra Wideband), 지그비(ZigBee), 인접 자장 통신(Near Field Communication: NFC), 초음파 통신(Ultra Sound Communication: USC), 가시광 통신(Visible Light Communication: VLC), 와이 파이(Wi-Fi), 와이 파이 다이렉트(Wi-Fi Direct) 등이 포함될 수 있다. 또한, 유선 통신 기술로는 전력선 통신(Power Line Communication: PLC), USB 통신, 이더넷(Ethernet), 시리얼 통신(serial communication), 광/동축 케이블 등이 포함될 수 있다.
또한, 상기 통신부(100)는 유니버설 시리얼 버스(Universal Serial Bus: USB)를 통해 임의의 단말과 정보를 상호 전송할 수 있다.
또한, 상기 통신부(100)는 이동통신을 위한 기술표준들 또는 통신방식(예를 들어, GSM(Global System for Mobile communication), CDMA(Code Division Multi Access), CDMA2000(Code Division Multi Access 2000), EV-DO(Enhanced Voice-Data Optimized or Enhanced Voice-Data Only), WCDMA(Wideband CDMA), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced) 등)에 따라 구축된 이동 통신망 상에서 기지국, 상기 데이터베이스, 상기 서버 등과 무선 신호를 송수신한다.
또한, 상기 통신부(100)는 상기 제어부(500)의 제어에 의해 상기 서버나 다른 단말로부터 전송되는 입력 데이터 등을 수신하거나 또는, 압축된 코드를 상기 서버나 다른 단말로 전송한다.
상기 저장부(200)는 다양한 사용자 인터페이스(User Interface: UI), 그래픽 사용자 인터페이스(Graphic User Interface: GUI) 등을 저장한다.
또한, 상기 저장부(200)는 상기 데이터 무손실 압축 장치(10)가 동작하는데 필요한 데이터와 프로그램 등을 저장한다.
즉, 상기 저장부(200)는 상기 데이터 무손실 압축 장치(10)에서 구동되는 다수의 응용 프로그램(application program 또는 애플리케이션(application)), 데이터 무손실 압축 장치(10)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 이러한 응용 프로그램 중 적어도 일부는 무선 통신을 통해 외부 서버로부터 다운로드 될 수 있다. 또한, 이러한 응용 프로그램 중 적어도 일부는 데이터 무손실 압축 장치(10)의 기본적인 기능을 위하여 출고 당시부터 데이터 무손실 압축 장치(10) 상에 존재할 수 있다. 한편, 응용 프로그램은 상기 저장부(200)에 저장되고, 데이터 무손실 압축 장치(10)에 설치되어, 제어부(500)에 의하여 상기 데이터 무손실 압축 장치(10)의 동작(또는 기능)을 수행하도록 구동될 수 있다.
또한, 상기 저장부(200)는 플래시 메모리 타입(Flash Memory Type), 하드 디스크 타입(Hard Disk Type), 멀티미디어 카드 마이크로 타입(Multimedia Card Micro Type), 카드 타입의 메모리(예를 들면, SD 또는 XD 메모리 등), 자기 메모리, 자기 디스크, 광디스크, 램(Random Access Memory: RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory: ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory) 중 적어도 하나의 저장매체를 포함할 수 있다. 또한, 데이터 무손실 압축 장치(10)는 인터넷(internet)상에서 저장부(200)의 저장 기능을 수행하는 웹 스토리지(web storage)를 운영하거나, 또는 상기 웹 스토리지와 관련되어 동작할 수도 있다.
또한, 상기 저장부(200)는 상기 제어부(500)의 제어에 의해 상기 입력 데이터, 상기 압축된 코드 등을 저장한다.
상기 표시부(또는 디스플레이부)(300)는 상기 제어부(500)의 제어에 의해 상기 저장부(200)에 저장된 사용자 인터페이스 및/또는 그래픽 사용자 인터페이스를 이용하여 다양한 메뉴 화면 등과 같은 다양한 콘텐츠를 표시할 수 있다. 여기서, 상기 표시부(300)에 표시되는 콘텐츠는 다양한 텍스트 또는 이미지 데이터(각종 정보 데이터 포함)와 아이콘, 리스트 메뉴, 콤보 박스 등의 데이터를 포함하는 메뉴 화면 등을 포함한다. 또한, 상기 표시부(300)는 터치 스크린 일 수 있다.
또한, 상기 표시부(300)는 액정 디스플레이(Liquid Crystal Display: LCD), 박막 트랜지스터 액정 디스플레이(Thin Film Transistor-Liquid Crystal Display: TFT LCD), 유기 발광 다이오드(Organic Light-Emitting Diode: OLED), 플렉시블 디스플레이(Flexible Display), 3차원 디스플레이(3D Display), 전자잉크 디스플레이(e-ink display), LED(Light Emitting Diode) 중에서 적어도 하나를 포함할 수 있다.
또한, 상기 표시부(300)는 상기 제어부(500)의 제어에 의해 상기 입력 데이터, 상기 압축된 코드 등을 표시한다.
상기 음성 출력부(600)는 상기 제어부(500)에 의해 소정 신호 처리된 신호에 포함된 음성 정보를 출력한다. 여기서, 상기 음성 출력부(600)에는 리시버(receiver), 스피커(speaker), 버저(buzzer) 등이 포함될 수 있다.
또한, 상기 음성 출력부(600)는 상기 제어부(500)에 의해 생성된 안내 음성을 출력한다.
또한, 상기 음성 출력부(600)는 상기 제어부(500)의 제어에 의해 상기 입력 데이터, 상기 압축된 코드 등에 대응하는 음성 정보(또는 음향 효과)를 출력한다.
상기 제어부(controller, 또는 MCU(microcontroller unit)(500)는 상기 데이터 무손실 압축 장치(10)의 전반적인 제어 기능을 실행한다.
또한, 상기 제어부(500)는 상기 저장부(200)에 저장된 프로그램 및 데이터를 이용하여 데이터 무손실 압축 장치(10)의 전반적인 제어 기능을 실행한다. 상기 제어부(500)는 RAM, ROM, CPU, GPU, 버스를 포함할 수 있으며, RAM, ROM, CPU, GPU 등은 버스를 통해 서로 연결될 수 있다. CPU는 상기 저장부(200)에 액세스하여, 상기 저장부(200)에 저장된 O/S를 이용하여 부팅을 수행할 수 있으며, 상기 저장부(200)에 저장된 각종 프로그램, 콘텐츠, 데이터 등을 이용하여 다양한 동작을 수행할 수 있다.
또한, 상기 제어부(500)는 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리 및 변환 허프만 트리를 생성한다. 여기서, 상기 변환 허프만 트리는 상기 허프만 트리에서 좌측의 0과 우측의 1에 대해서 각각 좌측과 우측의 값을 반대로 전환한 상태의 트리일 수 있다.
즉, 상기 제어부(500)는 상기 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리를 생성하고, 상기 생성된 허프만 트리에서 좌측의 0을 1로 전환(또는 변환)하고 우측의 1을 0으로 전환하여 상기 변환 허프만 트리를 생성한다.
또한, 상기 제어부(500)는 상기 생성된 허프만 트리 및 변환 허프만 트리를 근거로 상기 각 문자에 대한 허프만 코드워드(codeword) 및 변환 허프만 코드워드를 각각 생성한다. 여기서, 상기 허프만 코드워드 및 변환 허프만 코드워드 생성은 구별자를 이용한 압축 전 수행 작업으로 한 번만 수행되면 되고, 모든 데이터 송수신 단말기가 동일한 내용을 공유하여야 한다.
또한, 상기 제어부(500)는 입력 데이터에 미리 설정된 주기(또는 미리 설정된 코드 단위)로 상기 생성된 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 코딩된 데이터(또는 코딩 데이터)를 생성한다.
이와 같이, 상기 제어부(500)는 코딩된 데이터 내에서 0과 1의 개수가 평균적으로 비슷해지도록 상기 입력 데이터에 상기 허프만 코드워드만을 적용하는 대신에, 상기 입력 데이터에 상기 허프만 코드워드와 상기 변환 허프만 코드워드를 함께 적용할 수 있다. 여기서, 코딩 알고리즘 자체의 결과로 0과 1의 개수가 평균적으로 유사하게 되는 경우에는 상기 입력 데이터에 대해 상기 허프만 코드워드와 상기 변환 허프만 코드워드를 함께 적용하는 과정 대신에 하나의 코드워드를 적용할 수도 있다.
이때, 상기 제어부(500)는 상기 일정한 주기로 상기 입력 데이터에 상기 허프만 코드워드와 상기 변환 허프만 코드워드를 순차로 적용하거나 또는, 상기 일정한 주기로 상기 입력 데이터에 상기 허프만 코드워드 또는 상기 변환 허프만 코드워드를 적용할 수 있다.
이와 같이, 랜덤하게 상기 허프만 코드워드 또는 상기 변환 허프만 코드워드를 적용하는 경우, 상기 제어부(500)는 특정 주기에 어떤 코드워드를 적용했는지 확인하기 위한 용도로 해당 특정 주기에서의 특정 위치(예를 들어 맨 앞)에 일정 길이의 코드변환식별자를 삽입할 수도 있다.
또한, 상기 제어부(500)는 상기 생성된 코딩된 데이터(또는 코딩 데이터)에 인터리빙(interleaving)을 적용하여 인터리빙된 코드를 생성한다. 여기서, 상기 인터리빙(또는 인터리빙 방식)은 블록 인터리빙, 콘볼루션 인터리빙, 블록 및 콘볼루션 인터리빙 등을 포함한다.
즉, 상기 제어부(500)는 상기 생성된 코딩된 데이터 내에서 동일 비트열이 군집되어 분포될 수 있는 0 또는 1을 랜덤하게 분산시키기 위해서 상기 코딩된 데이터에 상기 인터리빙을 적용하여 상기 인터리빙된 코드를 생성한다.
또한, 상기 제어부(500)는 상기 생성된 인터리빙된 코드를 미리 설정된 압축단위별 크기인 N(여기서 상기 N은 자연수)으로 나눠 복수의 블록을 생성한다.
또한, 상기 제어부(500)는 상기 인터리빙된 코드(또는 상기 생성된 복수의 블록)를 압축하기 위해 개수 식별자(X), 위치 식별자(Y) 및 구별 식별자(Z)의 코드북(또는 코드북 내용)을 근거로 상기 생성된 복수의 블록을 압축한다. 여기서, 상기 코드북은 데이터 암호화(또는 데이터 압축)에 필요한 부호(코드)를 수집하고 저장하여 둔 부호화 작업의 안내서로, 일정한 크기로 설정된 개수 식별자, 위치 식별자 및 구별 식별자에 대해서 상기 인터리빙된 코드를 압축하기 위해 필요한 부호(또는 코드)에 대한 정보, 부여 대상 데이터와 대응 부호의 관련을 나타내는 부호표, 부호표의 운용 방법과 그 예시 및 해설, 부호와의 대응이 곤란한 부여 대상 데이터의 처리 예시, 부호화 작업의 세부 지시 예시, 부호화 작업을 용이하게 하기 위한 조견표, 부호의 변경 절차 등을 정하는 부호 관리 규정 등에 대한 정보를 포함한다. 이때, 코드북 생성은 구별자를 이용한 압축 전 수행 작업으로 한 번만 수행하면 되고, 모든 데이터 송수신 단말기가 동일한 내용을 공유하여야 한다.
여기서, 상기 개수 식별자는 상기 인터리빙된 코드(또는 상기 생성된 복수의 블록)에서 0 또는 1의 개수가 몇 개인지를 확인하기 위해서 사용되는 식별자이다. 또한, 0을 기준으로 할 경우에는 0의 개수 또는 1을 기준으로 할 경우에는 1의 개수의 평균값인
Figure 112019097737704-pat00001
을 기준으로 평균값과 편차값을 식별하기 위해서 X(단위: 비트)를 상기 개수 식별자로 사용한다.
또한, 상기 위치 식별자는 상기 인터리빙된 코드(또는 상기 생성된 복수의 블록)에서 0 또는 1의 위치를 확인하기 위해서 사용되는 식별자이다. 또한, 2번째 비트 ~ N번째 비트 각각에 대하여 0 또는 1을 첫 번째 비트부터 채우기 위해 옮기는데 필요한 횟수의 근사화된 평균 추정값인
Figure 112019097737704-pat00002
을 기준으로 평균 추정값(또는 평균값)과 편차 추정값(또는 편차값)을 식별하기 위해 Y(단위: 비트)를 상기 위치 식별자로 사용한다. 여기서, 상기 L은 상기
Figure 112019097737704-pat00003
에 해당하는 값일 수 있다. 이때, 상기 위치 식별자의 평균 추정값과 편차 추정값은 각각의 개수 식별자에 대하여 서로 다른 값으로 설정할 수도 있다.
또한, 상기 구별 식별자는 동일한 상기 개수 식별자 및 위치 식별자를 가지는 서로 다른 코드를 식별하기 위해서 사용되는 식별자이다. 또한, 동일한 X 값과 Y 값을 가지는 서로 다른 코드 개수 사이의 임의의 Z(단위: 비트)를 상기 구별 식별자로 사용한다.
또한, 상기 개수 식별자, 위치 식별자 및 구별 식별자는 인터리빙된 허프만 코드워드 또는 변환 허프만 코드워드를 사전에 통계적으로 분석하여 빈도가 가장 큰 코드워드부터 작은 순서대로 상기 개수 식별자, 위치 식별자 및 구별 식별자 개수만큼 선택하여 코드북에 등록하여 사용할 수도 있다.
또한, 상기 제어부(500)는 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북(또는 코드북 내용)을 근거로 상기 생성된 복수의 블록을 압축한다. 이때, 상기 제어부(500)는 상기 N보다 비트수가 작은 마지막 블록은 압축을 수행하지 않을 수 있다.
즉, 미리 등록된 코드북에 따라 상기 개수 식별자, 위치 식별자 및 구별 식별자를 상기 생성된 복수의 블록에 각각 적용하여 상기 인터리빙된 코드를 압축한다. 이때, 상기 제어부(500)는 상기 복수의 블록 중에서 상기 코드북에 미리 설정되지 않은 특정 블록에 대해서는 압축을 수행하지 않는다.
또한, 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북(또는 코드북 내용)을 근거로 상기 복수의 블록 중 특정 블록을 압축할 수 없는 경우, 상기 제어부(500)는 해당 특정 블록 내의 값(또는 코드/데이터)을 그대로 유지한다.
또한, 상기 제어부(500)는 상기 복수의 블록 중에서 압축을 수행한 블록에는 미리 설정된 비트수의 오버헤드 값(예를 들어 1 비트의 '1')을 추가(또는 삽입)하고, 압축을 수행하지 않은 블록에는 미리 설정된 비트수의 다른 오버헤드 값(예를 들어 1 비트의 '0')을 추가한다. 이때, 상기 제어부(500)는 상기 블록의 헤드 부분에 상기 오버헤드(또는 오버헤드 값)를 추가할 수 있다.
이와 같이, 상기 제어부(500)는 미리 설정된 비트의 오버헤드를 삽입(또는 추가)하여 압축을 수행한 데이터와 압축을 수행하지 않은 데이터를 구별할 수 있다.
또한, 상기 제어부(500)는 상기 복수의 블록에 대응하는 오버헤드가 추가된 복수의 압축된 코드를 합쳐서 하나의 압축 코드를 생성한다.
이와 같이, 상기 제어부(500)는 코딩된 데이터의 통계적 특성을 이용하여 무손실 압축 방식을 수행할 수 있다.
또한, 상기 제어부(500)는 상기 인터리빙된 코드 및 상기 생성된 압축 코드 간의 압축비율을 산출(또는 계산)한다. 이때, 상기 제어부(500)는 상기 인터리빙된 코드와 상기 압축 코드 간의 압축률을 산출할 수도 있다.
또한, 상기 제어부(500)는 상기 산출된 압축비율이 미리 설정된 임계값(또는 기준값) 이상인지 여부를 판단(또는 확인)한다.
즉, 상기 제어부(500)는 상기 압축된 압축 코드가 사용자가 설정한 압축비율을 만족하는지 여부를 확인하기 위해서 상기 산출된 압축비율이 상기 임계값 이상인지 여부를 판단한다.
상기 판단 결과(또는 상기 확인 결과), 상기 산출된 압축비율이 상기 임계값 이상인 경우, 상기 제어부(500)는 상기 압축된 압축 코드에 대해서 앞선 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 수행한다. 이때, 상기 제어부(500)는 상기 산출된 압축비율이 상기 임계값 미만일 때까지 상기 압축된 압축 코드에 대해서 앞선 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 반복적으로 수행할 수 있다.
또한, 상기 제어부(500)는 반복 수행된 압축 횟수를 저장(또는 누적/산출)한다.
또한, 상기 판단 결과(또는 상기 확인 결과), 상기 산출된 압축비율이 상기 임계값 미만인 경우, 상기 제어부(500)는 압축비율을 만족하지 못하므로, 압축을 중단하고, 상기 압축 코드(또는 최종 압축된 상태의 압축 코드/압축비율이 임계값 미만인 최종 상태의 압축 코드)의 맨 앞에 상기 누적된 압축 횟수에 해당하는 코드를 추가하여 최종 압축된 코드(또는 최종 압축 코드)를 생성한다. 여기서, 상기 압축 횟수는 미리 설정된 M개의 비트(여기서 M은 자연수)로 표시할 수 있다.
또한, 상기 제어부(500)는 상기 최종적으로 압축된 코드를 다른 단말(미도시)에 제공하거나 또는, 다른 데이터 처리 과정에 이용하거나 또는, 표시부(300)에 표시한다.
또한, 상기 제어부(500)는 상기 최종적으로 압축된 최종 압축된 코드로부터 상기 입력 데이터를 획득하기 위해서, 상기 최종적으로 압축된 최종 압축된 코드를 상기 입력 데이터를 압축하는 전체 과정과 반대 순서로 수행하여 상기 최종 압축된 코드로부터 상기 입력 데이터를 획득할 수 있다.
즉, 상기 제어부(500)는 상기 최종적으로 압축된 최종 압축된 코드로부터 압축 과정을 수행한 반복 횟수를 확인하고, 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북(또는 코드북 내용)을 근거로 상기 압축 코드에 대해 압축해제를 수행하는 과정과 상기 인터리빙 과정을 상기 확인된 반복 횟수별 반복 수행하여 상기 코딩된 데이터(또는 코딩 데이터)를 생성하고, 상기 생성된 코딩된 데이터(또는 코딩 데이터)에 상기 미리 설정된 주기로 상기 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 상기 입력 데이터를 생성(또는 획득)한다.
이와 같이, 코딩된 데이터 안에서 0과 1의 개수가 평균적으로 비슷해지도록 심벌을 코딩하고, 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙을 수행하고, 인터리빙된 코드를 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축할 수 있다.
또한, 이와 같이, 압축된 코딩된 데이터에 대해서 압축비율이 미리 설정된 기준값 미만일 때까지 압축된 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙 과정과, 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축하는 과정을 반복적으로 수행할 수 있다.
이하에서는, 본 발명에 따른 데이터 무손실 압축 방법을 도 1 내지 도 7을 참조하여 상세히 설명한다.
도 2는 본 발명의 실시예에 따른 데이터 무손실 압축 방법을 나타낸 흐름도이다.
먼저, 제어부(500)는 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리 및 변환 허프만 트리를 생성한다. 여기서, 상기 변환 허프만 트리는 상기 허프만 트리에서 좌측의 0과 우측의 1에 대해서 각각 좌측과 우측의 값을 반대로 전환한 상태의 트리일 수 있다.
즉, 상기 제어부(500)는 상기 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리를 생성하고, 상기 생성된 허프만 트리에서 좌측의 0을 1로 전환(또는 변환)하고 우측의 1을 0으로 전환하여 상기 변환 허프만 트리를 생성한다.
또한, 상기 제어부(500)는 상기 생성된 허프만 트리 및 변환 허프만 트리를 근거로 상기 각 문자에 대한 허프만 코드워드 및 변환 허프만 코드워드를 각각 생성한다.
일 예로, 도 3에 도시된 바와 같이, 상기 제어부(500)는 19개의 문자로 구성된 제 1 입력 데이터(예를 들어 aaaabdbaadbccbbcaaa)에 대해서 상기 제 1 입력 데이터 내의 a 문자의 빈도수(예를 들어 9회), b 문자의 빈도수(예를 들어 5회), c 문자의 빈도수(예를 들어 3회) 및 d 문자의 빈도수(예를 들어 2회)를 근거로 허프만 트리(310)를 생성한다. 여기에서 상기 제 1 입력 데이터 내 각 문자의 빈도수는 예를 위해 사전에 통계적으로 분석된 각 문자의 빈도수와 같다고 가정한다.
또한, 도 4에 도시된 바와 같이, 상기 제어부(500)는 상기 생성된 허프만 트리(310)에서 트리 내의 0과 1의 위치를 변환한 상기 변환 허프만 트리(410)를 생성한다.
또한, 도 5에 도시된 바와 같이, 상기 제어부(500)는 상기 생성된 허프만 트리(310) 및 상기 변환 허프만 트리(410)를 근거로 상기 제 1 입력 데이터 내에 포함된 a ~ d에 대한 허프만 코드워드 및 변환 허프만 코드워드(510)를 생성한다(S210).
이후, 상기 제어부(500)는 입력 데이터에 미리 설정된 주기(또는 미리 설정된 코드 단위)로 상기 생성된 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 코딩된 데이터(또는 코딩 데이터)를 생성한다.
이와 같이, 상기 제어부(500)는 코딩된 데이터 내에서 0과 1의 개수가 평균적으로 비슷해지도록 상기 입력 데이터에 상기 허프만 코드워드만을 적용하는 대신에, 상기 입력 데이터에 상기 허프만 코드워드와 상기 변환 허프만 코드워드를 함께 적용할 수 있다.
일 예로, 상기 제어부(500)는 상기 제 1 입력 데이터(예를 들어 aaaabdbaadbccbbcaaa)에 대해서 미리 설정된 제 1 주기(예를 들어 10개 문자 단위)로 상기 생성된 허프만 코드워드 및 상기 생성된 변환 허프만 코드워드를 순차로 적용하여 제 1 코딩 데이터(예를 들어 34 비트의 0000101111000111010010010101001111)를 생성한다(S220).
이후, 상기 제어부(500)는 상기 생성된 코딩된 데이터(또는 코딩 데이터)에 인터리빙을 적용하여 인터리빙된 코드를 생성한다. 여기서, 상기 인터리빙(또는 인터리빙 방식)은 블록 인터리빙, 콘볼루션 인터리빙, 블록 및 콘볼루션 인터리빙 등을 포함한다.
즉, 상기 제어부(500)는 상기 생성된 코딩된 데이터 내에서 동일 비트열이 군집되어 분포될 수 있는 0 또는 1을 랜덤하게 분산시키기 위해서 상기 코딩된 데이터에 상기 인터리빙을 적용하여 상기 인터리빙된 코드를 생성한다.
일 예로, 도 6에 도시된 바와 같이, 상기 제어부(500)는 상기 생성된 제 1 코딩 데이터에 4×4 블록 인터리빙을 적용하여 제 1 인터리빙된 코드(예를 들어 0110001101010101010010100001011111)(600)를 생성한다(S230).
이후, 상기 제어부(500)는 상기 생성된 인터리빙된 코드를 미리 설정된 압축단위별 크기인 N(여기서 상기 N은 자연수)으로 나눠 복수의 블록을 생성한다.
일 예로, 상기 제어부(500)는 상기 생성된 34 비트의 제 1 인터리빙된 코드를 미리 설정된 압축단위별 크기인 N=16에 따라 나눠 3개의 블록을 생성한다. 여기서, 상기 3개의 블록은 제 1 블록(예를 들어 0110001101010101), 제 2 블록(예를 들어 0100101000010111) 및 제 3 블록(예를 들어 11)으로 구성한다(S240).
이후, 상기 제어부(500)는 상기 인터리빙된 코드(또는 상기 생성된 복수의 블록)를 압축하기 위해 개수 식별자(X), 위치 식별자(Y) 및 구별 식별자(Z)를 코드북에서 검색하여 상기 생성된 복수의 블록에 대한 압축을 수행한다. 여기서, 상기 개수 식별자는 상기 인터리빙된 코드(또는 상기 생성된 복수의 블록)에서 0 또는 1의 개수가 몇 개인지를 확인하기 위해서 사용되는 식별자이고, 상기 위치 식별자는 상기 인터리빙된 코드(또는 상기 생성된 복수의 블록)에서 0 또는 1의 위치를 확인하기 위해서 사용되는 식별자이고, 상기 구별 식별자는 동일한 상기 개수 식별자 및 위치 식별자를 가지는 서로 다른 코드를 식별하기 위해서 사용되는 식별자이다.
이와 같이, 상기 제어부(500)는 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북(또는 코드북 내용)을 근거로 상기 생성된 복수의 블록을 압축한다. 이때, 상기 제어부(500)는 상기 N보다 비트수가 작은 마지막 블록은 압축을 수행하지 않을 수 있다.
즉, 미리 등록된 코드북에 따라 상기 개수 식별자, 위치 식별자 및 구별 식별자를 상기 생성된 복수의 블록에 각각 적용하여 상기 인터리빙된 코드를 압축한다. 이때, 상기 제어부(500)는 상기 복수의 블록 중에서 상기 코드북에 미리 설정되지 않은 특정 블록에 대해서는 압축을 수행하지 않는다.
또한, 상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북(또는 코드북 내용)을 근거로 상기 복수의 블록 중 특정 블록을 압축할 수 없는 경우, 상기 제어부(500)는 해당 특정 블록 내의 값(또는 코드/데이터)을 그대로 유지한다.
또한, 상기 제어부(500)는 상기 복수의 블록 중에서 압축을 수행한 블록에는 미리 설정된 비트수의 오버헤드 값(예를 들어 1 비트의 '1')을 추가(또는 삽입)하고, 압축을 수행하지 않은 블록에는 미리 설정된 비트수의 다른 오버헤드 값(예를 들어 1 비트의 '0')을 추가한다. 이때, 상기 제어부(500)는 상기 블록의 헤드 부분에 상기 오버헤드(또는 오버헤드 값)를 추가할 수 있다.
이와 같이, 상기 제어부(500)는 미리 설정된 비트의 오버헤드를 삽입(또는 추가)하여 압축을 수행한 데이터와 압축을 수행하지 않은 데이터를 구별할 수 있다.
또한, 상기 제어부(500)는 상기 복수의 블록에 대응하는 오버헤드가 추가된 복수의 압축된 코드를 합쳐서 하나의 압축 코드를 생성한다.
일 예로, 상기 제어부(500)는 상기 생성된 3개의 블록을 각각 압축하는데 2 비트의 제 1 개수 식별자, 2 비트의 제 1 위치 식별자 및 3 비트의 제 1 구별 식별자를 사용한다.
도 7에 도시된 바와 같이, 상기 제어부(500)는 상기 N=16이고 상기 제 1 블록(예를 들어 0110001101010101)이고 상기 제 1 개수 식별자가 2 비트일 때, 상기 제 1 블록(예를 들어 0110001101010101)에 대해 상기 코드북(700)을 적용하여 1의 개수의 평균값인
Figure 112019097737704-pat00004
을 중심으로 4개의 정보(예를 들어 7, 8, 9 및 10) 중에서 상기 제 1 개수 식별자에 해당하는 2 비트의 '01'을 확인하고, 1로 첫 번째 비트부터 채우기 위해 옮기는데 필요한 횟수의 근사화된 평균 추정값인
Figure 112019097737704-pat00005
(예를 들어 36회에 대응하는 값)을 중심으로 4개의 정보(예를 들어 35, 36, 37 및 38) 중에서 상기 제 1 위치 식별자에 해당하는 2 비트의 '01'을 확인하고, 상기 확인된 제 1 개수 식별자(01) 및 상기 제 1 위치 식별자(01)가 동일한 블록을 구별하기 위해서 16 비트의 0101010101010101를 기준으로 2개 비트의 1의 위치가 변경된 정보 중에서 상기 제 1 구별 식별자에 해당하는 3 비트의 '001'을 확인한다. 또한, 상기 제어부(500)는 상기 각각 확인된 값들을 합치고(예를 들어 0101001), 상기 합친 코드의 앞 부분에 해당 제 1 블록에 대해 압축을 수행한 상태인지 여부를 나타내는 오버헤드(예를 들어 압축을 수행한 상태임을 나타내는 '1')를 추가하여 제 1 서브 코드(예를 들어 8 비트의 10101001)를 생성한다.
또한, 상기 제 2 블록(예를 들어 0100101000010111)에 대해 상기 코드북을 적용하고자 하였으나, 해당 제 2 블록에 포함된 값들이 상기 코드북에서 정의되지 않은 상태일 때, 상기 제어부(500)는 상기 제 2 블록을 압축하지 않고, 해당 제 2 블록에 대해 압축을 수행하지 않은 상태임을 나타내는 오버헤드(예를 들어 '0')를 추가하여 제 2 서브 코드(예를 들어 17 비트의 00100101000010111)를 생성한다.
또한, 상기 제어부(500)는 상기 제 3 블록(예를 들어 11)은 N보다 비트수가 작은 마지막 블록으로서 압축을 수행하지 않고, 해당 제 3 블록에 대해 압축을 수행하지 않은 상태임을 나타내는 오버헤드(예를 들어 '0')를 추가하여 제 3 서브 코드(예를 들어 3 비트의 011)를 생성한다.
또한, 상기 제어부(500)는 상기 생성된 복수의 서브 코드를 합쳐서 하나의 압축된 제 1 압축 코드(예를 들어 28 비트의 1010100100100101000010111011)를 생성한다(S250).
이후, 상기 제어부(500)는 상기 인터리빙된 코드 및 상기 생성된 압축 코드 간의 압축비율을 산출(또는 계산)한다. 이때, 상기 제어부(500)는 상기 인터리빙된 코드와 상기 압축 코드 간의 압축률을 산출할 수도 있다.
일 예로, 상기 제어부(500)는 상기 제 1 인터리빙된 코드(예를 들어 34 비트) 및 상기 생성된 제 1 압축 코드(예를 들어 28 비트)에 대한 제 1 압축비율(예를 들어 34/28 = 1.21)을 산출한다(S260).
이후, 상기 제어부(500)는 상기 산출된 압축비율이 미리 설정된 임계값(또는 기준값) 이상인지 여부를 판단(또는 확인)한다.
즉, 상기 제어부(500)는 상기 압축된 압축 코드가 사용자가 설정한 압축비율을 만족하는지 여부를 확인하기 위해서 상기 산출된 압축비율이 상기 임계값 이상인지 여부를 판단한다.
일 예로, 상기 제어부(500)는 상기 산출된 제 1 압축비율(예를 들어 1.21)이 상기 미리 설정된 제 1 임계값(예를 들어 1.0) 이상인지 여부를 판단한다(S270).
상기 판단 결과(또는 상기 확인 결과), 상기 산출된 압축비율이 상기 임계값 이상인 경우, 상기 제어부(500)는 상기 압축된 압축 코드에 대해서 앞선 인터리빙 과정, 압축 과정 및 압축비율 비교 과정(예를 들어 S230 단계 ~ S270 단계)을 수행한다. 이때, 상기 제어부(500)는 상기 산출된 압축비율이 상기 임계값 미만일 때까지 상기 압축된 압축 코드에 대해서 앞선 인터리빙 과정, 압축 과정 및 압축비율 비교 과정(예를 들어 S230 단계 ~ S270 단계)을 반복적으로 수행할 수 있다.
또한, 상기 제어부(500)는 반복 수행된 압축 횟수를 저장(또는 누적/산출)한다.
일 예로, 상기 산출된 제 1 압축비율(예를 들어 1.21)이 상기 미리 설정된 제 1 임계값(예를 들어 1.0) 이상일 때, 상기 제어부(500)는 상기 생성된 제 1 압축 코드(예를 들어 28 비트의 1010100100100101000010111011)에 대해서 상기 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 반복 수행한다.
또한, 상기 제어부(500)는 상기 반복 수행에 따른 압축 횟수를 누적한다(S280).
또한, 상기 판단 결과(또는 상기 확인 결과), 상기 산출된 압축비율이 상기 임계값 미만인 경우, 상기 제어부(500)는 압축비율을 만족하지 못하므로, 압축을 중단하고, 상기 압축 코드(또는 최종 압축된 상태의 압축 코드/압축비율이 임계값 미만인 최종 상태의 압축 코드)의 맨 앞에 상기 누적된 압축 횟수에 해당하는 코드를 추가하여 최종 압축된 코드(또는 최종 압축 코드)를 생성한다. 여기서, 상기 압축 횟수는 미리 설정된 M개의 비트(여기서 M은 자연수)로 표시할 수 있다.
또한, 상기 제어부(500)는 상기 최종적으로 압축된 코드를 다른 단말(미도시)에 제공하거나 또는, 다른 데이터 처리 과정에 이용하거나 또는, 표시부(300)에 표시한다.
일 예로, 산출된 제 3 압축비율(예를 들어 0.9)이 상기 미리 설정된 제 1 임계값(예를 들어 1.0) 미만일 때, 상기 제어부(500)는 생성된 제 3 압축 코드(예를 들어 21 비트의 010110001110101100001)에 총 3회 진행된 압축 횟수를 미리 설정된 4 비트 자리의 이진수(예를 들어 0011)를 추가하여, 제 1 최종 압축된 코드(예를 들어 25 비트의 0011010110001110101100001)를 생성하고, 상기 생성된 제 1 최종 압축된 코드를 서버(미도시)에 전송한다(S290).
본 발명의 실시예는 앞서 설명된 바와 같이, 코딩된 데이터 안에서 0과 1의 개수가 평균적으로 비슷해지도록 심벌을 코딩하고, 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙을 수행하고, 인터리빙된 코드를 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축함에 따라 압축 효율을 향상시킬 수 있다.
또한, 본 발명의 실시예는 앞서 설명된 바와 같이, 압축된 코딩된 데이터에 대해서 압축비율이 미리 설정된 기준값 미만일 때까지 압축된 코딩된 데이터 안에서 0과 1의 분포가 랜덤하게 분산되도록 인터리빙 과정과, 개수 식별자, 위치 식별자 및 구별 식별자를 이용하여 압축하는 과정을 반복적으로 수행하여, 무손실 압축 방식에 대한 신뢰도를 높일 수 있다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 데이터 무손실 압축 장치 100: 통신부
200: 저장부 300: 표시부
400: 음성 출력부 500: 제어부

Claims (7)

  1. 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리 및 변환 허프만 트리를 생성하고, 상기 생성된 허프만 트리 및 변환 허프만 트리를 근거로 각 문자에 대한 허프만 코드워드 및 변환 허프만 코드워드를 각각 생성하고, 입력 데이터에 미리 설정된 주기로 상기 생성된 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 코딩된 데이터를 생성하고, 상기 생성된 코딩된 데이터에 인터리빙을 적용하여 인터리빙된 코드를 생성하고, 상기 생성된 인터리빙된 코드를 미리 설정된 압축단위별 크기인 자연수 N으로 나눠 복수의 블록을 생성하고, 상기 인터리빙된 코드를 압축하기 위해 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 생성된 복수의 블록을 압축하고, 상기 복수의 블록 중에서 압축을 수행한 블록에는 미리 설정된 비트수의 오버헤드 값을 추가하고, 압축을 수행하지 않은 블록에는 미리 설정된 비트수의 다른 오버헤드 값을 추가한 후, 오버헤드가 추가된 복수의 압축된 코드를 합쳐서 하나의 압축 코드를 생성하고, 상기 인터리빙된 코드 및 상기 생성된 압축 코드 간의 압축비율을 산출하고, 상기 산출된 압축비율이 미리 설정된 임계값 이상인지 여부를 판단하고, 상기 산출된 압축비율이 미리 설정된 임계값 이상일 때, 상기 압축된 압축 코드에 대해서 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 수행하여 반복 수행된 압축 횟수를 누적하고, 상기 산출된 압축비율이 상기 임계값 미만일 때, 최종 압축된 상태의 압축 코드의 맨 앞에 누적된 압축 횟수에 해당하는 코드를 추가하여 최종 압축 코드를 생성하는 제어부; 및
    상기 생성된 최종 압축 코드를 다른 단말에 전송하는 통신부를 포함하는 데이터 무손실 압축 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 변환 허프만 트리는,
    상기 허프만 트리에서 좌측의 0과 우측의 1에 대해서 각각 좌측과 우측의 값을 반대로 전환한 상태의 트리인 것을 특징으로 하는 데이터 무손실 압축 장치.
  4. 제 1 항에 있어서,
    상기 인터리빙은,
    블록 인터리빙, 콘볼루션 인터리빙 및, 블록 및 콘볼루션 인터리빙 중 어느 하나를 포함하는 것을 특징으로 하는 데이터 무손실 압축 장치.
  5. 제 1 항에 있어서,
    상기 개수 식별자는,
    상기 인터리빙된 코드에서 0 또는 1의 개수가 몇 개인지를 확인하기 위해서 사용되는 식별자이고,
    상기 위치 식별자는,
    상기 인터리빙된 코드에서 0 또는 1의 위치를 확인하기 위해서 사용되는 식별자이고,
    상기 구별 식별자는,
    동일한 상기 개수 식별자 및 위치 식별자를 가지는 서로 다른 코드를 식별하기 위해서 사용되는 식별자인 것을 특징으로 하는 데이터 무손실 압축 장치.
  6. 제어부에 의해, 사전에 통계적으로 분석된 각 문자의 빈도수에 따라 허프만 트리 및 변환 허프만 트리를 생성하는 단계;
    상기 제어부에 의해, 상기 생성된 허프만 트리 및 변환 허프만 트리를 근거로 각 문자에 대한 허프만 코드워드 및 변환 허프만 코드워드를 각각 생성하는 단계;
    상기 제어부에 의해, 입력 데이터에 미리 설정된 주기로 상기 생성된 허프만 코드워드와 변환 허프만 코드워드를 순차로 적용하여 코딩된 데이터를 생성하는 단계;
    상기 제어부에 의해, 상기 생성된 코딩된 데이터에 인터리빙을 적용하여 인터리빙된 코드를 생성하는 단계;
    상기 제어부에 의해, 상기 생성된 인터리빙된 코드를 미리 설정된 압축단위별 크기인 자연수 N으로 나눠 복수의 블록을 생성하는 단계;
    상기 제어부에 의해, 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 생성된 복수의 블록을 압축하는 단계;
    상기 제어부에 의해, 상기 복수의 블록 중에서 압축을 수행한 블록에는 미리 설정된 비트수의 오버헤드 값을 추가하고, 압축을 수행하지 않은 블록에는 미리 설정된 비트수의 다른 오버헤드 값을 추가한 후, 오버헤드가 추가된 복수의 압축된 코드를 합쳐서 하나의 압축 코드를 생성하는 단계;
    상기 제어부에 의해, 상기 인터리빙된 코드 및 상기 생성된 압축 코드 간의 압축비율을 산출하는 단계;
    상기 제어부에 의해, 상기 산출된 압축비율이 미리 설정된 임계값 이상인지 여부를 판단하는 단계;
    상기 판단 결과, 상기 산출된 압축비율이 상기 임계값 이상일 때, 상기 제어부에 의해, 상기 압축된 압축 코드에 대해서 인터리빙 과정, 압축 과정 및 압축비율 비교 과정을 수행하고, 반복 수행된 압축 횟수를 누적하는 단계 및
    상기 판단 결과, 상기 산출된 압축비율이 상기 임계값 미만일 때, 상기 제어부에 의해, 최종 압축된 상태의 압축 코드의 맨 앞에 상기 누적된 압축 횟수에 해당하는 코드를 추가하여 최종 압축 코드를 생성하는 단계를 포함하는 데이터 무손실 압축 방법.
  7. 제 6 항에 있어서,
    상기 생성된 복수의 블록을 압축하는 단계는,
    상기 압축단위별 크기인 N보다 비트수가 작은 상기 복수의 블록 중 마지막 블록은 압축을 수행하지 않는 과정;
    상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 복수의 블록 중 특정 블록을 압축할 수 있을 때, 상기 특정 블록에 대한 압축 과정을 수행하는 과정; 및
    상기 개수 식별자, 위치 식별자 및 구별 식별자에 대한 코드북을 근거로 상기 복수의 블록 중 다른 특정 블록을 압축할 수 없을 때, 상기 다른 특정 블록에 대한 압축 과정을 생략하는 과정을 포함하는 것을 특징으로 하는 데이터 무손실 압축 방법.
KR1020190117696A 2019-09-24 2019-09-24 데이터 무손실 압축 장치 및 그 방법 KR102138892B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190117696A KR102138892B1 (ko) 2019-09-24 2019-09-24 데이터 무손실 압축 장치 및 그 방법
PCT/KR2020/012393 WO2021060758A1 (ko) 2019-09-24 2020-09-14 데이터 무손실 압축 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190117696A KR102138892B1 (ko) 2019-09-24 2019-09-24 데이터 무손실 압축 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR102138892B1 true KR102138892B1 (ko) 2020-07-28

Family

ID=71831412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190117696A KR102138892B1 (ko) 2019-09-24 2019-09-24 데이터 무손실 압축 장치 및 그 방법

Country Status (2)

Country Link
KR (1) KR102138892B1 (ko)
WO (1) WO2021060758A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021060758A1 (ko) * 2019-09-24 2021-04-01 심인보 데이터 무손실 압축 장치 및 그 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11750213B1 (en) 2022-08-31 2023-09-05 Hong Kong Applied Science and Technology Research Institute Company Limited Train-linking lossless compressor of numeric values
CN116016606B (zh) * 2023-01-09 2023-08-18 安徽省分众分析测试技术有限公司 一种基于智慧云的污水处理运维数据高效管理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101268934B1 (ko) 2009-02-13 2013-05-30 고려대학교 산학협력단 데이터 압축/해제장치 및 방법
KR101785898B1 (ko) * 2011-01-14 2017-10-16 지이 비디오 컴프레션, 엘엘씨 엔트로피 인코딩 및 디코딩 방식
KR101810863B1 (ko) * 2017-03-07 2017-12-20 한양대학교 산학협력단 누적 심볼 빈도수 기반 Deflate 부호화 방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818368A (en) * 1997-04-18 1998-10-06 Premier Research, Llc Method and apparatus for lossless digital data compression
KR100686354B1 (ko) * 2005-11-16 2007-02-22 엠텍비젼 주식회사 가변 트리를 이용한 허프만 복호화 방법 및 장치
KR102488129B1 (ko) * 2018-02-05 2023-01-12 에스케이하이닉스 주식회사 고속으로 데이터를 인코딩하는 장치
KR102138892B1 (ko) * 2019-09-24 2020-07-28 심인보 데이터 무손실 압축 장치 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101268934B1 (ko) 2009-02-13 2013-05-30 고려대학교 산학협력단 데이터 압축/해제장치 및 방법
KR101785898B1 (ko) * 2011-01-14 2017-10-16 지이 비디오 컴프레션, 엘엘씨 엔트로피 인코딩 및 디코딩 방식
KR101810863B1 (ko) * 2017-03-07 2017-12-20 한양대학교 산학협력단 누적 심볼 빈도수 기반 Deflate 부호화 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021060758A1 (ko) * 2019-09-24 2021-04-01 심인보 데이터 무손실 압축 장치 및 그 방법

Also Published As

Publication number Publication date
WO2021060758A1 (ko) 2021-04-01

Similar Documents

Publication Publication Date Title
KR102138892B1 (ko) 데이터 무손실 압축 장치 및 그 방법
US8902090B2 (en) Compressing and decompressing signal data
CN107395209B (zh) 数据压缩方法、数据解压缩方法及其设备
CN106776677B (zh) 文件转换方法、装置及文件传输系统
US10003356B2 (en) Devices and methods of source-encoding and decoding of data
CA2514832A1 (en) System and method for compression of wireless applications expressed in a structured definition language
US9794828B2 (en) Radio unit, baseband processing unit and base station system
CN107919943B (zh) 二进制数据的编码、解码方法和装置
US11178212B2 (en) Compressing and transmitting structured information
US20180253559A1 (en) Secured lossless data compression using encrypted headers
CN105052040A (zh) 多流压缩与解压的方法与系统
CN104081701A (zh) 光网络系统的通信方法、系统及装置
CN114614829A (zh) 卫星数据帧的处理方法、装置、电子设备和可读存储介质
CN113015019B (zh) 数据处理方法、装置和系统
US8018359B2 (en) Conversion of bit lengths into codes
CN112888024A (zh) 数据处理方法、装置、存储介质及电子设备
JP6005273B2 (ja) データストリームの符号化方法、送信方法、伝送方法、データストリームを符号化するための符号化装置、送信装置、および、伝送装置
US8854234B1 (en) Decompression circuit and associated decompression method
EP3300271A1 (en) Communication systems and methods
CN101636954A (zh) 用于对物理资源块位置进行编码和解码的优化技术
CN110855990B (zh) 图像编码、解码方法、计算机设备和图像处理系统
KR20150072853A (ko) 가변길이코딩을 이용한 인코딩 방법, 디코딩 방법, 및 그 시스템
CN103677230A (zh) 数据传输装置
CN113674387B (zh) 非自然场景视频的视频处理方法、装置
US9648144B2 (en) Data compression method and decompression method

Legal Events

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