압축 알고리즘 추천 좀 부탁드립니다.

elecguy의 이미지

안녕하세요.

압축알고리즘 좀 추천해주세요.

PC상에서 데이터를 압축해서 전송하면
임베디드시스템에서 압축을 풀면서 처리하게 됩니다.
데이터는 이미지종류의 바이너리 데이터이고 압축하는 용량은 수십에서 수백kb 입니다.
따라서 압축은 리소스를 어느정도 사용해도 상관없지만
해제는 리소스를 적게 쓰면서도 고속인 알고리즘이어야 할 것으로 생각됩니다.

제품에 사용할 것이기 때문에 오픈소스이구 라이센스에 문제가 없었으면 합니다.^_^;;

추천 부탁드립니다.
PS. 욕심이지만 제가 포팅해야 되기 땜시롱 비교적 간단했으면 합니다.

cpulpul의 이미지

압축 알고리즘은 모르고요

공개용으로 나온것중에
zlib : http://www.gzip.org/zlib/
bzip : http://sources.redhat.com/bzip2/

joinc에서 퍼왔습니다. zlib 프로그래밍에 참고 하세요
http://www.joinc.co.kr/modules.php?name=News&file=article&sid=143

송지석의 이미지

lzo 어떨까요?
upx를 개발한 곳에서 만든 것인데, 빠릅니다. 포팅도 쉽다고 주장합니다. GPL이고 상업용 라이센스도 존재합니다. 셸 스크립으로 받아다 풀고 하려면 lzop라는 프로그램도 있습니다.
http://www.oberhumer.com/opensource/lzo/

LZO is a portable lossless data compression library written in ANSI C.
Offers pretty fast compression and *extremly* fast decompression. [Screenshot]
Includes slower compression levels achieving a quite competitive compression ratio while still decompressing at this very high speed.
Distributed under the terms of the GNU General Public License. Commercial licenses available on request.
Military-grade stability and robustness.

memcpy(): ~60 MB/sec
LZO1X decompression in C: ~16 MB/sec
LZO1X decompression in optimized assembler: ~20 MB/sec
LZO1X-1 compression: ~5 MB/sec

Portability
LZO has been successfully built and tested on a variety of platforms including DOS (16 + 32 bit), Windows 3.x (16-bit), Windows 95/98/ME/NT/2000/XP/2003, Linux, HPUX and a DEC Alpha (64-bit).

LZO is also reported to work under AIX, AmigaOS, ConvexOS, CrayOS, Dreamcast, FreeBSD, IRIX, Mac Classic, MacOSX, MiNT, NetBSD, Nintendo64, OpenBSD, PalmOS (Pilot), PSX, PS2, OpenBSD, OS/400, QNX, Solaris, SunOS, TOS, WinCE, VMS, VxWorks and XBOX.

And finally it would be much fun to translate the decompressors to ancient CPUs like Z-80 or 6502 assembly.

임베디드에서 오픈소스를 쓰면 소스 공개해야 하는 부분이 생길텐데 괜찮으신가요?

송지석의 이미지

아, 그리고 이미지 종류의 바이너리면 bmp가 아닌 경우라면 압축해도 용량차가 별로 없을 텐데요..

elecguy의 이미지

먼저 답변 감사드립니다.
RAW 형태의 이미지 바이너리 데이터을 압축하는 건데..
전송속도가 비교적 느리기 때문에 압축율이 높은 것을 찾는 중입니다.
RLE 나 허프만은 구현은 단순하지만 원하는 압축률이 나오질 않는군요.
다른 압축알고리즘 더 없나요?

폐인, 노가다 그 끝은..?

tinywolf의 이미지

zlib가 정말 free하고 사용하기 적당했는거 같은데요..
저도 게임 리소스 관리자 만들때 가공된 현태의 RAW를 zlib를 써서 압축했죠..
압축율은 꽤 괜찮았던 것으로 기억합니다.

ㅡ_ㅡ;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.