影象處理-統計米粒
阿新 • • 發佈:2019-01-09
練習:對一幅圖片進行操作,消除亮度不一的背景,並使用閾值分割將修改後的影象轉換為二值影象,使用成員標記返回影象中目標物件的個數以及統計特性。
原影象為:
程式如下所示:
clear;
close all;
i=imread('rice.jpg');
subplot(221);
imshow(i);
stru=strel('disk',16);%建立一個半徑為16畫素的圓盤形結構
back=imopen(i,stru);%開操作
i2=imsubtract(i,back);%將back從原始影象中減去,得到背景一致的影象
subplot(222);
imshow(i2);
threshold=graythresh(i2);%得到影象的全域性閾值
bw=im2bw(i2,threshold);%將灰度影象轉換為二值影象
subplot(223);
imshow(bw);
[labeled number_object]=bwlabel(bw,8);%bwlabel識別二值影象中所有的相關成分
number_object=80;
graindata=regionprops(labeled,'basic');%regionprops獲取影象中目標物件屬性,並將屬性儲存到一個結構體陣列中
allgrain=[graindata.Area];
max(allgrain) %最大米粒的大小。
mean(allgrain) %米粒的平均大小。
執行結果:
若不使用數學形態學濾波 ,直接取閾值二值化,會造成米粒大小不完整,統計結果不準確。
ans =
735
ans =
235.2716