Top >> Digital Camera >> D200Stripe

Nikon D200のシマシマノイズ研究



D200のシマシマノイズ

2005年12月16日に発売された、ニコンの一眼レフデジタルカメラD200。いつものように発売日よりも1日早くに購入して使ってみたが、普段使っているD2Xと比べてしまうと、やっぱり「中級機種だな」という感想。
ただ、しばらく使っているうちに、だんだんとよさがわかっていた。とにかく(D2Xと比べて)小さく軽いくせに、ミラーショックはほとんど感じられない。連写しても静かだし、シャッターボタンの感触等はD2X並み。操作性もかなりD2Xに近づけてあるので、D2Xの「サブ」として使用する分にはかなりよさそう。あまりに小さいバッテリは、やっぱり保ちが悪いそうなのだが、これは不満点。でもまぁ、使えば使うほどよさがわかる、まさに「よくできたメカ」という感じだ。

しかし、カメラ部分では大絶賛のD200だが、画質の面ではいろいろと悪い話もいわれているようだ。とりわけ目立つのが、D200の画像にストライプ状に入ることがあるノイズの話。巷では「バンディングノイズ」などとも言われているようだけど、ここではよりわかりやすく「シマシマノイズ」と呼ぶことにしよう。


この話を聞いて以来、自分のD200でもシマシマノイズが出るのか、いろいろ試してみた。実際に問題の「シマシマ」が発生したのが右の写真だ。縮小画像ではどこに発生したかわからないだろう。等倍まで拡大したオリジナル画像を見てみると、黒っぽい部分に正確に2ピクセルごとに明暗が繰り返された「シマシマ」が発生しているのがわかる。


ノイズ発生の条件

さて、このシマシマノイズだが、いったいどんな条件の時に発生するのだろう。

上のHDDの写真を見てもわかるように、私の個体では、かなりの露出オーバーの際に発生するようだ。少なくとも今のところは、いわゆる「適正露出」では、このノイズが発生したのを見たことはない。すでにインターネット上で公開されている画像の中には、適正露出に近い状態でもこのノイズが発生している場合もあるようなので、必ずしも露出オーバーの場合だけに限るとも言い切れないのかもしれないが、少なくとも私の個体ではかなりの露出過剰状態が必要なようだ。

撮影時のISO感度は、試した限りではISO200以上。ISO100では、同じ条件で撮影してもノイズは認められない。また、ノイズが発生する場所は、完全な白とびが発生した部分の上下に限られる。上のHDDの写真でいえば、白とびが発生しているのはHDD取り付けねじ周辺の削りだし部分で、その真下の焼付け塗装部分にのみしまが発生する。同じような明るさでも、白とびしていない部分の真下には、シマが見えないのがわかる。

これらを踏まえて、一層シマシマが目立つ画像を作ってみよう。「蛍光灯画像その1」だ。画面上部に写っている明るい発光体はアーム式の卓上蛍光灯スタンド。これを画面上部に据え、背景が写りこまぬよう、壁面から離す。もちろん部屋は真っ暗にした状態。露出は思い切りオーバー目に撮影。フォーカスはあえて無限遠いとし、画面全体をぼかしている。

過酷な撮影条件のためハレーションやゴーストが激しく発生しているが、そのおかげで画面全体が適当な明るさになり、ノイズがよく見える結果になった。まさに「シマシマノイズ」だ。

しかし、上のHDDの写真はどうみても露出オーバーだし、ましてやこの蛍光灯の写真など、実験用途でなければ明らかな「失敗写真」だ。こんな撮影をすることなど普通はありえないから問題ない、という話もあるだろう。

では、右のような写真はどうだろう。「蛍光灯画像その2」だ。こんどは蛍光灯にしっかりピントをあわせて、露出についてもそれなりにあわせてみた。これでバックを抜くのをやめれば、それなりの写真になるかもしれない。

で、この写真、蛍光ランプの上下にしましまが発生している。「まつげノイズ」なんていう人もいるようだけど、なかなか上手な表現。これも、きっちり2ピクセルごとに明暗が繰り返されることから考えれば、シマシマノイズと同根の問題じゃないかと思う。

このあたりまでくると、そろそろ「普通に撮った」写真でもシマシマの影響を受けるのではないかと不安になってくる。実際にそうした影響を受けるのは何千枚に1枚の確率かもしれないけど、万が一発生した場合にはなんらかの対処ができるよう、ちょっと考えておきたい。



ノイズの解析(1)

ノイズ発生条件が明らかになったところで、こんどは、ノイズ発生の理由について考えてみよう。注目すべきは、ピクセルの濃淡が正確に2ピクセルごとになっている点だ。このことから、レンズやボディ、フィルタといった光学部分が原因でないことは明らか。つまり撮像素子以降の処理に原因があることが想像できる。

ニコンのデジタル一眼レフでは、どの機種も撮像素子として、原色CCDまたはCMOS撮像素子を採用しているので、RGBの3原色フィルタがベイヤー配列と呼ばれる並び順にしたがって配置されている。図にすると以下の通りだ。

