社内報に載せる人物写真を、広報の担当者が画像AIに渡した。依頼は一文、「ノイズを消して」だった。
戻ってきた写真から、肌のざらつきは消えていた。
目元と髪の輪郭も、一緒にぼやけていた。
ざらつきだけを消す道は、なかったのか。
なめらかにした分だけ、シャープさが減る
冒頭の人物写真も、細かな色の点(画素)の集まりだ。肌のざらつきは、周りと少しずつ違う値を持つ画素として写る。
写真をなめらかにする計算を、平滑化フィルタと呼ぶ。画素ごとに、周りの画素の値から新しい値を計算する。
新しい値では、ノイズの影響が小さくなる。
計算には、畳み込み演算(周りの値に重みを掛けて足し合わせる計算)を使う。同じ考え方は、信号処理でも使う。
なめらかにした分だけ、画像のシャープさは減る。
細い輪郭ほど、なめらかにした代償が大きい。冒頭の写真で目元と髪がぼやけたのは、この代償だ。
依頼の一文に、残すものは一言もなかった
冒頭の依頼が伝えたのは、消すものだけだった。残すものは、一言もなかった。
平滑化フィルタは、どれも何かを残して、何かを捨てる計算である。何を残すかで、選ぶフィルタが変わる。
代表的な平滑化フィルタは三つある。目元を残せるかで比べる。
平均化フィルタは、周りの画素の平均値を新しい値にする。計算は簡単だ。
代わりに、輪郭(エッジ)もぼやける。
ガウスフィルタは、中心に近い画素ほど重く扱って平均する。エッジのぼやけを抑える。
メディアンフィルタは、周りの画素の中央値を新しい値にする。点状に飛び出したノイズを取り除くのに向く。
平均は、一つの白い点に引っぱられる
選び方の要は、平均と中央値の違いにある。
暗い画素の中に、一つだけ真っ白な点があるとする。平均をとると、白い点に引っぱられた値が出る。
周りの画素まで、少し明るくなる。点は消えずに、にじんで広がる。
中央値は、並べた値の真ん中を取る。飛び出した一点は、真ん中から外れて消える。
全体のざらつきを薄めるなら、平均系を選ぶ。輪郭も少し守るなら、平均系の中でガウスフィルタを選ぶ。
ぽつぽつとした点を消すなら、中央値を選ぶ。
画像AIへの依頼は、残すものの一行で変わる
画像AIに補正を頼む前に、三つを書き出す。消すノイズの種類、残す輪郭の場所、説明してほしいことだ。
次の文面のかっこの中を、自分の写真に書き換えて使える。
(例:室内で撮った人物写真)です。
消すもの:(例:肌のざらざらしたノイズと、ところどころに出た白い点)
残すもの:(例:目元と髪の輪郭)
お願い:ノイズを減らしてください。何を優先したかを一文で説明してください。
消すものと残すものを先に渡せば、何を優先するかがAIに伝わる。
全体を均一にぼかす依頼が、残す場所を守って整える依頼に変わる。
社内報の写真に、一行を足す
次に社内報の写真を渡すとき、依頼は二文になる。
「ノイズを消して」。「目元と髪の輪郭は残して」。
拙著『ChatGPT はじめてのプロンプトエンジニアリング』に、AIに何を頼み、どんな背景を渡し、どんな形式で返してもらうかを順に考える方法を書きました。読むと、画像でも文章でも目的を言葉にできます。研修や講演は講演と研修の案内をご覧ください。
