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

Posted qq_48711406

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab图像处理之检测成熟番茄个数检测相关的知识,希望对你有一定的参考价值。

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

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

1.jpg

matlab代码实现

  1. 读取图片

close all;

clear all;

clc;

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

imshow(image_1) %% 显示图片

  1. 将图片转为灰度图并调整灰度最佳范围

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

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

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

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

  1. 对灰度图进行高斯滤波处理去除噪声

image = double(image)/256;

[m,n] = size(image);

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

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

imshow(int8(256*Ft));

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

  1. 将高斯滤波后的灰度图转换为二值图

level=graythresh(Ft);

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

imshow(BW)

  1. 对二值图进行开操作,消除噪声

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

Ib=imopen(BW,se);

imshow(Ib)

  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)

BW4

7.检测番茄的总数目

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

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

运行结果:

numfanqie =

2

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

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

以上是关于matlab图像处理之检测成熟番茄个数检测的主要内容,如果未能解决你的问题,请参考以下文章

matlab图像如何用代码完成图像的分割、边缘检测和拼接的任务?

Matlab边缘检测问题

车辆计数基于matlab光流法行驶车辆检测计数含Matlab源码 627期

基于MATLAB的Sobel边缘检测算法实现

边缘检测算子和小波变换提取图像边缘matlab

时钟识别基于matlab GUI Hough变换指针式时钟识别含Matlab源码 2085期