ビニング機能あれこれ
ビニング機能とは?
ビニング機能とは、複数のピクセルを合成して露光する産業用カメラの機能のことです。
ビニング機能のメリット
その1:読み出しノイズが1/4になりSNが改善する
ビニング機能を使うと、4画素につき1回だけしか読み出しを行わないので、その分の読み出しノイズを減らすことができます。学術研究で非常にシビアな短時間露光などの撮影条件の時などに効いてくることがあります。
その2:データ量の削減
例えば2×2のビニングをすると、1枚当たりの画像のデータ量は1/4になります。
その3:フレームレートの向上
データ容量が1/4になるのでその分帯域が節約できるのでフレームレートが向上します。
また、「カメラのフレームレートを速くしなければならないが、フレームレートの向上のために画素切り出しをすると、フル解像度の時よりも視野サイズが小さくなってしまう、しかし広角なレンズを使うことができない」といったケースがあります。こんな時もビニング機能は有効です。ビニング機能は、画素切り出しと違って有効画素を捨てないので、視野サイズが小さくなりません。
その4:明るさの向上
2×2のビニングをすると、4つのピクセルを合算して一つのピクセルとみなすので、同じ露光時間でも明るさが4倍になります。
ビニング機能のメリット、本当に享受できるのか?
産業用カメラのビニング機能は、どこでそのビニングが行われるかで、ということに注意が必要です。どこでビニングが行われるかによって、上記のメリットは必ずしも享受できるとは限らないからです。
ビニングはどのタイミングで行わるかが重要で、すべての産業用カメラが同一のタイミングでビニングされるとは限りません。ビニングは以下のタイミングで行われます。
- イメージセンサ
- FPGA
- ドライバ(広義ではソフトウェア)
- ソフトウェア
イメージセンサとFPGAはカメラ内部です。これはハードウェアビニングと呼ばれることが多いです。
一方で、ドライバやソフトウェアの画像処理による単純輝度合算などはソフトビニングと呼ばれることが多いです。
またイメージセンサの内部でも、ADC変換前にビニングを行うのか、ADC変換後にビニングを行うのか、によっても上記のメリットが教授できないことがあります。
表にまとめると以下の通りです。
ビニングの種類 | ハードウェアビニング(カメラ内部) | ソフトビニング(カメラ外部) | |||
---|---|---|---|---|---|
イメージセンサ | FPGA | ドライバ | ソフトウェア | ||
ADC変換前 | ADC変換後 | ||||
アナログ | デジタル | デジタル | デジタル | デジタル | |
SN改善 | 〇 | × | × | × | × |
フレームレートの向上 | 〇 | 〇 | × | × | × |
データ量の削減 | 〇 | 〇 | 〇 | 〇 | × |
明るさの向上 | 〇 | 〇 | 〇 | 〇 | 〇 |
解説1 | 解説2 | 解説3 | 解説4 | 解説5 |
左から順番に解説します。
解説1
SNの向上は、ADC変換前にビニングをしてその後に読み出しを行うという機能がイメージセンサそのものに実装されていないと実現できません。ADC変換前にビニングができるイメージセンサというのは最近は少なくなってきており、特殊な学術向けのカメラに採用されているセンサカメラや、一部のカメラにのみ搭載されています。センサでビニングを行っているからと言って、それが必ずしもSNの向上につながらないことには注意が必要です。
解説2
ADC変換後にイメージセンサ内でビニングをすることもあります。これはイメージセンサ上でビニングを行い、後端のカメラ内FPGA処理リソースを消費しないというメリットがあります。センサクロックは非常に高速なので、ビニングをしてデータ削減をしてFPGAにデータを引き渡すことでフレームレートの向上が見込めます。アプリケーション側は、データ量の削減、明るさの向上を見込むことができます。
解説3
イメージセンサにはビニング機能が実装されていないものの、カメラメーカの判断でFPGAにビニング機能を実装してくれているカメラメーカもあります。この場合、イメージセンサはフル解像度で読み出しをしてからビニングを行うので、データ量は1/4に削減はされるものの、フレームレートはフル解像度の時と同じになります。つまり、カメラ内部のFPGAビニングの場合は、フレームレートの向上は見込むことができません。
解説4
カメラメーカによってはFPGAの処理リソースの削減のために、ビニング機能をFPGA側ではなく、ドライバ側に実装をする場合があります。FPGA側に実装する場合とドライバ側に実装する場合では、両方ともデータの削減と明るさの向上は見込めますが、違いとしては処理負荷をカメラ側に負担させるのか、カメラの外(CPUやフレームグラバーボード等)に負担させるのか、といった違いがあります。高速画像処理などのハイエンドなアプリケーションの場合は、「カメラ側FPGAデジタルビニング」か「ドライバ側デジタルビニング」かが重要になる場面があります。
解説5
カメラ側にもドライバ側にもビニングが実装されていない場合は、取得したフル解像度の画像から画像処理によってビニング機能を実現するという手段もあります。ビニングアルゴリズムは非常に単純なのでOpenCVなどで行うことも可能です。
輝度値を単純に4倍にするだけです。単純に取得した画像を明るくしたいという目的を画像処理によって達成します。
上記のようにビニング機能のタイミングについては、ユーザが享受したいメリットと密接に関連しているので確認するようにしましょう。
産業用カメラでUVCカメラとして動作するもの
最新のPYTHON、Starvis、Pregiusセンサー搭載カメラ。
フォーカス位置をSDKからコントロール可能。USB2.0とUSB3.0のモデル有。