基于MATLAB的苹果外观特征检测
摘 要 本文根据苹果分级判定标准中的两个评定指标:果径和果面缺陷,探讨如何利用MATLAB技术进行苹果外观的特征检测,从而提高苹果品质检测的工作效率。
关键词 MATLAB;苹果分级;果径;果面缺陷
0 引言
近年来,随着人们生活水平的提高,对于水果的品质要求也不断提高,实行水果分级销售成为当前市场的一个趋势。传统的水果等级评判主要依靠工人手摸、眼看,评定指标不客观,且人工成本高、效率低,不利于产业的规模化、工业化发展。因此,利用计算机图像技术研究客观、方便、高效的水果品质检测方法具有较大的应用前景。在本文中,作者以苹果为例,探讨基于MATLAB的苹果外观特征检测方法。
根据国家质检总局2003年发布的《烟台苹果原产地域产品国家标准》(以下简称《标准》),对于苹果分级的评定指标分为:品质基本要求、色泽、果径(最大横切面直径)、果面缺陷等方面内容,每一项都有具体分级标准。其中,品质基本要求为概略性的总体要求,苹果色泽由于品种的不同,色泽不同。因此,本文着重从果径及果面缺陷两方面特征对苹果进行检测判定。主要采用单个苹果照片进行检测。检测前,首先固定图像采集设备和检测平台的位置,同时固定各项拍摄参数(焦距、像素等)不变,并确保用于分析的每张照片长度、宽度保持一致。
1 果径(最大横切面直径)检测
对果径的检测思路为:将图片灰度化、二值化后,利用regionprops函数计算二值化图像的最小外接矩形大小,外接矩形框长度和宽度中的最大值即为苹果最大横切面直径。不过,此时的数值为像素值,通过与照片的长、宽像素值进行比较,结合图片的实际长、宽值,即可求出果径的实际长度。
图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);
图2 HSI空间的苹果图片
提取HSI中的S分量,可以直接利用im2bw函数将S分量二值化。0.2为实验数值,level=0.2时二值化图像最理想。
S=im2bw(S,0.2);
imshow(S)
图3 S分量图像及S分量二值化后图像
求取外接最小矩形框,并利用regionprops函数计算图像区域的属性信息,并读取矩形的长、宽数据,以长、宽中的最大值为果径的数值。注意这里的数值为像素值。
图4 二值化图像的最小外接矩形框
[l,m]=bwlabel(S,8);
status=regionprops(l,'BoundingBox');
x=status(2,1).BoundingBox; %读取矩形的长宽
X=max(x); %取最大值
取得果径的像素值后,与图片的长(宽)像素值相比。由于图片的像素、实际长宽等数值已预先设定并保持不变,因此根据果径像素与图片像素的比值可求出果径的实际数值。
2 果面缺陷检测
果面的缺陷主要包括压伤、碰伤、虫蛀伤等,表现为与正常果面色泽、质地不一致。因此可通过提取果面的图像特征,检测缺陷情况。
图5 有缺陷的苹果果面
首先,读入图像后用rgb2gray函数对受检苹果进行灰度化,并用imadjust函数调整灰度图像的强度值。
I= imread('apple3.jpg');
I2= rgb2gray(I);
J= imadjust(I2,[0.1 0.2],[]);
图6 灰度图像及imajust增强后的图像
利用im2bw函数将调整后的灰度图像转换为二值图像,level值取1。为方便检测,对二值图像进行取反处理。Y=im2bw(J,1);Y=~Y。
图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;
图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.