Photoshopのあのボタンの中身を”触って”見る ― 写真の「困った」6つで学ぶ画像処理

スマートフォンの編集ボタンや Photoshop のフィルターを使えば、暗い写真も眠い写真も、ボタンひとつでそれらしく直せる時代になりました。
ただ、ボタンを押せば直る一方で、その中で何が起きているのかは画面に出てきません。

そこで今回、画像処理の中身を、つまみを動かしながら確かめられる Web ページ「ImageLab」を作りました。
前回の記事「LLMの仕組みを”触って”理解するページをAIに作らせる」の続編で、題材を画像処理に変えたものです。

この記事では、ImageLab の紹介と、写真によくある「困った」6つの場面を例にした触り方と見どころを説明します。
最近では AI の力を借りて、ブラウザで動くツールやゲームの作成の他に、こうした教材づくりにも取り組んでいます。
今回で約50作目となる私が、実例の画面を交えて初心者にもわかりやすく解説します。

画像処理の解説記事の難しさは、すぐに数式が出てくるという点でしょう。
「ガウス関数で畳み込む」と書かれても、何が起きるのかは想像しにくいものです。
そこでこの記事では数式を使わず、Photoshop のボタンの名前と、画面の変化だけで説明します。
リンクを押してつまみを動かすだけで試せますので、ぜひ手を動かしながら読んでみてください。

完成したページはこちらです。

01a ImageLab の画面全体

ImageLab の画面。左に処理のリスト、中央に絵、右にパラメータと解説、下にヒストグラムが並んでいる
ImageLab の画面。左が処理のリスト、中央が絵、右がつまみと解説、下が明るさの分布のグラフです

スポンサーリンク

1. 作ったもの ― 補正ボタンの中身を見るための道具

ImageLab は、ブラウザだけで動く画像処理の体験ページです。

・明るさの調整、ぼかし、シャープ、歪みの補正など、22の処理が入っている
・つまみを動かすと、その場で絵が変わる
・インストールも会員登録も要らない
・読み込んだ写真はブラウザの中だけで処理され、どこにも送信されない

最初にお断りしておくと、これは写真を仕上げるための道具ではありません
写真の一部だけを選んで直すことも、レイヤーを重ねることもできません。
Photoshop の代わりになるソフトではなく、Photoshop のボタンの中で何が起きているかを見るための道具です。

ここを最初に割り切っておけば、期待外れにはなりません。
むしろ、中身が分かると Photoshop のスライダーの意味が違って見えてきます。

2. 触り方は3つだけ

操作は、次の3つを覚えれば十分です。

  1. 写真を用意する……ヘッダの[画像を開く]を押すか、画面に写真をドラッグして落とします。
    手元に写真がなければ、ヘッダの「サンプル」から同梱の絵を選べます。
  2. 処理を選ぶ……左のリストから、試したい処理を1つ選びます。
  3. 見比べる……右のつまみを動かしてから、キーボードの 32 を交互に押します。
    3 が処理前、2 が処理後です。

特に3つ目が大事です。
変化の小さい処理ほど、この往復でしか違いが分かりません。
画面中央の縦線をドラッグすると、左が処理前・右が処理後という見比べ方もできます。

なお、どこを押しても壊れることはありません
但し、写真を読み込んだあとに F5(再読み込み)を押すと、写真は消えます。
ブラウザの中にしか置いていないためで、読み込み直せば元どおりです。
処理を切り替えるときは、左のリストから選ぶだけで構いません。

01b 右のパネル

ImageLab の右側のパネル。パラメータと解説が表示されている
右側のパネル。上が処理のつまみ、下がその処理の解説です。いちばん下には計算にかかった時間なども出ます。

3. 写真の「困った」6つ

ここからが本題です。
機能を順番に紹介するのではなく、写真によくある「困った」を6つ取り上げ、どの処理で直るのか、そのとき中で何が起きているのかを見ていきます。

記事の図は私が撮った写真で作っていますが、各項目の「この画面を開く」のリンクからは、同梱のサンプルで同じ処理が開きます。
お手元の写真を読み込んで試していただいても構いません。

3-1. 逆光で手前が真っ黒 ― トーンカーブ/CLAHE

窓を背にして撮ると、外は明るく写るのに、手前の人物は黒くつぶれてしまいます。

02 逆光の写真(処理前)

窓を背にして撮ったため、手前の人物が黒くつぶれている写真
逆光で撮った写真。窓の外は明るく写るのに、手前は黒くつぶれています

まず〈トーンカーブ〉です。Photoshop のトーンカーブと同じもので、斜めの線の左下あたりを上へ引っぱると、暗い部分だけが明るくなります。
窓の外など明るい部分には手を触れていないので、白飛びしません。
画面下のヒストグラム(明るさの分布のグラフ)の山が、引っぱったとおりに右へ動くのも見えます。

