2021年4月13日火曜日

JPEG保存にご用心



 この内容は以前、別のブログで書いたものだがサービスを停止してしまったので、今回改めてここに紹介することにした。


すべての画像は今回改めてPhotoshopで作成した。
また、条件を変えての実験も行ったのでそれらも合わせて紹介する。

では始めよう。
Photoshopでレイヤや調整レイヤを使って編集した場合はPhotoshopファイル形式(PSD)での保存が原則だが、レイヤーなどを使わなかった場合はどうだろう。
よくJPEG最高画質で保存したらダメなのと聞かれるのだが、結論から言うとあまりおすすめできない。

なぜならJPEGは保存のたびにすこしづつ画質劣化が進行するからだ。

画像をメールで送ったり、WEBに貼り付けるにはJPEGは便利だが、編集して保存、また開いて少し編集してまた保存のように何度も保存を繰り返すとかなり、そして致命的に画質が劣化する。
今でも最高画質で保存すれば大丈夫、少なくとも素人目にはわからない、という意見もある。
確かに1度の保存ではわかりにくい、だが回数を重ねるとかなりひどいことになるのも事実だ。しかし徐々に進行する劣化に気がつかないこともあるので注意が必要だ。

そこで、JPEGの複数回保存による画像劣化を検証するために、ちょっと無茶かもしれないが、PhotoShopで同じ写真をJPEGの「最高画質12」で50回保存をしてオリジナルと見比べることにした。実験に使った画像は2736X3648ピクセルの撮影画像。
全体像のリサイズでは背景の壁のなめらかなグラデーションを、部分等倍ではモデルの目や肌を比べてほしい。
まずは1回目、つまりこのブログにアップするために1回だけJPEGに書き出した画像。





左が全体、右が部分の等倍

保存して開いて、また保存を繰り返し、5回目





ほとんど変わっていないように見える

次は10回目





よく見ないとわからないが小鼻のところにノイズが出始めた。背景の上部にもトーンジャンプが見られる。

15回目





さらにノイズが増えてきた。背景上部のトーンジャンプもかなり目立つようになった。

20回目




 

30回目





さすがにここまでくると違いは明らかだ。

最後に50回





50回は普通考えられないが良い機会なので試してみた。ものすごいノイズだ。

 

JPEGの最高画質でも回数を重ねるとこんなに劣化する。もし少しだけ画質を落とすとどうなるのだろうか。
「JPEG高画質9」でも同様に実験してみた。
まずは1回目




1回目では先ほどの「最高画質」との差はわからない。

次に5回目






10回目






20回目






30回目





実験は50回まで行ったがここまでで十分だろう。

「最高画質12」と「高画質9」とでは明らかにノイズの種類が異なる。
最高画質12では日焼け跡の皮がむけだしたようなノイズが入るのに対し、高画質9ではポツポツと大きなノイズが入る。
この大きなノイズの大きさは8x8ピクセル。JPEGの1ブロックのサイズである。
JPEGは8x8ピクセルのブロックを特殊な処理で圧縮するので、このようなことになる。ブロックノイズと呼ばれる。

では、画像のピクセル数が少ないと相対的にこのノイズが大きくなるのだろうか。
やってみた。ハーフサイズで50回(画像のピクセル数は1368X1824)





ただし比較のため、右側の拡大図は200% 表示となっている。
当たり前だがノイズの絶対的な大きさである8x8ピクセルは変わらず、画素数が少ない分、相対的にノイズが大きく見える。

さらに実験は続く。次は画像にソフトフィルターをかけたものとストレート現像のままの画像での比較。
結果から言うとノイスの出方は大きく違っているが、ノイズの量にはあまり差がなかった。
5回や10回では差はわかりにくかったので20回目





部分拡大のみだがこのような違いが出た。
左がソフト処理あり、右がストレート現像ソフト処理なし。
ノイズの出方は少し違うようだが。

別の部分で同じく20回目




同じく左がソフト処理あり、右がストレート現像ソフト処理なし。
やはりノイズの出方は少し違う。

次に50回目





左がソフト処理あり、右がストレート現像ソフト処理なし。

別の部分で同じく50回目





若干ソフトありの方がノイズが目立つ。JPEGは特になめらかなグラデーションに悪影響を及ぼす。ソフトをかけた方がよりなめらかなグラデーションになっているためだろうか。

ということで最後に、現状のプレーンな背景を多少ごちゃごちゃした背景に変更して実験してみた。
背景が賑やかな場合、人物の部分に影響があるだろうか。
実験に使ったのはこの画像、Photoshopで背景を入れ替えたものだ。





これを途中は飛ばして50回目を見てみよう。
今までと少し倍率を変え、背景と人物のディテールがわかるようにして比較





背景が異なっても人物部分のノイズの出方は全く同じになった。確かにJPEGの理論上はそうなのかもしれないが、ここまで完全に一致するのには驚いた。

最後に今度は等倍まで拡大した背景の比較





左がJPEG保存最高画質1回目、右が50回目。
人の肌はかなりノイジーで誰の目にも劣化は明らかだ。だが背景の部分はよく見ると違っているがほとんどわからない。
JPEGの画像劣化は先にも書いたが、なめらかなグラデーション部に出やすい。

だがこれは劣化が少ないという意味ではなく、劣化が目立たないということだ。

今回はJPEGの最高画質または高画質について、実験してみた。
高画質未満は1回の保存で致命的な劣化が生じるのでここで改めて実験する必要はないだろう。
参考までに1枚だけアップすると





こんな感じだ。品質3で保存した結果だ。ただしこの画像のみ元の画像との比較のため、品質3で保存したものとPSDのオリジナルを並べ、JPEG最高品質で保存しているため、厳密には2回のJPEG保存となっていることを断っておく。

JPEGのノイズには今回の8x8ピクセルのブロックノイズの他に、モスキートノイズというものがある。
これは圧縮率が高い時、コントラストのある部分に細かな点状のノイズが見られるものだ。
最後の画像の目頭の下に発生している。

 

なお、今回例えばJPRG保存50回というのは同一画像を49回JPEGで別名に保存し閉じ、再び開いて別名で保存を繰り返した。

回数が49回なのは、2枚の画像を並べ、全体と部分を合わせた1枚の画像にするため、最後にもう一度JPEG保存をするためで、この1回を含め、50回とした。ただし全体と部分はピクセル数が異なるため、最後の1回は厳密な意味では正確な実験となっていないことをお断りしておく。