
★★★最初に重要なご注意★★★
本記事中で述べる各種の検証めいた結果や考察めいた説明は、あくまでも素人であるあぷらなーとの遊びによる個人的感想です。
したがって、ロジックめいた表現や数値表現に関しては、サイトロンジャパンさん・PlayerOneさん・ソニーセミコンさんの公式見解ではありませんし、公称仕様とも関係ありません。
また、今回紹介する機能を有効にする作業でなんらかの不具合が出る可能性は完全には否定できませんので、チャレンジされる方はあくまでも自己責任でお願い致します。(後述の通りPlayerOneさん自体が公式サイトで警告を発しています。)
★ことの発端いつもお世話になっているサイトロンジャパンさんから『驚愕の情報』が寄せられたのは、かれこれ1ヶ月ほど前のことです。
その圧倒的コスパと使いやすさで大好きなPlayerOneのUranus-Cが、なんと最新ファームアップにより、今まで封印されていた「HDR」機能が解き放たれるというのです。
実は、Uranus-Cが新発売されたときから、そのセンサーIMX585の特殊性には非常に興味を持っていました。
センサーを製造しているソニーセミコンさんのサイトによれば、「アーティファクトが生じない特殊なHDR機能を実装している。」というのです。これにより、動体を撮影した場合でも(従来の画像合成によるHDRとは異なり)色ずれや被写体ぶれが生じさせることなく、暗い部分から明るい部分までを階調豊かに表現できる、とされています。公称のうたい文句を借用するなら「単露光方式で従来比約8倍のダイナミックレンジを実現した」のだそうです。
★IMX585のHDRは他とどう違う(と謳われている)のか
詳細は、ソニーセミコンさんの該当ページへのリンクをご覧いただくとして、要点のみをまとめます。
ソニーのHDRには2通りあります。
①DOL HDR (Digital-Overlap High Dynamic Range)
短時間露光画像と長時間露光画像を「順次」撮影し、それらを合成して1枚の画像として出力する機能
時間差がある2コマの画像を合成しているため、動いている物体にはブレが生じるのが弱点
②Clear HDR
低ゲイン画像と高ゲイン画像を「同時に」撮影し、それらを合成して1枚の画像として出力する機能
時間差が生じないため、動いている物体にもブレが生じないのが利点
このうち、IMX585に実装されているHDRは②の「Clear HDR」方式で、ブレが生じないため「AIに対象を自動認識させる際のエラーが減ることで、監視カメラなどに有利」であると謳われています。
しかし、手持ちのUranus-Cくんの撮影オプションには、どこにもHDRの設定が見当たりません。
またダイナミックレンジを実測しても、最大でもADCの駆動ビット数である12bit(12stops)を超えることを示唆するデータは取れませんでした。
どうやら、Uranus-Cは搭載センサーであるIMX585が持つ『超能力』を意図的に封印されているようなのです。
まあ、「対象が視認できれば勝ち」であるセキュリティカメラとは異なり、科学写真のマネっこが楽しめる天体写真の分野では、怪しげな機能は適用困難であるか、嫌われる(ニーズがない)かの事情があるのだろうなぁ・・・と、その時は自分を納得させました。
★ところがどっこい
ところが、今回サイトロンジャパンさんから「最新ファームアップでHDRが使えるようになった」との情報が寄せられました。
ただ、測定データには違和感を感じるそうで、Uranus-Cが大好きな邪道流アマチュア天文家である あぷらなーとに『謎解き遊び』のお誘いが来たという訳です。
こ、これはまさに垂涎の極上ネタ!!
ただし、非常に不安な点がありました。
過去にも、ドライバーを更新しただけで、ノイズの補正方式がまるで変わってしまったSV405CCや、突然ピクセルマッピングが停止してしまった(ように見える)ASI294MM-Pro、またUranus-C自体もドライバ更新でユニティゲインやHGC発動ゲインが大幅に変化してしまい、撮りためたダークライブラリがゴミになる(過去のダークを使い回す対処法はありますが)という苦い経験をしたことがあります。
外部からカメラをコントロールするドライバですらこれだけ変化をもたらしうるのですから、カメラ内部の動作自体を変更するファームウェア更新や、カメラどころか基板上の回路を書き換えてしまうFPGAアップグレードには、さすがに抵抗があります。
というか、そもそもPlayerOneさんの更新情報ページには、ハッキリと
「In most cases, it is strongly not recommended to upgrade the FPGA of the camera.」
と警告されているじゃありませんか(笑)
はい。これで、
本家ページに記載されている警告は、今このページを読まれている皆さんにちゃんと伝えましたからね!
では、先に進みましょう。
★心配したこと
ここで心配したのはアップグレードで「HDRモードとNORMALモードが選択できるようになる」とはされているものの、この「NORMALモード」なるものが、従来の仕様を引き継いでくれているのか、ということです。
アップデートの結果、また仕様が変わってしまったのでは、手元のUranus-Cくんが活躍できなくなります。
そこで・・・・
「もう1機、貸してください!!」
頼みの綱サイトロンジャパンさんにお願いをしました。
はい。アップデート済みの個体と現有個体とを詳細に解析して、アップデート後のNORMALモードが現有個体の挙動と同一であるかどうかを確かめてから、手持ち個体をアップデートしよう、というズルい作戦です。
★NORMALモードは現有機と同等の挙動か
さて、まずはこの検証ごっこにはずいぶんと時間が掛かってしまいました。
ここでテストしたのは下記の項目です。
①ゲイン0~ゲイン420までのシステムゲインを30刻みで実測比較する
②ゲイン0~ゲイン480までのリードノイズを30刻みで実測比較する
③ユニティゲインの値を求める
④ゲイン205~ゲイン215までのリードノイズを1刻みで実測比較しHCG発動ゲインを比較する。
⑤ダークフレームを時系列解析し、異常ピクセルの発生状況を比較する。
⑥パターンマッチング法により、DPS(ピクセルマッピング)の演算ロジックと補正されたピクセル位置を比較する。
※解析は全て自前のプログラムで行いました。通常はSharpCapのセンサー解析など市販ツールを使うのが楽ちんなのですが、SharpCapの場合はあくまでも簡易測定に過ぎず、実態と異なる数値を吐かれる心配があったからです。
本当は、ここで約1万コマのテスト撮影とその解析という罰ゲームのような作業を行ったのですが、今回の主目的(HDRの謎とき)とは異なるので、詳細は割愛します。
ともかく「アップデート機のNORMALモードは、現有機の挙動とそっくりである」との結論を得ました。
では、いよいよ本丸に攻め込みましょう。
★HDRモードのシステムゲインを実測する
まずは、全ての測定データをノーマライズするために必要なシステムゲインの測定からです。
ザックリいうとシステムゲインは「光の粒(正確には光電効果で発生した光電子)が何匹ぶつかると輝度値(ADU)が1アップするか?」を示します。ここでは、光子が波動性よりも粒子性を強く示す性質(ヒットする光子のゆらぎがポアソン分布に従う)を利用し、ゲインや露光量を細かく変えてその輝度分散値がどう変化するかを実測することで、求めます。

