画像検査用ノーコードツール MERLICでのダイキャスト部品の打コン等の欠陥検査をする設定を紹介します
検査実施内容
検査範囲は円筒状部分とし、ディンプル部分は検査除外します。周辺部分の輝度差がある領域を異常候補とし、面積、幅の閾値で判定します。
![frontend](https://izumi-visionlab.com/wp-content/uploads/2024/07/frontend.png)
0.全体フロー
MERLICで作成したフローは以下のようになります。
簡単にまとめると、画像のマッチング、検査範囲の作成、フィルタ、明るさ調整などの前処理、異常範囲の抽出および選別、判定の順に処理を行っています。
![2024_07_14_21_53_30_merlic_toolflow](https://izumi-visionlab.com/wp-content/uploads/2024/07/2024_07_14_21_53_30_merlic_toolflow-718x1024.png)
1. 画像の取得
ツールの”画像ソース“を選択し検査画像を取得します。入力パラメータである“画像ソース名”にはRTEで設定したソースを選択します。
出力の画像は次ステップの”画像ノイズ削減”の”画像”に接続します。
(今回は画像ファイルを保存するため、画像をファイルに保存へも接続しています)
![set_image-1](https://izumi-visionlab.com/wp-content/uploads/2024/07/set_image-1-1024x576.png)
2.画像位置合わせ
![flow_matching](https://izumi-visionlab.com/wp-content/uploads/2024/07/flow_matching.png)
ツール”マッチングによるアライメント“をフローに追加し、トレーニング画像(マスター画像)を登録します。
トレーニング画像によりEasy Touchで位置決めで使用したい範囲を囲みます。
右上のパラメータ”マッチング手法トレーニング”は「相関関係ベース」とします。
位置決め部分の境界がはっきりしているときは「形状ベース」、そうでないときは「相関関係ベース」が良いです。(相関関係ベースの方が処理時間がかかる)
出力の”アライメントデータ”は次のステップの”画像のアライメント”に接続します。
![matching](https://izumi-visionlab.com/wp-content/uploads/2024/07/matching-1024x576.png)
次のフローのツール”画像のアライメント”では入力パラメータの”画像”は最初のステップの”画像ソース”から、”アライメントデータ”は一つ上の”マッチングによるアライメント”と接続します
アライメント補正した画像は、今後使用する各ツールと接続します。
![matching2](https://izumi-visionlab.com/wp-content/uploads/2024/07/matching2-1024x576.png)
3. 検査領域の作成
![flow_inspectarea](https://izumi-visionlab.com/wp-content/uploads/2024/07/flow_inspectarea.png)
ツール”長方形の作成”を選択し、検査範囲を設定します。
入力パラメータ”画像”は前ステップの”アライメント画像”と接続します。
出力パラメータの”長方形”は次ステップの”ROIを領域に変換”の”ROI”に接続します
![inspectarea1](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea1-1024x576.png)
ツール”ROIを領域に変換”を”長方形の作成”の次ステップに作成します。
入力の”ROI”には前ステップ”長方形の作成”の”長方形”を接続します。
![inspectarea2](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea2-1024x576.png)
マスキング(除外)範囲を作成するため、”長方形を作成”と並列に”円を作成”ツールを配置します。
入力画像は”画像のアライメント”ツールの”アライメント画像”を接続します。
ディンプル部に4か所円を作成します。
![inspectarea3](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea3-1024x576.png)
ツール”ROIを領域に変換”を”円の作成”の次ステップに作成します。
入力の”ROI”には前ステップ”円の作成”の”円”を接続します。
入力パラメータの”手法”は「統合領域」とします。
![inspectarea4](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea4-1024x576.png)
面取りのエッジ範囲をマスキングする為”円を作成”と並列に”長方形を作成”ツールを配置します。
入力画像は”画像のアライメント”ツールの”アライメント画像”を接続します。
![inspectarea5](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea5-1024x576.png)
ディンプル部のマスキングと同じく、”ROIを領域に変換”ツールで領域化します。
次にマスキング範囲を結合します。ディンプル部、面取り部の”ROIの領域化”の下に”領域の結合”ツールを配置します。
入力パラメータの”領域1””領域2”にディンプル部、面取り部の”領域”をそれぞれ入力。手法は「連結」とします。
![inspectarea6](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea6-1024x576.png)
全体の検査範囲からマスキング領域を除いた領域を作成します。
”領域の結合”ツールを配置し、入力パラメータの”画像1”には最初に作成した長方形の領域を、”画像2”にはマスキング領域を接続します。
![inspectarea7](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspectarea7-1024x576.png)
4.フィルター処理
鋳肌面の影響による輝度のバラツキをフィルター処理を行います。
入力パラメータの”画像”は”画像のアライメント”の”アライメント画像”と接続します。
手法は「binominal」とし、半径は今回「2」としています。
![filter](https://izumi-visionlab.com/wp-content/uploads/2024/07/filter-1024x576.png)
5.明るさの調整
画像の検査範囲の明るさが同レベルになるよう調整します。
![flow_brightfit](https://izumi-visionlab.com/wp-content/uploads/2024/07/flow_brightfit.png)
ツール”円の作成”を設置し、平均輝度値を取得したい範囲に円を作成します。
出力の”円”は次のステップのツール”ROIを領域へ変換”に接続します。
![brightfit1](https://izumi-visionlab.com/wp-content/uploads/2024/07/brightfit1-1024x576.png)
”ROIを領域に変換”ツールを追加し、円を領域化します。
![brightfit2](https://izumi-visionlab.com/wp-content/uploads/2024/07/brightfit2-1024x576.png)
輝度の平均値を取得するため、次ステップに”領域を判定”を追加します。入力パラメータは”画像”は”画像ノイズを削減”ツールの”平滑化画像”、”領域”は前ステップで作成した”抽出領域”を接続します
”特徴名”は「平均グレイ値」とし、”最小特徴値”は0、”最大特徴値”は255とします。
![brightfit3](https://izumi-visionlab.com/wp-content/uploads/2024/07/brightfit3-1024x576.png)
次に輝度調整の為のゲイン値を演算します。
ツール”式を判定”を配置し、入力値には前ステップで抽出した”特徴値”(平均グレイ値)を取得します。
結果のテキストボックスに以下式を入力します。
(今回は輝度抽出領域の輝度が140になるように明るさを調整します)
結果 → 特徴値/140
![brightfit4](https://izumi-visionlab.com/wp-content/uploads/2024/07/brightfit4-1024x576.png)
”明るさを適合”を配置し、入力パラメータの”画像”をフィルタ処理した”平滑化画像”、”ゲイン”を前ステップ”式の判定”の”結果”と接続します。
![brightfit5-1](https://izumi-visionlab.com/wp-content/uploads/2024/07/brightfit5-1-1024x576.png)
6.欠陥部位の抽出
Easy Touch機能を使用し、欠陥部位を抽出、選別します。
![flow_inspection](https://izumi-visionlab.com/wp-content/uploads/2024/07/flow_inspection.png)
ツール”シミ欠陥を抽出”を配置します。
入力パラメータの”画像”を”明るさで適合”した”画像”と接続、”領域”を3.検査領域の作成で作成した領域と接続します。
Easy Touchによりその他入力パラメータを取得します。
![inspection1](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspection1-1024x576.png)
”領域を判定”ツールを配置し、入力パラメータの”画像”は”明るさで適合”した”画像”と接続、”領域”は前ステップの”シミ欠陥を抽出”で抽出した”領域”と接続します。
また今回は”特徴値”は「平均グレイ値」とし、”最小特徴値”を130として領域を選別しています。
![inspection2](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspection2-1024x576.png)
微小領域をひと固まりとみなすためモフォロジー処理を行います。
ツール”領域モフォロジーを適用”を配置します。入力パラメータの”領域”は”領域を判定”ツールの”受け入れ領域”を接続します。
”手法”は「オープニング」、”マスクサイズ”は今回2を選択しています。
![inspection3](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspection3-1024x576.png)
”領域を判定”ツールを配置し、入力パラメータの”画像”は”領域モフォロジーの適用”の出力”適用領域”と接続、”特徴値”は「面積」とし、”最小特徴値”を150として領域を選別しています。
![inspection4](https://izumi-visionlab.com/wp-content/uploads/2024/07/inspection4-1024x576.png)
7.OK・NGの判定と特徴値の出力
欠陥の有り無し判定と、欠陥があった際の外接矩形の長さ、面積を出力します。
![flow_judge](https://izumi-visionlab.com/wp-content/uploads/2024/07/flow_judge.png)
ツール”条件分離”を配置し、入力パラメータには欠陥領域を判定した”領域を判定”の”受け入れられた領域数”を接続します。
条件には以下を入力します。
条件: 受け入れられた領域数 > 0
出力の”条件”は摩耗有りの処理をする”領域をROIに変換”、”デフォルト”は摩耗無しの処理をする”式の判定”に接続します。
![judge1](https://izumi-visionlab.com/wp-content/uploads/2024/07/judge1-1024x576.png)
“領域をROIに変換”ツールを配置しトリガは”条件分離”ツールの”条件”と接続します。
入力パラメータの”領域”は6.欠陥部位の抽出で抽出した領域を接続します。”ROIタイプ”は「長方形」を選択します。
![judge2](https://izumi-visionlab.com/wp-content/uploads/2024/07/judge2-1024x576.png)
”長方形プロパティを取得”ツールを配置し、入力パラメータの”長方形”には前ステップの”領域をROIに変換”の出力”長方形”を接続します。
![judge3](https://izumi-visionlab.com/wp-content/uploads/2024/07/judge3-1024x576.png)
短辺が閾値以下の場合は、判定をOKとする為、”式の判定”ツールを配置します。入力パラメータは、”長方形プロパティを取得”の”短辺”を接続します。
結果(judge)を以下のように式を入力します。
結果 ← 短辺 < 7
![judge4](https://izumi-visionlab.com/wp-content/uploads/2024/07/judge4-1024x576.png)
条件分岐で欠陥無しの時の変数を設定するため、”式の判定”ツールを並列に配置します。変数を追加し4つの変数を以下のように式を追加します。
judge(結果) → 1
長辺(結果1) → 0
短辺(結果2) → 0
面積(結果3) → 0
![judge5](https://izumi-visionlab.com/wp-content/uploads/2024/07/judge5-1024x576.png)
一番最後に”式の判定”ステップを追加し、入力パラメータに”Judge”,”短辺”,”長辺”,”面積”を設定します。”judge”は”式の判定”ツールと”式の判定”ツールから接続、その他は”長方形プロパティの取得”と”式の判定”からそれぞれ接続します。(条件分岐によりどちらが選択されるか自動で決まります)
![judge6](https://izumi-visionlab.com/wp-content/uploads/2024/07/judge6-1024x576.png)
上記演算結果を使用することで以下のようなUIが作成可能です。
![frontend2](https://izumi-visionlab.com/wp-content/uploads/2024/07/frontend2.png)
分かりにくい部分もあると思いますので、知りたいことなどあればお気軽にご連絡ください。
またMERLICの使い方についてはリンクス社のオンデマンド配信がありますので、こちらも参考になると思います。