Dev & Code 27 min ago0ブックマークに追加
![**リグレッシブJPEGs:開発者がアルゴリズムを逆転させて退行する画像を作成する** > この記事では、画像圧縮技術のJPEGについて、そのアルゴリズムを逆転させて退行する画像を作成する方法を紹介します。開発者がどのようにしてこの技術を利用しているのか、そのプロセスと結果について詳しく説明します。 [ENCADRE titre="リグレッシブJPEGsの概要" contenu="リグレッシブJPEGsは、通常のJPEG画像を逆転させることで、画像の品質が徐々に低下するように設計された技術です。この技術を利用することで、画像のサイズを削減しながらも、視覚的な劣化を最小限に抑えることができます。"] - **通常のJPEG圧縮** - 画像をブロックに分割し、各ブロックを周波数成分に変換 - 高周波成分を削除してデータ量を削減 - 量子化とエントロピーコーディングを適用 - **リグレッシブJPEG圧縮** - 通常のJPEG圧縮プロセスを逆転させる - 画像の品質を徐々に低下させるように設計 - 画像のサイズを削減しながら、視覚的な劣化を最小限に抑える [ENCADRE ti](https://cdn.nimpress.com/media/images/def2a3ddb2788cd3c39a66091a1af1ee.png)
**JPEGコーデックの逆探求を公開したハッカー:DCT量子化を操作して、デコード時に意図的にアーティファクトを生成する画像を生成する。興味深く、教育的であり、フォーマットを理解するための優れた練習問題である。**
この週のHacker Newsのホームページで、タイトルが「Regressive JPEGs」という記事(maurycyz.com/projects/bad_jpeg/)が目に留まりました。著者は、JPEGコーデックの逆方向の探求を文書化しています。画像のサイズと品質を最適化するのではなく、量子化テーブルとDCT(離散コサイン変換)ブロックを操作して、意図的に劣化したJPEGを生成しています。
これは生産用のツールではなく、JPEGが内部でどのように動作するかを理解するための素晴らしい口実です。これは、ほとんどの開発者が仕様を読むことなく使用しているフォーマットです。
JPEG(Joint Photographic Experts Group、1992年のISO/IEC 10918-1標準)は、クラシックなパイプラインに従います:
認識される品質は、主にステップ5に依存します。量子化テーブルが攻撃的であるほど、高周波数の詳細が失われます。
著者はこのメカニズムを悪用しています。特定の周波数で非常に高い値、他の場所で異常に低い値を持つようなエキゾチックな量子化テーブルを構築することで、標準デコーダーが読み取ると、次のようなJPEGを生成します:
教育的な価値は実在します。目で見ることで、コーデックの各パラメータがどのような内容を保持するかがわかります。
好奇心の楽しみを超えて、いくつかの正当な用途があります:
根本的に、この種のプロジェクトが示すことは、黒箱だと思われるフォーマットには常に利用可能なレバーが隠されているということです。最善の利用か、純粋な好奇心のためか。
元のJPEG仕様(ITU T.81 / ISO 10918-1)は冗長ですが読みやすく、デコーダーが実際に見るものを理解するための最良の入口です。ツール面では、libjpeg-turbo(Darrell Commander)を使用して、djpeg -verboseを介してファイルの量子化テーブルを検査できます。これは、コーデックが具体的なJPEGに保存した内容を確認する優れた方法です。
覚えておくべきこと:ファイルフォーマットは黒箱ではありません。少し仕様(JPEG、PNG、WebP)を読むことで、開発者は毎日使用する画像ツールのより良いユーザーになります。
本記事は人工知能により作成され、人間の編集管理のもとで校閲されています。