03 トーンカーブの結果

トーンカーブで暗い部分だけを明るくした写真
トーンカーブで暗い側だけを持ち上げた結果。窓の外の明るさはそのままです

次に〈CLAHE(適応的平坦化)〉を選ぶと、手を動かさずに似たような結果が得られます。
画面を細かいマス目に区切り、マスごとに明るさを整え直すやり方です。

たとえるなら、全国一律の偏差値ではなく、クラスごとに成績をつけ直すようなものです。
暗い教室は暗い教室なりに、明るい教室は明るい教室なりに、それぞれ見やすくなります。
Photoshop の〈シャドウ・ハイライト〉も、場所ごとに明るさを直すという点で近い考え方の道具です。

04 CLAHE の結果

CLAHE をかけて、暗い部分と窓の外の両方が見えるようになった写真
CLAHE の結果。画面をマス目に区切り、マスごとに明るさを整え直しています

但し、「強さ」を上げすぎると不自然になります。
自動といっても、最後は加減の問題です。

この画面を開く(同梱サンプル〈低コントラスト〉で CLAHE)

3-2. 暗い場所でザラザラ ― ガウシアン/バイラテラル/メディアン

夜の室内など暗い場所で撮ると、写真全体に細かい粒(ノイズ)が乗ります。
下の2枚は暗い店内で撮った写真で、粒そのものは縮めた図では見えにくいのですが、ImageLab のルーペを当てるとはっきり分かります。
これを消す処理は、大きく次の三つに分けられます。

  1. 平均化 / ガウシアン〉……素直にぼかす方法です。
    Photoshop の〈ぼかし(ガウス)〉と同じもので、確かに粒は消えます。しかし、顔の輪郭や文字まで一緒にぼけてしまいます。
  2. バイラテラル〉……同じぼかしでも、明るさが近い画素どうしだけを混ぜ、大きく違う画素は混ぜません
    輪郭の向こう側とは混ざらないので、輪郭を残したまま粒だけが消えます。
  3. メディアン〉……周りの画素を明るさの順に並べて、真ん中の値を採ります。
    ポツンと飛んだ点に強いので、ホコリやゴミ取りに向いています。

05 ガウシアンの結果

ガウシアンでぼかした写真。奥の画面の文字も顔の輪郭もぼけている
ガウシアンでぼかした結果。粒は消えますが、奥の画面の文字も顔の輪郭も一緒にぼけます

06 バイラテラルの結果

バイラテラルをかけた写真。文字と輪郭が残っている
バイラテラルの結果。同じ場所の文字も輪郭も残ったまま、粒だけが消えます

バイラテラルの「σ_color(値の差)」は、どれくらい違ったら別のものとみなすかのつまみです。
上げていくと、だんだんただのぼかしに近づきます。
この1本が、賢いぼかしの正体です。
Photoshop では〈ぼかし(表面)〉がバイラテラルの、〈ダスト&スクラッチ〉がメディアンの近い仲間です。

ノイズ取りのやり方が何種類もあるのは、ノイズの種類が違うからです。
細かい粒が全体に乗っているのか、ポツンと飛んでいるのかで、効く道具が変わります。

この画面を開く(同梱サンプル〈ガウシアンノイズ+段差〉でバイラテラル)

3-3. なんとなく眠い ― アンシャープマスク

ピントが少し甘い写真をシャッキリさせる定番が〈アンシャープマスク〉です。
Photoshop と同じ名前で、「量」「半径」「しきい値」の3本のつまみも同じです。

この項目の見どころは、〈差分マスクを表示(何を足しているか)〉のチェックです。
入れると、いま写真に足しているものだけが表示されます。

07 アンシャープマスクの差分マスク

アンシャープマスクが足している成分だけを表示した灰色の画像。輪郭に白と黒の縁取りが出ている
アンシャープマスクが「足しているもの」だけを表示したところ。輪郭にだけ白と黒の縁取りが出ます

輪郭のところにだけ、白と黒の縁取りが出ているのが分かります。
シャープにするというのは、輪郭の明るい側をより明るく、暗い側をより暗くしているだけなのです。
にじんだ絵の縁を、鉛筆でなぞり直していると考えてください。

そう分かると、3本のつまみの意味もはっきりします。

  1. ……なぞる線の濃さ。上げすぎると、輪郭に白い線が浮き出ます
  2. 半径……なぞる線の太さ
  3. しきい値……どのくらいの段差から輪郭とみなすか。上げると、肌のわずかなムラは無視して、はっきりした輪郭だけを立てます