当然、サチってしまったり、低輝度部がノイズの海に沈んでしまうとおかしな値が出ますので、上記のようなゲイン毎の露光計画表を作成し、その通りに全ての条件でフラット光源を撮影します。それを解析すると、システムゲインが求まります。
下記は、ファームアップ後の個体について、NORMALモードとHDRモードとでシステムゲインがどう変わったのかの実測比較結果です。
事前に、サイトロンジャパンさんからは
「(SharpCapで自動解析すると)HDR発動でユニティゲインが大幅に低下してしまうように見える。」
という情報をいただいていたのですが、あぷらなーとの解析環境では少しの差しか見られませんでした。これは、HDRモードで撮影したとしても、NORMALモードと同等の輝度値に写るということで、非常に歓迎すべきことなのですが、やはり気色悪さが残ります。
そこで、SharpCapの解析中に何が起こったのかを(出力結果から)考察してみました。その結果、HDRモードで駆動しているUranus-CをSharpCapのセンサー解析に通すと、本来12bitで駆動しているはずのUranus-Cがなんと16bit駆動していると認識されることが分かりました。
そこで、自力で解析をする際に、Uranus-CのADC駆動が12ビットだと仮定した場合と16ビットだと仮定した場合とで比較をしてみました。
下記は、分かりやすくするために対数グラフにしたものです。

