ピクセルフォーマット
設定フォーマットと得られるデータの関係
カメラに搭載されているイメージセンサは、ピクセルが配列されており各ピクセル毎に光を電気信号に変換しています。ピクセルにて取得した光子は電荷に変換され、その電荷はさらにデジタルデータへ変換(ADC)されます。これらはイメージセンサ内で処理されます。その後デジタル化されたデータはFPGA回路を通ってインターフェースから出力されます。ADCの階調はカメラ毎に様々ですが、カメラに設定したピクセルフォーマットとADCの階調によって、最終的にアプリケーションが得るデータは異なっております。以下はその関係性をまとめたものです。
※PCサイトもしくは画面を横にしていただくと、設定フォーマットと得られるデータの関係の表が表示されます。
フォーマット | Y800 | Y16 | RGB24 | RGB32 | RGB64 | YUY2(YUV422) | Y411 | |
---|---|---|---|---|---|---|---|---|
カメラ内部の ADC変換処理 |
ADC 8bit |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ ↓FPGA処理 |
センサー出力 1111 1111↓FPGA処理 YYYY YYYY UUUU UUUUYYYY YYYY VVVV VVVV ※5 ※6 |
センサ ↓FPGA処理 UUUU UUUU YYYY YYYYYYYY YYYY VVVV VVVV YYYY YYYY YYYY YYYY ※5 ※7 |
ADC 10bit |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ ↓FPGA処理 |
センサ ↓FPGA処理 YYYY YYYY UUUU UUUUYYYY YYYY VVVV VVVV ※5 ※6 |
センサ 1111 1111↓FPGA処理 UUUU UUUU YYYY YYYYYYYY YYYY VVVV VVVV YYYY YYYY YYYY YYYY ※5 ※7 |
|
ADC 12bit |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ出力 ↓FPGA処理 |
センサ ↓FPGA処理 |
センサ ↓FPGA処理 ※5 ※6 |
センサ 1111 1111↓FPGA処理 UUUU UUUU YYYY YYYYYYYY YYYY VVVV VVVV YYYY YYYY YYYY YYYY ※5 ※7 |
|
1ピクセル 送信するとき のデータ量 (通信データ帯域に関連) |
ADC 8bit |
8bit | 8bit | 8bit | 8bit | 8bit | 16bit ※6 | 48bit ※7 |
ADC 10bit |
8bit | 10bit | 8bit | 8bit | 10bit | 16bit ※6 | 48bit ※7 | |
ADC 12bit |
8bit | 12bit | 8bit | 8bit | 12bit | 16bit ※6 | 48bit ※7 | |
ドライバー ソフトウェア |
処理内容 | 何もしない | パディング付加 ※2 | ベイヤー変換 ※3 | ベイヤー変換 ※3 アルファチャンネル付与 ※4 |
パディング付加 ※2 ベイヤー変換 ※3 アルファチャンネル付与 ※4 |
何もしない | 何もしない |
取得できる 1ピクセルの データの中身 |
ADC 8bit |
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 |
YYYY YYYY UUUU UUUU YYYY YYYY VVVV VVVV ※5 ※6 |
UUUU UUUU YYYY YYYY YYYY YYYY VVVV VVVV YYYY YYYY YYYY YYYY ※5 ※7 |
ADC 10bit |
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 |
YYYY YYYY UUUU UUUU YYYY YYYY VVVV VVVV ※5 ※6 |
UUUU UUUU YYYY YYYY YYYY YYYY VVVV VVVV YYYY YYYY YYYY YYYY ※5 ※7 |
|
ADC 12bit |
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 |
YYYY YYYY UUUU UUUU YYYY YYYY VVVV VVVV ※5 ※6 |
UUUU UUUU YYYY YYYY YYYY YYYY VVVV VVVV YYYY YYYY YYYY YYYY ※5 ※7 |
|
データの 並び順 |
単一値(8bit) | 単一値(16bit) | B(8bit) → G(8bit) → R(8bit) | B(8bit) → G(8bit) → R(8bit) → A(8bit) |
B(16bit) → G(16bit) → R(16bit) → A(16bit) |
Y(8bit) → U(8bit) → Y(8bit) → V(8bit) | U(8bit)→ Y(8bit) →Y(8bit) → V(8bit)→ Y(8bit) → Y(8bit) | |
取得できる 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では意味のない情報が付与されていますので無視してください。
- ※5 Y … 輝度値、U … 青色差信号、V … 赤色差信号
- ※6 2画素分のデータです。
- ※7 4画素分のデータです。
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になります。
YUY2のカラーフォーマットについて
YUY2(YUV422)では、横2画素をまとめて32bitで送信されます。輝度を示すYが16bit、色差を示すUとVが8bitずつで合計32bitで2画素分を送信します。ただし、1画素あたりの転送量は16bitになるため、ADC12bit出力のY16やRGB64と比べるとデータ量は多いので、その分RGB64よりもフレームレートが遅くなります。なお、センサが10bitや12bitのADCを備えていても、カメラ内部の画像処理回路でその値が8bitにカットされてYUY2のデータに組み立てられるので、センサで取得されるADC後の輝度値の実データは8bitです。メモリ上のピクセルの並びは行方向に左から右、上から下で、上の表のとおりに並んでいます。
Y411のカラーフォーマットについて
Y411(IYU1)では、横4画素でまとめて48bitで送信されます。輝度を示すYが32bit、色差を示すUとVが8bitずつで合計48bitで4画素分を送信します。ただし、1画素あたりの転送量は12bitになるため、ADC12bit出力のY16やRGB64と同じフレームレートになります。なお、センサが10bitや12bitのADCを備えていても、カメラ内部の画像処理回路でその値が8bitにカットされてY411のデータに組み立てられるので、センサで取得されるADC後の輝度値の実データは8bitです。メモリ上のピクセルの並びは行方向に左から右、上から下で、上の表のとおりに並んでいます。