matlab图像处理之检测成熟番茄个数检测

任务目标:检测图像中番茄的总个数,成熟,不成熟的个数

评分原则:番茄总个数,成熟,不成熟的个数的精度越高,课程评分越高

matlab图像处理之检测成熟番茄个数检测_第1张图片

1.jpg

matlab代码实现

  1. 读取图片

close all;

clear all;

clc;

image_1=imread('1.jpg');%%图片需要在matlab路径下

imshow(image_1) %% 显示图片

matlab图像处理之检测成熟番茄个数检测_第2张图片
  1. 将图片转为灰度图并调整灰度最佳范围

image = rgb2gray(image_1);%把图片转成灰度图

M=stretchlim(image); %获取最佳区间

image=imadjust(image,M,[]); %调整灰度范围

imshow(image);title('原始图像');

matlab图像处理之检测成熟番茄个数检测_第3张图片
  1. 对灰度图进行高斯滤波处理去除噪声

image = double(image)/256;

[m,n] = size(image);

w = fspecial('gaussian');%进行高斯滤波把图片处理

Ft = imfilter(image,w,'replicate');

imshow(int8(256*Ft));

title('高斯滤波后的图像')

matlab图像处理之检测成熟番茄个数检测_第4张图片
  1. 将高斯滤波后的灰度图转换为二值图

level=graythresh(Ft);

BW=im2bw(Ft,level);%转换二值图

imshow(BW)

matlab图像处理之检测成熟番茄个数检测_第5张图片
  1. 对二值图进行开操作,消除噪声

se=strel('disk',85);%对二值图进行开操作,消除噪声

Ib=imopen(BW,se);

imshow(Ib)

matlab图像处理之检测成熟番茄个数检测_第6张图片
  1. 对图片进行边缘检测和小孔填充

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)

matlab图像处理之检测成熟番茄个数检测_第7张图片

BW4

7.检测番茄的总数目

[labeled,numfanqie]=bwlabel(BW4,4) %检测番茄的总数目

B = bwboundaries(BW4,'noholes');%%提取区域轮廓

运行结果:

numfanqie =

2

这是一次课程的作业,后期的成熟,番茄的检测还在做的当中,做完了及时发布文章

如果喜欢的话,可以点个赞,欢迎大家指正批评,互相交流,互相进步

你可能感兴趣的:(图像处理,均值算法,matlab,python,计算机视觉)