SimuLook · カメラからのノート

ノイズ低減はスライダーではありません

富士フイルムのカスタムスロットに入っている設定の多くは、例を二つ見れば推測できる ものを保存しています。トーン系は10分の1単位です。−1は−10、+2は+20として保存されま す。シャープネスとカラーも同じ規則に従います。色温度はケルビン値のまま保存されま す。

高感度ノイズ低減は、そうではありません。

実際に保存されている値

表の全体です。メニューの値と、カメラが保持している値の対応:

メニュー +4 +3 +2 +1 0 −1 −2 −3 −4
保存値 20480 24576 0 4096 8192 12288 16384 28672 32768

下の行を読めば、問題は明らかです。線形ではありません。単調ですらありません。+2の 値はゼロで、他のどの項目より小さい。+3の値は+2、+1、0より大きいのに、−3より小さい。

数式はありません。これはルックアップテーブルであり、ルックアップテーブルを作る唯 一の方法は、全項目を観測することです。

なぜこれほど時間がかかったのか

確かめるための当たり前の方法が、機能しないからです。

自然な実験は、同じコマを異なるノイズ低減の設定で現像し、どの描写がどの保存値に対 応するかを見ることです。描写を比較するには数値が要りますが、そこで手が伸びる数値 がファイルサイズです。ノイズ低減が強いほど画は滑らかになり、JPEGは小さくなる。

理屈は通っていて、測定としては役に立ちません。JPEGのサイズは、画面に何が写ってい るかに支配されるからです。露出のわずかな違いや、撮影の合間に揺れた葉が、設定によ る差を簡単に飲み込みます。ファイルサイズで表を並べた結果、自信を持って間違った順 序が出てきました。

うまくいったのは、この設定が実際に変えているものを測ることでした。細部のエネルギ ー、つまり画面全体での隣接画素どうしの差です。ノイズ低減が取り去るのはそれなので、 数えるべきものもそれです。ファイルサイズがノイズしか返さなかったところで、こちら はきれいな順序を返しました。

表の両端は、メニューの−4と+4で撮影した写真によって固定されています。両極の値は、 中間からの推定ではありません。

上限を超えると巻き戻る

保存値を32768より大きくしても、挙動は上へ伸びません。回り込んで、メニューのゼロに あたる8192と同じ振る舞いをします。つまりこれは、上に余地のある尺度ではありません。 九つの値からなる閉じた集合であり、その外側の値は「より強い設定」ではなく「別の設 定」です。

ツールが補間すべきでない、十分な理由です。九つのどれでもないノイズ低減の位置を求 められたとき、正しい答えは最も近い値へ丸めることではなく、拒否することです。この 形の表において「最も近い」は、意味のある概念ではないからです。私たちの実装は拒否 します。

同じ九つの数値に、別の人も辿り着いていた

作業を終えたずっとあとになって、同じプロトコルのコミュニティによる文書 を見つけました。別のカメラでのUSBキャプチャから、独立に導かれたものです。

そのノイズ低減の表は、順序の入れ替わっている値も含めて、九つすべてが私たちのもの と一致していました。別々の試み、別のカメラ、別の方法、同じ奇妙な並び。

これはもっとも有用な種類の裏づけであり、同時に少し痛みます。始める前に先行資料を 探していれば、何週間も節約できました。このプロジェクトでは、同じ教訓をすでに二度 学んでいます。二度では足りなかったようです。

写真を撮る人にとって、これが問題になる場面

たいていは問題になりません。ダイヤルを回せば、カメラは正しいことをします。

問題になるのは、あなたとカメラのあいだにソフトウェアが入るときです。メニューの数 値をそのままこのプロパティに書き込むアプリは、あなたが指定していないノイズ低減を 設定し、カメラはそれを文句なしに受け付けます。ゼロとして書かれたゼロは、ゼロでは ありません。+2です。

この種の誤りは、決して自分から名乗り出ません。写真がレシピの記述とわずかに違う仕 上がりで返ってきて、どこにも問題は報告されないのです。


富士フイルムのフィルムシミュレーションレシピを読み取り、書き込むアプリ「SimuLook」の開発中に書いたものです。 対応カメラを見る · ほかのノートを読む