PHD2の日本語マニュアルを公開しています。こちらからどうぞ。

個人サイト「Starry Urban Sky」もよろしく。

FireCaptureでのASI290MMの挙動

高速なデータ転送が可能で、その分データが大きくなりがちなASI290MM/MCを今後使っていくにあたり、ボトルネックが生じないか、とか、惑星の撮影に使っているFireCaptureの設定はどうするべきか、といった基本的な疑問が出てきました。

そこで、ごく簡単な実験をやってみました。


やったことは、ASI290MMをPCにつなぎ、FireCapture2.6の設定を変えながら30秒の動画を撮るだけ。FireCapture側で切り替えたのは「HighSpeed」のON/OFF、「16bit」のチェックボックスのON/OFFです。なお、撮影時はデータ転送の帯域がボトルネックにならないよう、「USB Traffic」を上限の100に設定し、画像サイズも320×240ピクセルに限定しています。それ以外の設定は基本的にいじっていません。

撮り終えたら、出来上がったSERファイルのサイズやフレーム数をチェックし、転送速度などを算出してみます。


結果、以下のようになりました。



一目見てわかるのは「16bit」のチェックボックスの効果で、ON/OFFにより1ピクセルあたりのビット数がきれいに8bitと16bitに分かれています。つまり、このチェックボックスOFFだと8bit形式で、ONだと16bit形式でファイルに記録される。ここまではよさそうです。

一方、興味深いのは「HighSpeed」(HS)のチェックボックスをONにしたときの挙動。「16bit」がOFFの場合で比べるとフレームレートがほぼそのまま倍増しています。ところが「16bit」をONにすると、HSの効果がまったく見られません。データ転送速度までほぼ完全に一致している所からすると、「16bit」がONのとき、HSのチェックボックスは無効になるということでしょう。


さて、ここでASI290MMの仕様に立ち返ってみると、320×240ピクセルにおける転送速度は以下のようになっています。*1



このカメラは10bitまたは12bitの精度でADC(Analog-Digital Converter, センサーからの信号をアナログ電気信号に変換する装置)を動作させることができますが、それによってフレームレートは大きく変化します。*2

この数字を見て気づくのは、12bit ADC利用時のフレームレートがHS OFFの場合と、10bit ADC利用時のフレームレートがHS ONの場合とそれぞれほぼ一致しているということです。つまり、HSのチェックボックスは「ADCの精度をコントロールするオプション」で、ここをONにするとADCの精度を引き替えに速度が上がる、ということになります。


そして、ここでもう一つ気づくのは、ファイルのビット数とのズレです。理想的なことを言えば、10bit ADCで出力された信号は10bitで、12bit ADCで出力された信号は12bitで記録してほしいところですが……ファイル形式の仕様上、8bitか16bitでしか記録できないので「16bit」のチェックボックスでこれを選択することになります。

8bitの形式で保存することを選んだ場合、元データが10bitまたは12bitの階調データを持っているにもかかわらず、これを2^8=256階調に押し込めてしまうことになります。画質的にはもったいないですが、後述するファイル転送速度の問題が発生しづらいこと、ファイルサイズが小さくなって取り扱いが容易になるといった利点はあります。

16bit形式で保存すればカメラからのデータは完全に保存できますが、上記とメリット・デメリットが逆転します。撮影や画像処理に使うPCの性能をよく把握しておく必要があります。


また、仕様から計算されるデータ転送速度と、1枚目の表に書かれている動画ファイルの記録速度の違いにも注目。当たり前の話ですが、カメラからのデータは前者の速度でPCに送られ、これをキャプチャしたソフト(今回の場合FireCapture)が後者の速度でファイルに書き出しているわけです。

例えば「16bit OFF + HS OFF」の場合、12bit ADCが利用されるのでカメラからのデータ転送速度は39.1MB/s。これが8bitに丸められて記録されるので、ファイルの記録速度は39.1÷12×8=26.1MB/sとなり、1枚目の表の数字とほぼ一致します。他の場合も同様です。*3


そして、これが分かると自分のシステムにおけるデータ記録のボトルネックが分かります。



この表は、各画像取り込みサイズにおける仕様上のカメラ-PC間のデータ転送速度、およびそこから計算される、ストレージにファイルを保存する際のデータ転送速度を示したものです。

カメラ-PC間はUSB3.0で結ばれています。USB3.0のデータ転送速度の規格上の上限は500MB/sで、カメラの仕様は当然ながらその範囲内に収まっていることが分かります。

とはいえ、1台なら問題なくても、LRGB撮影のようにカラーとモノクロ、2台のカメラを接続するような場合、USB3.0のポートをハブで分岐させていると帯域が不足する可能性はあります。ハブを使用せず複数のUSB3.0ポートにそれぞれ繋いでいたとしても、この「複数のポート」が、1つのUSBポートをPC内部で分岐させているだけの「なんちゃって複数USBポート」の可能性もあるので注意が必要です。


そして、さらなる問題はストレージ側に要求される速度です。例えば、1936px×1096pxのサイズを12bit ADCを用い、最大速度で取り込んで16bitで保存しようとすると、ストレージに要求される転送速度は300MB/sに達します。

この転送速度をHDDでまかなうのは当然不可能で、SSDであってもSATA2(SATA 3Gbps)接続の場合は帯域不足気味(SATA2.xの規格上の実効転送速度の上限が300MB/s)。確実にこれをカバーするためにはSATA3.0(SATA 6Gbps)接続の高速なSSDが必須です。SATA3.0がチップセットでサポートされたのは、SandyBridgeに対応したインテルの6xチップセット以降なので、それなりに新しいPCでないと対応できません(しかも、新しいPCであったとしてもSATA3.0が使われているとは限らない)。



こちらが実際に1936px×1096pxのサイズで上と同様の実験を行った結果ですが、ウチの場合、ノートPCにSSDを載せているものの、接続がSATA2のためファイル書き込み速度は250MB/sあたりで頭打ちになってしまいます*4。まぁ、それでも60fpsくらいは出るので、十分と言えば十分。どうしてもフレームレートがほしければ、取り込み範囲を狭くすればいいだけですし。

*1:カタログ上で示されているのはフレームレートのみ

*2:黒から白までを10bit ADCだと2^10=1024階調で、12bit ADCだと2^12=4096階調で表現することになります。

*3:ただし「16bit ON + HS ON」の場合は数字が合いません。ここからも、この組み合わせでは10bit ADCが利用されておらず、HSが無効になっていることが分かります。

*4:使用中のPCはPanasonicのCF-NX2LEABR。チップセットがQM77なので仕様上はSATA3.0に対応していますが、省電力のためなのか、はたまたHDD前提で設計しているためなのか、内蔵ディスクのインターフェイスはSATA2になっています。