コントラストの強調 - Part 1
概要
ICImagingControlを使ってどのようにイメージデータにアクセスするかを示しています。
サンプルプログラム
Software | IC Imaging Control 3.5, Visual Studio™ 2019 |
---|---|
サンプル(C#) | contrast_enhancement1_cs_3.5.zip |
サンプル(VB.NET) | contrast_enhancement1_vb_3.5.zip |
関連ファイル | contrast_enhancement_vc7_framefilter_3.5.zip ※ダイアログ画面に関してプラットフォームはx86のみ対応 |
サンプルツールの外観
このサンプルでは、"Contrast Enhancement"フレームフィルタを使用します。
このフィルタはここでダウンロードできるサンプルに含んでおり、そのファイル名は ContrastEnhancement.FTF です。
"Contrast Enhancement"はイメージデータのヒストグラムを広げコントラストを強調する画像処理を行います。ピクセル輝度値は0 ~ 255の間で上限と下限を設定する事ができます。
これら上限・下限の設定はこのフレームフィルタのパラメータとして設定する事ができます。ここで設定した下限値よりも暗いピクセル輝度は0とされ、また上限値より明るいピクセル輝度は255とされます。また、Enabledチェックボックスにより、このフィルタのOn/Offが可能です。
private TIS.Imaging.FrameFilter filter;
Dim filter As TIS.Imaging.FrameFilter
ここで利用しているフレームフィルタのプロジェクトもダウンロードが可能ですが、ここで示しているサンプルはあくまでもこのフィルタを部品として使用しているため、使用者はその内容を理解する必要がありません。
まずTIS.Imaging.FrameFilterタイプの変数filterをForm1の中で宣言する必要があります。
この変数にはフレームフィルタとその接続が含まれます。
private void Form1_Load(object sender, System.EventArgs e)
{
icImagingControl1.ShowDeviceSettingsDialog();
if (!icImagingControl1.DeviceValid)
return;
try
{
filter = icImagingControl1.FrameFilterCreate("ContrastEnhancement", "");
// ICのデバイスパスにフレームフィルタを挿入します
icImagingControl1.DeviceFrameFilters.Add(filter);
// フィルタをEnableにします
cbEnable.Checked = true;
// Enableチェックボックスを初期化します
filter.SetBoolParameter("Enable", cbEnable.Checked);
icImagingControl1.LiveStart();
}
catch(Exception ex)
{
MessageBox.Show("Failed to load the frame filter!");
}
}
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
Try
filter = IcImagingControl1.FrameFilterCreate("ContrastEnhancement", "")
' ICのデバイスパスにフレームフィルタを挿入します
IcImagingControl1.DeviceFrameFilters.Add(filter)
' フィルタをEnableにします
cbEnable.Checked = True
' Enableチェックボックスを初期化します
filter.SetBoolParameter("Enable", cbEnable.Checked)
IcImagingControl1.LiveStart()
Catch ex As System.Exception
MessageBox.Show("Failed to load the frame filter!")
End Try
End Sub
プログラム開始時、icImagingControl1.ShowDeviceSettingsDialogを使用してデバイス選択ダイアログを表示します。 デバイスが正しく選択されたら、次にIcImagingControl1.FrameFilterCreateをコールして"ContrastEnhancement"をロードします。例外エラーをハンドリングするため、フレームフィルタのロードは try..catchブロックでラップしてください。
フレームフィルタがロードされたらICImagingControlのデバイスパスに挿入して、パラメータ"Enabled"をtrueにセットします。icImagingControl1.LiveStartをコールしてライブストリームを開始します。
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
フィルタはチェックボックスcbEnableでスイッチできます。
private void btParameter_Click(object sender, System.EventArgs e)
{
filter.ShowDialog();
if (filter.GetBoolParameter("Enable"))
cbEnable.Checked = true;
else
cbEnable.Checked = false;
}
Private Sub btParameter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btParameter.Click
filter.ShowDialog()
If filter.GetBoolParameter("Enable") Then
cbEnable.Checked = True
Else
cbEnable.Checked = False
End If
End Sub
メソッド filter.ShowDialogでこのフィルタがもつ設定ダイアログを表示でき、上限値、下限値の設定ができます。ダイアログが閉じられると、チェックボックスcbEnableはフィルタパラメータのEnableチェックボックスと同期されます。