メディア

モデルベースデザイン手法を使ったProgrammable SoCの協調設計【実践編I】レファレンスモデルからFPGA用サブシステムの作成まで(2/7 ページ)

» 2017年04月28日 11時30分 公開

MATLABでコンポーネントの機能検討

 まずは、MATLABでコンポーネントの機能検討をしてみましょう。最初にサンプル画像を読み込んで表示します。

>> I = imread('PenBall.jpg');
>> imshow(I)

 次に緑色のオブジェクトを抽出します。RGB成分を演算するときは、元のuint8型ですと、オーバーフローが生じる恐れがあるので、double型に変換してから演算しています。

>> IR = double(I(:,:,1));  %R成分
>> IG = double(I(:,:,2));  %G成分
>> IB = double(I(:,:,3));  %B成分
>> Ig = uint8(IG-0.5*(IR+IB));
>> figure,imshow(Ig)

 閾(しきい)値(プログラムでは26)で2値化します。閾値は何度か実行してボール全体が抽出できるよう調整します。

>> Ith = Ig > 26;
>> figure, imshow(Ith)

 検出したいボール以外に、左側にノイズによる白い点がいくつか見えるので、モルフォロジー処理でノイズを除去します。

>> se = strel('disk',5)
>> Im = imopen(Ith, se);
>> figure, imshow(Im)

 重心点を求めて座標値を元画像に表示します。

>> Ct = regionprops(Im, 'Centroid')
>> xy = Ct.Centroid;
>> hold on
>> text(xy(1),xy(2),'*', 'FontSize',14);
>> text(xy(1)-100,xy(2)+40,...
    [num2str(xy(1)) ', ' num2str(xy(2))],...
    'FontSize',14);
(クリックで拡大)

 おおよそこのような処理でオブジェクトの重心点が求められることが分かりました。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.