メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

画像内の円形オブジェクトの検出と測定

この例では、Web サイトから画像を読み取り、ThingSpeak ™ と Image Processing Toolbox ™ を使用して画像内の円形オブジェクトの数をカウントする方法を示します。計算された値は ThingSpeakチャネルに保存されます。

URLから画像を読み取る

webread を使用して、パブリック URL から画像をインポートします。画像ファイルには大量のデータが含まれているため、コインを数えるには画像データのサブセットのみが必要です。処理時間を短くするために、画像のサイズを変更できます。imresize を使用して、画像を元のサイズの 30% にカットします。

rgb = webread('https://www.publicdomainpictures.net/pictures/40000/velka/british-coins.jpg');
rgb = imresize(rgb, 0.3);
imshow(rgb)

感度設定を調整して円を数える

検出すべき円が複数あることに加え、画像には背景に対してコントラストが異なるさまざまな色のコインが含まれています。真鍮色のコインはこの背景に対して強いコントラストを成しています。銀貨の色は背景の色にかなり近いです。imfindcircles を使用してコインを数えます。

1.デフォルトでは、imfindcircles は背景よりも明るい円形のオブジェクトを検出します。目の下のクマを検索するには、パラメーター'ObjectPolarity''dark' に設定します。

2.関数 imfindcircles には、円形のオブジェクトを検出する際に内部しきい値を制御するために使用できるパラメーター'Sensitivity' があります。'Sensitivity''を0.92に設定します。

3.この画像に対して検索半径[80 130]ピクセルでimfindcirclesを呼び出します。中心ベクトルの長さは、見つかった円の数に等しくなります。

[centers, radii] = imfindcircles(rgb,[80 130],'ObjectPolarity','dark','Sensitivity',0.92);

numCircles = length(centers)
numCircles =

     5

結果をThingSpeakチャネルに保存する

この例と ThingSpeakチャネルを使用して、動画像の内容を保存および追跡できます。チャネルIDで指定されたThingSpeakチャネルに円の数を書き込みます。channelID を自分のチャネルID に変更し、writeAPIKey を使用して自分のチャネルの書き込み API キーを指定します。

channelID=17504;
writeAPIKey='23ZLGOBBU9TWHG2H';
thingSpeakWrite(channelID, numCircles, 'Writekey', writeAPIKey);

参考

(MATLAB) | (MATLAB) | (Image Processing Toolbox)

トピック