D50/D70/D2X
RG RG RG
GB GB GB
RG RG RG
GB GB GB
D2H/D2Hs
GB GB GB
RG RG RG
GB GB GB
RG RG RG
D200
GR GR GR
BG BG BG
GR GR GR
BG BG BG

3通りも書いてあるが、これは機種によってどの色から始まるかの「スタートポイント」が異なるだけの話。基本的にはすべて同じ並びといってよい。これらの並びは、2×2の小ブロックを多数並べたものとして構成される。しましまノイズが正確に2ピクセルごとに明暗が繰り返されていることを考えると、2×2のブロックごとに明暗が繰り返されている可能性が高い。

では原因となっているのはRGBいずれの画素だろうか。これはどの画素が原因であっても、現象は発生しうる。たとえばBが原因だとすれば、Bの画素が1つおきに明暗明暗と繰り返されれば現象が発生するわけだ。Gの場合はちょっと複雑だが、それでも同様に明暗がパターン的に繰り返されれば同様の現象は発生するはずである。

そこで、どの色の画素が原因となっているのかを実際の画像を使って確認してみる。元となった画像は、上に示した「蛍光灯」を撮影した画像その1である。Rawデータから、デモザイクされる前のRaw画像を取り出す。切り出したのは実際にシマシマが見えている部分のデータ。D200では、CCDデータは12bitでA/D変換されるため、数値の範囲は0~4095となるはずなのだが、1000や2000を超える数値がでてくるのはあくまで飽和ぎりぎり(白とび寸前)の場合。普通の明るさ前後ではRaw値はずっと小さく、以下のような感じになるようだ。

数値を眺めているだけではほとんどなにもわからないので、実際に画像としてみてみる。

うーん。遠く離れて目を細めてみれば、縞のような感じがみえないこともないが、とはいえこれだけではなんともいえない。そこでより広い範囲を切り出し、等倍表示をしたのが下の画像。G画素がRとBの2倍あるため画面全体が緑色に見える。ここまでやれば、だいぶはっきりと縞が見えてきた。

この画像からわかるように、Rawデータのレベルですでに縞ノイズを生む情報が含まれていることがわかる。もっとはっきり言えば「Rawデータからして腐っている」ということ。ここからさらにRGBに3色分解して、それぞれグレースケールに変換した画像でチェックすることで、どの成分にノイズが含まれているのかを調べてみよう。3色分解と書いたが、実際にはGの画素はBG画素の2倍の量があるため、偶数行目と奇数行目の2つのデータに分けた。また、こんどは特定部分を切り出すのではなく、画像全体のデータを掲載することにした。各画像のサムネイルをクリックすれば表示される。

B R G(Even) G(Odd)

で、驚いた。なんとしましまは特定の色にではなく、すべての色チャンネルに乗っているのであった。実は調べ始める前は、特定色チャンネルだけに乗っているノイズが現れているのかと思ったのだが、予想は完全にはずれ。

ところで、このデータをじっと眺めていると面白いことに気づく。Bのピクセルのデータは、0列目がシマシマの暗いほう、1列目が明るいほう、というように「暗明暗明・・・」の順序となるのに対し、Rのデータは逆パターン「明暗明暗・・・」となるのだ。さらに緑に関しては、Rと隣合う偶数ラインピクセルについてはBと同じ「暗明暗明・・・」となるのに対し、Bと隣り合う奇数ラインピクセルはRと同じ「明暗明暗・・・」という並び。

ふたたび、わかりやすく図にしよう。つまりこういうことだ。

GR GR GR GR GR GR GR GR
BG BG BG BG BG BG BG BG
GR GR GR GR GR GR GR GR
BG BG BG BG BG BG BG BG

おや。これはおもしろい。きっちり2ピクセルごとに、RGBすべての画素で、明るいピクセル同士と暗いピクセル同士が集まっているのがわかる。ベイヤー配列から通常画像への補間処理(デモザイク)には、RGGBの基本4画素を使用する。しかしその基本4画素の元データが、きっちり2ピクセルごとに明るさの波をもっていたとしたら。デモザイクのアルゴリズムにより、多少の差異は生じるだろうが、生成された画像にも同様のパターンが現れる可能性が高い。つまり、これがシマシマノイズの元データなのである。

ここで、もう一度先ほどの実データとを見比べる。

あまりはっきりとはしてないが、それでも、1列目が暗く、2,3列目は明るく、4,5列目が再び暗く、というようなパターンが見えているのがわかるだろうか。つまりは、しましまが発生しているところでは、たしかに上の模式図のような現象が出ているのである。

ところで、いまさらこんなことを言うのもなんだが、さきほど、最初は特定色チャンネルだけに変動が偏っていることを予想したと書いた。しかし、もし仮に特定色チャンネルだけのデータが上下するのであれば、それによりわずかながらもカラーバランスが変化するはず。つまり縞の明るい部分と暗い部分で、色バランスが変化するはずなのだ。にもかかわらずそれが見られないのは、こういうこと。つまりRGBそれぞれが同期して上下するので、カラーバランスが変化せず、ただ明るさだけが変化する、ちょうどD200に発生しているようなノイズとなるわけである。


ノイズの解析(2)

しつこくもうちょっと解析。「蛍光灯画像その2」からR成分を抜き出した画像についてみてみよう。注目したいのは赤い線を引いた部分だ。

