mengineer's blog

ニッチなネタばかりですが。

GenICamの世界その4 PFNCはSFNCの下位文書

GenICamネタも四回目です、初回でGenICamの主な構成要素として

構成要素 説明 最新バージョン
GenApi カメラの各種設定に関する規定 3.0
GenTL カメラの画像データ転送(TransportLayer)の規定 1.5
SFNC カメラの機能名の標準化規定
Standard Feature Naming Convention
2.2

この3つを挙げており、ざっとですがGenApiとSFNCについて見てきました。

次はGenTLを調べるつもりだったのですが、色々と規格などを調べていくうちに、
PFNCという規格も重要そうなのが判ったので、先にそちらを見てみましょう。

PFNCとは

Pixel Format Naming Convention の略で、 カメラの画像データの名称やフォーマット
(データの並び順など)に関する規定です、最新バージョンは2.0です。

いつものダウンロードページに規格書が有ります、下記リンク参照。

http://www.emva.org/wp-content/uploads/GenICam_PFNC_2_0.pdf

この7ページ目に下記の記述が有り、PFNCはSFNCを補うもので下位文書だ、
みたいなことが書いてあります。(その後ろの部分は、良く判りませんでした)

f:id:mengineer:20160516162544p:plain

前回のSFNCの規格書の101ページ目には、下記の記述が有ります。

f:id:mengineer:20160516164435p:plain

画像データのフォーマットを定義しているのが”PixelFormat" というfeatureで有る、
SFNCの規格書では一部しか載せていないので、全ての完全なリストが必要ならば、
PFNCの規格書を参照、また現時点で規格に従って定義済みのPixelFormatの一覧は、
"GenICam Pixel Format Values” というドキュメント参照。

で、最後のドキュメントもダウンロードページに有りました、下記リンク参照。

http://www.emva.org/wp-content/uploads/GenICamPixelFormatValues.pdf

内容はこんな感じです、ようやく見覚えの有る"PixelFormatName"が出てきましたね、
カメラをつないだ時に下記左端の名称が出てきて、選択していたような気がします。

f:id:mengineer:20160516171219p:plain

ひとつ気になるのは、Definitionに"PFNC"と"GigE Vision 2.0"の2つが出てくること、
全てPFNCで規定している訳じゃ無いのか?、 また新たな謎が?

ということで、何かややこしいことになってんなあ、ということは判りました。

普通にカメラを使う分には、上記の一覧表だけで充分なのかもしれませんが、
もうちょっとだけ、実際のNamingの中身を見てみましょう。

Pixel Naming Convention

PFNC規格の12ページ、下図がNamingに関するルールです。

f:id:mengineer:20160516204931p:plain

PixelFormatは5つのブロックに分かれていますが、後ろ3つはオプションなので、
実際よく使うのは、前半の"Components and Location"と"# bits"だけになります。

以下は、代表的なPixelFormatの例(私が知っている範囲で)

  • Mono8 モノクロデータ、8bit
  • Mono10p モノクロデータ、10bit、pは[packing]で、データを隙間無く詰める
  • RGB10p RGBデータ、10bit、pは同上
  • BayerRG12 Bayerデータ、12bit

先ほどの一覧表には、もっとややこしそうなのが出てきますね。

YUV411_8_UYYVYY

最初のYUVは画像データの種類(MonoやRGB同等)、411はデータの構成を示し、
UとVは4個に1個ずつ存在することを示します、ここまでがComponents and Location。

Components and Locationが数字で終わった場合は、次との区切りにを入れます、
8の8は8bit、再び区切りで_が入り、UYYVYYはInterface-specific という項目で、
実際のデータが、この順番に並んで転送されることを示します。

RGB565p

画像データはRGBですが、次の565は各データのbit長を示し、Red:5bit, Green:6bit
Blue:5bit と各色で異なることを示します、pは前出のpackingですね。

もちろんPixelFormatを全部知っておく必要は無いですし、例えば新しいカメラで、
知らなかったPixelFormatが出てきたら、上記の一覧表や規格書で調べれば良い、

ということを、判っておけば良いと思います。(まずは)

まとめ

  • PFNCはSFNCの下位文書で、画像データの名称やフォーマットを規定する。
  • PixelFormat(名称)で、画像データの中身その他の情報が判る。
  • PFNC以外に、GigE Vision の規格で定義されたPixel Formatも有る。

最後が少し厄介ですね、GenICamだけでもややこしいのに。

色々規格を決めて標準化していくのは良いのですが、規格を使う側よりも、
決める側の都合が優先になっているような気もします。

次回はGenICamの構成要素の残り、GenTLについて見てみたいと思います。