自学内容网 自学内容网

基于matlab的物料大小分级算法的实现

        [摘 要]本文以摄取的苹果图像为例,利用matlab对苹果的大小分级算法进行了仿真,为后续开发农产品物料图像分级系统的研究做铺垫。

        [关键词]物料 大小分级 matlab 视觉检测

            

        分级是把物料按其特征分为不同等级。筛分是根据物料颗粒大小将混合物料进行分级,采用机械式的分级筛是常用的高效的方法,但非坚果类农产品物料多半不能筛分,因为机械震动造成的碰撞和摩擦易造成被分级物料的损坏。近年来基于图像例如物料的形状、颜色、大小等的新型分级方法不断涌现,拓展了传统局限于物料大小的分级概念,使分级的领域、精度、效率、智能化程度以及环保得到深化和提高。基于图像的物料分级技术是我国的薄弱环节,不少产品靠从国外引进,深入研究和提高我国基于图像的物料分级水平,是十分有意义的工作。

        采用嵌入式的视觉检测系统对物料大小进行自动分级可以提高效率。相对于人工分级具有很多优点,例如可以一次性地实现多因素分级,无损分级,分级标准统一,降低机械噪音和能耗,提供各种分类指标的统计信息,为物料的日后的品质改进,产品的销售提供可靠数据。因此,研究更快更准确的智能化的图像分级系统对现代化农业有着举足轻重的作用。

        表面缺陷和形状大小是影响苹果品质的重要指标,本文从判断苹果图像大小出发,对大小分级的几种算法在PC机的平台上用MATLAB仿真软件进行分析和比较。

        

        1 图像预处理过程介绍(见图1)

        

        1.1 图像采集及背景去除

        目前,在试验中苹果手工放置在一个光照匣子中,里面放进一个背景光源,cmos摄像头对其进行图像采集,拍摄的图片为 80*64的.jpg的图像。一幅图像可以表示为一个像素为m*n的矩阵。

        1.2 灰度处理

        灰度处理就是将真彩图变为只有黑白颜色的灰度图,但也并不是纯黑或者纯白。一幅灰度图像就是一个数据矩阵,它的数据代表了在一定范围内的颜色灰度值。

        1.3 滤波消噪

        滤波消噪有很多种方法,小波分析,平滑法,中值滤波法,数字滤波器等。本文采用中值滤波medfilt2函数对灰度图像滤波消噪,它在一定程度上消除干扰噪声和点状噪声。

        1.4 二值化并取反(最佳阈值)

        图像的二值化就是将图像的像素仅以0和1来表示,每个像素只取2个灰度值。利用函数graythresh取得最佳的阈值。大于阀值的像素以黑色表示,小于阈值的像素以白色表示。对图像求反就是将灰度图的灰度值翻转,就是让黑变白,让白变黑。

        1.5 边缘检测

        两个灰度不同的区域存在着边缘,二值化后图像的矩阵只存在着0,1这两个灰度值,本文利用bwperim函数进行边缘检测。检测后边缘的像素为1,其它像素为0。

        1.6 特征提取

        对于图像边缘的面积,周长,偏心率,似圆度等一些需要关注并获得的参数进行提取获得,本文对图像边缘的面积参数进行了计算和分析。

        

        2 苹果大小分级算法及matlab仿真试验

        

        对于农产品物料分级中的尺寸分级,Paulus[2]等提出了三种分级依据的尺寸:(1)面积,(2)直径,(3)体积。本文以半径为分级的尺寸。

        2.1 苹果的截面积

        利用截面积求像素点的方法,像素点越多,尺寸越大。仿真程序:

        v=imread('d:\A.jpg');% 读入图像。

        imshow(v) % 显示真彩图。

        w=rgb2gray(v); %化为灰度图像。

        imshow(w)%显示灰度图。

        L=medfilt2(w); %对灰度图像中值滤波。

        level=graythresh(L); %获得灰度图像的最佳阈值。

        bw=im2bw(L,level);%二值化图像。

        imshow(~bw)%显示二值化的图像。

        bwarea(~bw)%计算二值化后的像素点,得到苹果的像素点(见图2)。

        结果:苹果A,B的像素点数分别为S1A=1241.1,S1B=1026.5。由s=3.14*r*r, r1A=19.88,r1B=18.08(单位:像素)。

        2.2 通过求取圆心的坐标来求得平均半径

        图像进行处理后,得到苹果边缘的像素,将边缘像素点提取出来,并存为直角坐标的数组,得到m个数组。像素的横坐标方向是从左向右,纵坐标方向是从上向下。第一步,求取苹果边缘像素的中心点O,O点坐标(x0,y0)。其中,。第二步,求边缘的M个点与中心点O(x0,y0)的距离,记为d1,d2……dM。第三步,求的距离的平均值r2作为苹果的半径,r2=(d1+d2+…+dM)/M。在第一种方法的基础上得到二值化图后,后面部分仿真程序:

        bw1=bwperim(bw);%图像边缘检测。如图3所示。

        imshow(bw1) ;%显示边缘图。

        [p,q]=size(bw1) ;%其中p=64,q=80。

        t=1; %给t赋初值,t为边缘像素为1的点的个数。

        for i=2:(p-1);for j=2:(q-1);%对于图像最边缘点有时也为1,故略去,不计入t中。

        if bw1(sub2ind(size(bw1),i,j))==1;%对边缘图像矩阵扫描计数,若为1则为边缘。

        t,i,j;%输出计数值t,并记录为1的像素点的行列i,j。

        for t=t+1;end; end; end; end;s=t-1;%修正边缘为 1的个数t并给s。

        e=zeros(1,s);f=zeros(1,s);%定义e,f为1行s列的矩阵,即一维数组。

        g=1; for i=2:(p-1); for j=2:(q-1); if bw1(sub2ind(size(bw1),i,j))==1;

        i; j; e(g)=i;f(g)=j ;%将二值化后为1的像素的行列坐标赋给e,f。

        g=g+1;end;end;end; e,f ; %输出数组e,f。

        %以上程序得到一维数组。

        x0=sum(e)/s; y0=sum(f)/s;%求出x0,y0的坐标,即中心点的坐标。

        d=zeros(1,s);%将各个边缘像素点到中心点的距离定义为一维数组。

        u=1;for u=1:s;d(u)=sqrt((e(u)-x0)^2+(f(u)-y0)^2); %计算各个边缘像素点到中心点的距离。

        u=u+1; end; d; r=sum(d)/s;%求出了平均半径(见图3)。

        实验结果:苹果A,B的半径(单位:像素)分别为:r2A=20.2430,r2B=18.4533。

        2.3 扫描法获得最大的直径

        扫描法获得最大半径的方法,通过最边缘的4点求的最大的直径,平均直径越大的尺寸越大。由于苹果是近圆形,所以在采用这种方法的时候省掉由于不规则形状扫描引起的误差。同方法二,首先得到一维数组。第一步,利用扫描得到边缘的4点,xmin,xmax,ymin,ymax。第二步,苹果的平均半径r3=(|xmax-xmin|+|ymax-ymin|)/2,根据r3的大小来判断苹果的大小。首先同方法二得到一维数组(与2.2中的这部分程序一样),后面部分仿真程序如下:

        xmin=min(e),xmax=max(e) %数组e的最大值和最小值。

        ymin=min(f),ymax=max(f) %数组f的最大值和最小值。

        

        d1=abs(xmax-xmin),d2=abs(ymax-ymin) %d1,d2为苹果直径。

        d0=(d1+d2)/2;%求出平均直径d0。

        结果:苹果A,B的直径(单位:像素)分别为d3A=39,d3B=36.5。则r3A=19.5,r3B=18.25。

        

        3 图像的标定

        

        3.1 标定方法

        为了能从获得的像素数据得到苹果的实际半径,采用光学几何的方法进行标定。如图4所示,如果摄像头(视为一个点)与被摄物体的中心的连线与投影面垂直,则投影面的半径和半径对应的像素点的个数呈比例。在此前提下,可采用实物标定的方法找出像素点与半径的比例系数(见图4)。

        3.2 标定的验证

        在摄像头到物体的高度h=170mm时,取r1=20mm和r2=40mm的圆,利用摄像头拍出其80*64真彩图,经处理算出半径对应的像素点数。r1=20mm,n1=11.5点(约12点),r2=40mm,n2=23.5点(约24点),则n1/r1=n2/r2,比例系数约为0.6(见图5)。

        

        4 实验结果及误差分析(见表1)

        

        利用测得的苹果周长c=2*3.14*r,计算实际半径r,采用多次测量取平均值的方法。由表1可以看出,方法2所测的半径与实际半径较接近。其中,相对误差=(实际半径-有线性关系算出的方法2的半径)/实际半径*100%。从以上分析可知,要获得准确的测量值,要确保摄像头与被摄物体的中心的连线与投影面垂直,而被分选的物料大小肯定是变化的,因此在设计分级机的摄像部件时,要选择摄像头能随被测物料大小上下浮动,被测物的溜槽中心固定,两侧护板向中心伸缩的结构。满足不了这个条件,测量的误差会随机增加。

        

        5 结语

        

        通过以上分析和仿真,采用了3种不同的测量半径的方法中第二种方法相对要准确一些,因为它是采用求圆心的多点均值的算法,对类似球状的物体,这种方法较准确,但还有改进之处。例如增加门限来剔除过大和过小的值,以减少畸形(凹凸)对物料大小判断的影响。通过试验和分析,对实用的分选机的图像摄取部分的结构,要保证摄像头与物料球心的连线务必与投影面保持垂直。

        

        [参考文献]

        [1] 曹乐平.基于计算机视觉技术的水果分级研究进展[J]. 农机化研究,2007,11:10–15.

        [2] I.Paulus,P. De Busscher E. Schrevens.Use of image analysis to investigate human quality classificat apples.J.agric.Engng Res.(1997) 68,341-353.

        [3] 熊利荣,任奕林.基于机器视觉的花生大小检验[J]. 湖北农业科学,2007,46(3):464-465.

        [4] 宁纪锋,何东健.基于图像形态学的球形果实品质检测研究[J].农机化研究,2001,3:28-29.

      

       


原文地址:https://blog.csdn.net/2401_86539719/article/details/142556532

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!