👊 1万回JPEG (🔈 じぇい ぴー いー じー) る 👊
じぇいぺぐ。私の嫌いな言葉です。
そんなに「じぇいぺぐ」が好きになったのか、ウル⭕ラマン。(CV:山寺宏一)
※ 拡張子は .jpg
です。
概要
JPEG (🔈 じぇい ぴー いー じー) は非可逆圧縮アルゴリズムである。そのため、度重なる JPEG (🔈 じぇい ぴー いー じー) 圧縮による画質欠損は、日本国憲法により禁止されてる。懲役 96kbps または 650MB 以下の罰金に処されます。画像の基本的人権ため、決して画質を侵してはならない。私たちはそう、小学生の道徳の時間から、大学の便所飯の時間に至るまで、先祖代々言い伝えられて来た。
しかし、ダメと言われるとやりたくなるのが人間の佐賀、という訳では無いのだけど。
どれぐらい繰り返すと、どれぐらい欠損するのか気になりません?
はい、私は気になります。
という訳で、繰り返し JPEG (🔈 じぇい ぴー いー じー) 圧縮を行って、欠損具合を比較してみた。お巡りさん、こちらです。
※ 拡張子は .jpg
です。
結論
最初の1回目以降は劣化はかなり乏しい。
10回目あたりからハイパー アーマー (?) 化。
約9990回が無駄処理になった。
想像以上に劣化しなかった。
※ 拡張子は .jpg
です。
検証
検証環境
- Windows 10 Pro x86_64版
- 2つのツールで比較してみた
- ImageMagick
https://imagemagick.org/ - JPEG Club版 cjpeg / djpeg
https://jpegclub.org/
- ImageMagick
※ 拡張子は .jpg
です。
検証方法
- 非劣化の元画像。
(Pixivで年齢制限されてしまっているので、一部モザイク処理) - 1万回繰り返し、変換画像を生成する。
- 元画像を一時画像としてコピー。
- 一時画像を JPEG (🔈 じぇい ぴー いー じー) に変換する (劣化品質
50
)。 - 変換した JPEG (🔈 じぇい ぴー いー じー) を、非劣化画像に戻して、一時画像に上書きする。
- WinMergeで比較する。
※ 拡張子は .jpg
です。
比較
※ 拡張子は .jpg
です。
① ImageMagick
コマンド
ImageMagickで BMP ⇔ JPEG の変換を繰り返す。
@REM original => tmp.bmp.
copy /y "sample.png" "tmp.bmp"
@REM loop.
FOR /l %A IN (1, 1, 1000) DO (
@REM convert to jpeg.
magick convert -quality 50% "tmp.png" "sample (%A).jpg"
@REM convert to bmp and copy to tmp.bmp.
magick convert "sample (%A).jpg" "tmp.bmp"
)
@REM 1liner.
(copy /y "sample.png" "tmp.bmp") && FOR /l %A IN (1, 1, 1000) DO ((magick convert -quality 50% "tmp.png" "sample (%A).jpg") && (magick convert "sample (%A).jpg" "tmp.bmp"))
オリジナル v.s. 1回目
ほぼ全体に差異があり。
1回目 v.s. 2回目
2回目 v.s. 3回目
12回目 v.s. 13回目
差が無くなった。
オリジナル v.s. 1万回目
思った以上に差がない。
1回目 v.s. 1万回目
思った以上に差がない。
プロパテぃー
全部Quality一緒。
② cjpeg
※ 拡張子は .jpg
です。
コマンド
cjpeg
で BMP ⇒ JPEG に変換。
djpeg
で BMP ⇐ JPEG に戻す。
を繰り返す。
@REM original => tmp.bmp.
copy /y "sample.bmp" "tmp.bmp"
@REM loop.
FOR /l %A IN (1, 1, 10000) DO (
@REM convert to jpeg.
cjpeg -quality 50 "tmp.bmp" "sample (%A).jpg"
@REM convert to bmp and copy to tmp.bmp.
djpeg -bmp "sample (%A).jpg" "tmp.bmp"
)
@REM 1liner.
(copy /y "sample.bmp" "tmp.bmp") && FOR /l %A IN (1, 1, 10000) DO ((cjpeg -quality 50 "tmp.bmp" "sample (%A).jpg") && (djpeg -bmp "sample (%A).jpg" "tmp.bmp"))
オリジナル v.s. 1回目
ほぼ全体に差異があり。
1回目 v.s. 2回目
2回目 v.s. 3回目
10回目 v.s. 11回目
差が無くなった。
オリジナル v.s. 1万回目
思った以上に差がない。
1回目 v.s. 1万回目
思った以上に差がない。
プロパテぃー
全部Quality一緒。
あとがき
予想外の結果に、正直残念な気分。ツールのアルゴリズムが昨今優秀になったのかな?それとも、アルゴリズムの特性上の理由で、何度繰り返しても同様の箇所が同様に欠落するから、同様の結果になるのだろうか。
そう言えば、MP3の圧縮アルゴリズムの中で、マスク効果などで聞こえない音を間引いている、って話があって。じゃぁ、再エンコでは一度間引かれたところが優先的に落とされやすくなって、2回目以降の劣化は低くなるんじゃ?なんてずっと思ったりもしている。
詳しい人、教えて欲しい。
※ 拡張子は .jpg
です。
おまけ
※ 拡張子は .jpg
です。
1
からなの?
Q. ループなのに 今回 0
はオリジナルにしたので。
.jpeg
じゃないの?
Q. 拡張子は 最近なんでか、 .jpeg
のサービスあるよね、twitterとか。
今更なんで?どこ界隈から発生しているの?
Google Photoに知らん間に .jpeg
が増殖してて、でもあとからファイル名を変えられなくて、正直しんどい。
ホントやめて欲しい。
MPEG
は?
Q. 🔈 えむ ぴー いー じー
PNG
は?
Q. 🔈 ぴー えぬ じー
※ 公式では ping
(🔈 ぴん) と同じ発音とのこと。
GIF
は?
Q. 🔈 じふ
DVD
は?
Q. lヽ ノ l l l l ヽ ヽ
)'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l
/ D | | |/| ハ / / ,/ /|ノ /l / l l l| l D ヽ
l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ /
| V l トー-トヽ| |ノ ''"´` rー-/// | V |
| ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ |
| D | | l | ヽ, ― / | | l D |
| !! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! |
ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ
/ / ノ⌒ヾ、 ヽ ノハ, |
,/ ,イーf'´ /´ \ | ,/´ |ヽl |
/-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l
,/ | ヽ \ _,ノーf' ´ ノノ ヽ | |
、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
 ̄ ̄ | /  ̄
(引用元:D・V・D!!(「姉DVD」あとりk) - あのAAどこ?)
女は
?
Q. 紙かjpg (🔈 じぇい ぴー じー) に限る!
謝辞
-
ImageMagick
https://imagemagick.org/ -
JPEG Club
https://jpegclub.org/
Discussion