matlab图像处理之检测成熟番茄个数检测
Posted qq_48711406
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab图像处理之检测成熟番茄个数检测相关的知识,希望对你有一定的参考价值。
任务目标:检测图像中番茄的总个数,成熟,不成熟的个数
评分原则:番茄总个数,成熟,不成熟的个数的精度越高,课程评分越高
1.jpg
matlab代码实现
读取图片
close all;
clear all;
clc;
image_1=imread('1.jpg');%%图片需要在matlab路径下
imshow(image_1) %% 显示图片
将图片转为灰度图并调整灰度最佳范围
image = rgb2gray(image_1);%把图片转成灰度图
M=stretchlim(image); %获取最佳区间
image=imadjust(image,M,[]); %调整灰度范围
imshow(image);title('原始图像');
对灰度图进行高斯滤波处理去除噪声
image = double(image)/256;
[m,n] = size(image);
w = fspecial('gaussian');%进行高斯滤波把图片处理
Ft = imfilter(image,w,'replicate');
imshow(int8(256*Ft));
title('高斯滤波后的图像')
将高斯滤波后的灰度图转换为二值图
level=graythresh(Ft);
BW=im2bw(Ft,level);%转换二值图
imshow(BW)
对二值图进行开操作,消除噪声
se=strel('disk',85);%对二值图进行开操作,消除噪声
Ib=imopen(BW,se);
imshow(Ib)
对图片进行边缘检测和小孔填充
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图像如何用代码完成图像的分割、边缘检测和拼接的任务?