低輝度、高輝度ピクセルの強調 その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