4

JPEGファイルの書き込みについて質問です。PNG ファイル example.png があり、情報を失うことなくファイル形式を JPEG に変更したいとします。今のところ、2 つの解決策があります。

  • 解決策 1: MATLAB でファイル形式の変換を実行する

    I = imread('example.png');

    imwrite(I,'example.jpg','Mode','lossless');

    II = imread('example.jpg');

    異なる = I-II;

    最大(異なる(:))

    このソリューションは、ロスレス JPEG ファイルを生成できます。ただし、このソリューションの問題は、DPI 解像度など、元の画像の一部の情報が失われる可能性があることです。さらに、生成された出力画像は、IrfanView や Windows Paint などの一般的な画像ビューアでは表示できません。

  • 解決策 2: IrfanView ソフトウェアを使用します。IrfanView プログラムの「名前を付けて保存」機能を使用すると、ファイル形式を非常に簡単に変更できます。ただし、JPEG ファイルを保存するときに「最高品質 100」オプションを設定しましたが、出力画像でも情報が失われています。これら 2 つの画像の差は、すべてのピクセルでゼロではありません。

したがって、問題を解決するために何をすべきかを考えています。どんなアイデアでも大歓迎です。

4

1 に答える 1

2

この問題には解決策がありません (2018 年現在)。

JPEG ファイルを大部分の画像ビューアで使用できるようにする場合は、非可逆圧縮の使用を避けることはできません。

一般的にサポートされているバージョンの JPEG は、DCT 圧縮に基づいています。これは、定義上、変換と丸めを実行するため、精度が低下します。

代替のロスレス JPEG 圧縮方式である JPEG-LS は、ほとんどサポートされていません。

損失のない元の画像を再構成するための損失のある画像 + レイヤーの組み合わせである JPEG-XT 拡張もあります。JPEG 画像ビューアーでは正常に機能しませんが、さらに新しく、まだ実装されているかどうかはわかりません。

本当にロスレスが必要な場合は、PNG を使用してください。JPEG で得られる最善の方法は、RGB 色空間の損失が最小限の JPEG で、quality=100 (これは文字通り 100% ではありません) です。

于 2018-01-21T22:56:28.593 に答える