APP下载

基于机器视觉核桃大小分级系统的软件设计

2018-03-26郭俊先

江苏农业科学 2018年4期
关键词:图像处理核桃机器

刘 航, 郭俊先, 王 勇, 周 军, 郭 政, 蔡 建

(1.新疆农业大学机械交通学院,新疆乌鲁木齐 830052; 2.新疆维吾尔自治区农牧业机械产品质量监督管理站,新疆乌鲁木齐 830000)

核桃原产于中亚,别称胡桃、羌桃、合桃,是胡桃科核桃属多年生落叶乔木,有“木本油料王”之称。作为世界上重要的坚果树种之一,核桃在我国的种植历史悠久,我国核桃栽培面积和总产量均居世界第一[1-2]。但核桃的分级技术还很落后,基本依靠果农或者机械式分级,效率低、误差大,同时也造成了一定的劳动力和果品浪费。当前利用机器视觉技术对农产品和工业产品进行检测和分级是国内一大热点。顾勇等通过VC++和Matlab的混合编程设计了一种由图像获取系统、图像处理系统和图像识别系统组成的机器视觉啤酒瓶检测系统[3]。李苗等在Windows XP环境下采用Visual C++6.0开发出工具,完成了基于机器视觉的方便面分类检测系统中图像采集模块、图像处理模块、学习模块及其他模块的设计[4]。为实现马铃薯的实时检测和分级,邓立苗等提出了根据形状、绿皮和缺陷的外观检测以及分级方法,并基于Visual C++集成开发环境实现了对马铃薯外观品质的实时检测和分级[5]。本研究通过对大恒水星系列面阵CCD相机MER-030-120UC进行二次开发,并利用OpenCV图像处理软件编写图像处理程序,构建以VS 2010为开发平台的核桃大小分级系统软件。

1 核桃大小分级机系统简介

1.1 系统组成

基于机器视觉的核桃大小分级机系统如图1所示,主要由动力系统、核桃输送系统、图像采集与视觉检测系统、分级控制与执行部件四大部分组成。其中动力系统包括1.1 kW交流调速电机、减速机、变频器、电气控制柜、链轮与传动轴等;核桃输送系统主要由仿形托辊、固定轴、链条等组成;图像采集与视觉检测系统由大恒水星系列面阵CCD相机MER-030-120UC彩色相机、日本Computer公司生产的CBC-0814MP 8 mm定焦镜头、高亮度LED条形光源、光电接近开关、计算机以及基于OpenCV2.4.9开发的图像处理程序组成;分级控制与执行部分由PLC控制器、继电器、三极管、电磁阀以及提供空气动力的空气压缩机组成。

1.2 系统工作流程

核桃大小分级系统流程如图2所示,当放置在仿形托辊上的核桃通过图像采集区域时,光电接近开关发送图像采集命令,相机接收图像采集命令开始采集核桃的RGB图像,然后传送至计算机,通过计算机上编写好的图像处理软件对采集到的核桃图像进行处理,并将图像处理后得到的核桃大小等级信息发送给PLC控制器,控制器将分级信号发送到分级执行机构,通过电磁阀的动作将对应等级的核桃吹落至相应的收集盒中,从而完成核桃大小分级的过程。

2 相机的二次开发

通过相机生产厂商提供的软件开发工具包(SDK),用户可以通过接口库直接调用相应的库函数来实现图像采集和相机参数设置等功能。

2.1 MER-030-120UC相机主要接口

相机的主要接口函数包含2个方面,即主功能接口和图像处理函数接口。主功能接口包括打开相机、采集图像、控制相机等接口,图像处理接口主要包括Bayer数据转换接口。表1展示了2个主要接口中的包含文件与静、动态链接库。

表1 相机主要接口文件

2.2 图像采集与相机控制

2.2.1 配置编程环境 本套软件的编制是基于Windows 7.0操作系统中的编程开发工具Microsoft Visual Studio 2010。在VS 2010编程工具中创建基于名称为Walnut_Judge的MFC对话框应用程序,然后点击菜单栏中工程属性命令,在弹出的属性页面中将GxIAPI.h和DxImageProc.h文件所在目录路径添加到附加包含目录中,将GxIAPI.lib和DxImageProc.lib这2个文件添加到链接器的常规附加库目录,在链接器输入下拉列表的附加依赖项中填写GxIAPI.lib和DxImageProc.lib这2个文件,从而完成编程环境的配置。

