JPEG

| コメント(0) | トラックバック(0)
今の仕事に関係あるものの要求仕様にないところで、JPEG(ベースラインのみ)の実装をしてみました。

JPEG...夢でした。学生時代、まあ躁の気の迷いですから結局手つかずでしたが、「わかりやすいJPEG・MPEG2の実現法」なんて本を買ったりもしました。

ホストから短いパケット単位で送られてくるデータをその都度展開するという、能動的に読みに行く通常の動作と逆のものです。

マルチスレッドや割り込み優先度の差によって、データが必要サイズ揃うまで受信コールバックをブロックすればlibjpegの動作すら可能でしょうが、ちょっと作ってみたのです。必要RAMは3KB弱となりました。

以前Zlib展開の実装をしたことがありハフマン符号の理解があったこと、難関である逆離散コサイン変換に既存の(ライセンス的にOKな)関数を使ったことから、1週間程度で実用レベルのものができてしまいました。

ちなみに量子化テーブルやハフマンテーブルが一つのマーカーになっているもの、Y/C、DC/ACそれぞれ別々のマーカーになっているもの、と個性があるようでした。YCrCb 4:2:2のサンプルはImageMagickで作りましたが、出力できるソフトはあるのでしょうかね。

わかってしまえば至ってシンプルだなあ、というのが感想です。「非可逆」という割り切り、劇的な圧縮率。20年を越えて現役であり続けるのは凄いものです。

(追記2013/7/24)
YCrCb 4:2:2対応ソフトは少なくないようですが、GIFアニメ大学校様のこちらによると、Paint Shop Pro 8が色々設定できたようです。最新X5は不明ですが、さすがに4x2:2x2:2x2みたいなのは異常と言わざるを得ないような...。

トラックバック(0)

トラックバックURL: http://mychro.mydns.jp/cgi-bin/mt/mt-tb.cgi/375

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