| 開発者 | 独立JPEGグループ Guido Vollbeding (メンテナー) [1] [2] |
|---|---|
| 初回リリース | 1991年10月7日 |
| 安定リリース | 9f [3]
/ 2024年1月14日 |
| リポジトリ | github.com/thorfdbg/libjpeg |
| 書かれた | C |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 図書館 |
| ライセンス | カスタムBSDライク (フリーソフトウェア) |
| Webサイト | ijg.org jpegclub.org |
libjpeg は、JPEG画像データ形式を処理する機能を備えたフリーライブラリです。JPEGコーデック(エンコードとデコード) と、JPEG データを処理するさまざまなユーティリティを実装しています。C で記述されており、帰属表示を要求するカスタム許容型 (BSD 風) フリー ソフトウェア ライセンスの条件に従って、ソース コードとともにフリー ソフトウェアとして配布されています。元のバージョンは、Independent JPEG Group (IJG) によって保守および公開されています。一方、追加機能を備えたフォークもいくつかあります。
JPEG JFIF画像はWeb上で広く使用されています。圧縮量を調整することで、ファイルサイズと画質のバランスをとることができます。[4]
ユーティリティ
libjpeg には次のユーティリティ プログラムが同梱されています。
- cjpeg と djpeg
- JPEG とその他の一般的な画像ファイル形式間の変換を実行します。
- rdjpgcom と wrjpgcom
- JPEG ファイルにテキストコメントを挿入および抽出します。
- jpegトラン
- 既存の JPEG ファイルの変換用。
jpegトラン

