操作
メカチーム案件 #229
完了メカチーム案件 #139: 画像判定システム
メカチーム案件 #140: プログラミング
メカチーム案件 #189: 10/31までの必須項目[Step-1]
メカチーム案件 #192: 検証・調整
Step-2 対象物が複数の場合で目標 正解率 60%~70%
開始日:
2025/10/16
期日:
2025/11/30
進捗率:
100%
外注先:
内製
安間 一臣 さんが2ヶ月前に更新
- 進捗率 を 0 から 70 に変更
#note-2 解決
- 原因
テンプレート画像を撮影した場合に特徴点が抽出できなかった原因ですが、撮影した画像をエッジ検出しミサンガ部分を切り出すと、ミサンガのギリギリで切り出してしまい特徴点がうまく抽出できないようでした。
- 対策
エッジ検出した座標を基に、ミサンガの周りにマージンができるようにしました。(現在は上下左右とも10ピクセルのマージンを取るようにしています。)
- 結果
特徴点を抽出できるようになりました。
試験
以下の試験を実施し、60%以上の正解率を出せるようになりました。
OK品のみNG品のみであれば高い正解率が出せるのですが、OK品NG品が混在すると正解率が落ちてしまっています。
ミサンガのゆがみがあると正解率が落ちてしまうように感じます。
試験内容は以下です。
- 試験内容
- 検査対象のOK品を縦に並べて撮影。
- 合否判定閾値は0.48と設定。
- 試験対象は、黒字に白の文字がプリントされたミサンガを使用。
- テンプレート画像はファイルから読み込む。(テンプレートとなるミサンガを配置し、検査対象を並べるという作業が大変だったため、テンプレート画像はあらかじめ撮影しておいた画像ファイルから読み込ませました。)
- 結果
- 1. 複数並べた状態の評価(テンプレートOK品、OK品を複数)
- 正解率: 76%
- 2. 複数並べた状態の評価(テンプレートOK品、NG品を複数)
- 正解率: 80%
- 3. 複数並べた状態の評価(テンプレートOK品、OK品とNG品を複数)
- 正解率: 65%
- 1. 複数並べた状態の評価(テンプレートOK品、OK品を複数)
- エビデンス
- 005_案件 > 【メカチーム案件】画像判定システムの開発 > 報告 > 20251016_特徴点_crossCheck_True > 応用.zip
https://michiiro.sharepoint.com/:u:/r/sites/msteams_b01f23/Shared%20Documents/General/005_%E6%A1%88%E4%BB%B6/%E3%80%90%E3%83%A1%E3%82%AB%E3%83%81%E3%83%BC%E3%83%A0%E6%A1%88%E4%BB%B6%E3%80%91%E7%94%BB%E5%83%8F%E5%88%A4%E5%AE%9A%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E9%96%8B%E7%99%BA/%E5%A0%B1%E5%91%8A/20251016_%E7%89%B9%E5%BE%B4%E7%82%B9_crossCheck_True/%E5%BF%9C%E7%94%A8.zip?csf=1&web=1&e=oFcVRv- エビデンス内のjpegファイルの見方
- keypoint_*.jpg
テンプレートと検査対象の類似する特徴点を線で結んだ画像です。
ファイル名は「keypoint_<検査実施日>_<検査時間>.jpg」となっています。 - marking_*.jpg
どのミサンガがOKもしくはNGとなったかをマークした画像です。
ファイル名は「marking_<検査回数><検査実施日><検査時間>.jpg」となっています。 - target_*.jpg
検査対象画像です。
ファイル名は「target_<検査実施日>_<検査時間>.jpg」となっています。 - template_*.jpg
テンプレートとした画像です。
ファイル名は「template_<検査実施日>_<検査時間>.jpg」となっています。 - try_*_OK_*.jpg
OKと判定したミサンガを切り出した画像です。
ファイル名は「try_<検査回数><ミサンガの位置>_OK<検査実施日>_<検査時間>.jpg」となっています。 - try_*_NG_*.jpg
NGと判定したミサンガを切り出した画像です。
ファイル名は「try_<検査回数><ミサンガの位置>_NG<検査実施日>_<検査時間>.jpg」となっています。
- keypoint_*.jpg
- エビデンス内のjpegファイルの見方
- 005_案件 > 【メカチーム案件】画像判定システムの開発 > 報告 > 20251016_特徴点_crossCheck_True > 応用.zip
- Git
本チケットのソースコードは、単体で実施したソースコードとブランチを分けました。
ブランチ名は「side_by_side」です。Giteaにはpush済みです。
- 備考
正解率が60%以上になっていますが「ステータス」や「進捗」を完了としていないのは、パラメータを設定ファイルに出していないためです。
ソースコードを整理し動作確認後、「ステータス」と「進捗」を完了とします。
安間 一臣 さんが2ヶ月前に更新
本チケットで試験を行った内容と使用したソースコードを改めて書き出しておきます。
- 試験内容
- カメラ
- 被写体との距離: 305mm
理由: 使用したWebカメラのフォーカス範囲が300mm~というところから。 - カメラ移動: なし
- 被写体との距離: 305mm
- 被写体
- 対象の被写体: 黒地に白の文字が印刷されたミサンガ
- 状態: ミサンガがなるべくテンプレートと同じように歪みなく真っ直ぐにカメラと水平になるように4個縦に並べて配置
対象のミサンガに歪みがあると不合格になるため、ミサンガの歪みは極力ないように配慮した。
- 特徴点検出方法
- アルゴリズム: ORB
- マッチャー: BFマッチャー(normType=NORM_HAMMING, crossCheck=True)
- ソースコード
- 特徴点モジュール: misanga/src/RaspiTemplateImage/FeaturePoint.py
- 実行用ソースコード: ContinuousShooting.py
- 実行方法:
$ ./ContinuousShooting.py
- その他設定
- 設定JSONファイル: feature_point_config.json
{ "matchBorderline": 30, "ransacReprojThreshold": 5.0, "hammingThreshold": 30, "closestDistance": 2, "inlierThreshold": 20, "crossCheckPassFailThreshold": 0.48, "clahe": { "clipLimit": 4.2, "tileGridSizeX": 8, "tileGridSizeY": 8 } }
- 設定JSONファイル: feature_point_config.json
- カメラ
操作