このように、
あぷらなーとの解析結果とSharpCapの解析結果が一致しない主要因は、Uranus-CのADCを12ビットと見なすか16ビットと見なすかの違いであることがはっきりしました。
★HDRモードのリードノイズを実測する
では、次にリードノイズがHDRによってどう変化するのかを実測してみましょう。
リードノイズは、時間ノイズ的に解釈して測定する方法と空間ノイズ的に解釈して測定する方法がありますが、今回は、後者の解釈で実測してみました。(※高品位なセンサーの場合は、両者が一致します)
ここで注意すべきは、リードノイズの測定においてはADCの駆動モードを12ビットと解釈しても16ビットと解釈しても、それぞれの解釈で求めたシステムゲインから外挿したユニティゲイン値を用いることで、一致する点です。
すると・・・
ででん!!
こ、これはッ!?
まさに驚愕の解析結果です。要するに、設定ゲインが同じであれば、NORMALモードでもHDRモードでもほぼ同じ輝度値を吐くのですが、低ゲイン設定であっても極めてノイズが少ないのです。
たしかに、ソニーセミコンさんの公式説明を信じるなら、暗い部分を炙り出すために露光時間を変える従来方式と異なり、「IMX585のHDRでは露光時間では無くゲインを変えている」とのこと。低ゲイン「設定」でもまるで高ゲイン時のようにノイズが少ないということは、暗部に関しては設定ゲインよりも高いゲインで撮像が行われていることを示唆します。
リードノイズはゲインをあげることにより大幅に改善しますから、IMC585のHDRの秘密は「暗部に乗るリードノイズを押さえ込むことで、炙り出しを容易にする」と推測しました。
そうなると、実写テストすべき相手が見えてきます。
★比較テストすべき対象はコレだ!
ソニーセミコンさんのページに載っている作例は、明るい部分は暗く・暗い部分は明るくなっているものですが、恐らくコレは撮影後の画像処理が効いているのでしょう(撮って出しでこんな画が吐かれるわけではなく、撮影後の画像処理に耐えうる低ノイズを達成したのではないかという意味)。どうやら、HDRモードのテスト撮影対象としては、「高輝度部がサチらないような低ゲイン+短時間露光」を施した際に「通常のカメラなら暗部に乗るリードノイズが解消されたかどうか」が確かめられる対象が良さそうだということに思い至りました。
というわけで、解析作業は中断し、お月様を実写してみることにしました。
ここで、冒頭のキャッチ画像が登場するという訳です♪

