IC Imaging Control (.NET C#/Visual Basic)

  • サンプルプログラムトップページ
  • デバイスのオープンとハンドリング
    • C# VB.NET カメラの映像を既存のアプリケーションに組み込む方法
    • C# VB.NET デバイスを開く
    • C# VB.NET デバイスの開閉
    • C# VB.NET ダイアログボックスを使用してデバイスを開く
    • C# VB.NET 複数のデバイスを開く
    • C# VB.NET デバイスのシリアル番号を読み取る
    • C# VB.NET ICImagingControlの標準プロパティダイアログの使用
    • C# VB.NET デバイスプロパティ設定の保存と復元
  • ライブ表示
    • C# VB.NET ライブ表示のリサイズ
    • C# VB.NET フルスクリーン表示
    • C# VB.NET 十字マークのオーバーレイ
    • C# VB.NET WFPでvideoWindowを使ったビデオ表示
  • フレームフィルタ
    • C# VB.NET 低輝度、高輝度ピクセルの強調 その1
    • C# VB.NET 低輝度、高輝度ピクセルの強調 その2
  • ライブ表示とマルチプロセス
    • C# VB.NET ライブ表示のみ
    • C# VB.NET 静止画保存
    • C# VB.NET 任意のタイミングで画像処理と静止画保存を同時に処理
    • C# VB.NET 録画しながら任意のタイミングで静止画保存
    • C# VB.NET 全フレームリアルタイム画像処理しながら
             NG判定を静止画保存
    • C# VB.NET 全フレームリアルタイム画像処理しながら
             NG判定を静止画保存、同時に録画
  • イメージの取得
    • C# VB.NET イメージデータの取得
    • C# VB.NET 静止画ファイル保存(BMP)
    • C# VB.NET 静止画ファイル保存(JPEG)
    • C# VB.NET 静止画ファイルの連番保存
    • C# VB.NET カメラ画像保存&FTPで任意のサーバーに転送する
    • C# VB.NET リングバッファを使用したイメージシーケンスの取得と再生
    • C# VB.NET 静止画とAVI動画保存
    • C# VB.NET メモリーレコーディング
             (高速カメラで撮影した現象をRAMメモリー領域に保存)
    • C# VB.NET ソフトウェアトリガーで画像を表示・保存
    • C# VB.NET 録画時間を指定したAVIファイル保存
    • C# VB.NET 外部トリガーで録画の開始
    • C# VB.NET 取得したイメージの輝度値をCSV形式で出力する
             (16bit対応)
  • 画像処理
    • C# VB.NET イメージデータへのアクセス
    • C# VB.NET コントラストの強調 - Part 1
    • C# VB.NET コントラストの強調 - Part 2
    • C# VB.NET コントラストの強調 - Part 3
    • C# VB.NET レーザーポインタの位置を特定する
    • C# VB.NET OpenCVの画像処理
             (アナログタコメーターのデジタル化)
    • C# VB.NET AIモデルを使ったリアルタイム処理
  • Version 3.5サンプル
    • C# VB.NET 関心領域の画像更新
      Advanced Image Processing
    • C# VB.NET 2値化
      Binarization
    • C# VB.NET 明るさの調整
      BrightnessProperty
    • C# VB.NET 動画保存(MediaStreamSink)
      Capturing a Video File
    • C# VB.NET 動画保存(AviStartCapture)
      Capturing an AVI File
    • C# VB.NET 共通ファイル
      Common
    • C# VB.NET オーバーレイの作成
      Creating an Overlay
    • C# VB.NET デモアプリ
      demoapp
    • C# VB.NET VCDプロパティ:GPIOプロパティ編
      DigitalIO
    • C# VB.NET コールバック関数を使ってバッファを表示させる
      Display Buffer
    • C# VB.NET フィルターの適用
      Filter Inspector
    • C# VB.NET 静止画をキャプチャし保存する
      Grabbing an Image
    • C# VB.NET イメージバッファの輝度値を読み込み、輝度反転処理を施す
      Image Processing
    • C# VB.NET VCDプロパティ:全プロパティ一覧を表示する編
      List VCDProperties
    • C# VB.NET デバイス設定ダイアログの作成
      Making Device Settings
    • C# VB.NET イメージバッファにアクセスする
      Pixelformat
    • C# VB.NET コーデックのプロパティを保存する
      Saving Codec Properties
    • C# VB.NET スクロールとズーム
      croll And Zoom
    • C# VB.NET VCDプロパティ:露光とゲイン編
      StandardProperties
    • C# VB.NET VCDプロパティ:ストロボアウト編
      Strobe
    • C# VB.NET VCDプロパティ:
             プロパティダイアログ画面のカスタマイズ編
      VCD Property Page
    • C# VB.NET VCDプロパティ:明るさとホワイトバランス編
      VCD Simple Property
    • C# VB.NET VCDプロパティ:オートフォーカス編
    • C# VB.NET デバイスの再接続方法とフレーム落ちの確認
  • リンク集

    ICImagingControl WEB APIリファレンスマニュアル/サンプルプログラム

    :日本語対応済み :日本語化準備中
    開発言語 APIリファレンスマニュアル サンプルプログラム
    C 4.0
    ()
    - - 4.0
    ()
    - -
    C++ 4.0
    ()
    3.5
    ()
    3.4
    ()
    4.0
    ()
    3.5 3.4
    ()
    C#/VB.NET 4.0
    ()
    3.5
    ()
    3.4
    ()
    4.0
    ()
    3.5
    ()
    3.4
    ()
    Python 4.0
    ()
    3.5 3.4
    ()
    4.0
    ()
    3.5 3.4
    ()

ライブ表示とマルチプロセス処理について

概要

ICImagingControlでは様々な処理を同時並列に行うことができます。ここでは、「ライブ表示」をしながら、「画像処理」、「静止画保存」、「動画の保存」を並列に行うサンプルプログラムを紹介します。それぞれの処理は、プログラムから任意のタイミングで処理内容を命令する場合と、リアルタイムに画像処理をしながら行うものに大別されます。また同時に動画も撮影するという事を行う場合のサンプルも用意しています。それぞれICImagingControlのSinkのオブジェクトをメインに使います。処理内容に応じて大別すると以下の通り6種類あります。

処理内容とタイミング 1.ライブ表示のみ 2.静止画保存 3.任意のタイミングで画像処理と静止画保存を同時に処理 4.録画しながら任意のタイミングで静止画保存 5.全フレームリアルタイム画像処理しながら、NG判定を静止画保存 6.全フレームリアルタイム画像処理しながらNG判定を静止画保存、同時に録画
処理タイミング
  • 画像処理:任意
  • 静止画保存:任意
ライブ
表示
〇 LiveDisplay 〇 LiveDisplay 〇 LiveDisplay 〇 LiveDisplay - -
画像
処理
× × 〇 SnapSingle × - -
静止画
保存
× 〇 SnapSingle 〇 SnapSingle 〇 SetStringParameter
(FrameFilter)
- -
動画
保存
× × × 〇 LiveStart
(MediaStreamSink)
- -
処理タイミング
  • 画像処理:全フレーム
  • 静止画保存:画像処理後NG判定のもの
ライブ
表示
- - - - 〇 DisplayImageBuffer 〇 DisplayImageBuffer
画像
処理
- - - - 〇 FrameQueueSinkQueueSink 〇 FrameQueueSinkQueueSink
静止画
保存
- - - - 〇 SaveAsBitmap
(コールバック関数内で定義)
〇 SaveAsBitmap
(コールバック関数内で定義)
動画
保存
- - - - × 〇 Windows API
メインになる
ICImagingControl Sinkクラス
FrameNotificationSink FrameSnapsink FrameSnapsink MediaStreamSink FrameQueueSink FrameQueueSink
使用例 拡大観察してモニター表示しているものを作業者がモニターで目視チェック。 モニター表示による拡大観察と作業者による画像保存操作。 オフラインでの寸法測定と測定画像の保存。 オフラインでの寸法測定と測定画像の保存と作業内容の録画。 インラインの画像検査。NG判定画像保存でトレサビ管理。 インラインの画像検査。NG判定画像保存でトレサビ管理と、録画によるラインの監視。
sinkのオブジェクトが用意している
コールバック関数
有り
(コールバック関数はあるが全フレーム取得は保証されていない)
無し 無し 無し 有り 有り
Sinkの切り替え 無し 無し 無し 有り 無し 無し

ICImagingControlの具体的なSinkやAPIについて、以下より説明します。

ICImagingControlのsinkについて

ICImagingControlは、DirectShowフィルターグラフを使って、カメラからの送られてくるフレームを取得しています。
DirectShowとは、マイクロソフトが開発したマルチメディアフレームワークの一つで、Windows上で音声・映像の再生やキャプチャなどの処理を行うためのAPIやコンポーネント群を提供しています。DirectShowでは、画像の再生、キャプチャ、エンコード、デコードなどの処理を行うために、異なる機能を持つ複数のフィルターをつなぎ合わせフィルターグラフを構築します。フィルターグラフは、フィルターをつなぎ合わせるパイプラインの構造であり、異なる種類のフィルターを接続することで、様々な動画保存や静止画保存などの処理ができます。ICImagingControlは、DirectShowに基づいて構築されたフィルターグラフをラップしたライブラリであり、開発者がフィルターグラフを簡単に構築できるようにするための多数のAPIを提供しています。
ICImagingControlでは、カメラから送られてくるフレームの取得方法を指定するのにsinkと呼ばれるオブジェクトを使用します。
Sinkのそれぞれの特徴と関連するAPIを、上記の表に基づいて整理すると以下の通りになります。

処理内容とタイミング 1.ライブ表示のみ 2.静止画保存 3.任意のタイミングで画像処理と静止画保存を同時に処理 4.録画しながら任意のタイミングで静止画保存 5.全フレームリアルタイム画像処理しながら、NG判定を静止画保存 6.全フレームリアルタイム画像処理しながらNG判定を静止画保存、同時に録画
処理タイミング
  • 画像処理:任意
  • 静止画保存:任意
ライブ
表示
〇 LiveDisplay 〇 LiveDisplay 〇 LiveDisplay 〇 LiveDisplay - -
画像
処理
× × 〇 SnapSingle × - -
静止画
保存
× 〇 SnapSingle 〇 SnapSingle 〇 SetStringParameter
(FrameFilter)
- -
動画
保存
× × × 〇 LiveStart
(MediaStreamSink)
- -
処理タイミング
  • 画像処理:全フレーム
  • 静止画保存:画像処理後NG判定のもの
ライブ
表示
- - - - 〇 DisplayImageBuffer 〇 DisplayImageBuffer
画像
処理
- - - - 〇 FrameQueueSinkQueueSink 〇 FrameQueueSinkQueueSink
静止画
保存
- - - - 〇 SaveAsBitmap
(コールバック関数内で定義)
〇 SaveAsBitmap
(コールバック関数内で定義)
動画
保存
- - - - × 〇 Windows API
メインになる
ICImagingControl Sinkクラス
FrameNotificationSink FrameSnapsink FrameSnapsink MediaStreamSink FrameQueueSink FrameQueueSink
使用例 拡大観察してモニター表示しているものを作業者がモニターで目視チェック。 モニター表示による拡大観察と作業者による画像保存操作。 オフラインでの寸法測定と測定画像の保存。 オフラインでの寸法測定と測定画像の保存と作業内容の録画。 インラインの画像検査。NG判定画像保存でトレサビ管理。 インラインの画像検査。NG判定画像保存でトレサビ管理と、録画によるラインの監視。
sinkのオブジェクトが用意している
コールバック関数
有り
(コールバック関数はあるが全フレーム取得は保証されていない)
無し 無し 無し 有り 有り
Sinkの切り替え 無し 無し 無し 有り 無し 無し

sinkを使うことで画像保存・動画保存・コールバック呼び出すモードを簡単に切り替えることができます。
IC Imaging Controlのsinkは大きく分けて、FrameNotificationSink、FrameSnapSink、MediaStreamSink、FrameQueueSinkの4種類があります。

FrameNotificationSink

カメラから送られてくる画像を取得する簡単なSinkです。ドライバメモリからアプリケーションメモリへのコピーを行いません。このSinkは、アプリケーションが画像データをサードパーティ製の画像処理ライブラリなどのバッファにイメージのコピーが必要な場合に有効に使用できます。このSink内にはバッファリングしないため、コールバック関数内の処理は素早く完了させる必要があります。システム負荷が高い場合やフレーム間隔に比べて関数内の処理が完了しない場合、フレーム毎にコールバックが呼び出される保障はありません。

FrameSnapsink

FrameSnapSinkは、任意のタイミングで撮影するときに使用されます。例えば、ライブ表示はデバイスから取得したまま表示が行えますのでカメラのスナップショットやオブジェクトの識別などのアプリケーションで使用されます。カメラから送られてくる全フレームを取得するにはFrameQueueSinkを使用してください。

MediaStreamSink

MediaStreamSinkはカメラから送られてくるフレームを取得してビデオファイル(AVI、WMV、MPEG4形式)として保存することができます。 録画中のパフォーマンス低下を防ぐには、ICImagingControl.LiveDisplayプロパティをFalseに設定しライブ画像を非表示にすることが推奨されます。

FrameQueueSink

FrameQueueSinkはキャプチャされたフレームをキューに入れ、画像処理などでフレームを必要とするときにキューから取得することができます。

▲ このページの先頭に戻る

Copyright © ARGO Corporation. All Rights Reserved.