この赤い線は3本とも、白とび部分(蛍光管が写っている部分)の上側に生じたシマシマのうち、明るい部分から垂直に引かれている。ところがこの線を下にたどっていくと、こんどは蛍光管の下側に生じたシマシマの暗い部分に到達していることがわかる。仮にシマシマの明るい部分を「山」、暗い部分を「谷」と呼ぶことにすると、山からまっすぐに下ろされた垂線は、下側にくると谷に到達しているのだ。

ここでは、R成分についてのみ画像を載せたが、B成分、G成分(偶数ライン/奇数ラインとも)についても、この傾向はまったく同じで、白とび部分の上側と下側で、山と谷とがきれいに入れ替わっている。

RGBいずれの成分についても山と谷が入れ替わっているということは、当然、それらから生成された画像についても、シマシマの山と谷は入れ替わる。ここでもういちど「蛍光灯画像その2」をよくみれば、蛍光灯の上側の縞と下側の縞は、山と谷がずれていることがわかるはずだ。

しかしいったいこの現象は何を意味しているのか。

CCD撮像素子、過剰な入力(白とび)、そこから始まる帯状のノイズ、とくれば真っ先に思い浮かぶのは「スミア」だ。

たとえば左の写真。これはD200の写真ではないが、コップの水が凸レンズとなり太陽光を集光している焦点から、垂直に上方に向かってマゼンダの帯が伸びているのがわかる。これがいわゆるスミア。各画素のデータを読み出す際、画素ごとに個別に読み出すのではなく、各画素が捉えた電荷を隣の画素へと「バケツリレー」式に転送することから、どこかひとつの画素で飽和(電荷あふれ)が生じると、リレーされる他の画素にも影響が及ぶことが原因だ。

ただスミアの場合、飽和部分の面積が多いと帯は太くなるだけだ。D200のようにシマシマが発生するというような性質は無い。しかしこれは、電荷転送方向に沿って現れるというスミアの性質と、D200のCCDが高速化のために4チャンネル読み出しをしているという2つの事実から説明ができる。

CCDの多チャンネル読み出しにはいくつかの方法がある。たとえば、キヤノンのEOSシリーズは最近は全機種CMOSセンサーが使われているが、初期の機種、EOS 1Dでは、2チャンネル読み出しのCCDが使われた。この製品では、水平方向1ラインを中央で2つに分け、これを左右方向に分かれるよう電荷転送することで高速読み出しを実現している。結果、画面中央を境にして左右で色味や明るさが若干変わってしまうという問題が出たこともあったのだが、これはまた別の話。

ではD200の4チャンネル読み出しはどうか。これは完全な想像ではあるが、次のようなものではないだろうか。ちょっと構造を考えてみた。細部の名称は書いていないが、インターライン型CCDの説明等と付き合わせれば説明は不要だろう。

この方式では、EOS 1DのCCDのようにラインを途中で分割するのではなく、1つのラインはすべて1方向へのみ電荷を転送する。ただし垂直ラインの電荷を上方へ順次転送するものと、下方へ順次転送するものと2つ用意し、それぞれの末端に水平伝送路を用意する。この水平電荷転送路が具体的にどうなっているのかはよくわからないので、図では適当にお茶を濁しているけれど、垂直伝送路については上方へ転送するものと下方へ転送するものとの2グループに分けることで、転送速度を稼ごうというわけだ。上方伝送路と下方伝送路とは、それぞれ2本おきに配列される。

もし、この想像がすべて(あるいは一部)正しいものであれば、これまでのシマシマ現象はかなりの部分が説明できる。白とびが発生した場合にのみしまが出るのは、それがスミアもしくはスミアに近い電荷余り現象であるためと考えられる。これが一般のCCDのような単独の帯ではなくシマシマ状になるのは、スミアを掃引する方向が2ラインごとに切り替わっているためだ。また、光源の上下でシマの山と谷が入れ違いになるのも同じ理由からと説明できる。

さらに、私の個体では発生しないのだが、飽和が発生していない状態でも画面全体に縞が発生する現象もあるようだ。これは、スミアとは関係なく、上方へ伝送された電荷と下方へ転送された電荷を電位へと変換する際、(なんらかの調整不良により)ゲインが異なるため、と説明できる。


スミア説の否定

ただ、シマシマノイズの発生条件からすると、この原因がスミアではないと考えられる点もある。一つ目は、あまりにあっさりと現象が発生する点。D200に搭載されるCCDは、他の一眼レフ用CCDに比べると画素サイズが小さいとはいえ、最新設計のものだ。当然だが、スミア防止には十分な配慮がなされているはずで、それにしてはこんなに簡単にスミア的症状が発生するのはおかしい。

二つ目の疑問は、仮にこれがスミアだとすれば画像に対する影響が小さすぎる点。先に示した画像でもわかるように、いざスミアが発生すれば、それはかなり大きな影響となる。少なくとも目を凝らしてみないとわからないほど「ぬるい」ノイズではすまない。それに、R列とB列の変動幅がほぼ同じでカラーバランスが崩れないというのもスミアと考えるとおかしい。