まずは、上記の画像の中から、
NORMALモードで「同じ露光時間でゲインのみを変えた」場合を見てみましょう。
<低ゲイン撮影>
高輝度部は適正露光となるが、暗部(地球照)はリードノイズにかき消されていて炙り出しが不能
<高ゲイン撮影>
暗部(地球照)はリードノイズが少なく上手く炙り出しが可能だが、高輝度部はサチってしまい打つ手が無い
これは、たとえダイナミックレンジが低下したり高輝度部がサチってしまったりしても、暗い対象は高ゲインで撮影すべき事を示しています。
同じ露光時間であっても高ゲインの方がリードノイズが少ないからです。(※当然露光不足ですから、光子ショットノイズは低減不能です。上記例では、光子ショットノイズよりもリードノイズの方が悪さをする実例を示しています。つまり、このシチュエーションでは光子ショットノイズよりもリードノイズの方が支配的だということです。)
では、いよいよ、満を持してHDRモードを発動させてみましょう。
すると・・・
ででん!!
す、すげぇ!!
HDRだと、月面高輝度部をサチらせる事無く地球照を写し取ることに成功してる!
Uranus-CのHDRモードは、まさに「低ゲインと高ゲインのいいとこ取り」じゃないかッ!
★あらたな不安
HDRの実力を確かめるテスト撮影対象を発見して狂喜乱舞したのもつかの間、あらたな不安が生じてきました。
それは「リニアリティが破壊されているのではないか」という心配です。
長くなるので詳細は割愛しますが、たとえば段階露光や2種ゲイン合成撮影をやるとき、ある輝度値から高ゲイン画像(や長時間露光画像)がサチってしまい、それ以上の輝度の伸びを示さなくなります。すると、それらを単純に合成したのではステライメージのデジタル現像のように、輝度グラフが途中で折れ曲がってしまい、リニアリティが失われます。画像処理の後半でリニアリティが失われるのは問題ありませんが、心配なのは画像処理の序盤でRAW画像に対して施されるダーク減算やフラット除算などの演算過程でリニアリティが崩れていると、いわゆる「ダークが合わない」「フラットが合わない」という悲劇を生みそうです。
そこで、早速、リニアリティが崩れていないかどうかをテストしてみました。
すると・・・
意外ッ!
低ゲイン画像と高ゲイン画像を合成出力しているはずなのに、リニアリティが保たれてる!
※HDRモードのゲイン0で露光時間を順次√2倍に増やしてフラット光源を撮影していき、G1チャンネルから出力される平均輝度値との相関をとったもの。
ぐぬぬぬぬ・・・解せぬ。
この現象には(大変良いことですが)ずいぶんと頭を悩まされました。
一体、どういうトリックで、こういうことが可能になっているのか、そのロジックが思いつきません。
とりあえず、フラット除算やダーク減算における不具合が発生する可能性は低そうです。
そこで、ここで一度頭を冷やして、別な課題を調べてみることにしましょう。
★ダークのノイズ特性に不具合は出ないか
では、あぷらなーとの十八番「時系列ノイズ解析」で、HDRモード発動時のダークノイズについて解析してみましょう。
まずは、Uranus-CをNORMALモードで駆動しゲイン210で撮像した32秒露光のダークフレーム16コマを時系列解析した結果と、その解釈です。
Uranus-Cの特徴がよく分かりますね♪(詳細は、上記資料をご覧ください。)
では、いよいよHDRモードで駆動するとダークノイズの挙動に変化があるのかどうかを解析してみましょう。

ああ、ほとんど同じですね。厳密にはHDRの発動でクールピクセルエリアがおとなしくなったようにも感じられますが、大差ないでしょう。
ここで重要なのは、DPS(出荷前ピクセルマッピング)のカット閾値がほぼ同等に見えることです。これは、HDRモードでもホットピクセル等の異常ピクセルをDPSがきちんと掃除してくれていることを示唆します。
では、本当にHDRモードでもノーマルモードと同等のDPSが働いているのかどうかを観察してみましょう。

細かいことは上記資料を見ていただくとして、重要なのは
「HDRモードでもNORMALモードでもDPSによって消されるピクセルの場所と補正ロジックは全く同じ」という点です。
個人的にPlayerOneさんのDPS機能やZWOさんのHPC機能は(変なフィルタ処理で星喰い現象が生じたり強引な塗り絵処理で解像度が落ちたりしない点で)大好きな機能です。特にダークの温度を合わせることが事実上不可能な非冷却カメラにおいては必須の機能だと思います。
とにかく、HDRモードでもこの機能が生きていることが確認できたので、安心しました。
ところが、この解析作業中にハッとしました。
★謎解きのヒントがここに?
全く同一ロジックでDPS機能が働いている気配が観察されたものの、なんとなく違和感を感じたので、グラフを穴が開くほど見つめていたときハッとしました。
あ、「偶然にパターンマッチするというエラー確率が変わってる!」
私の時系列ノイズ解析プログラム『邪・我流道(ジャ・ワールド)』は、想定される補完パターン演算式に一致したピクセルをサーチし、これを何回ヒットしたかを調べることで、偶然にパターンマッチしたにすぎない自然現象を排除する仕掛けになっています。
たとえば、100個のピクセルの内、10個がパターンマッチしたとすると1/10の確率でヒットしたことになりますが、これが偶然おこった現象なら、2連続ヒットは1/100の確率、3連続ヒットは1/1000の確率になるはずです。こうして、意図的に補正されたピクセルだけが徐々に炙り出されてくるのですが、HDRモードでは(偶然を大量に含む)一発目のヒット確率が異様に低いのです。
「ああ、そういうことか!」
偶然にパスワードが一致する確率は、その文字数を増やせば低くなるのと同様、このパターンマッチングにおいては「有効数字」が長くなればなるほど偶然の一致が起こりにくくなります。
つまり、HDRモードはNORMALモードと比べて輝度データの有効数字が長い、すなわち測定精度が高いということになります。
これはリードノイズとは全く別の問題で、どうやらアナログ信号がデジタル化される差異の丸め誤差すなわち量子化ノイズがHDRモードではかなり小いことを示唆します。
それならば・・・・
★量子化ノイズの低減がHDRの秘密か?
月面の実写例やリードノイズの実測でも分かるように、HDRモードのメリットは暗部におけるリードノイズが極めて小さいことだということは判明しました。ただし、もしもリードノイズよりも支配的なノイズが存在すればリードノイズの差異など感じ取ることはできないでしょう。
ここで、量子化ノイズに着目したHDRの正体について妄想してみることにします。
一般的にゲインを高くした場合はリードノイズの低減が見込め、測定精度が向上(より少ない光子を見分けることができる)しますが、実はそれと同様に量子化ノイズの低減による測定精度の向上も大きく寄与します(結果論としてはリードノイズと量子化ノイズのうち強い方が邪魔をする)。
さて、EMVA1288規格で定義されているダイナミックレンジとは、「フルウェルをリードノイズで割ったもの(の2の対数)」となっています。
ただし、リードノイズが量子化ノイズよりも小さいケースでは、量子化ノイズが支配的になります。
身の回りの道具で例えると、
・メスシリンダーの高さ(もしくは容量)がフルウェル
・メスシリンダーの最小めもりが量子化ノイズ
・めもりを印刷しているインクの太さやニジミがリードノイズ
・めもりの本数がダイナミックレンジ
に相当するのですが、ここでは、量子化ノイズが支配的であるシチュエーションに例えて考察ごっこしてみます。
簡単のため、光子をボールにたとえて、全ての数値を光のボールを元にして表現することを試みてみます。
<高ゲインの方がノイズが少なくなる理由>