この画面を開く(同梱サンプル〈ぼけた細線・格子〉でアンシャープマスク)

3-4. 写真に縞が入った ― スペクトルマスク(いちばんの見どころ)

印刷物をスキャンしたときの網目や、電気的な干渉などで、写真に細かい縞が入ることがあります。
この縞を消すのが、ImageLab でいちばんお見せしたい場面です。

下の図は、私の写真に ImageLab の〈ノイズ付加〉で、わざと斜めの縞を乗せたものです。

08 わざと縞を乗せた写真

料理の写真に、斜めの縞模様が重なっている
ImageLab の〈ノイズ付加〉で、わざと斜めの縞を乗せた写真

これを〈スペクトルマスク(手で塗る)〉で開くと、右のパネルに不思議な絵が出ます。

09 スペクトルと黄色い印

ImageLab のスペクトル表示。黄色い破線の丸が4つ付いている
右のパネルに出るスペクトル。黄色い破線の丸が、縞の正体にあたる明るい点です

これは写真そのものではありません。
この写真がどんな細かさの模様でできているかの一覧表です。
真ん中がなだらかな明暗、外へ行くほど細かい模様を表しています。
楽譜のようなものだと思ってください。
写真という曲に、どの高さの音がどれだけ入っているかが描いてあるのです。

その中にポツンと明るい点があり、黄色い破線の丸で囲まれています。
これが縞の正体です。
一定の間隔でくり返す模様は、この楽譜の上では1つの点に集まります。
ImageLab が自動でさがして、印をつけてくれます。

この写真では丸が4つ出ています。
点が明るいほうの1組(向かい合う2つ)が縞そのもので、残りの1組は計算の都合で出る影のようなものです。
見分けがつかなければ、4つとも塗ってしまって構いません。

では、楽譜からこの音符を消してみます。
手順は次のとおりです。

  1. 右パネルの「筆の太さ」を 8 にする
  2. マスクの縁のぼかし」を 1 にする
  3. 黄色い丸の上をマウスでなぞって塗る(片方を塗ると、向かい側にも自動で筆が乗ります)

10 縞を消したあと

縞が消えて、元どおりになった料理の写真
黄色い丸を塗ったあと。縞だけが消えて、絵はぼけていません

縞だけが消えて、写真はそのまま残りました。
キーの 3 と 2 を往復しても、絵はまったくぼけていません。
4 を押す(差分表示)と、消したものが縞だけであることも確かめられます。

比べるために、同じ写真を〈平均化 / ガウシアン〉でぼかしてみると、縞が薄くなるころには写真もぼやけてしまいます。

11 ぼかしで縞を消そうとした場合

ぼかしをかけたため、縞と一緒に写真全体がぼけた画像
比べるために、同じ写真をぼかした場合。縞は薄くなりますが、写真もぼやけます

同じ「縞を消す」でも、絵をこすって薄めるのか、縞という音だけを止めるのか
後者ができるのは、写真を音の集まり(楽譜)として扱ったときだけです。
ちなみに、写真を楽譜に書き換える計算を「フーリエ変換」と呼びます。
名前は覚えなくて構いません。

この画面を開く(同梱サンプル〈周期ノイズ(斜め縞)〉でスペクトルマスク)

リンク先のサンプルでは、黄色い丸が6つ出ます。
中心に近い4つを塗ってください(外側の2つは塗らなくて構いません)。
1本の縞に対して丸がいくつも出るのは、計算の都合によるものです。

但し、ヘッダの「作業解像度」を 1600 以上にすると、右パネルの絵と黄色い丸が出なくなります。
既定の「長辺 640」か「長辺 1024」で試してください。

3-5. 建物が膨らむ・水平が傾く ― レンズ歪みと補正/アフィン変換

スマートフォンの超広角で建物を撮ると、画面の端にある柱や壁がたわんで写ることがあります。
これは失敗ではなく、広角レンズの性質です。

レンズ歪みと補正〉で「すること」を〈補正する〉にし、〈格子を重ねてから歪ませる〉のチェックを外してから、「歪み係数 k₁」を 0 から少しずつ動かします。
曲がった線がまっすぐに戻るところを探してください。
Photoshop の〈レンズ補正〉と同じ種類の処理です。

「すること」を〈歪ませる〉にすると、逆にわざと歪ませることもできます。
マイナス側が外へふくらむ「樽型」、プラス側が内へへこむ「糸巻き型」です。
広角は樽型、望遠は糸巻き型になりやすい、というのはこの2つのことです。

下の図は、私の写真をわざと樽型に歪ませたものです。
重ねた格子の線が外へふくらみ、画面の端ほど大きく曲がっているのが分かります。
広角レンズで起きているのは、これを弱くしたものです。

