連載
モデルベースデザイン手法を使ったProgrammable SoCの協調設計【実践編I】:レファレンスモデルからFPGA用サブシステムの作成まで(2/7 ページ)
「モデルベースデザイン手法を使ったProgrammable SoCの協調設計」とはどのようなものか、実践を交えて解説していく本連載。前回の準備編に続き、今回からは実際にMATLAB/Simulinkを用いたモデルベースデザイン手法により実装を行います。
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.