任务目标:检测图像中番茄的总个数,成熟,不成熟的个数
评分原则:番茄总个数,成熟,不成熟的个数的精度越高,课程评分越高
![](https://i-blog.csdnimg.cn/blog_migrate/895846975e5a7df315547b9207fbba63.png)
1.jpg
matlab代码实现
读取图片
close all;
clear all;
clc;
image_1=imread('1.jpg');%%图片需要在matlab路径下
imshow(image_1) %% 显示图片
![](https://i-blog.csdnimg.cn/blog_migrate/895846975e5a7df315547b9207fbba63.png)
将图片转为灰度图并调整灰度最佳范围
image = rgb2gray(image_1);%把图片转成灰度图
M=stretchlim(image); %获取最佳区间
image=imadjust(image,M,[]); %调整灰度范围
imshow(image);title('原始图像');
![](https://i-blog.csdnimg.cn/blog_migrate/4776583716aba10d1e257940a7615729.jpeg)
对灰度图进行高斯滤波处理去除噪声
image = double(image)/256;
[m,n] = size(image);
w = fspecial('gaussian');%进行高斯滤波把图片处理
Ft = imfilter(image,w,'replicate');
imshow(int8(256*Ft));
title('高斯滤波后的图像')
![](https://i-blog.csdnimg.cn/blog_migrate/253e9325c2e4026f2ab0424692e83aa7.jpeg)
将高斯滤波后的灰度图转换为二值图
level=graythresh(Ft);
BW=im2bw(Ft,level);%转换二值图
imshow(BW)
![](https://i-blog.csdnimg.cn/blog_migrate/53d4aeccfa0e2469fe2980802eb3396c.jpeg)
对二值图进行开操作,消除噪声
se=strel('disk',85);%对二值图进行开操作,消除噪声
Ib=imopen(BW,se);
imshow(Ib)
![](https://i-blog.csdnimg.cn/blog_migrate/4dc3fdd126f593dfc04324745786a309.jpeg)
对图片进行边缘检测和小孔填充
BW1=edge(Ib,'sobel',0.25);%边缘检测
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);
BW4=imclearborder(BW3,4);%去除小孔
figure,imshow(BW4)
![](https://i-blog.csdnimg.cn/blog_migrate/b3b802411e7d7474d37ae9cc68261cf5.jpeg)
BW4
7.检测番茄的总数目
[labeled,numfanqie]=bwlabel(BW4,4) %检测番茄的总数目
B = bwboundaries(BW4,'noholes');%%提取区域轮廓
运行结果:
numfanqie =
2
这是一次课程的作业,后期的成熟,番茄的检测还在做的当中,做完了及时发布文章
如果喜欢的话,可以点个赞,欢迎大家指正批评,互相交流,互相进步