低輝度、高輝度ピクセルの強調 その1
ICImagingControlで使用できるフィルタを使用して、低輝度、高輝度のピクセルを強調する方法を示しています。
Software | IC Imaging Control 3.4, Visual Studio™ 2019 |
---|---|
サンプル(C#) | mark_pixels1_cs_3.4.zip |
サンプル(VB.NET) | mark_pixels1_vb_3.4.zip |
Frame Filter(C++ project) | clipping_vc7_framefilter_3.4.zip |
フレームフィルタについては、ICImagingConrolのチュートリアルドキュメントに詳細が記述されています。
ここで使用されているフィルタは予め設定されたしきい値よりも低い/高いピクセルをマークするように動作します。
フレームフィルタはソフトウェアコンポーネントとして動作するため、フィルタ自体のコードについての詳細はここでは知る必要がなく、単にフィルタを読んで組み込むだけです。
まず、TIS.Imaging.FrameFilterのfilter変数はForm1クラスの中で定義される必要があります。この変数はフレームフィルタとその通信に使用されます。
public TIS.Imaging.FrameFilter filter;
Private filter As TIS.Imaging.FrameFilter
プログラムは最初に.ShowDeviceSettingsDialogを使ってデバイス選択ダイアログを表示します。
次に "Clipping"フィルタをロードして、ICImagingControlのディスプレイパスに挿入します。
その後、このフィルタがenableとされた後、ライブストリームを開始します。(.LiveStart)
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();
}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
IcImagingControl1.ShowDeviceSettingsDialog()
If Not IcImagingControl1.DeviceValid Then
'Unload(Me)
Exit Sub
End If
filter = IcImagingControl1.FrameFilterCreate("Clipping", "")
' ディスプレイパスにフレームフィルタを挿入します。
IcImagingControl1.DisplayFrameFilters.Add(filter)
' フィルタを有効にします。
filter.SetBoolParameter("Enable", cbEnable.Checked)
' Enable チェックボックスを初期化します。
cbEnable.Checked = True
IcImagingControl1.LiveStart()
End Sub
フレームフィルタが行う画像処理はcbEnableチェックボックスのクリックにより On/Off を切り替えることができます。チェックボックスのイベントハンドラー内でフレームフィルタの"Enable"パラメータをセットしています。
private void cbEnable_CheckedChanged(object sender, System.EventArgs e)
{
filter.BeginParameterTransfer();
filter.SetBoolParameter("Enable", cbEnable.Checked);
filter.EndParameterTransfer();
}
Private Sub cbEnable_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbEnable.CheckedChanged
filter.BeginParameterTransfer()
filter.SetBoolParameter("Enable", cbEnable.Checked)
filter.EndParameterTransfer()
End Sub
.ShowDialogメソッドによりフィルタが持っている設定ダイアログを表示します。Thresholdのスライドバーによりマークする明るさのしきい値を設定します。Clip Above Threshold/ Clip Below Threshold により、設定した閾値以上または以下、どちらをマークするかを指定します。Pattern/Color 設定によりマークしたピクセルをどのように表示するのかを指定します。ダイアログが閉じられると、bEnableチェックボックスがダイアログの設定と同期されます。
private void btParameter_Click(object sender, System.EventArgs e)
{
filter.ShowDialog();
cbEnable.Checked = filter.GetBoolParameter("Enable");
}
Private Sub btParameter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btParameter.Click
filter.ShowDialog()
cbEnable.Checked = filter.GetBoolParameter("Enable")
End Sub