2.2.2 图像采集的具体实现 根据相机生产厂商提供的开发工具包,对相机的控制操作主要包括获取设备基本信息、相机的开启与关闭控制、触发模式设置、采集速度设置、白平衡和图像保存设置等方面。相机的采集流程如图2所示。

通过相应的UI界面初始化函数InitUI()将软件上的控件初始化,同时在新建的MFC界面中完成图像显示、图像处理函数的初始化。本软件中对相机的控制主要包括对设备开启与关闭的控制、触发模式控制、相机基本参数设置、白平衡以及图像保存等部分。

图像采集与相机控制过程的主要实现代码如下:

GX_STATUS WalnutJudgeDlg::InitDevice()

void WalnutJudgeDlg::DrawImg()

void WalnutJudgeDlg::InitUI()

WalnutJudgeDlg::OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM* pFrame)

{WalnutJudgeDlg*pDlg = (WalnutJudgeDlg*)(pFrame->pUserParam);

if (pFrame->status==0)

DxRaw8toRGB24();

pDlg->DrawImg();

pDlg->MatImageProcess(nHeight,nWidth,pDlg->m_pBufferRGB);

pDlg->ShowMatImage();

pDlg->SaveImage();

}

程序运行结果如图3所示。

3 图像处理具体实现

目前对类似于核桃这种圆形或者长圆形农产品的研究比较丰富[6-12]。在学习早期研究者处理方法的基础上,通过对相机采集的核桃RGB图像进行中值滤波、阈值分割、形态学处理、图像填充、绘制轮廓、查找最小外接矩形等方式完成对核桃外部轮廓的绘制,成功提取核桃果体面积上像素点个数与横径尺寸特征。

将OpenCV2.4.9的静态链接库加入到VS 2010开发工具中,在程序WalnutGradar头文件中加入OpenCV图像处理的头文件,即可进行图像处理程序编写。

图像处理的主要流程包括以下6个部分:(1)相机原始RAW图像转化为MAT类型数据。(2)图像灰度转化并进行中值滤波降噪处理。(3)选择合适的阈值上下限进行自适应阈值处理提取图像边界轮廓。(4)进行形态学腐蚀膨胀处理,去除边界图像内的孔洞。(5)利用填充函数对二值图像内的孔洞进行填充。(6)寻找核桃二值图像内的轮廓边界并绘制,通过确定轮廓点坐标位置,绘制最小外接矩形。

根据以上算法流程,编写程序关键代码如下:

2018年,既是改革开放40周年,又是卡博特来华30周年。朱戟对此由衷地表示:“卡博特非常荣幸成为中国改革开放这一里程碑式篇章中的亲历者、参与者和受益者。所有卡博特海内外的员工,都对中国及上海这40年的成就叹为观止,由衷地钦佩。卡博特也对能在这40年中对中国的发展作出微薄的贡献,深感荣幸与骄傲。”

WalnutJudgeDlg::MatImageProcess(VxUint32 Height,VxUint32 Width,BYTE *pBuffer)

{

m_MatImage=Mat(Height,Width,CV_8UC3,pBuffer);

Mat m_GrayImage,element;

cvtColor(m_MatImage,m_GrayImage,COLOR_BGR2GRAY);

blur(m_GrayImage,m_GrayImage,Size(3,3));

adaptiveThreshold(m_GrayImage,m_GrayImage,maxValue,adaptivMetheod,theresholdType,blockSize,C);;

element=getStructuringElement(MORPH_ELLIPSE,Size(40,40));

erode(outImage,outImage,element);

dilate(outImage,outImage,element);

findContours(outImage,contours,g_vHierarchy,CV_RETR_LIST,CV_CHAIN_APPROX_NONE);

drawContours(resultImage,contours,-1,Scalar(255),2);ShowMatImage();

}

从图2相机采集工作流程图可看出,图像处理程序位于回调函数OnFrameCallbackeFun中。因此,可以通过将图像处理的函数写入回调函数中来完成采集图像的处理过程。图像处理界面显示结果如图4所示。

4 系统核桃大小分级测试试验

4.1 试验样本与实测数据

