基于MATLAB的谷物计数(课程项目)
立即下载
资源介绍:
谷物计数算法是指一种用于估算一定量的谷物数量的算法。这种算法常用于农业和食品行业,以估算农田产量或货物库存等。
谷物计数算法的基本原理是通过随机抽样来估算整个批次的谷物数量。具体步骤如下:
1. 随机选择一小部分谷物样本,样本数量通常是整个批次数量的一小部分。
2. 对样本进行数数,得到样本中的谷物数量,并记录下来。
3. 根据样本中的谷物数量和样本抽样比例的关系,可以推算出整个批次的谷物数量。例如,如果样本数量是整个批次数量的1%,而样本中有1000颗谷物,那么整个批次的谷物数量就可能是1000 * 100 = 100,000颗。
4. 根据需要,可以对推算出来的谷物数量进行修正。修正的方法包括根据实际情况调整样本抽样比例、重复进行抽样计算等。
需要注意的是,谷物计数算法是一种估算方法,其结果并不是精确的。因此,在实际应用中,需要根据具体情况进行合理的修正和调整,以提高估算结果的准确性。
clc
img=imread('1.jpg');
figure(1)
imshow(img);
title('原图');
gray_img=rgb2gray(img);%灰度
figure(2)
imshow(gray_img);
title('灰度图');
mainfc;
gray_img=imnoise(gray_img,'gaussian',0.04);
figure(3)
imshow(gray_img);
title('加入高斯噪声');
f=gray_img;
f2=double(f);
[row,col]=size(f);
f3=zeros([row,col]);
for x=2:(row-1);
for y=2:(col-1);
f3(x,y)=median([f2(x-1,y-1),f2(x,y-1),f2(x+1,y-1),f2(x-1,y),f2(x,y),f2(x+1,y),f2(x-1,y+1),f2(x,y+1),f2(x+1,y+1)]);
end
end
figure(4)
gray_img=f3;
imshow(gray_img/255);
title('去噪');
bw_img=gray_img<200;
figure(5),imshow(bw_img);%阈值
bw_img=~bw_img;
figure(6),imshow(bw_img);%反色
img2=bw_img;
se=strel('disk',5); %生成圆形结构元素
img2=imdilate(img2,se); %用生成的结构元素对图像进行膨胀
figure(7)
imshow(img2);
title('膨胀');
se=strel('disk',1);
img2=imclose(img2,se);
figure(8);imshow(img2);title('闭运算')
img2=imfill(img2,'holes');
img2=img2;
figure(9);imshow(img2);
title('空洞填充')
%%%定位计数
%计算连通域
img3=img2;
%%
[row,col] = size(img3);
count = 0;
ricearr = zeros(row*col,1);
visited = zeros(size(img3));%
% 调用计算连通域函数进行数米粒和计算米粒的面积
for i = 1:row
for j = 1:col
if img3(i,j)&&visited(i,j) == 0
count = count +1;
pt = [i; j];
[c ,domain] =finddomain(img3, pt);
ricearr(count) = c;
ricearr(1:count);
for m = 1:c
visited(domain(1,m), domain(2, m)) = 1;
end
end
end
end
disp('个数为');
disp(count);