(ここではユーザー インターフェイスCropGUIを使用)
コマンドラインプログラムjpegtran は、DCT係数の表現を再フォーマットおよび再コーディングするための機能、実際の画像データの変換のための機能、JPEG ファイル内の補助データを破棄するための機能を提供します。係数の表現に関する変換は、次のとおりです。
- JPEGファイルのハフマン符号化層を最適化して圧縮率を高める。
- プログレッシブJPEG形式とシーケンシャルJPEG形式間の変換、
- エントロピー符号化層におけるハフマン符号化と算術符号化間の変換。[5] [6] [7]
これらの変換はそれぞれ完全にロスレスで可逆的です。画像データの変換は次のようになります。
- 一部の画像プログラムによって挿入される非標準のアプリケーション固有のデータを排除する。
- ファイルに対して次のような特定の変換を実行します。
- カラーチャンネルの破棄(グレースケールへの変換)、
- 90度ずつ回転、反転、
- 画像ブロックの境界(8×8または16×16ピクセルごと)での切り取りまたは結合、
- 再スケーリング[8]
これらは、保存された画像データに関してのみ、ロスレスかつ可逆的です。画像データの非可逆量子化を繰り返して再エンコードすること(世代損失)は行われません。
歴史
Independent JPEG Group (IJG) の JPEG 実装は、1991 年 10 月 7 日に初めて公開され、それ以来、大幅に開発が進められてきました。当初、開発は主にTom Laneによって行われました。IJGのオープンソース実装は、主要なオープンソース パッケージの 1 つであり、JPEG 標準の成功の鍵となりました。多くの企業が、画像エディタや Web ブラウザなどのさまざまな製品にこれを組み込みました。[9]
1994 年 9 月 24 日にリリースされたバージョン 5 では、コード ベース全体が書き直されました。埋め込みテキスト コメントを処理するためのユーティリティ プログラムrdjpgcomとwrjpgcomが導入されました。1995 年 8 月 2 日のバージョン 6 では、プログレッシブ JPEG がサポートされ、初めてユーティリティ プログラムjpegtranが導入されました。このユーティリティは、バージョン 6b で画像の回転と反転、およびグレースケールの縮小の機能が追加されました。
libjpeg-turbo およびその派生
1998年3月27日のlibjpegバージョン6bから、宮坂勝はx86 SIMD最適化を含むlibjpeg/SIMDというブランチをフォークしました。これは2009年にTigerVNCとVirtualGLプロジェクトから多大な貢献を得ました。それを基に2010年にlibjpeg-turboプロジェクトが作成されました。[10]
2014年3月4日、ファイルサイズを最適化するフォークMozJPEGの最初のバージョンが公開されました。このバージョンでは、Mozilla ResearchのJosh Aasがx264のメイン開発者Loren MerrittのPerlスクリプトjpegcrushを作り直し、libjpeg-turboのコードベースに統合しました。[11]
2014年7月10日、Mozillaはバージョン2.0をリリースしました。このバージョンでは主にトレリス量子化が追加され、ベースラインJPEGのサイズも削減できるようになりました。Facebook社は次期バージョンの開発には6万 ドルが支払われ[12]、CloudFlareはMozJPEGの改良のために開発者を割り当てた[13] 。
2019年、libjpeg-turboはISOとITUが承認したJPEG形式のリファレンス実装となった。[14]
2024年4月、Googleは新しいJPEGコーディングライブラリであるJpegliを導入しました。これは、強化された機能と高品質の圧縮設定での圧縮率の35%向上を提供し、コーディング速度はMozJPEGに匹敵します。[15]
IJGリーダーシップの変更
11年が経過し、リーダーシップが変わった後、Guido Vollbeding率いるIJGはlibjpegの新バージョン(7から9)をリリースしたが、いずれも以前のバージョンとのABI互換性を破壊した。[16] 6xシリーズの後に予定されていた変更は実現されなかった。 [17] バージョン7では、特許の問題で以前に拒否された算術符号化
のサポートとjpegtran()の切り取り機能が導入された。[17]-crop
バージョン8と9は、基本的に議論の余地のある[18]互換性のないフォーマット拡張の導入を目的としていました。これらは、既存の標準化されたソリューションよりも効果がなく、劣っていると広く考えられています。 [19] [20]これらの標準化は、 ITU-Tに提出された後、拒否されました。元の主催者であるトム・レーンと他の人たちは、これらの変更はIJGの目標からの逸脱であると批判しています。[18]
バージョン
フォーク
よく知られているフォークとしては、実行速度を最適化する libjpeg-turbo と、より小さなファイル サイズを最適化する MozJPEG があります。
ISOにも同様の名称のライブラリがあり、JPEG、 JPEG XT、JPEG-LS規格の完全な実装を目指している。[26]
libjpeg-turbo
| 開発者 | libjpeg-turbo プロジェクト |
|---|---|
| 初回リリース | 2010年11月19日 |
| 安定リリース | 3.0.4 [27]
/ 2024年9月14日 |
| リポジトリ | github.com/libjpeg-turbo |
| Webサイト | libjpeg-turbo.org |
libjpeg-turboはlibjpegのフォークで、 SIMD 命令を使用してベースラインJPEGエンコードとデコードを高速化します。現在、人気のLinuxディストリビューション(Fedora、Debian、Mageia、openSUSEなど)、Mozilla、Chromeなど、多くのプロジェクトがlibjpegの代わりにlibjpeg-turboを使用しています。[28] [29] [30]パフォーマンスとは別に、古いlibjpeg v6bリリースとの下位ABI互換性を維持できるため、一部のプロジェクトではlibjpeg-turboの使用を選択しました。 [31] libjpeg v7、v8、v9は以前のリリースとのABI互換性がなくなりました。[16]
libjpeg-turbo は、libjpeg v7 に見られる標準準拠の算術符号化とロスレス クロップ機能を実装しています。libjpeg v7 または v8 ABI と互換性を持つように構成することもできますが、DCT スケーリングと、DCT スケーリングを基盤とする独自の SmartScale を実装しています。[32] libjpeg-turbo は SmartScale をサポートしないことを選択しました。これは、SmartScale がITU-T標準ではないことと、独自の調査で SmartScale (および DCT スケーリング) が効果的ではないことがわかったためです。[22]さらに、libjpeg v9 の唯一の主要な新機能は SmartScale 形式に固有のものであるため、libjpeg-turbo プロジェクトは libjpeg v9 のエミュレーションを放棄することを選択しました。[19]
2019年以降、libjpeg-turboは2つのJPEGリファレンス実装のうちの1つであり、ISO/IEC 10918-7およびITU-T T.873として利用可能です。[14]もう1つのリファレンス実装はISO libjpegで、JPEG XTとJPEG LSのサポートも含まれています。
モズJPEG
MozJPEGはDCT係数のスペクトルのいくつかの分割を試みる | |
| 開発者 | Mozilla リサーチ |
|---|---|
| 初回リリース | 2014年3月4日 |
| 安定リリース | 4.1.5 / 2023年10月12日[33] |
| Webサイト | github.com/mozilla/mozjpeg |
MozJPEG は、Mozilla Research の Josh Aas 氏らが libjpeg-turbo からフォークしたものです。画質を維持しながらコーディング効率を改善することで、ファイル サイズ (約 10%) を削減し、転送時間を短縮することで、Web ページの読み込み時間を短縮することを目的としています。これを実現するために、JPEG 標準との完全な互換性を維持し、デコーダー側での変更を必要とせずに、エンコードにより多くの処理能力を使用します (非対称)。
MozJPEG が高圧縮を実現するために使用する技術には、ハフマンツリーの最適化、プログレッシブ コーディングを使用して DCT 係数のスペクトルを別々のスキャンに最適に分割すること、トレリス量子化の使用などがあります。さらに、プリセットはファイル サイズを最小化するように積極的に調整されています。
libjpeg-turboの他に、MozJPEGはLoren MerrittによるPerlスクリプトであるjpegcrushをベースに構築されています。 [11] [34]
ジェグリ
| 開発者 | グーグル |
|---|---|
| 初回リリース | 2020年11月14日 |
| 安定リリース | 0.10.2 / 2024年3月8日 |
| Webサイト | github.com/google/jpegli |
2024年4月、Googleは新しいJPEGコーディングライブラリであるJpegliを導入しました。これは、強化された機能と高品質の圧縮設定での圧縮率の35%向上を提供し、コーディング速度はMozJPEGに匹敵します。[35]
ISO ライブラリjpeg
ISO/IEC Joint Photography Experts Groupは、ベースJPEG(ISO/IEC 10918-1および18477-1)とJPEG XT拡張(ISO/IEC 18477パート2および6-9)、およびロスレスJPEG-LS(ISO/IEC 14495)のリファレンスソフトウェア実装を維持しています。[36]また、MozJPEGの最適化もいくつか含まれています。libjpegとも呼ばれていますが、Independent JPEG Group(IJG)が提供するソースコードとは関係がなく、2007年以降にIJGによって導入された独自の拡張機能をサポートしていません。
参照
参考文献
- ^ Göhler, Lars (2020年4月29日). 「Independent JPEG Groupのlibjpegの新バージョン(Ver. 9d)が利用可能になりました」. JPEGclub.org . Independent JPEG Group . 2021年1月25日閲覧。
- ^ Friesenhahn, Bob (2020年6月6日). 「Re: [Libjpeg-devel-6x] 4 Integer Overflow Errors in libjpeg-9c」. SourceForge.net . SourceForge . 2021-01-25閲覧。
唯一の懸念は、Guido Vollbeding がこのリストに登録していない可能性が高く、IJG JPEG は基本的に1人の人物によって開発されていることです。
- ^ 「Independent JPEG Group」 。 2024年1月27日閲覧。
- ^ JPEG JFIF
- ^ Jpegcropの設定とオプションの説明
- ^ Filmic Games >> 我々の特許制度の最大の失敗は... 2012-09-01 にWayback Machineでアーカイブ
- ^ 680385 - Firefox で算術符号化された jpeg が表示されない
- ^ 新しいjpegtran機能
- ^ JPEGホームページ
- ^ "libjpeg-turbo". libjpeg-turbo .
- ^ ab André Kramer (heise.de-Newsticker)、2013 年 1 月 14 日: Mozilla-Encoder veressert JPEG-Kompression
- ^ Sebastian Grüner、2014 年 7 月 16 日: MozJPEG 2.0: Facebook unterstützt JPEG-Encoder von Mozilla
- ^ “CloudFlare の Mozillas JPEG エンコーダー ベイトラゲン”. 2014 年 7 月 30 日。
- ^ ab 「ISO/IEC 10918-7:2019 情報技術 - 連続階調静止画像のデジタル圧縮および符号化 - パート7:参照ソフトウェア」。ISO。「T.873 (05/19): 情報技術 - 連続階調静止画像のデジタル圧縮および符号化: 参照ソフトウェア」www.itu.int。
- ^ 「Jpegli の紹介: 新しい JPEG コーディング ライブラリ」。Google オープンソース ブログ。2024 年 4 月 3 日。2024 年 4 月 3 日時点のオリジナルよりアーカイブ。2024年4 月 4 日に閲覧。
- ^ ab "libjpeg: API/ABI 変更レビュー" . 2017 年 10 月 28 日閲覧。
- ^ ab Mans Rullgard (Hardwarebug.org)、2009 年 8 月 4 日: IJG が復活 2014 年 7 月 16 日にWayback Machineにアーカイブ
- ^ ab Tom Lane、2013年1月16日: jpeg-9、API/ABI互換性、そしてこのプロジェクトの将来的な役割
- ^ ab 「libjpeg v9 についてはどうですか?」 libjpeg-turbo チーム. 2013 年2 月 8 日閲覧。
- ^ Mans Rullgard (Hardwarebug.org)、2010年2月1日: IJGが再び攻撃を仕掛けるが失敗
- ^ 「代替算術コーダを使用した ITU-T T.81 (JPEG-1) ベースの静止画像符号化」(pdf)。2009 年 9 月。
- ^ ab "libjpeg-turbo | 概要 / DCTスケーリングとSmartScaleの有用性に関する研究". libjpeg-turbo.org .
- ^ ITU-T JPEG-Plus 提案 R3
- ^ JPEGの進化
- ^ JPEG 9 ロスレスコーディング
- ^ “Libjpeg”. GitHub . 2021年10月6日.
- ^ 「リリース 3.0.4 · libjpeg-turbo/libjpeg-turbo」。2024年9月15日閲覧。
- ^ libjpeg-turbo を使用または提供するソフトウェア。2012 年 2 月 9 日。
- ^ 問題 48789 – chromium – libjpeg の代わりに libjpeg-turbo を使用してください。2011 年 4 月 14 日。
- ^ バグ 698519 – libjpeg-turbo 1.2 へのアップデート。2012 年 2 月 28 日
- ^ F14 用の libjpeg。2012 年 2 月 9 日。
- ^ libjpeg-turbo README ファイル 2018-12-14 にWayback Machineにアーカイブ
- ^ “リリース · mozilla/mozjpeg”. github.com . 2022年8月14日閲覧。
- ^ Andreas Donath (golem.de)、2014 年 3 月 6 日: Mozilla は JPEG をより強力に保存する予定です
- ^ 「Jpegli の紹介: 新しい JPEG コーディング ライブラリ」。Google オープンソース ブログ。2024 年 4 月 3 日。2024 年 4 月 3 日時点のオリジナルよりアーカイブ。2024年4 月 4 日に閲覧。
- ^ 「Jpeg - Jpeg Xt」。
外部リンク
- JPEGに関するよくある質問
- Nyman, Robert; Aas, Josh (2014 年 8 月 6 日)。「MozJPEG を使用して効率的な JPEG を作成する」。Hacks。Mozilla。
