主要内容

둥근객체식별하기

이예제에서는경계선추적루틴bwboundaries를사용하여원형률을기준으로객체를분류하는방법을보여줍니다。

1단계:단계상읽어들이기

pills_etc.png를읽어들입니다。

RGB = imread(“pillsetc.png”);imshow (RGB)

图中包含一个轴对象。axis对象包含一个image类型的对象。

2단계:단계상이진화하기

bwboundaries를사용한경계선추적을준비하기위해상을흑백으로변환합니다。

I = rgb2gray(RGB);bw = imbinalize (I);imshow (bw)

图中包含一个轴对象。axis对象包含一个image类型的对象。

3단계:잡음제거하기

모폴로지함수를사용하여,원하는객체에속하지않는픽셀을제거합니다。

픽셀수가30개미만모든객체를제거합니다。

Bw = bwareaopen(Bw,30);imshow (bw)

图中包含一个轴对象。axis对象包含一个image类型的对象。

펜뚜껑의간격을채웁니다。

Se = strel(“磁盘”2);Bw = imclose(Bw,se);imshow (bw)

图中包含一个轴对象。axis对象包含一个image类型的对象。

각경계로둘러싸外公外公역을추정하는데regionprops를사용할수있도록모든구멍을채웁니다。

Bw =填充(Bw,“黑洞”);imshow (bw)

图中包含一个轴对象。axis对象包含一个image类型的对象。

4단계:경계선찾기

외부경계선에만초점을둡니다。“noholes”옵션을지정하면bwboundaries가내부윤곽선을찾는것을방지하기때문에처리속도가빨라집니다。

[B,L] = bwboundaries(bw,“noholes”);

레이블행렬을@ @시하고각경계를그립니다。

imshow (label2rgb (L, @jet,。5 .5 .5])等一下k = 1:长度(B)边界= B{k};情节(边界(:,2),边界(:1),' w '“线宽”,2)结束

图中包含一个轴对象。axis对象包含7个image、line类型的对象。

5단계:둥근객체확rm하기

각객체의면적과둘레를측정합니다。그러한결과를기반으로,객체의원형률을나타내는단순한메트릭을만듭니다。

度规 4 π 区域 周长 2

이메트릭은원에대해서만1이고,다른모든형태에대해서는1보다작습니다。이러한구분과정은적합한임계값을설정하여조정할수있습니다。이예제에서는알약만원형으로분류하기위해임계값0.94를사용합니다。

regionprops를사용하여,모든객체의면적추정값을얻습니다。bwboundaries에서반환된레이블행렬은regionprops에서다시사용할수있습니다。

stats = regionprops(L,“区域”“重心”);阈值= 0.94;越界k = 1:长度(B)%获取标签“k”对应的(X,Y)边界坐标boundary = B{k};计算出物体周长的简单估计。Delta_sq = diff(边界).^2;周长= sum(√(sum(delta_sq,2)));获得标签‘k’对应的面积计算area = stats(k).Area;计算圆度度量度量= 4*pi*面积/周长^2;%显示结果字符串= sprintf(' % 2.2 f '、指标);%用黑圈标记高于阈值的对象如果度量>阈值centroid = stats(k).Centroid;情节(质心(1),重心(2),“柯”);结束文本(-35年边界(1、2),边界(1,1)+ 13日metric_string,“颜色”“y”...“字形大小”14岁的“FontWeight”“大胆”结束标题([“接近1的指标表明”...“物体近似圆”])

图中包含一个轴对象。标题Metrics趋近于1的坐标轴对象表示对象近似圆形,包含图像、直线、文本类型的15个对象。

참고 항목

|||||||

관련 항목