そして第三の疑問。ISO100では同じノイズはまったく出ない、という点についてもまったく説明が付かなくなる。スミアは、撮像素子における電荷の飽和が原因で起こる。つまりISO200で起きるなら、ISO100だって起きて不思議は無いはずだ。

自分でスミア説を上げておきながらこんなことを書くのもなんだが、以上のことから考えると、私としては、これがスミアによるものであるというは否定したい。ただし、上で述べたような、2ピクセルごとのシマシマが発生する原因は、やはりD200特有のCCD読み出し方法によるものだろう。つまり、スミアではないが、スミアと非常によく似た現象が発生している、と思う。

しかもその現象は、ISO感度を上げたときにだけ発生するとなると、一番怪しいのはゲインアップアンプかもしれない。一定以上の入力が続くと、どこかに容量が溜まるなどして出力がドリフトしてしまうような問題があるのかもしれない。


解消方法は?

さて、原因の追究が尻切れトンボ状態になってしまったけれど、どうせ原因がはっきりしたって、それがハードウェア部分にある限りはわれわれ一般ユーザーにはどうしようもできない。むしろ、実際に発生してしまったシマシマをどうやって消し去るかの方がずっと問題だ。仮にD200本体に何らかの改善が施されるとして(個人的には軽減はできても解消は難しいのではないかと思っているが)も、すでに撮影されてしまった画像まではどうしようもない。

これに関しては、JPEGではPhotoshopのデインターレースフィルタが効くという話がある。しかしインターレースフィルタは単なる平均化フィルタであるため、解像度が落ちるという欠点がある。

同じくPhotoshopのフィルタを自作してしまったすばやい人もいる。シマシマの空間周波数だけを除去したもので、こちらはデインターレースよりも高い効率で縞が除去できるだろう。

またRawでは、Raw現像ソフトSylkyPixがジオメトリフィルタ機能として、ストライプノイズの除去に対応した。

このように、すでにいくつかのソフトを用いればシマシマノイズはかなり解消することができるようになっている。ただこれらのソフトは、上に説明したような、D200のストライプノイズ特有の現象について狙い撃ち的にノイズを解消するものではない様だ。唯一、にけさん作の(日記のほうにコメントいただきました、ありがとうございます)Photoshopプラグインのみは、ノイズの発生周波数だけを狙い撃ちで減衰させることができる。

これらのソフトに対して、私としては、Rawデータのレベルでノイズ除去を行うプログラムを作成してみたいと考えている。いまのところ、アルゴリズムを検討しているところではあるが、上記のようなノイズパターンが明らかになっていれば、Rawデータを修正することで、極力解像度を落とさない形でノイズ除去が可能となるように思えるからだ。

2006/1/24追記

D200のCCDのピクセル転送方式については、すでに本サイトの日記ページの方にも、「にけ」さんからコメントをいただいています。結論からいえば、上に掲げた転送経路の図は誤りで、正解はにけさんのページに記載されています。詳細はリンク先を参照していただければわかりますが、ただ、上で挙げた実際のピクセル値の変動状態と、シマシマの山と谷の関係等、実際に発生している現象の部分は間違いはありません(少なくとも私の実機においては)。というわけで、原因はともかく、今まで調べてきたことは、最終目的である「しましま補正プログラム」には影響を与えないだろうと考えています。もっとも、そちらのほうのプログラムもあまり手をつけられない状態にあるのですが。ちょっとまとまった時間をとらないと駄目ですね。

途中経過(2006/1/11)

ええと、ページビューが増えたので、とりあえず途中経過を報告します。いまはNEFファイルを解析してシマシマを検出するプログラムを書いています。そこそこ満足できる出来になるまではこのページの内容はそれほど更新されないと思います。それだとせっかく見に来てくれた人に申し訳ないので、いまのプログラムの出来具合などをちょっとだけ報告。

いまの状況はこんな感じ。オリジナルのNEFファイル(下の画像はNikon CaptureによりJPEGに変換済み)を入力すると、シマシマとおぼしきデータを検出し、その部分にドットを打ちます。しましまが無い部分は、黒で埋めるようにしています。たとえば以下のような感じ(オリジナル画像は、その性質上フルサイズ画像なので非常に大きくなっています)

オリジナル画像シマシマ検出後

ちなみに、光源の上側シマシマと、下側シマシマとはパターンが異なると書きましたが、今回のプログラムではこれらを別々に検出できます。いわゆる「マツゲノイズ」も検出可能、かな?

オリジナル画像上側シマシマ下側シマシマ

これを見てわかるように、ドットが濃い部分がシマシマ度が高く、ドットが薄い部分はシマシマ度が低いことを意味します。いまはこれの精度を高めている最中で、もう少し厳密にシマシマが検出できれば、次にその縞を除去するようにする予定。シマシマ部分だけを狙って情報を加工するうえ、シマシマの消し方も単なる平均化にはならないため、画質劣化はほとんど無いのではないかと予想しています。とはいえ、まだまだ時間はかかりますけどね。仕事忙しいし。


途中経過その2(2006/1/18)

