MATLAB Answers

小さな穴の検知

2 views (last 30 days)
直径2ミリ程度の、複数の穴が空いている、長方形の黒い板があります。
下に白い紙などを敷き、穴の数を検知するプログラムを作成したいと考えております。
直径が小さいため、半径を指定する関数、では検知できませんでした。
どのような関数を使うと検知することができるか教えていただけますと助かります。
よろしくお願いします。

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 14 Jun 2021
背景が黒で、見つけたい穴は白色に見えるということになると思うので、シンプルに2値化して、検出できた領域の数を数えるという方法をまずはお試しください。
2値化は
img = imread('test.png'); % 画像データの読込
img = rgb2gray(img); % グレースケール画像に変換
bw = img > 10; % 2値化
のような演算でもできますし、imbinarize関数も効くかもしれません。
しきい値が不適切だと誤検出や穴が隠れちゃったりすると思うので、そのあたりの調整は必要だと思います。できたbwが穴の位置が白、その他が黒になっていれば
lbl = bwlabel(bw); % 2値画像をラベル画像に変換(白い領域それぞれに1から番号がつく)
num = max(lbl(:)) % 最大のラベル番号 = トータルの穴の数
で穴の数を出力できます。
  2 Comments
Shunichi Kusano
Shunichi Kusano on 14 Jun 2021
よかったです。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!