上記のように、ダイナミックレンジが同じであっても、明らかに
高ゲインメスシリンダの方が精度良くボールの数を数えられることが分かります。つまり、いくらフルウェルが大きいからといっても決して階調が豊かになるわけではないのです。
では、ここで低ゲインくんと高ゲインちゃんに、質問してみましょう。
「光子を何匹捕まえましたか?」

高ゲインちゃんは自信満々に「4匹だ」と答えましたが、低ゲインくんは、個数がよく分からないようです。
彼らに見えているのは、「何めもりまで光子が埋まったか」を示す出力値だけなので、低ゲインくんは、測定誤差が光子3匹分あるからです。
つまり低ゲインでは暗い星雲が写りません(量子化ノイズに丸められて明るさの変化を検知できない)。
<高ゲインの方が不利になる条件>
では、もっと明るい天体の場合をこのモデルで表してみましょう。
「光子を何匹捕まえましたか?」

こんどは、高ゲインちゃんが泣いています。メスシリンダーが一杯になって光子が逃げてしまったので、カウントできなくなったのです。
これが『サチった』状態です。
<2人が協力して無敵のメスシリンダを作るなら?>
では、低ゲインのメリットと高ゲインのメリットを両立させるにはどうすれば良いのでしょうか?
あぷらなーとが思いついたのは、下記の仕組みです。