途中経過その2です。しましま検出についてはぼちぼち。除去プログラムの方もアイディアを煮詰め中。ところで、NaturFotografの方で、しましまノイズのタイプ分けを詳しく説明してくれていますね。実におもしろい。

Type-Iは強い光源の上下に発生する「まつげノイズ」、Type-IIは白とびの上下に長く発生するいわゆるしましまノイズ、そしてType-IIIは、白とびとはまったく関係ない画面全体に現れるしましまノイズ。リンク先では、Type-IIIについてはもはや故障だ、と書いていますが、私もこの意見には賛成。このノイズが発生する個体は、すぐさま修理に出すか交換を要求できるレベルかと思いますね。

と書いておきながら、出してみましたよ。Type-IIIノイズ

オリジナル画像
Noise Simulated
シマシマ解析図
Noise Marker

断っておきますが、このノイズ、D200で実際に撮影して出たものではありません。Type-IIIのストライプノイズと同様のノイズを含むファイルをプログラムによって作り出したものです。決して私が持つ個体がこんな酷いノイズを発生するわけではありません。もしそうだったら、とっくの昔に修理に出していますから。

さて、故意に作り出したものですから、当然ノイズ検出では、画面全体がまるまるノイズ状態であると認識されます。では、これをいま製作中のノイズ除去プログラムで処理すると、どのようになるか。

ノイズフィルタ後画像
Noise Reduced
シマシマ解析図

元画像が、ノイズをシミュレートしたものであるため非常に素直なしましまが出ています。だからノイズはきれいに消え去ります。実際のノイズがこれだけ素直に消えるとは思えないのだけど、現実に、こういうノイズが発生した実撮影画像を持っていないのでこれ以上は試せません。というか、Type-IやType-IIのノイズが消えなきゃ意味はないわけで、いまのところはまだ小手調べ、といったところでしょうか。



途中経過その3(2006/2/09)

途中経過その3です。しましま検出プログラムをちょっとだけブラッシュアップ。しましま検出精度を上げ、簡易的ながらもしましま除去機能をつけました。私が所有するD200は、サービスで調整後にはType-IIノイズが出ることは無くなり、Type-Iノイズについては等倍よりもさらに拡大して探さなければみつからないようになりました。

このため、しましま除去プログラムも、主にType-Iノイズをターゲットとして除去する機能を考えていたのですが、結果としてType-IIにも結構な効果を発揮するようになったようです。

とりあえず、どんなものかサンプルをお見せします。

オリジナル画像シマシマ解析図
シマシマ低減後

一番左はオリジナル画像。クリックするとフルサイズの画像が出ますが、例によって非常にサイズが大きな画像なので注意してください。この画像、修理に出す前のD200で撮影されたものなので、Type-IとIIのしましまが激しく出ています。真ん中は、通称「しましまマーカー」モードで、しましまと思しき部分をハイライトした画像。っていうか、もう全体がしましまです。下側がしましま除去モードでしましまを低減した画像。

単純な「平均化」は行わず、しましまの強度を計算により求め、これを補正する形をとっているため、横方向の解像度低下は原理的に発生しません。そのかわり、しましまは完全には除去できず、拡大率によってはしましまが見えます。というか規則的ノイズがランダムノイズっぽくなるだけなので、あまりきれいに見えません。

肝心のプログラムですが、今のところまだ、逆にしましまを悪化させてしまう場合があるのと、壊れたデータを出力してしまう場合があるため、公開までにはもう少し時間がかかりそうです。しましまの除去性能ももう少し向上するのではないかと思っています。



途中経過その4(2006/2/10)

一通りのデバッグ作業が終了したので、作成途中ではありますが、しましま検出プログラムを公開します。上で書いたように、本プログラムがターゲットとするノイズは、まつげノイズのみです。まつげ以外の、しましまノイズについては、プログラムの構造上、多くの場合低減されるのですが、逆に見苦しい補正結果となってしまうことも、無いわけではありません。

ですから、まつげ以外のしましまノイズについては、できるだけ出ていない状態のファイルで試してください。このタイプのノイズについては、すでに書いたように、私が持つD200では出なくなってしまったので、これ以上の改善は望めないかもしれません。

ダウンロードは以下のリンクからお願いします。


ダウンロードページへ

言うまでもないことですが、プログラムは無保証です。元ファイルを破壊しないつくりにはなっていますが、万が一に備え、必ずファイルのバックアップをとってください。

まつげノイズが除去できない場合(まつげ以外のストライプノイズについては、すぐに対応するつもりはありません)、該当のNEFファイルをご提供いただければ、解消しやすくなる可能性があります。近日中に、そうしたファイルをアップロードする方法を準備する予定です。準備ができましたら、本ページにて連絡します。



しましまノイズに対する私見(2006/2/11)

NikonはD200用のQ&Aでしましまノイズについての見解を発表したようですね。詳細はリンク先を見ればわかるけれど、初期ユーザー(で気になるユーザー)については調整で対応、現時点で出荷されている個体については調整済み、とのこと。

ちょっと鬱陶しいかもしれないですが、ここで個人的な意見をちょっと述べさせてもらいます。

