2018年3月2日金曜日

写真加工 縮小の落とし穴

少し前に 写真 縮小 参ったなぁ モアレ が と言う投稿を書きました。
画像を縮小する事で、 折角の 絵 が台無し ... 。
勿論、見る環境(レンダリングの質) に左右されるのですが。
これって、悩ましい! 問題ですね。


事態は、 縮小による、整数の まるめ誤差 が、うねり 共振 となって現れています。

これが、縞模様を齎します。
縮小比率を変えると、増減があるのは この為 です。

均せば良い事になりますが、
均すとは、イコール、ぼかす ですが、 解像感の低下に繋がります。
ノイズを加えてもそうは改善しません。


今回の悩みは、
白い斜めの線 が 縮小される と がたがた、縞々 に見えてしまう事です。

光る電線や、細いパイプの反射や、動物の髭や、花火の軌跡 等で類似の事例を見付けられます。


大きくして見れば、階段状になった部分(斜線の境界)が、
縮小されると、 整数値の集まりである為、誤差が生じて、
外の部分と 共振 してしまって、 あらぬ 縞模様 を作り出します。

極端に言えば、
この白い線を、暗い背景に浮かぶ白い階段 に喩えましょう。
縮小すると、階段 の間に 一定間隔で 背景 が割り込んで来ます。
表示倍率で言えば、
最初は階段各段の最初と終わりの交点が濃くなり出し、
倍率の変化と共に、白い階段内部に浸食して行く そんなイメージ です。
この 割込み が 縞模様に見える! のですね。


似た現象は、縮小を繰り返して出来る 線周辺の高濃度化 にも見られます。
また、画像輪郭を強調する為の 処理 でも、似た手法 が見られます。
局所的なコントラストを持ち上げる事で 画像 の 鮮鋭化 正常化 を狙っています。
そして、これが 曲者 でした。



さて。
その対処法。
勿論、 画像処理に使うソフトによって異なります。
以下は GIMP 2.8 系 の場合。


先ずは、HSL 等で分解します。
主に、S 彩度 や L 輝度 部分に その 爆弾 があります。
多くは、 S 彩度です。.

周辺とコントラスト差が大きく、斜めの細い線。
でも、線そのもの ではありません。
問題は その周辺部分。

階段状になっていませんか?。
原寸では分からなくても、拡大して見ると、その兆候がある筈です。


この部分を見付けるのは容易な事ではありません。
簡単に済まそうとすれば、
L 輝度 で 高輝度 つまり 白い所を選択します。
  本来は 高輝度で細い階段状の場所 なのですが ... 。
  高輝度と言っても、 0 - 255 の 255 (235 - 255). と言う意味ではなく、
  周辺とのコントラスト差が高い 明るい場所 になりそうですが。.
この隣接部分に 問題の箇所 がありますので、
数 px (多く共 10 px 程度)だけ、選択範囲を拡げます。
いいえ、 L 輝度 ではなくて S 彩度かも知れません。  ケースバイケースです。
そして、 S 彩度 や L 輝度 に生じている 階段状の色の差を緩和します。
問題箇所が 選択範囲に含まれているのを 確認した上で、
そう、 ぼかすのです。  数 px 分。
後程、画像を縮小しますので、最終的な仕上がり上で、 1 ~ 2 px  の訂正に留めましょう。
また、ぼかした分だけ、事後の縮小耐性が上がりますが、
大きくぼかしてしまうと精鋭度も低下しますので、 匙加減が重要です。
更に、高輝度の隣接部分を扱う事になる為、
不要な部分に効果が波及するケースもあります。
その時は、選択範囲を絞り込む(不要な箇所を除外する)事も考えて下さい。

この HSL 分解 > 編集 で得られたものを 再合成(HSL Compose)してから、縮小しましょう。


また、縮小時のロジック選択もテクニックのひとつです。
GIMP では Cubic と Sinc (Lanczos3) とが 候補です。
精鋭感に優れた しかし 今回の様に荒れ易い Cubic と、
ポイントの周辺を考慮し、今回のケースを多少は緩和し易い Sinc (Lanczos3) と、
ですね。
Sinc (Lanczos3) の欠点は ねむく なり易い! 事です。  経験的には顕著ではありません。.
先ずは Cubic で試し、次善策として Sinc (Lanczos3) でしょうか。
或いは、 逆かも知れません。


< 番外 >.

整数のまるめ誤差 が根底にあると書きました。
整数で無く、少数点以下のデータ (16 or 32 Bits Float) も活用出来る GIMP 2.9 系 では、
上の様な操作をしなく共、縮小後の原寸表示では、良好な結果が得られています。
端数も扱える事で、誤差が縮んだと考えれば、合点が行きます。

対策に関して、 前回の投稿 で 以下の様に書きました。
  検索すると、
  原画を縮小する前に、数 px のボカシを入れてから、縮小する方法や、
  縮小のアルゴリズムを替えて試す方法や、
  縮小処理を 通常の 8 ビット処理では無く、 16 や 32 ビット処理に変える方法や、
  縮小後に、専用のスクリプトで救済する方法が、
  見付かりましたが、試してはいません。  その後、一部は試しました。.
また、 原因に関して、
要約すれば、 カメラの 高精細 ローパスレス を取り上げました。
しかし、 もうひとつ、ありそうです。
それは、カメラの 画像処理エンジン!。
フォーカスの合った境界面(線)を描画する為の ほんの僅かな 誇張 をも疑っています。


そして、一番の留意点は ... 。
こんなに苦労して作成した 縮小画像 も、 サイズ可変の使い方の場合、 また 出て来てしまう! 事です。
つまり、完全な回避策は無い! 事です。
妥協や諦め も ひとつの 解決策 かも知れません。



< 番外2 >.
明るい話題!。
GIMP 2.9 ( 来るべき 2.10 ? ) では、 Sinc (Lanczos3) に替わって、LoHalo と NoHalo がお目見え!。
この新しいサンプリングし直し手法 (?) は 嘗て無い程 強力! です。
でも、 同じ Cubic でも、GIMP 2.9 では、見違える様な結果を紡ぎます。



[2018/03/16] 番外2を追記。

0 件のコメント:

コメントを投稿