12 わざと樽型に歪ませた例

建物の写真をわざと樽型に歪ませ、格子を重ねた画像
わざと樽型に歪ませた例。重ねた格子が外へふくらみ、画面の端ほど大きく曲がります

傾きは〈アフィン変換〉の「回転角」で直します。
回すと四隅が黒く欠けるのが分かります。
写真を回転させると必ず切り落としが要るのは、このためです。

但し、注意点が2つあります。

・歪みの補正も回転も、画素を計算で置き直しているので、やるたびに少しずつ絵が傷みます
回転のやり直しを重ねると、だんだん甘くなっていきます。
回すのは1回で済ませる、というのが実は一番大事なコツです
・建物を見上げて撮ったときに上がすぼまって写るのは、レンズの歪みではなく遠近によるものです。
これは ImageLab のこの2つの処理では直りません

この画面を開く(同梱サンプル〈幾何図形〉でレンズ歪み)

リンク先では、格子を重ねた図形が歪んだ状態で開きます。
k₁ を左右に動かして、樽型と糸巻き型を見比べてみてください。

3-6. 影の落ちた書類が読めない ― 二値化(大津/適応的)

書類をスマートフォンで撮ると、自分の手や体の影が落ちて、片側だけ暗くなりがちです。

二値化〉は、明るさの境目を1つ決めて、それより明るければ白、暗ければ黒にする処理です。
Photoshop の〈2階調化〉と同じものです。
「閾値の決め方」を〈大津〉にすると、境目を自動で決めてくれます。

ところが、写真全体で1つの境目を決めるので、影のかかった側は文字ごと真っ黒につぶれてしまいます。

13 二値化(大津)

白黒2値にした書類。影のかかった側が黒くつぶれている
〈大津〉で白黒にした結果。写真全体で境目を1つ決めるので、影の側がつぶれます

そこで「閾値の決め方」を〈適応的〉に変えます。
場所ごとに、その周りの明るさを見て境目を決め直すやり方です。
影の側の文字も読めるようになります。書類スキャン用のアプリで影があっても文字がくっきり出るのも、こうした場所ごとの処理によるものと考えられます。

14 二値化(適応的)

白黒2値にした書類。影の側の文字も読める

〈適応的〉に変えた結果。場所ごとに境目を決め直すので、影の側の文字も読めます

この画面を開く(同梱サンプル〈低コントラスト〉で二値化)

4. 6つを通して見えてくること

6つの「困った」を並べてみると、共通点が見えてきます。

「写真全体で1つ決める」か「場所ごとに決める」か……逆光(トーンカーブと CLAHE)と書類(大津と適応的)は、まったく同じ二択でした
「全部を一律にぼかす」か「狙ったものだけを消す」か……ザラつき(ガウシアンとバイラテラル)と縞(ぼかしとスペクトルマスク)は、どちらもこの違いでした
どの処理にも「効きすぎ」がある……CLAHE の強さ、アンシャープマスクの量、バイラテラルの σ_color。自動の処理でも、最後は加減で決まります

ボタンの中身が分かると、スライダーをどちらに動かせばよいかを、勘ではなく理屈で決められるようになります。
これが、ImageLab で持ち帰っていただきたいことです。

まとめ

Photoshop などの補正ボタンの中身を、ImageLab で”触って”確かめる方法を、写真の「困った」6つを例に説明してきました。
要点を振り返ります。

・ImageLab はブラウザだけで動き、写真はどこにも送られない。仕上げの道具ではなく、中身を見る道具
・操作は「写真を読み込む」「左から処理を選ぶ」「3 と 2 を往復する」の3つだけ
・逆光・ザラつき・眠い・縞・歪み・影の6つには、それぞれ Photoshop に同じ名前か近い仲間のボタンがある
・いちばんの見どころは、縞だけを楽譜から消すスペクトルマスク
・「全体で1つか、場所ごとか」は、画像処理のあちこちに出てくる二択

もっと詳しく知りたい方は、22の処理それぞれの原理と見どころをまとめた「処理解説」のページもご覧ください。
インターネットにつながらない場所で使いたい場合は、GitHub のページの[Code]→[Download ZIP]で一式をダウンロードし、中の index.html をダブルクリックすれば動きます。

この ImageLab を AI に作らせる過程で、どこでつまずき、何を学んだかは、続編の「画像処理の教材をAIに作らせて分かったこと」にまとめました。

写真の「困った」に合わせてボタンを選べるようになれば、Photoshop やスマートフォンの編集機能を、今までより自信を持って使いこなせるようになるでしょう。


関連記事

スポンサーリンク

Photoshopのあのボタンの中身を”触って”見る ― 写真の「困った」6つで学ぶ画像処理” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です