ようするに、
低輝度部は高ゲインメスシリンダを使って高精度に光子をカウントし、高輝度部は低ゲインメスシリンダーを用いてサチらせないようにすればいいのです。ただし、前述のようにこのままでは輝度のリニアリティが崩れてしまいますので、上記のように
低ゲインメスシリンダをスライスして間にギャップを入れることにより、一種のデジタルゲインとして作用させ、高ゲインメスシリンダと同様のシステムゲインを与えてリニアリティを担保するというカラクリです。
★珍妙なカラクリは観察可能か??
上記は あぷらなーとの妄想ですが、その仕組みはともかくとして、現象としては似たような事象が起こっているかもしれません。
つまり、ある程度の輝度値までは量子化ノイズが小さく、ある閾値(高ゲインメスシリンダがサチる輝度)から一気に目盛りが荒くなる(いわゆる輝度ギャップが生じる)のが観察される可能性が出てきました。
SharpCapのセンサー解析が16bitADCだと識別したところから考えると
・低輝度部はまるで16bitADCのごとく、輝度ギャップなし。
・高ゲインADCがサチる4096ADU付近(2の12乗だから)から上はその1/4の実効ゲインしか無い低ゲインADCのシグナルに16ずつのギャップを入れて16ビットFITSの全域まで散らしている
などが妄想できます。
これを観察するにはSharpCapがFITSデータと一緒に吐く輝度ヒストグラムでは不十分です。仕様上、Uranus-Cの輝度ヒストグラムは全て12ビットに丸められているからです。そこでMATLABを用いて16ビットの精度(輝度値ビン幅:1)でヒストグラムを作り、観察してみましょう。
すると・・・
ででん!!
うおおおお!多少の差異はあるものの、かなり似た現象を捉えたッ!!
あぷらなーとの素人妄想、あたらずも遠からじ、というところか-(笑)
【追記】
何を「捉えた」のかが分かりにくかったので、このグラフの味わい方を載せます。
★星雲実写で『安全性』を確認する
機は熟した!HAC125DXに、ファームアップで封印されていたスタンド能力『HDR』を解放した新生Uranus-Cを装填し、QBPⅢ+フィルタ併用で「サチりやすい」ことで有名なオリオン大星雲を実写テストしてみるのだッ!!
ゲインは0、露光は16秒、オフセットは250(NORMALモードでは40程度が適正ですが、HDRモードではヒストグラムかかなり左に寄ってヒストグラムの左裾野が切れてしまうので250まで上げる必要がありました)。ライトフレーム32コマ、ダーク・フラット・フラットダークは各64コマ。追尾はEQ6Pro赤道儀のノータッチガイド。画像処理はステライメージ10のみで行きます。
すると・・・
ででん!!

総露光8分半の短時間だけれど、HAC125DXの明るさと、
新生Uranus-CのHDRの威力で、マスク処理やストラクチャ強調などをしなくても、トラペジウムが見える仕上がりになりました。
これは、すなわち「ダーク減算やフラット除算にもHDRの悪影響なし」であることを確かめたことになります。
これにて、サイトロンジャパンさんからいただいた『宿題』も無事完了♪
お借りした個体も無事返却できそうです。
はっ!!
コマが明るくて核が不明瞭故に彗星核アライメントが不能で、難儀な計算をして強引にメトカーフコンポジットする羽目になったレモン彗星は、ファームアップしたUranus-Cで撮るべきだったのかッ!
ちくしょう、無念じゃ!!!
★★★お約束★★★
①冒頭でも述べたとおり、本記事で述べたことは全て(素人の)あぷらなーとの個人的な感想であり、メーカーさん・販売店さんの公式見解とは全く関係ありません。
②ファームウェアのアップデートをしただけでは、HDRモードは有効になりません。合わせてFPGAのアップデートも行ってください。
③本記事は決してアップデートを推奨している訳ではありません。公式サイトに書かれている警告を理解の上、自己責任でお願いします。
④輝度差が非常に大きな月面(と地球照)とくらべると、M42の中心部と周辺部の輝度差は僅かです。したがって、劇的なHDR効果が
得られるものではありません。また1/100秒露光でとらえた月面作例とは異なり、数秒から数十秒の露光を要する星雲などの撮影では、リードノイズや量子化ノイズが同等であっても、ダークノイズ(ここでは、ホットピクセルなどの固定ノイズではなく、ダークカレントの揺らぎとして観察されるノイズを指しています)が支配的になることも多いため、HDRの効果を感じにくくなる場合があります。
⑤SharpCapのセンサー解析では15stops以上の異様なダイナミックレンジが出てきますが、個人的には懐疑的です。
ちなみに量子化ノイズに着目した場合、そのダイナミックレンジは概ね13stop程度だと思います(個人的感想です)。
⑥Uranusのアップデートに関しては、下記公式サイトをご参照ください。
htmx.process($el));"
hx-trigger="click"
hx-target="#hx-like-count-post-38279887"
hx-vals='{"url":"https:\/\/apranat.exblog.jp\/38279887\/","__csrf_value":"2e23df240c47c38c0093084f710dd1ab946388edb0b3bbfae186d2997b646e95ab15f39de4893612b0aea913dbfaa9eebe771d34a261cb85ceaf30ee05fd9592"}'
role="button"
class="xbg-like-btn-icon">