低輝度、高輝度ピクセルの強調 その1
概要
ICImagingControlで使用できるフィルタを使用して、低輝度、高輝度のピクセルを強調する方法を示しています。
サンプルプログラム
Software | IC Imaging Control 3.5, Visual Studio™ 2019 |
---|---|
サンプル(C#) | mark_pixels1_cs_3.5.zip |
関連ファイル | clipping_vc7_framefilter_3.5.zip |
関連ファイルにある”clipping_vc7_framefilter_3.5.zip”は画像処理のフィルタClippingFilter_xx.ftf(dllファイル)を生成するためのプロジェクトファイルとなっています。
ClippingFilter_xx.ftfはサンプルファイルでダイアログを呼び出すために使用されていますが、ClippingFilter_xx.ftfは一部IC Imaging Control3.5の仕様に準拠しておりませんのでご注意ください。
なお、ICImagingControlクラスのFrameFilterCreateメソッドはIC Imaging Control3.5では非推奨となっています。
IC Imaging Control3.5からはFrameFilterクラスを使って画像処理のフィルタ適用することを推奨しています。
IC Imaging Control3.5に準拠した方法・使用できるフィルタはこちらをご覧ください。
サンプルツールの外観
フレームフィルタについては、ICImagingConrolのチュートリアルドキュメントに詳細が記述されています。
ここで使用されているフィルタは予め設定されたしきい値よりも低い/高いピクセルをマークするように動作します。
フレームフィルタはソフトウェアコンポーネントとして動作するため、フィルタ自体のコードについての詳細はここでは知る必要がなく、単にフィルタを読んで組み込むだけです。
public TIS.Imaging.FrameFilter filter;
まず、TIS.Imaging.FrameFilterのfilter変数はForm1クラスの中で定義される必要があります。この変数はフレームフィルタとその通信に使用されます。
private void Form1_Load(object sender, System.EventArgs e)
{
icImagingControl1.ShowDeviceSettingsDialog();
if (!icImagingControl1.DeviceValid )
return ;
filter = icImagingControl1.FrameFilterCreate("Clipping", "");
// フィルタの読み込みが成功したことをチェックします。
if (filter == null)
{
MessageBox.Show("Failed to load the Clipping filter", "Mark Pixels 1", MessageBoxButtons.OK, MessageBoxIcon.Error);
cbEnable.Checked = false;
cbEnable.Enabled = false;
}
else
{
// ディスプレイパスにフレームフィルタを挿入します。
icImagingControl1.DisplayFrameFilters.Add(filter);
// フィルタを有効にします
filter.SetBoolParameter("Enable", cbEnable.Checked);
// Enableチェックボックスを初期化します
cbEnable.Checked = true;
}
icImagingControl1.LiveStart();
}
プログラムは最初に.ShowDeviceSettingsDialogを使ってデバイス選択ダイアログを表示します。
次に "Clipping"フィルタをロードして、ICImagingControlのディスプレイパスに挿入します。
その後、このフィルタがenableとされた後、ライブストリームを開始します。(.LiveStart)
private void cbEnable_CheckedChanged(object sender, System.EventArgs e)
{
filter.BeginParameterTransfer();
filter.SetBoolParameter("Enable", cbEnable.Checked);
filter.EndParameterTransfer();
}
フレームフィルタが行う画像処理はcbEnableチェックボックスのクリックにより On/Off を切り替えることができます。チェックボックスのイベントハンドラー内でフレームフィルタの"Enable"パラメータをセットしています。
private void btParameter_Click(object sender, System.EventArgs e)
{
filter.ShowDialog();
cbEnable.Checked = filter.GetBoolParameter("Enable");
}
ShowDialogメソッドによりフィルタが持っている設定ダイアログを表示します。Thresholdスライドバーによりマークする明るさのしきい値を設定します。Clip Above Threshold/Clip Below Thresholdにより、設定したしきい値以上または以下、どちらをマークするかを指定します。Pattern/Color設定によりマークしたピクセルをどのように表示するのかを指定します。ダイアログが閉じられると、bEnableチェックボックスがダイアログの設定と同期されます。