ピクセルフォーマット
設定フォーマットと得られるデータの関係
カメラに搭載されているイメージセンサは、ピクセルが配列されており各ピクセル毎に光を電気信号に変換しています。ピクセルにて取得した光子は電荷に変換され、その電荷はさらにデジタルデータへ変換(ADC)されます。これらはイメージセンサ内で処理されます。その後デジタル化されたデータはFPGA回路を通ってインターフェースから出力されます。ADCの階調はカメラ毎に様々ですが、カメラに設定したピクセルフォーマットとADCの階調によって、最終的にアプリケーションが得るデータは異なっております。以下はその関係性をまとめたものです。
フォーマット | Y800 | Y16 | RGB24 | RGB32 | RGB64 | |
---|---|---|---|---|---|---|
カメラ内部の ADC変換処理 |
ADC8bit |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ ↓FPGA処理 |
ADC10bit |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ ↓FPGA処理 |
|
ADC12bit |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ ↓FPGA処理 |
|
1ピクセル 送信するとき のデータ量 (通信データ帯域に関連) |
ADC8bit | 8bit | 8bit | 8bit | 8bit | 8bit |
ADC10bit | 8bit | 10bit | 8bit | 8bit | 10bit | |
ADC12bit | 8bit | 12bit | 8bit | 8bit | 12bit | |
ドライバー ソフトウェア |
処理内容 | 何もしない | パディング付加 ※2 | ベイヤー変換 ※3 | ベイヤー変換 ※3 アルファチャンネル付与 ※4 |
パディング付加 ※2 ベイヤー変換 ※3 アルファチャンネル付与 ※4 |
取得できる 1ピクセルの データの中身 |
ADC8bit | 1111 1111 | 1111 1111 0000 0000 | 1111 1111, 1111 1111, 1111 1111 | 1111 1111, 1111 1111, 1111 1111, AAAA AAAA | 1111 1111 0000 0000, 1111 1111 0000 0000, 1111 1111 0000 0000, AAAA AAAA AAAA AAAA |
ADC10bit | 1111 1111 | 1111 1111 1100 0000 | 1111 1111, 1111 1111, 1111 1111 | 1111 1111, 1111 1111, 1111 1111, AAAA AAAA | 1111 1111 1100 0000, 1111 1111 1100 0000, 1111 1111 1100 0000, AAAA AAAA AAAA AAAA |
|
ADC12bit | 1111 1111 | 1111 1111 1111 0000 | 1111 1111, 1111 1111, 1111 1111 | 1111 1111, 1111 1111, 1111 1111, AAAA AAAA | 1111 1111 1111 0000, 1111 1111 1111 0000, 1111 1111 1111 0000, AAAA AAAA AAAA AAAA |
|
データの 並び順 |
単一値(8bit) | 単一値(16bit) | B(8bit) → G(8bit) → R(8bit) | B(8bit) → G(8bit) → R(8bit) → A(8bit) |
B(16bit) → G(16bit) → R(16bit) → A(16bit) |
|
取得できる 1フレームの データの中身 |
ピクセルの 並び順 |
![]() |
![]() |
![]() |
![]() |
![]() |
- ※1 センサから出力されるADCのビット数より少ないビット幅でデータを出力する場合、下位ビットが切り捨てられます。たとえば12bit階調のカメラをY800(8bit)フォーマットで使用すると、カメラ側のFPGAで下位4bitがカットされ、最終的に8bitのデータとして出力されます。
- ※2 カメラのセンサから出力されるデータのビット幅が、指定のフォーマットのビット幅に満たない場合、ランダムなパディングデータが付与されます。これにより、どのADCでもビット幅を揃えることができます。
- ※3 カラーカメラのイメージセンサには各ピクセルにR,G,Bのいずれかのフィルタが配置(ベイヤー配列)されています。ベイヤー変換とは、センサから出力されるRAWデータを使ってカラー画像に変換することを指しています。ベイヤー変換することによって、1ピクセルに対してR,G,Bの各チャンネル情報が付与されます。
- ※4 アルファチャンネル(A)とは画像の透明度を示すデータです。RGB32やRGB64で採用されていますが、IC Imaging Controlでは意味のない情報が付与されていますので無視してください。
Y800/Y16のモノクロフォーマットについて(フォーマットのビット幅がセンサのADCより小さい場合)
フォーマットのビット幅がセンサのADCより小さい場合は、カメラ内部のFPGAで下位ビットが切り捨てられてからカメラから出力されます。例えばADCが10bitのカメラでY800のモノクロフォーマットを設定して画像を取得すると、下位2bitがカットされてカメラから出力されます。PC側のドライバーソフトウェアは、カメラから送られてきたデータに対しては8bitでそのまま処理できるために何も処理しません(パディング付加しない)。
Y800/Y16のモノクロフォーマットについて(フォーマットのビット幅がセンサのADCより大きい場合)
逆に、フォーマットのビット幅がセンサのADCより大きい場合は、カメラから出力されるデータはADC後のそのままのデータが出力されます。例えば、ADCが10bitでY16のフォーマットを設定し画像を取得すると、10bit + 10bit + 10bit ・・・とカメラから出力されます。ADCが12bitでY16の場合は12bit + 12bit + 12bit ・・・と出力されます。それらのデータはアプリケーションが取り扱いしやすいデータにするために、PC側のドライバーソフトウェアでパディングデータをリアルタイムに付加しメモリに格納されていきます。パディング処理をカメラ側ではなくドライバーソフトウェアで行うことで、データ帯域を圧迫せずデータ送信することができています。
RGB24/32/64のカラーフォーマットとアルファチャンネルについて
カラーのカラーフォーマットであるRGB24/32/64について、「1ピクセル送信するときのデータ量」は、ADC階調が同じ場合には「Y800とRGB24/32」、「Y16とRGB64」で同じです。つまり、カラー画像を取得する時と、モノクロ画像を取得する時で、フレームレートやデータ帯域はそれぞれ同じになります。カラーフォーマットとモノクロフォーマットの違いは、カラーの場合はドライバー側で「ベイヤー変換処理」と「アルファチャンネル付与」がなされる点が異なります。例えばRGB64だと、1ピクセルデータにパディングが8bit(ADC8bitの場合)、または6bit(ADC10bitの場合)、または 4bit(ADC12bitの場合)が付加され16bitになり、その後ベイヤー変換によってデータ量が3倍に増え48bitになり、その後16bitのアルファチャンネルが付与され、最終的にアプリケーションに渡されるデータは1ピクセル当たり64bitになります。