基于MATLAB的苹果外观特征检测

基于MATLAB的苹果外观特征检测


摘 要 本文根据苹果分级判定标准中的两个评定指标:果径和果面缺陷,探讨如何利用MATLAB技术进行苹果外观的特征检测,从而提高苹果品质检测的工作效率。

关键词 MATLAB;苹果分级;果径;果面缺陷


0 引言

近年来,随着人们生活水平的提高,对于水果的品质要求也不断提高,实行水果分级销售成为当前市场的一个趋势。传统的水果等级评判主要依靠工人手摸、眼看,评定指标不客观,且人工成本高、效率低,不利于产业的规模化、工业化发展。因此,利用计算机图像技术研究客观、方便、高效的水果品质检测方法具有较大的应用前景。在本文中,作者以苹果为例,探讨基于MATLAB的苹果外观特征检测方法。

根据国家质检总局2003年发布的《烟台苹果原产地域产品国家标准》(以下简称《标准》),对于苹果分级的评定指标分为:品质基本要求、色泽、果径(最大横切面直径)、果面缺陷等方面内容,每一项都有具体分级标准。其中,品质基本要求为概略性的总体要求,苹果色泽由于品种的不同,色泽不同。因此,本文着重从果径及果面缺陷两方面特征对苹果进行检测判定。主要采用单个苹果照片进行检测。检测前,首先固定图像采集设备和检测平台的位置,同时固定各项拍摄参数(焦距、像素等)不变,并确保用于分析的每张照片长度、宽度保持一致。

1 果径(最大横切面直径)检测

对果径的检测思路为:将图片灰度化、二值化后,利用regionprops函数计算二值化图像的最小外接矩形大小,外接矩形框长度和宽度中的最大值即为苹果最大横切面直径。不过,此时的数值为像素值,通过与照片的长、宽像素值进行比较,结合图片的实际长、宽值,即可求出果径的实际长度。


v2-a558ed1505063ce1542d9a5645855db9_b.jpg


图1 设定苹果照片参数

在实验过程中,直接将图片灰度化、二值化后得到的苹果图像边缘不完整,因此考虑将图像转换到HSI颜色空间,利用S分量进行灰度化、二值化处理,较好的保留了苹果的边缘。

首先,将照片由RGB颜色空间转换为HSI颜色空间。

%RGB 2 HSI
rgb=imread('apple0.jpg');
rgb = im2double(rgb); 
r = rgb(:, :, 1); 
g = rgb(:, :, 2); 
b = rgb(:, :, 3); 
num = 0.5*((r - g) + (r - b)); 
den = sqrt((r - g).^2 + (r - b).*(g - b)); 
theta = acos(num./(den + eps)); 
H = theta; 
H(b > g) = 2*pi - H(b > g); 
H = H/(2*pi); 
num = min(min(r, g), b); 
den = r + g + b; 
den(den == 0) = eps; 
S = 1 - 3.* num./den; 
H(S == 0) = 0; 
I = (r + g + b)/3; 
% Combine all three results into an hsi image. 
hsi = cat(3, H, S, I); 


v2-2f61215ec4b4ac99de0354a34a75ae17_b.jpg


图2 HSI空间的苹果图片

提取HSI中的S分量,可以直接利用im2bw函数将S分量二值化。0.2为实验数值,level=0.2时二值化图像最理想。

S=im2bw(S,0.2);

imshow(S)


v2-c47e6b31c1654357f26c636399da9540_b.jpg


图3 S分量图像及S分量二值化后图像

求取外接最小矩形框,并利用regionprops函数计算图像区域的属性信息,并读取矩形的长、宽数据,以长、宽中的最大值为果径的数值。注意这里的数值为像素值。


v2-dba8c81ee8e9117e86b958422b1ca633_b.jpg


图4 二值化图像的最小外接矩形框

[l,m]=bwlabel(S,8);

status=regionprops(l,'BoundingBox');

x=status(2,1).BoundingBox; %读取矩形的长宽

X=max(x); %取最大值

取得果径的像素值后,与图片的长(宽)像素值相比。由于图片的像素、实际长宽等数值已预先设定并保持不变,因此根据果径像素与图片像素的比值可求出果径的实际数值。

2 果面缺陷检测

果面的缺陷主要包括压伤、碰伤、虫蛀伤等,表现为与正常果面色泽、质地不一致。因此可通过提取果面的图像特征,检测缺陷情况。


v2-3782a2aa670f288ae7a2d429e9ea5620_b.jpg


图5 有缺陷的苹果果面

首先,读入图像后用rgb2gray函数对受检苹果进行灰度化,并用imadjust函数调整灰度图像的强度值。

I= imread('apple3.jpg');

I2= rgb2gray(I);

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


v2-fc9fc8387f83d89cbdd11ab8f74a6198_b.jpg


图6 灰度图像及imajust增强后的图像

利用im2bw函数将调整后的灰度图像转换为二值图像,level值取1。为方便检测,对二值图像进行取反处理。Y=im2bw(J,1);Y=~Y。


v2-ca7721a41e4ace465fe90a78b079ec7f_b.jpg


图7 转换为二值图像并取反

与计算果径的方法相同,求病斑区域的外接矩形框,并利用regionprops函数计算图像区域的属性信息。

[l,m]=bwlabel(Y,8);

status=regionprops(l,'BoundingBox');

imshow(Y);

hold on;

for i=1:m

rectangle('position',status(i).BoundingBox,'edgecolor','r');

end

hold off;


v2-2faf09392e476181d92c87bbc0f3cc8f_b.jpg


图8 病斑区域的外接矩形框

值得注意的是,由于病斑的不规则,且一个果面可能会有多个病斑,图像区域中会有多个外接矩形框,因此需要对每个矩形框的大小进行判定,选取面积最大的矩形框。

[x,y]=size(status); %读取图片信息

for i=1:x %共有x个矩形框

X(i)=max(status(i).BoundingBox); %取矩形框最大值

end

x2=status(i,1).BoundingBox; %读取矩形框的长、宽

x2(1)

x2(2)

在这里,以最大矩形框的面积近似为病斑的面积。通过矩形框尺寸的像素值与照片长、宽像素值的比值,以及照片实际尺寸,进而确定病斑实际面积。

3 结论

通过前面的测试,初步实现了利用MATLAB技术对苹果的大小(最大横切面直径)、苹果表面病斑面积等评定指标的检测判定,达到了预期目的。需要指出的是,在计算病斑的实际面积时采取了近似外接矩形框面积的方法,存在一定误差,但是该误差对于果品的分级检测来说是在误差的允许范围内,并不会对检测结果造成本质上的影响。从图7、图8中可以看到,除了主要的病斑区域外,左下角还有一个小白点,回到原图可以发现,这是果面的另一处小虫洞,可见该程序能比较真实的反映果面缺陷情况。本文中基于MATLAB的苹果外观特征检测方法相对简单,且不需要非常复杂、昂贵的设备,能以较小的成本实现苹果的外观分级检测,有利于该检测技术、设备在生产实践中的推广应用,达到提高生产效率的目的。


参考文献

[1] 王术兰, 徐晓辉, 胡慧. 苹果的特征检测与MATLAB实现. 计算机与信息技术, 2006,01:79~80

[2] 杨高波, 杜青松编著. MATLAB图像/视频处理应用及实例. 北京:电子工业出版社.2010.

[3] 杨杰主编. 数字图像处理及MATLAB实现. 北京:电子工业出版社.2010.

[4] 邓薇编著. MATLAB函数速查手册. 北京:人民邮电出版社.2010.

猜你喜欢

转载自blog.csdn.net/TuTu998/article/details/120177079