FFCウィザードのサンプルプログラム
Euresysは、 ffc-wizard
と呼ばれ、係数を計算し、Coaxlinkカードをターゲットにしたバイナリファイルにそれらをパックするという、サンプルアプリケーションのソースコードを提供します。
このサンプルコードの目的は3つあります:
1. | ユーザーへのキャリブレーション手順のガイド |
2. | この文書に記載されている内容の技術的および実用的な翻訳の提供; |
3. | カスタムアプリケーションを開発するための構成要素の提供。 |

ソースコードは単一のソースファイルにあります: src/ffc-wizard.cpp
. アプリケーションの構築は簡単です;
● | Windowsの場合、Microsoft Visual Studioプロジェクトファイルがあります ffc-wizard.vcproj ; |
● | またはLinuxおよびmacOS、 Makefile が提供されています。 |

ウィザードはコンソールアプリケーションです。 フラグが与えられると、次のヘルプメッセージ --help
が表示されます。
> ffc-wizard.exe --help
Flat Field Correction Wizard
fcc-wizard [OPTIONS]
Options:
--if=INT Index of GenTL interface to use
--dev=INT Index of GenTL device to use
--ds=INT Index of GenTL data stream to use
--average=INT Number of images to average (default: 10)
--roi_x=INT Horizontal offset in pixels of ROI upper-left corner (default: 0)
--roi_y=INT Vertical offset in pixels of ROI upper-left corner (default: 0)
--roi_width=INT Width of ROI (default: whole image)
--roi_height=INT Height of ROI (default: whole image)
--balance Compute flat image average on all components rather than on each component
--dark-setup=SCRIPT Path to setup script for dark acquisitions
--flat-setup=SCRIPT Path to setup script for flat acquisitions
--timeout=MS Maximum time in milliseconds to wait for an image (default: 1000)
--dark-histogram=FILE Path to histogram html page of average dark image to output and open
--flat-histogram=FILE Path to histogram html page of average flat image to output and open
--output-ffc=FILE Path to coefficients output file (Coaxlink ffc binary format)
--load-ffc=FILE Load coefficients into Coaxlink coefficients partition (default: computed coefficients)
--no-interact Skip user interaction
-h --help Display help message
Note: the ROI options allow defining a rectangular region to consider while computing averages,
this is useful to eliminate pixels close to borders in images subject to vignetting.
オプション詳細
フラグ | 詳細 |
---|---|
--if , --def , --ds |
使用する(および/または構成する)データストリームを識別するGenTLモジュールのインデックス |
--average
|
暗くて平坦な取得のために取得する画像の数;キャリブレーション手順では、これらの取得の平均のみがより使用されます。 |
--roi_x , --roi_y , --roi_width , --roi_height |
フラット画像の平均ピクセル値を計算するときに考慮するオプションの矩形領域(average(Flat) )。 これは各ピクセルのゲイン値の評価に影響します |
--balance
|
ホワイトバランスを有効にします;例えば カラー画素成分の係数が成分値のバランスをとるために計算されるかどうか;明らかに、これはフラット画像を取得するために使用されるフラットバックグラウンドが可能な限りトゥルーグレイに近いことを要求します(それに対してすべてのRGB成分は同一の値を持ちます)。 |
--dark-setup , --flat-setup |
ダーク・フラット取得前に実行するオプションの設定スクリプト |
--dark-histogram , --flat-histogram |
オプション;濃淡画像ピクセル成分のヒストグラムを示す出力ファイルへのパス;これにより、暗電流の変動とフラット画像の変動の視覚的な概要が得られます。 |
--no-interact
|
通常、ウィザードはユーザーがシステムをセットアップするのを待ってから暗くてフラットな取得を開始します。 このフラグを使用すると、ウィザードはユーザーを待機しません(また、作成されたヒストグラムのHTMLページも開きません)。 |

キャリブレーション手順と係数のパッキングはmain関数によって制御されます ffcWizard
ffcWizard
タスク
タスク | 機能によって完了 |
---|---|
一連の暗い画像を取得して平均的な暗い画像を作成します | acquireImages
|
一連のフラット画像を取得して平均的なフラット画像を作成します | acquireImages
|
各ピクセルコンポーネントの gain 値を計算する |
computeGain
|
暗いピクセル成分の offset 値を使用 |
computeOffset
|
16ビットのリトルエンディアン値へのパッキング offset と gain 値 |
packCoefficients
|
パックド係数をバイナリファイルに書き込む | savePackedCoefficients
|

サンプルアプリケーションはすでにいくつかの一般的なピクセルフォーマットをサポートしています: Mono
、 RGB
、 RGBa
と Bayer
。
制限: サンプルアプリケーションの複雑さを制限するために、(ピクセルあたり複数のコンポーネントを持つピクセルフォーマットの場合)すべてのコンポーネントが同じサイズを持つことを考慮します。 関数を更新することで、異なるコンポーネントサイズのピクセルフォーマットをサポートすることは可能です addImage
と addComponents
。
新しいピクセルフォーマットをサポートするために(以前の制限の条件の下で)、2つの関数を修正する必要があります:
1. | Image::getComponentsPerPixel 、 PFNC 名で識別される新しいフォーマットの1ピクセルあたりのコンポーネント数を返す |
2. | Image::getComponentFilters 新しいフォーマットのピクセルコンポーネント(PFNC名で識別される)が画像内でどのように配置されているかを記述するオブジェクト ComponentFilter の std::vector を返す |
ComponentFilter
オブジェクトは、 Gain
と Offset
の値を評価しながら、異なるピクセルコンポーネントの処理を分離するために使用されます。 例えば、 RGB
フォーマットにおいて、構成要素に Red
関連するFFC係数は、暗い画像および平坦な画像からの構成要素を使用して Red
計算されます。
ピクセルコンポーネントレイアウト構成の詳細については、 Image::getComponentFilters
のソースコードを参照してください。