1. 程式人生 > >影象處理-統計米粒

影象處理-統計米粒

練習:對一幅圖片進行操作,消除亮度不一的背景,並使用閾值分割將修改後的影象轉換為二值影象,使用成員標記返回影象中目標物件的個數以及統計特性。
原影象為:
這裡寫圖片描述

程式如下所示:

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