私が所有するD200は、日記等で書いたように、ニコンが言う「調整」を終了しています。この作業をしてもらった結果、このページの上部に掲載したような、画面広範囲に現れるシマシマ(Type-2ノイズ)は、いくら試しても出すことができなくなりました。つまりType-2ノイズについては「治った」と言って差し支え無いと考えます(Type-3ノイズは元々出ませんし、もちろん調整後も出ていません)。

では、いわゆる「まつげノイズ(Type-1ノイズ)」はどうか。これについては、見つけるのに苦労する程度にまで軽減されました。調整前は、ピクセルバイピクセルの100%表示で見つけることができたものが、調整後は、200~600%くらいにまで確認しないと確認しづらい程度に改善されています。たとえば、以下のような感じ。

この画像でもわかるように、対策済みの個体であっても、そのノイズが出る範囲がかなり限定されたものにはなりましたが、やはりノイズが出ることには変わりありません(この写真の場合、ノイズが認識できたのは、赤枠で囲った部分のみです)。ニコンが言う「多くの場合気にならないレベル」というのは、まさにこういうことでしょうか? しかし、レベルはどうあれ、ノイズが出ることには変わりないんですけどね。

では、D200は使い物にならない「欠陥カメラ」であるかといえば、とりあえず私はそうは考えてません。200~600%拡大でやっと発見できる程度のパターンノイズは、D200以外の一眼レフ機でも普通に存在するからで、単にD200がそのうちの一つに加わっただけ、と思うからです。(あえて名指しはしませんが)、多くのデジタルカメラを調べた経験がある人なら、普通に知っていることでしょう。Type-2や3のノイズが出るような個体は、私としてもちょっと許容範囲外のような気がしますが、本当にType-1(まつげ)だけなら、許しちゃうかな。

あえていうなら、私の個体でType-1ノイズが確認できるような撮影状況というのは、普通のCCDカメラなら「スミアやブルーミングが出る」くらいのレベルです。実際、D200をいろいろ試していると、なんでスミアが出ないのか不思議なくらいですから。私は、CCDで太陽を写したらスミアが出るのは欠陥だ、とは考えません。これはあくまでCCDという方式の技術的制約です。それと同じくD200の縞も、少なくとも現在は技術的制約の範囲内と考えます。

もっとも、世の中にはCCDで太陽を撮るとスミアが出るから欠陥だと主張する人もいます。そういう人にとってはD200も欠陥カメラに感じられるかもしれませんね。私は技術屋なので、そういう考え方には同意できませんが、そう考える人のことを否定はしません。



ノイズリデューサの効果(2006/2/12)

勝手なことを書いてしまいましたが、たとえ少なくても軽減できるものなら軽減したいと思うのもまた人情。というわけで、すでに公開済みの低減プログラムがどの程度の効果を上げられるものか、試してみましょう。

まずは第一のサンプル。これは「調整」後のD200で撮影されたものです。調整前のD200だと家の壁にも縞が伸びる典型的なしましま発生パターンです。

まずは、しましまに印をつける「マーカーモード」で、画像を解析してみましょう。この画像で、ほぼ「塗りつぶし」になっている部分は、かなりの確率でしましまが発生しています。点が振られていてもまばらな状態であれば、しましまではありません。

このマーカーを参考にして、もう一度元画像を眺めてみると、ほぼ塗りつぶしに近い状態となっている屋根の端の部分は、やはり画像でも短い縞が発生しているのがわかります。いわゆるまつげノイズです。

このファイルに対し、ストライプノイズリデューサを適用したのが下の画像です。

百聞は一見に如かず、というやつですかね。しましまは完全には消えていないけれどそれなりに軽減されているのがわかると思います。完全に消すにはもうちょっとパラメータの調整が必要でしょうか。個人的にはこのレベルでもいいかな、とは思っているのですけどね。


ノイズの検出感度(2006/2/13)

今回製作したノイズ低減プログラムは大まかに言って次の二段階の処理を行っています。

  1. しましまノイズを検出する(探す)
  2. 検出されたノイズを減少させる

すでに存在しているいくつかのノイズ除去プログラムともっとも大きく違うのは、ノイズが存在するかどうかを「検出」している点です。にけさん作のPhotoshopのプラグインの場合、画像に含まれる特定周波数成分のみを処理する、という部分は実質的にノイズの検出にあたるといえないこともありません。ですからこのプログラムのことはちょっと除外するにしても、Photoshopのデインターレースフィルタなどは完全に2ラインごとの「平均化」を行っているにすぎません。たしかにノイズはきれいに除去できるでしょうが、横方向の解像度を低下させてしまいます。またノイズが存在するかどうかを調べているわけではないので、ノイズがあろうとなかろうと処理が行われ、結果として、ノイズがない正常な画像に関しても画質が低下してしまいます。SylkyPixのジオメトリNRに関しては、どういったアルゴリズムを使っているのかが不明であるため、あまり言及できないのですが。

これに対して、今回のプログラムでは、検出→処理という2つの手順をとっているため、ノイズと判定されなかった画像に関しては画質が落ちない、という(原理上での)メリットを持っています。たとえば本検出アルゴリズムで「ノイズがまったく存在しない」と判定された場合、ノイズ低減機能は動作せず、原理的に元の画像と同じ画像が出力されます(厳密に言えば、圧縮Raw使用時は、アルゴリズムの差異により、微妙な違いが生じる可能性があります)。

