見出し画像

スタックするとなぜノイズが減るのか?

ノイズ低減について

主に風景写真を撮る人は気にしているかと思いますが、写真に妙にザラついたり明らかに色の違う赤や青や緑のピクセルに出会ったことがあると思います。これらをノイズと呼んでいると思いますが、このノイズを少なくする手法がいくつかあります。

・カメラのノイズリダクション
・現像ツールのノイズ軽減
・AIなどを使ったノイズ低減ツール
・複数画像のスタック

今回は最後の複数画像のスタックについてです。

とは言ってもスタックしてくれるツールや手順はいくらでもあるので、タイトルの通りちょっと違う趣旨で「スタックするとなぜノイズが減るのか?」について説明したいと思います。

そもそもノイズとは

そもそもノイズとは何なのか。ノイズは発生原因により高感度ノイズ・ダークノイズ・バイアスノイズなどありますが。本記事においてはあんまり厳密にせずに「本来は滑らかな階調変化であるはずなのに、滑らかではない状態になっている。」と定義します。

※ 本記事ではランダムノイズを対象とし固定ノイズには触れません。

画像1

上の画像(ショベルカーの上の部分です)を見てもらうと、左のノイズの乗った画像と右のノイズの乗っていない画像を見てもらうと「滑らかでない状態」なことがわかるかと思います。

それではスタックでどうしてこのノイズを減らせられるのかの話にはいる前に説明の都合上、色と数値の話をさせていただきます。

色と数値の話

デジタルカメラで写真を撮っている方であれば、色と数値の話は当たり前に分かっているいる人も多いと思います。そういう方は読み飛ばしてもらっても構いません。(下の表を見てピンとくる方)

画像2

改めまして、デジタルカメラの画像データというのはすべて数値なんですね。上の表を見てもらうとなんとなく分かると思いますが、すごくザックリとした説明をすると「赤と緑と青の色が0〜255の数値の大きさの組み合わせの集合」と理解してください。

黒という色はRGB=[0,0,0]なんです。
赤という色はRGB=[255,0,0]なんです。
緑という色はRGB=[0,255,0]なんです。
青という色はRGB=[0,0,255]なんです。
そして
白という色はRGB=[255,255,255]なんです。

余談ですが昼間の撮影と夜の撮影で夜の撮影データの方が小さいのは、このRGBの数値が小さいからファイルサイズが小さいんです。

ノイズの階調変化が滑らかでない状態について

ここから先は話をシンプルにするためにすべてグレーで説明します。下の画像(縦 16 × 横16 ピクセルに相当)を見てもらうと黒→白へ16段階の階調の変化のグラデーションとなっています。
併記してある数値を見てもらうと前述の数値が入っています。(RGBの各値が同じなのでグレーに見えます)
この16段階の階調変化が滑らかな状態だとします。

画像3

続いて下の画像を見てもらうと所々で濃さの違うピクセルがあるのが分かると思います。このようにランダムに階調の変化が滑らかでない箇所を含む画像がノイズの乗った滑らかでない状態と言うことになります。

画像4

複数画像のスタック

そしてやっとスタックする話まで来ました。

話を単純化するため 縦 1 × 横16 ピクセルの画像とします。
下図のような画像になります。これは滑らかな階調変化の例です。

画像5

続いて滑らかでない階調変化の画像です。
明らかに51になっているところがノイズだとわかりますね。この51を本来だったら期待される153へ近づけるのが、複数画像のスタックによるノイズ低減です。

画像6

ではこのような画像が16枚あるとこういうイメージです。この16枚の画像を1枚の画像にスタックしていきます。

画像7

複数画像をスタックする加算平均合成

ノイズを低減するためのスタックの計算方法は色々ありますが、一番一般的なものは加算平均合成というものになります。

加算平均合成などと難しく書いてますが、「足して枚数で割って平均にしたよ」ってだけです。

急に表が小さくてすみません。ただのExcelの集計表です。
白いところの数値は前述の16枚の色の数値をそのまま表に入れているだけです。

画像8

この表の5列目のところだけを見てみましょう。
本来であれば68の数値がほしいところに6枚目だけ17の値になっていますね。下の水色の集計の部分を見ると合計・枚数・平均とあります。
合計→68+68+68+68+68+17+68+68+68+68+68+68+68+68+68+68=1,037
ですね。
枚数→16枚です。
平均→1,037 ÷ 16 ≒ 64.8
です。

画像9

これが加算平均合成です。
簡単ですね。

一番下のオレンジ四捨五入は値は整数である必要があるために四捨五入にて丸めているだけです。

画像11

次はオレンジのところだけを16ピクセル分並べてみました。これが全ピクセル分を加算平均合成した結果ですね。実際に数値を色にして見てみましょう。

どうでしょう?階調が滑らかになったと思いませんか?

画像12

このように実際には4000 × 6000ピクセルの画像を数枚〜数十枚スタックすることで、細かい計算の違いはあれど基本的にはこの原理で複数画像のスタックによるノイズ低減は行われています。

その他の複数画像をスタックするときの計算方法

あんまりあれこれ知っているわけではないですが、私がよく使うStarry Landscape Stackerには以下の4種の計算方法が準備されています。(境界線の取り扱い違いで6つのオプション)

・Min Horizon Noise / Min Horizon Star Dupe
この2つは外れ値(先程のノイズに相当する数値の大きいまたは小さい)を除外してから、残りの40パーセンタイルを採用する方法です。40パーセンタイルとは中央値に似た考え方で、中央でなく40%の順番の位置にある値を採用しています。

・Mean Min Hor Noise / Mean Min Hor Star Dupe
この2つは外れ値を除外してから残りの平均を取る方法です。前述の加算平均合成を更に一歩進めた方法で、最初から外れ値を除外するためより階調変化が滑らかになることが期待できます。

・Max Value / Min Value
この2つは最大値または最小値を採用する方法で、いわゆる比較明合成と比較暗合成です。

まとめ

いかがでしたでしょうか?
まったくスタックの手順は説明しませんでしたが、スタックがどういう理屈でノイズ低減されるか理解できたでしょうか?
これが分かったからと言ってよりノイズが減るわけではありませんが、知らないで手近なツールを使うより、知ってて自分でツールを選ぶほうが楽しいのではないかと思います。

なお査読・ご指摘や追記要望など大歓迎です。
最後にここまでお読みいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?