JPEGの仕組みを完全理解!可逆圧縮の裏側をインタラクティブに学ぼう
How JPEG works: Interactively explore JPEG's lossy compression methods
How JPEG works: Interactively explore JPEG's lossy compression methods
JPEGの非可逆圧縮(Lossy Compression)が、実際どのようなアルゴリズムで画像データを削っているのか気になりませんか?このサイトでは、圧縮のプロセスをブラウザ上で視覚的に操作しながら、JPEGの仕組みを直感的にマスターできます。画像処理の深淵を覗いてみたいエンジニアは必見です。
提示された情報はありがたいけど、コントロールが操作対象と同じ画面内に表示されないと、インタラクティブなコンポーネントとしての意味がほとんどなくなっちゃうよ。
すごく分かりやすい図解だね。一つだけ指摘させてもらうと、輝度を優先する(Cr/CbよりYに多くのビットを割り当てる)のは、目の杆体細胞の数によるものじゃないよ。杆体細胞が多いのは夜間に光子を多く捉えるためで、日中の明るさでは大抵飽和状態だからね。YCbCrエンコーディングが効果的なのは、LGN(外側膝状体)への主要な経路において、輝度と中心周辺対抗性のエンコーディングが(ビット数の80~90%を)占めているからで、だからYに多くのビットを割り当てるのが理にかなってるんだ。
これまで見た中でも最高の説明の一つだよ。シェアしてくれてありがとう。
普段当たり前のように使っているものについて、深い洞察が得られて感謝。
空間領域と周波数領域の違いを初めて知った時のことを思い出した。授業中は完全には理解できなかったんだけど、帰り道を歩いている時に立ち止まって座り込んで考え込んでしまってさ……。人類の歴史のすべてを周波数変化として「リファクタリング」し始めたんだ!かなり面白いコンセプトだよね。
アルゴリズムを解説しているシリーズ動画があるよ:https://www.youtube.com/watch?v=LFXN9PiOGtY (https://www.youtube.com/watch?v=LFXN9PiOGtY)
DCTについてはこの動画を見てやっと理解できた:https://www.youtube.com/watch?v=Q2aEzeMDHMA (https://www.youtube.com/watch?v=Q2aEzeMDHMA)
あと、誰かが作った「JPEG to PNG」ツールで「与えられたJPEGファイルをエンコードできる最も滑らかな画像を探索する」っていうのがあって、GitHubにあるよ:https://github.com/victorvde/jpeg2png (https://github.com/victorvde/jpeg2png) 。すごくひどく圧縮された画像で試してみたけど、出力結果はかなり改善されたよ。
JPEGの面白いところは、ロスレス(非可逆変換なし)で操作できる部分があることだよね。特に、複数の画像を連結することなんかはできる。
残念ながら、一般的なJPEGライブラリでこういった操作を公開しているものはほとんどない。2010年代から更新されていないような古いC言語ベースのコードを使うのが唯一の選択肢になっちゃってる。
ありがとう、すごく分かりやすい解説だった!シェアしてくれて助かる。
PNGみたいな他のフォーマットについての続編も見てみたいかも。
(2017年)