余談ですが、今回のプログラムには、ノイズ検出位置をマーキングする「マーカーモード」があります。実はこのモードが実現できたのは、上記のようなアルゴリズムを採用しているためでもあります。

ただしこの方式にはメリットばかりでなくデメリットもあります。その中でも最大のデメリットは「ノイズがあるのに、検出されない場合がある」点です。ノイズ除去はノイズが検出された部分に対してしかかからないわけですから、検出ミスをした部分のノイズは除去もされません。また、ノイズでないのにノイズと判定される場合も要注意です。この場合、処理しなくて良い部分が処理されてしまい、画質を低下させる可能性があるからです。

ノイズ検出が正確にノイズを検出できているかどうかは、マーカーモードの出力を見るとわかります。たとえば以下の画像、例によってクリックすると拡大画像が出るんですが、隅から隅まで眺めても、縞などまったく存在しないように見えます。正直、この画像から一見してしましまの位置を言い当てられるような人がいたら、その人には「しましまマイスター」の称号をあげたいくらいですよ。あげないけど。

しかし、こんな画像であってもマーカーモード画像を出力させてやると以下の通り。WillcomのWのロゴマークの下あたりに、なんとなくマーカーピクセルが集まっているのがわかります。

これを元にして、もういちど元画像を確認してみます。以下の画像は元画像の2倍(200%拡大!)です。どうでしょう。赤で囲んだあたりに、しましまがあるのがわかりますか(個人的には、この程度のノイズならどうでもいいだろうとは思うのですが)。

このように、今回のプログラムでは強い光源の上下に現れるマツゲノイズについては、かなり高い感度で検出することができるようになっています。ただし、実際に試した人はわかると思いますが、光源から離れた暗部や、ごちゃごちゃした背景の上に乗っているしましま、明るい背景の上にうっすらと乗るしましまに対しては、相対的に感度が低くなります。本プログラムがType-2およびType-3ノイズに対して効果が無い(もしくは少ない)と言うのは、これらのノイズに対しての検出感度が低いのが原因です。

さて、参考までに上記のまつげノイズに対し、実際の軽減処理をかけた場合の画像をお見せします。今回の例は、もとより目立たない微弱ノイズではありますが、さらに目立たなくなっているのがわかると思います。



以下は余談ですが、実を言うと、今回プログラムを公開するにあたり「マーカーモード」について公開するかどうかはちょっと考えました。上の例をみて分かるように、このモードは、ちょっと見ただけではわからないシマシマノイズでも見つけ出してくれます。これにより、今までは自分の個体でシマシマノイズが出ることに気づかなかった人も、それを見つけ出すことが可能になってしまいます。

そういう意味では、公開しないでおけば余計なトラブルを引き起こすことも無いとも思います。しかし、これを使わずとも、目を皿のようにして画像を見ていけばいつかは気づく性質のノイズですから、あえて隠し立てするほどの情報でもないと考え、公開することに決めました。

ただ、本ソフトが検出するノイズは人間の目にはわからないレベルのものも含まれます。また不十分なアルゴリズムに起因する誤認識ノイズも相当量含まれます。この機能を使う場合は、その点をよく理解した上で、あくまで参考としてのみ使用してください。特に、本ソフトでノイズが検出されたからといって、その点のみを理由として、ニコンにカメラの調整を依頼することは厳に慎んでくださるよう、お願いします。




ノイズの除去能力(2006/2/14)

上に示したように、今回のプログラムではType-1ノイズの検出能力についてはかなり高くなっています。これに対し、検出されたノイズを除去する能力に関しては、今のところ、かなり「弱め」に設定しています。

何度も繰り返しになってしまいますが、今回のプログラムでは隣り合うピクセルの「平均化」によるノイズ除去は行いません。1ピクセルごとのシマシマであれば、隣り合う2つのピクセル同士の平均化を行うことで原理的には完全除去できるのですが、これを行うと、横方向の解像度は半分になってしまいます。仮にこうした平均化を行ってもこのプログラムの場合、影響が出るのはノイズが検出された部分だけにとどまるため、ノイズの有無にかかわらず画面全体を処理する方式に比べるとまだマシなのですが、それでもなお、平均化は(まだ)行いません。最後の手段として、とっておくつもりです。

ではどのようにノイズを減らしているかというと、今回は、シマシマの「山の高さ」を推測し、それによって求められた高さ分だけ「山を削る」という作業をしています。すなわちストライプノイズの原因を、信号の飽和時に(なんらかの原因で発生する)信号レベルの「浮き」と推測し、その「浮き」分を減らしてやるという考え方です。ノイズレベル、すなわち「山の高さ」については、白とびの有無、補正する位置の周辺にあるピクセル値、近傍のノイズレベルの高さ等から総合的に判断します。

この方法のメリットは、計算によって得られたノイズレベルが正確であれば、解像度を低下させることなく元画像を正確に再現できるという点にあります。しかしもちろんデメリットもあります。実際のノイズレベルと計算上のノイズレベルが異なっていた場合、ノイズが完全には取り除けない「補正不足」や、山を削りすぎて逆に谷を作ってしまう「過補正」を生じてしまう点です。

