matlab 特征检测,苹果的特征检测与matlab实现-read.doc

news/2024/11/17 23:58:55/

苹果的特征检测与matlab实现-read

苹果的特征检测与MATLAB实现

摘 要 ?本文选取了可用于苹果分级的部分特征,并在Matlab上进行试验检测。该方法可以对苹果的外部缺陷、果梗、尺寸和形状进行全面的检测,在此基础上可对苹果进行高速和精确的分级。

关键词? 分级 ;? 缺陷 ;? 果梗

?

0 引言

近年来,国外在利用计算机视觉技术进行水果品质检测方面做了大量研究,并获得了许多重要成果;在我国也有许多研究报导,但到目前为止都处于试验阶段,而且分析方法距实际应用还有一段距离。特别是在缺陷检测方面,目前采用的方法处理速度很慢,在实际在线工作时无法使用。国外学者(ChengX等)在识别缺陷时获得成功,但需要同时使用近红外和中红外摄像设备,这2种设备造价之昂贵,使得该方法的应用受到限制,无法在农业分级设备中广泛应用。因此,研究适合于生产的分级检测方法有重要意义。

1大小检测

对于苹果大小的检测,主要依靠求出的苹果面积作为判别依据。本课题所采用的苹果图片都只是单个苹果的图片。首先对图片进行灰度处理,使用的MATLAB函数是rgb2gray;其次使用函数im2bw把灰度图转换为二值图,阈值则取0.9,从而使苹果区域为黑色,其余区域为白色;然后对二值图取反,使黑白颜色区域颠倒,这时的苹果区域为白色;最后利用函数bwarea可以计算白色区域的像素点的个数total。利用total与整幅图片的像素值(x*y)之比,再与图片的面积相乘,便可得出苹果相对图片的面积.利用这个面积我们可以进行筛选.

I=imread('图片名.jpg');

I2=rgb2gray(I);

BW=im2bw(I2,0.9);

total=bwarea(~BW)

figure,subplot(1,3,1),imshow(I);

subplot(1,3,2),imshow(I2);

subplot(1,3,3),imshow(BW);

如图1所示:

?

?a原始图片?????? b灰度图片?????? c二值图片

图1 求苹果面积过程中的图像变换

2缺陷检测

对于苹果表面的缺陷(如疤瘌、黑斑等),本课题采用特征提取,即提取出坏损部位的轮廓,再进行填充求其面积,以其面积在图片中的比例作为判别依据。首先,对采集的原始图片(即彩色图片)进行灰度变换;接着用函数imadjust来调整灰度;对灰度图片进行一次中值滤波后,再对图片进行边缘检测;这时坏损的轮廓已经出现,但还有一些噪声存在,为滤掉噪声,要先对坏损的轮廓填充,采用BWfill=imfill(BW,'holes')语句,使缺陷部位的像素点为白色;其次是经过滤波,把噪声滤掉求缺陷的像素个数a,与图片总的像素个数(x*y)的比b就是我们判断的依据,本程序设b=0。

I=imread('图片名.jpg');

I2=rgb2gray(I);

J=imadjust(I2,[0.1 0.3],[]);

B=medfilt2(J);

BW=edge(B,'sobel',0.1);

BWfill=imfill(BW,'holes');

BWfilt=medfilt2(BWfill);

BWfilt2=medfilt2(BWfilt);

BWfilt3=medfilt2(BWfilt2);

BWfilt4=medfilt2(BWfilt3);

BWfilt5=medfilt2(BWfilt4);

figure,subplot(1,3,1),imshow(I);

subplot(1,3,2),imshow(I2);

subplot(1,3,3),imshow(J);

figure,subplot(1,3,1),imshow(BW);

subplot(1,3,2),imshow(BWfill);

subplot(1,3,3),imshow(BWfilt5);

a=bwarea(BWfilt5);

[x,y]=size(I);

b=a/(x*y);

if (b>0)

??? fprintf('有缺陷');

else

