トップページへ戻る

■VB6とWEBカメラで画像検査 再チャレンジ

画像検査(比較)を行う必要性から、WEBカメラを利用した画像検査ソフトを作成してから10年。
その時作成したのが↓こちらです。説明はこちらからどうぞ。
10年前に作成した画像検査ソフト
しかし完成はしたものの、この画像検査ソフトは実用的ではありませんでした。
その理由は…
@640×480の検査を行うのに1分以上の時間がかかる。
A640×480では画素が粗く、小さな欠点を抽出できない。
B基準画像と同じ場所に検体を置かなければならない。
大きな理由はこんなところです。

画像検査ソフトを1から再作成

今回再び「画像検査(比較)ソフト」を作ろうと思った理由。
@目視検査での見落としが頻発し、パソコンを利用した検査ソフトが必要になった。
A自動検査機の導入には費用がかかり過ぎる。
Bパソコンの性能が上がり、処理速度が向上した。
CWEBカメラの画素数が上がり、また描画される画像もキレイになった。

上記の背景から、画像検査(比較)ソフトに再チャレンジすることになりました。
当初はC#でプログラムを組むつもりでしたが、完成までの時間の短縮のため、以前勉強したVB6で作成しました。

改良点

基準画像とプレビュー画像の比較に時間がかかると使い物にならないので、検査時間の短縮を図りました。
結果として、処理速度の遅いVB6にもかかわらず、640×480の画像の総ピクセルの比較で3秒程度になりました。
さらに間引き検査という検査方法も選択できるようにしたことで、さらに高速な検査もできるようになりました。

今回の改良点
@呼び出し関数を極力減らす
 例えば基準画像とプレビュー画像のピクセルのRGBを比較するのに、FOR文の中でpublic宣言した関数を呼び出していたのですが、その関数をFOR文の中に書いたら検査時間が大幅に短縮しました。
A前回のプログラムでは、NGピクセルにNGカラーを書き込んでいたのですが、今回は書き込みをヤメ、そのXY座標を変数に格納するだけにしました。
B検査範囲を指定できるようにしたことで、画像の端から端まで検査していた前回プログラムより検査時間が短縮された。
CNGピクセルの色を変えるだけだと不具合箇所がわかりづらいので、NG箇所を10×10ピクセルの正方形で囲むことで見やすくした。


新検査プログラムの画像

今回作成した画像検査ソフトの画像です。


今回お世話になったサイト

とりあえず完成したので、折を見てC#で書き直すつもりです。
今回はVB6で作成したのですが、前回のソフト同様、DirectShow関係のWEBサイトで公開されている「DShowVBHelper」というDLLを利用させて頂きました。
さらにそこでダウンロード可能なIBasicVideoを利用したライブ動画からスナップショット(静止画)を取得するプログラムを参考にしています。