以上を踏まえて、実際の補正がどのように行われているかを検証してみましょう。

左の図は、暗い室内から窓枠を撮影したものです。縦位置撮影しているため、縦縞ではなく横縞ノイズが発生しているのがわかります。さらに、露出補正が+4EVとなっている点にも注意してください。いまの私の個体では、これくらい無茶な露出にしないとなかなか縞が出てくれません。赤い楕円でノイズを示しているのが元画像。右側に表示されているのが、この画像に対してReduceStripe.exeにより、ノイズ低減処理をした画像です。

左右でわずかながら画像の明るさが違うのがわかるでしょうか。ノイズの除去の際、山の高さ(すなわち信号の浮き)を削るという作戦のため、縞が生じた部分はわずかに暗くなるのです。縞が発生しない明部の明るさは変わりませんから、画像のコントラストはわずかながら向上し、ごくわずかに締まった画像に変化します。これは今回のプログラムの副作用といえるでしょう。

処理後の画像は確かに縞が減少しています。ただし、じっくりと見れば、縞が残っているのがわかります。最初に発生しているシマシマと異なり、連続性がないため目立ちづらいノイズではありますが、他の方式のように完全にノイズレスにならないのはこの方式の欠点でしょう。



V0.03(2006/2/27)

2週間ぶりの更新になります。前回の更新からちょっと空いてしまったのは、オリンピックを観ていたから、ではありません(いや、少しあるかも)。

まずは報告から。シマシマノイズ低減プログラムですが、更新しました。こんどのバージョンはV0.03になります。もっとも大きな変更点は、Type-2およびType-3のシマシマノイズについては、完全に処理を捨ててかかっている点です。つまり、Type-1(マツゲノイズ)にのみ焦点をあわせて、ノイズを低減します。

従来のバージョン(v0.02)では、曲がりなりにもType-2や3も低減できてたじゃないか、と思うかもしれません。この点では確かに機能退行しています。ただし(ここが重要)、Type-1ノイズに関しては、v0.03でノイズ低減性能がそれなりに上昇しています。飽和エッジ部分ではまだとりきれずに残る場合もありますが、それでも、かなりの割合のマツゲノイズが100%表示程度では見えなくなるのではないかと考えています。

このように変わった理由は、シマシマの強度判定部分にかなりの手を入れたためです。その結果、Type-1に関しては前より向上しましがた、Type-2ノイズに対しては「補正しても、汚い画像が出てくる」ようになってしまいました。Type-3ノイズに対しては、もともと、手持ちのD200で症状が出ないためわかりません。

というわけで、いっそのこと、Type-2/3に関しては処理をしないようにしよう、と決断しました。v0.03では、飽和ピクセルの真上および真下のそれぞれ200ピクセル相当分しか処理しません。それ以上長いマツゲノイズは、いろいろな方のデータを見る限り、ほとんど存在しないからです。

Type-2/3を捨てた結果、これまで「控えめ」に設定されていたしましまノイズに対する補正量は、Type-1に最適化することができました。とりあえずサンプルとして、蛍光灯の傘を撮影したものでテストしてみます。これは、調整に出す前のD200で撮影したものなので、かなり強めに縞が出ています。


Originalv0.02v0.03

オリジナル画像のシマシマは正直言って問題外です。こんな写真撮る方も悪いのだけど、だからといってこのシマシマは無いでしょう。正直、怒る人の気持ちもわかります。ただ私の個体の場合、調整された今では、さすがにこんなひどいのは出ません。

っと、脱線してしまいました。そのシマシマですが、ノイズ低減プログラムにより、v0.02でもそれなりに減ってはいるのがわかると思います。でもv0.03の方がもっとすっきりしています。

個人的にv0.02で気になっていたのが、斜めに走る黒帯の下側エッジ部分に見える、ドットが斑になっている部分です。これは、シマシマ除去の精度がいまいちだったために「過補正」となって生じた画質劣化です。この部分がv0.03ではずいぶんとすっきりしていて、オリジナル画像と比べても、劣化していないのがわかるかと思います。あと、コントラストもオリジナル画像よりも多少向上していますね。

今回のv0.03は、自分としてはだいぶ実用範囲内に近づいてきたという印象です。ただ、アルゴリズム的にはまだまだ向上の余地はありそう。もうすこしアルゴリズムを工夫してやれば、もっときれいに縞が除去できるようになるかもしれません。





取説(2006/3/01)

シマシマノイズ低減プログラムの使い方がよくわからない、という連絡をいただいたので、簡単な取説を用意しました。これでわからないようであれば、コマンドプロンプトに関連する書籍(Amazonアソシエイツを含みます)などを参照してください。

やっぱり最近はコマンドプロンプトを使う人は減ってるんですかね? 複数のファイルを一気に処理するのであれば、ワイルドカードが使えるのは便利だと思うのですが。ま、それはともかくとして、今のところこのプログラムにGUIを用意する予定はありません。GUIを用意する暇があったら、よりきれいにノイズを除去する方に注力したいので。



以下執筆中


リンクについて    メールを送る