天天看点

【图像计数】基于计算机视觉实现蚊香片计数含Matlab源码

 1 简介

基于计算机视觉实现蚊香片计数

2 部分代码

clc;%清除命令窗口中的内容
close all;%关闭所有的figure窗口
clear all;%清楚工作空间所有的变量、函数等
I=imread ('C:\Users\lenovo\Desktop\新建文件夹\1.png');%读取蚊香图片
subplot(331);%设置图片显示样式,三行三列,显示位置为第一张
imshow (I) ;%显示原图
title('原图');%命名为“原图”
I = imnoise(I,'speckle',0.8);%加入斑点噪声,模拟现实噪音干扰情况
subplot(332);%显示位置为第二张
imshow(I);%显示加噪后的图片
title('加噪');%命名为“加噪”
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);%将加噪后的彩色图片的R,G,B三分量数据分别存储到矩阵R,G,B中
R= wiener2(R,[15,15]);%对R分量矩阵进行维纳滤波
G= wiener2(G,[10,10]);%对G分量矩阵进行维纳滤波
B= wiener2(B,[5,5]);%对B分量矩阵进行维纳滤波
I(:,:,1)=R;
I(:,:,2)=G;
I(:,:,3)=B;%将滤波后的R,G,B分量再还原给图片,I为滤波处理后的彩色图片
subplot(333);%显示位置为第三个
imshow(I);%显示滤波后的图片
title('维纳滤波后');%命名为“维纳滤波后”
title('膨胀去噪声(边界)');%命名为“膨胀去噪声(边界)”
I3=imerode(I2,SE);%使用imrode函数进行腐蚀操作,第一个参数是二值图像,第二个参数是掩膜,腐蚀操作是对白色部分,这一步填充了蚊香中的空隙
subplot(337);%显示位置为第7个
imshow(I3);%显示腐蚀后的图像
title('腐蚀填充空隙');
SE1=[1 1 1 1;1 1 1 1;1 1 1 1;1 1 1 1];%定义mask,为4x4矩阵
I4=imdilate(I3,SE1);%此时进行腐蚀操作,是为了消除蚊香片之间的连接部分,使其独立出来
I4=~I4;%取反,为了使用bwlabel函数进行计数
subplot(338);
imshow(I4);
title('取反');
[L,amount]=bwlabel(I4,8);%bwlabel对二值化中的白色区域进行计数
fprintf('该图片共有%d个电蚊香!',amount);      

3 仿真结果

【图像计数】基于计算机视觉实现蚊香片计数含Matlab源码

【图像计数】基于计算机视觉实现蚊香片计数含Matlab源码

4 参考文献

[1]侯一民, 孟微, 孙小丽,等. 基于计算机视觉的实时目标计数系统[J]. 计算机应用, 2010(12):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

继续阅读