이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。
이예제에서는경계선추적루틴인bwboundaries
를사용하여원형률을기준으로객체를분류하는방법을보여줍니다。
pills_etc.png
를읽어들입니다。
RGB = imread (“pillsetc.png”);imshow (RGB)
bwboundaries
를사용한경계선추적을준비하기위해영상을흑백으로변환합니다。
I = rgb2gray (RGB);bw = imbinarize(我);imshow (bw)
모폴로지함수를사용하여,원하는객체에속하지않는픽셀을제거합니다。
30개픽셀수가미만인모든객체를제거합니다。
bw = bwareaopen (bw, 30);imshow (bw)
펜뚜껑의간격을채웁니다。
se = strel (“磁盘”2);bw = imclose (bw, se);imshow (bw)
각경계로둘러싸인영역을추정하는데regionprops를사용할수있도록모든구멍을채웁니다。
bw = imfill (bw,“黑洞”);imshow (bw)
외부경계선에만초점을둡니다。옵션‘noholes를사용하면,bwboundaries
가내부윤곽선을찾는것을방지하기때문에처리속도가빨라집니다。
[B, L] = bwboundaries (bw,“noholes”);
레이블행렬을표시하고각경계를그립니다。
imshow (label2rgb (L, @jet,。5.5]))保持在为k = 1:长度(B)边界= B{k};情节(边界(:,2),边界(:1),' w ',“线宽”, 2)结束
각객체의면적과둘레를측정합니다。그러한결과를기반으로,객체의원형률을나타내는단순한메트릭을만듭니다。
이메트릭은원에대해서만1이고,다른모든형태에대해서는1보다작습니다。이러한구분과정은적합한임계값을설정하여조정할수있습니다。이예제에서는알약만원형으로분류하기위해임계값0.94를사용합니다。
regionprops
를사용하여,모든객체의면적추정값을얻습니다。bwboundaries
에서반환된레이블행렬은regionprops
에서다시사용할수있습니다。
统计= regionprops (L,“区域”,“重心”);阈值= 0.94;在边界上循环%为k = 1:长度(B)获得标签“k”对应的(X,Y)边界坐标边界= B {k};计算一个物体周长的简单估计delta_sq = diff(边界)^ 2;周长=总和(sqrt (sum (delta_sq, 2)));%获得标签‘k’对应的面积计算面积= (k) .Area统计数据;%计算圆度度量度量= 4 *π*面积/周长^ 2;%显示结果metric_string = sprintf (' % 2.2 f '、指标);%用黑色圆圈标记阈值以上的对象如果度量>阈值质心= stats(k).质心;情节(质心(1),重心(2),“柯”);结束文本(-35年边界(1、2),边界(1,1)+ 13日metric_string,“颜色”,“y”,...“字形大小”14岁的“FontWeight”,“大胆”)结束标题([“接近1的指标表明”,..."物体近似为圆形"])
bwboundaries
|imbinarize
|bwareaopen
|imclose
|strel
|imfill
|label2rgb
|regionprops