2011/11/24

zlibでメモリ上のデータを圧縮(IplImage)

ネットワーク通信の部分もそこそこできたので、
次はArduinoタンクで撮影した画像を転送する部分に取り掛かりたいと思います。

Arduinoタンク側のBeagleBoard-xmで撮影した画像(IplImage)を、そのまま転送するとかなりのデータ量になりそうです。そこで、zlibを使って圧縮してから転送しようと考え、zlibの使いかたを調べてみました。

参考にしたサイト: zlib入門

今回作ったコードは別館の方においてあります(compress.zip)。

さて、早速VGAサイズの画像データをzlibを使って圧縮してみます。

//------------------IplImageをzlibで圧縮するサンプルプログラム
/mnt/ramdisk/compress$ output_compress cat011.jpg 
width: 480  height:640
widthStep:1440  channel:3
buffer size is 921600 bytes
compbuf:1013760 bytes allocated.
res:0, size:755.9023 kByte.
成功
圧縮にかかった時間: 36.81 ms 圧縮比:0.84
解凍 成功
res:0, decomp size:921600


。。。ん?
あまり小さくなってない。。
複雑な画像だと、可逆圧縮の場合は圧縮比がそんなに良くならないようです。

また、処理時間がデスクトップ(Phenom 2.6GHz)で40msかかるので、BeagleBoardだともっとかかると思います。回線がある程度速い場合は、圧縮しないほうが良いかもしれません。


ではまた。

0 件のコメント:

コメントを投稿