読者です 読者をやめる 読者になる 読者になる

mengineer's blog

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

GenICamの世界その3 SFNCは辞書みたいなもの

引き続きGenICamネタの三回目、今回はSFNCについて。

Standard Features Naming Conventionの略ですね、
Featureは前回の例で挙げた"Gain"等、カメラの個々の機能だと考えて下さい。

最初に言っておくと(こんな仮面ライダーおったな)SFNCの中身は膨大です、
下記が最新版2.2の規格書ですが、なんと469ページも有ります。

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

ひとつ前の2.1が390ページだったので、バージョンひとつで約80ページ増加、
それだけ内容が広範囲に渡っているということですね。

では、ちょっとだけ中身を見ていきましょう。

SFNCの内容

前回説明したように、GenICam対応のカメラは自身の機能(Feature)の情報を
XMLファイルで持っていますが、個々のFeatureの名称などを統一するために
定められた規定がSFNCです、下記は規格書の目次から抜粋したもの。

f:id:mengineer:20160512113613p:plain

Featureを22のグループに分けて、更にそのグループ毎の説明が有ります、
前回、例で挙げた"Gain"だとANALOG CONTROLに属し、こんな表になっています。

f:id:mengineer:20160512120316p:plain

GenICam対応のカメラは、必ず"Name"で規定された名称を使う必要が有ります。

例えば、いわゆるAGC(AutoGainControl)機能だと"GainAutoBalance"ですね、
これを"AutoGainExec"とか、各メーカーで勝手な名前を使うのは駄目。

こうして統一した名称を使うことで、例えばA社向けに作った画像取込ソフトが、
もしB社のカメラに変わった場合でも、割と容易に再利用出来るわけです。

メーカー毎に色々な機能(Feature)が有り、かつ新機能も増えていく訳なので、
SFNCの規格も、年々内容が増えていったのでしょうね。

個々のFeatureの詳細

先ほどの表の各Feature毎に更に詳しい説明が有ります、Gainだと下記です。

f:id:mengineer:20160512123641p:plain

  • Name : Featureの名称
  • Category : Featureのグループ分け、XML内にもCategoryの記述が有ります。
  • Level : Featureの内容(機能)により、下記3つのいずれかを指定します。
    • M: Mandatory 必須 このFeatureは必ずXMLに含める必要有り
    • R: Recommended 推奨 含めることを推奨(必須では無いが)
    • O: Optional オプション さほど重要では無いFeature
  • Interface : データの種類 IFloat, IInteger,IString 等有ります
  • Access : アクセスモード Read/Write, Read Only, Write Only 等
  • Unit : 単位 uS, nS, mm, inch, Hz, dB, Bps 等(必要時のみ指定)
  • Visibility : Featureの内容(機能)により、下記4つのいずれかを指定します。
    • B: Beginner GUI等で全ユーザーに解放されるFeature
    • E: Expert 上級者向けのFeature
    • G: Guru 更に上級者(導師)向けのFuature
    • I: Invisible GUI上では非表示のFeature(APIとしては使用可能)

Interfaceの種類については、前回のGenApiの規格書の2.3に詳細が有ります。

Visibility、上記説明だけだと判りにくいですが、ユーザーのレベルに合わせて
参照出来るFeatureを切替出来るようにするためのものです。

GenICam対応のSDKでは画面上で変更出来ます、下記はJAISDKでの例

f:id:mengineer:20160512212941p:plain

Beginnerを選択すると、VisibilityがBのfeatureだけが画面上に出てくるので、
初心者にも判りやすいだろう、という主旨ですが、私の経験上から言うと、
Beginnerでは足らないFeatureが多くて使えないよなあ、と正直思ってます。

そもそも、ユーザーのレベルを勝手に規格側で決め打ちするのも腹立つし、
Guruって名前も某真理教を思い出して...、あ、ちょっと脱線しました。
(最近の若い人は知らないだろうなあ、おっさん世代やてバレバレ)

まとめ

  • カメラの各機能をFeatureといい、詳細はSFNCで規定されている。
  • 各メーカーは、SFNCに従ってFeatureの内容をXMLに記述する。
  • ユーザーのレベルに合わせて使用出来るFeatureを切り替える機能が有る。

SFNCは外国語の辞書みたいなもので、各メーカーとも同じ辞書を使って、
個々の書類(XML)を作っていく、その書類の書式を定めてるのがGenApi
というイメージですかね、どんどん新単語が増えるので辞書も厚くなっていきます。

辞書同様でSFNCを丸暗記する必要も無いし、知らないFeature名が出てきた等、
必要時に規格書を参照する程度で充分かなと思います。

ちなみにBaslerは自社の各カメラが対応しているFeatureの一覧表を公開しています。

http://s.baslerweb.com/media/documents/BAS1603_Features_Check_List_e.pdf

機種毎に、どんな機能(Feature)に対応している/いないが一覧出来て便利です。

中にはSFNCに無い名称も有りますが、実はSFNCで決めた以外にも各メーカー独自に
"Category"を定義して、規格に無い(独自の)Featureを定義出来るもよう。
(この件は、別途もう少し調べてみましょう)

次回はSFNCと似ていますが、PFNC(Pixel Format Naming Convention)について。