• 締切済み

jpeg画像をより小さく圧縮するために

現在卒業研究で「画像圧縮によるホームページの高速表示」というテーマを研究しています。これは (1)自PCにサーバソフトをインストール (2)HTMLファイル内に含まれる画像ファイルを圧縮するプログラムをそれに組み込む (3)圧縮処理したHTMLファイルに解凍プログラムを添付、送信 (4)受信側でHTMLファイル内の画像を解凍、ページを表示 というのが大まかな流れです。 そこで、jpegファイルの圧縮に有効なプログラムをハフマン符号化をベースにCで作っているのですが、現在のjpegの規格に使われているハフマン符号化アルゴリズムよりもさらに圧縮率の高いプログラムを作らなければなりません。ちなみに差分値化処理は試しましたがあまり効果はありませんでした。 おおまかなご説明で構いませんので、何か有効な方法があればなにとぞご教授ください。よろしくお願いします。

みんなの回答

回答No.4

JPEG画像を可逆圧縮して元のJPEGファイルよりサイズを小さくするのは難しいと思いますよ。非可逆でいいならJPEG2000とか色々ありますが、ライセンスに注意する必要があります。 HTML+画像をまとめて小さくすればいいだけなら適当な書庫圧縮プログラムを流用するのが良さそうに見えます。7-zipとかGCAとか、圧縮率の良いプログラムは色々ありますね。その分メモリやCPUを食いますが。

yuzu_j
質問者

お礼

やっぱり難しいですか・・・。 フリーの圧縮ソフトの流用も検討したいと思います。 ありがとうございました。

  • nrb
  • ベストアンサー率31% (2227/7020)
回答No.3

全部元にに戻りませんので非可逆圧縮です jpeg自体が非可逆圧縮です (可逆圧縮もサーポトしてるのもありますけどJPG2000) 可逆圧縮で新しいアルゴ作ると これだけで一生遊べるさけの特許料を得ることができる可能性を秘めてます したがって、 仮にアイデアがあってもバラス訳には行きません 非可逆圧縮 データを減らすのは、人間の見た目(聞く)の誤差をどのように設定するかが重要です 可逆圧縮は データを減らさずにどのように、保存するかです 一番有名なのは差分値化処理です 差分値化処理も色々あります 主なのは、 上下の関係に着目するやり方 ある升目(例8×8)に注目したやり方 やり方は沢山あります http://www2.starcat.ne.jp/~fussy/algo/index.htm おにゅー見つけると凄いことになる 頑張って下さいね

yuzu_j
質問者

お礼

え~と、jpeg自体が非可逆圧縮なのは存じていますが、つまり自サーバ(apache)からHTMLファイルを送信するときに、それ以上その画像を劣化させてはダメ、というわけです。 そうですか、差分値化処理にもいろいろあるんですか・・・ 一次元的なものしか試してませんでした。 重ね重ね、どうもありがとうございます。

  • yukimican
  • ベストアンサー率70% (112/159)
回答No.2

圧縮アルゴリズムの話ではなく、本筋からは外れてしまいますが ・IMGタグの属性にあわせて原画像を縮小/トリミング  (→必要に応じてエッジ補正や平滑化) ・色分布(ヒストグラム)を見て、フルカラー → 16bit or 256色に減色  (→場合によっては減色後に別形式での保存も検討) なんてアイディアもありますね。 Photoshop等の画像処理ソフトでサイズを小さくするときにやる方法ですが、 プログラムでやろうとすると、かなり面倒かもしれません(^^; 画質の劣化の問題もありますし。 # あと、ここに自分のHPのURL書くと禁止事項(個人情報の開示)に # 抵触するので気をつけましょう。

yuzu_j
質問者

お礼

ご回答ありがとうございます。 すみません。書き忘れたんですが、今回の研究ではあくまで可逆圧縮アルゴリズムを使用する方針です。実用することを考えると、人がUPしたHPの画像を勝手に劣化させるとマズイので・・・。 >ここに自分のHPのURL書くと禁止事項(個人情報の開示)に抵触 気をつけま~す(^^)

  • nrb
  • ベストアンサー率31% (2227/7020)
回答No.1

やり方はあるのですが・・・ ただ特許の関係で・・・・・使えないかも知れません やり方だけ書きますが、外に公開すると特許に引っかかりますよ たぶん アルゴリズムは 小さな枡で説明しますね 10000×10000 ピクセル 以下セル これを 10個を1つにすると 1000×1000 と大幅に圧縮できます 同色が多い部分は(変化が少ない) 通常は部分は10×10 セルを1色にします 1つに束ねます 10×10が1セルの情報になります これじゃ・・・細か所が見えません そこで細かい所は 5×5 2×2 1×1 のセルに可変さすのです どの位が適当なのかは不明です 10×10が適正なのか20×20が良いのも分かりません 変なアルゴ組とでかくなりますけどね 笑えるでかさに成ったりするんだな 田んぼなんかホンマにモザイク状態に近いですけどね おんなじ色ばっかりだと かなりデータが減る 音声ならば通常は 低いビットレートでサンプリングして 細かい所はオーバーサンプリングする 方法の映像番です 上の方法は、映像の圧縮方法に使用されている技術です でも書くのは簡単だか・・・ どのように 判別するかは、非常に難しいですけどね 後は 同じ位の色は同色とみなして、何ピクセル連続するもあります 後は減色してビット数減らす手もあります フルの色はいらんですね 6万色もあれば通常は写真も大丈夫ですから いっそう256色にすれば・・ これで色を表現する 昔 8色しか出ないときに(えらい昔じゃ) 色を交互において目の錯覚で多色に見える手法を使ってます これやれば凄いが・・・・256色で交互に組み合わせれば・・・ 結構色でますね この手法使えば、私もアルゴ権利主張しますので・・・ 多分特許は無い でも伝送速度がどんどん上がるので余り意味が無いですが 差分値化処理はね 同じ色ばっかりだと圧縮効くんですがね 締め切らないでHPできたら見たいですね HPアド 書いてくれるとうれしいです

yuzu_j
質問者

お礼

ご回答ありがとうございます。 特許に関しては、顧問の教員と相談してみます。 ただ、お教えくださったアルゴリズムは、やっぱり非可逆圧縮の類なんでしょうか・・・?書き忘れて申し訳ないんですが、今回の研究では可逆圧縮でないといけないのです。 HPは、単にいろんな画像貼り付けるだけになると思うので、見てもしょうがないかと・・・表示速度を検証するだけなので(^^;;

関連するQ&A

専門家に質問してみよう