模式识别实例-药丸颗粒数量识别

摘抄自《精通MATLAB混合编程》

clear;
close all;
I = imread('F:\matlab_zone\pill.jpg') ;
figure,imshow(I);
i = rgb2gray(I) ;
figure,imshow(i);
figure,imhist(i);title('直方图');
F0 = imadjust(i,stretchlim(i),[0 1]);
%imadjust在数字图像处理中用于进行图像的灰度变换(调节灰度图像的亮度或彩色图像的颜色矩阵)。
%J = imadjust(I,[low_in; high_in],[low_out; high_out])
% stretchlim(i)返回两个值的数组,指定归一化后的最大和最小灰度值
Ft = medfilt2(F0,[5 5]);
figure,imshow(Ft);
figure,imhist(Ft);title('直方图');
level = graythresh(Ft);%graythresh函数。该函数使用最大类间方差法得到一个阈值,
BW = im2bw(Ft,level);%也可以在workspace上面查看level的值,然后实验调整level
imshow(BW);
BW1 = edge(BW,'sobel',0.3);
imshow(BW1);
%%%%%%%%%%%%%%%膨胀填充闭合缺口%%%%%%%%%%%%%
se90 = strel ('line',7,90);
se0 = strel('line',7,0);
BW2 = imdilate(BW1,[se90,se0]);
figure,imshow(BW2);
BW3 = imfill(BW2,'holes');
figure,imshow(BW3);
%%%%%%%%%%%%删去边缘不完整的图形,即移除和边界相连通的目标%%%%%%%%%5
BW4 = imclearborder (BW3,4);
figure,imshow(BW4);
%%%%%%%%%%%%%%统计计数函数计算药丸个数%%%%%
[ labeled numpills] = bwlabel(BW4,4);
%%numpills返回连通域的个数%%

numpills
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值