本试验所用样本来自新疆阿克苏地区,试验核桃品种为新新二号核桃。按照核桃质量等级标准GB/T 20398—2006 《核桃坚果质量等级》[13]并结合新新二号核桃的实际情况,将新新二号核桃按照质量和横径分为一等品(质量≥12 g,横径≥33.0 mm)、二等品(10 g≤质量<12 g,横径≥31.5 mm)、三等品(8 g≤质量<10 g,横径≥30.5 mm)。人工选取3个等级,每个等级50个新新二号核桃。由于核桃轮廓所在面的表面积计算比较困难,所以选择用核桃轮廓区域的像素数作为核桃大小评判的指标之一[14]。通过对相机的标定,计算核桃各等级对应的矩形短边D,同时设定核桃轮廓面积像素数M的阈值,建立如表2所示的核桃大小分级评判标准。

表2 核桃大小分级阈值

表3显示的是利用核桃大小分级软件测得的150个核桃的大小特征(面积像素数M、矩形短边D)以及实测质量与横径数据。

4.2 分级结果分析

通过核桃大小分级软件对150个核桃分级结果和人工检测分级结果进行对比,结果如表4所示。

表3 核桃实测数据和图像处理计算值对比

从表4可以看出,人工分级和通过本视觉系统软件识别的一致性较高,总分级准确率为88%。通过本视觉系统软件对核桃进行等级识别时,一等品和二等品核桃识别率较高,但对三等品核桃分级准确率比较低。通过分析发现,在对核桃进行分级时,有些达到一等品或者二等品评判条件的核桃,由于其内部缺陷(如生虫、霉变、果仁萎缩)导致其质量降低后被人工判定为三等品核桃,从而致使本视觉软件无法对其进行准确判定。

表4 核桃大小分级结果

5 结论

通过VS2010编程开发工具将大恒水星系列相机MER-030-120UC的二次开发和OpenCV图像处理程序相结合,完成了基于机器视觉的核桃大小分级系统软件设计。试验验证该分级系统所设计的软件对核桃大小的分级准确率为88%,可以为后期进一步完善基于机器视觉的核桃大小分级提供支撑。

[1]冯连芬,吕芳德,张亚萍,等. 我国核桃育种及其栽培技术研究进展[J]. 经济林研究,2006,24(2):69-73.

[2]王 冰,裴新民,李忠新,等. 我国核桃初加工现状及发展前景的分析研究[J]. 中国农机化学报,2010(5):43-49.

[3]顾 勇,何明昕. 基于机器视觉的啤酒瓶检测系统研究[J]. 计算机工程与设计,2012,33(1):248-252.

[4]李 苗,康戈文,张中越,等. 基于机器视觉的方便面分类检测系统设计[J]. 可编程控制器与工厂自动化,2013(3):78-83.

[5]邓立苗,杜宏伟,徐 艳,等. 基于机器视觉的马铃薯智能分选方法与实现[J]. 中国农机化学报,2015,36(5):145-150.

[6]李景彬,邓向武,坎 杂,等. 基于机器视觉的干制红枣大小分级方法研究[J]. 农机化研究,2014(2):55-58.

[7]王巧华,文友先. 基于BP神经网络的鸡蛋大小分级方法研究[J]. 湖北农业科学,2005(1):97-99.

[8]施 健,何建国,张 冬,等. 基于计算机视觉鲜枣大小分级系统研究[J]. 食品与机械,2013,29(5):134-137.

[9]安爱琴,余泽通,王宏强. 基于机器视觉的苹果大小自动分级方法[J]. 农机化研究,2008(4):163-166.

[10]展 慧,李小昱,王 为,等. 基于机器视觉的板栗分级检测方法[J]. 农业工程学报,2010,26(4):327-331.

[11]Kemps C J,Bamelis F R,de Ketelaere B,et al. Non-destructive freshness assessment of shell eggs using FT-NIR spectroscopy[J]. Journal of the Science of Food and Agriculture,2006,86(9):1399-1406.

[12]周 平,赵春江,王纪华,等. 基于机器视觉的鸡蛋体积与表面积计算方法[J]. 农业机械学报,2010,41(5):168-172.

[13]王文德,王 贵,张军宽,等. 核桃坚果质量等级 GB/T 20398—2006[S]. 北京:中国标准出版社,2006.

[14]莫亚子,段佳欢,沈 斌,等. 基于面积的猕猴桃大小分级检测算法[J]. 电子世界,2014(10):257-258.

猜你喜欢

图像处理核桃机器
机器狗
机器狗
小核桃变身“致富果”
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
未来机器城
可赏可食可入药的核桃
黄龙核桃
基于图像处理的定位器坡度计算
Photo Shop通道在图像处理中的应用