??? fprintf('无缺陷');

end?

?a原始图片???? b灰度图片??? c灰度变换

d边缘检测?????? e轮廓填充????? f滤波

?? 图2检测苹果表面坏损过程中的图像变换??????

3果梗检测

对苹果梗的检测,主要是通过对苹果的轮廓线矩阵求差分实现的。利用图像处理技术对苹果的彩色图片进行灰度转换,经滤波后再边缘检测,提取出苹果的轮廓线,利用imcontour函数可以得出轮廓线的矩阵,再用diff函数对矩阵进行差分,把这些差分值累加,于是得到一个sum值。这个值就是我们判断果梗有无的依据。当有果梗时sum会在0到-5.0000e5(估测值)之间,而无果梗的sum值是正值,本程序大概定于8000以上。

I=imread('图片名.jpg'


http://www.ppmy.cn/news/402936.html

相关文章

for循环打印爱心

1.代码 #include<stdio.h> #include"Windows.h" int main() {int i,j,k,n,m,a,b;for(i1;i<3;i) {if(i1){printf(" "); printf("*****");printf(" ");printf("*****"); }e…

Android商城开发--实现商城底部导航栏

让我们先看效果图&#xff1a; 图一是默认效果图&#xff0c;图二是点击首页的效果图&#xff08;图标和字体颜色会变化&#xff09; 接下来是实现方法 1、先写布局。 我新建了一个ShoppingActivity&#xff0c;在activity_shopping.xml文件中&#xff0c;写整体布局&#x…

Servlet 学习笔记3

一、HttpServletRequest类 a&#xff09;HttpServletRequest类的作用 每次只要有请求进入Tomcat服务器&#xff0c;Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中&#xff0c;然后传递到service&#xff0c;doGet&#xff0c;doPost方法中。我们可以通…

那些年吃过的点心

豆沙粑粑和椒盐饼东西算是小时候比较著名和难忘的点心了&#xff0c;比较出名的绿豆糕反而没有什么好感。 豆沙粑粑就是死面皮包豆沙打扁了&#xff0c;类似于昆明的官渡粑粑&#xff0c;不过馅是豆沙而已&#xff0c;微甜&#xff1b; 豆沙粑粑.jpg 椒盐饼就像一个压扁了花卷&…

pkg_resources.DistributionNotFound: The ‘tzlocal>=1.2‘ distribution was not found and is required by

PyInstaller打包APscheduler出现&#xff1a;pkg_resources.DistributionNotFound: The xxx>yyy distribution was not found and is required by the application 1.软件环境⚙️2.问题描述&#x1f50d;3.解决方法&#x1f421;3.1.添加APScheduler依赖项的元数据 4.结果预…

java和嵌入式,哪个好?

一、薪资方面 必须承认&#xff01;嵌入式是无法和Java比的&#xff0c;至少目前来看如此&#xff0c;我有位嵌入式的朋友&#xff0c;干了2年了&#xff0c;薪资才到14K&#xff0c;但是你看看Java&#xff0c;两年工作经验&#xff0c;18k的满街跑&#xff01; 这其实是因为&…

Tensorflow 2.3 model.evaluate报错InvalidArgumentError: Incompatible shapes: [1,64] vs. [1,128]

Tensorflow 2.3使用model.evaluate进行模型评估时报错tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [1,64] vs. [1,128] 1.软件环境⚙️2.问题描述&#x1f50d;3.解决方法&#x1f421;4.结果预览&#x1f914; ⚡插播一条老家自产的…

完美国际真数苹果_端阳果园|云南昭通冰糖心丑苹果

有一种丑苹果在云南昭通受到很多人的青睐&#xff0c;为啥丑还有那么多人喜欢呢&#xff1f;这就要从云南昭通丑苹果的生长环境以及生产过程有很大关系。 昭通丑苹果的生长环境 昭通&#xff0c;地处长江上游生态屏障之地&#xff0c;气候、降水、光照都极为适合苹果生长&#…