CN110196053B - 一种基于fpga的实时田间机器人视觉导航方法与系统 - Google Patents

一种基于fpga的实时田间机器人视觉导航方法与系统 Download PDF

Info

Publication number
CN110196053B
CN110196053B CN201910511693.3A CN201910511693A CN110196053B CN 110196053 B CN110196053 B CN 110196053B CN 201910511693 A CN201910511693 A CN 201910511693A CN 110196053 B CN110196053 B CN 110196053B
Authority
CN
China
Prior art keywords
ridge line
image
angle
robot
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910511693.3A
Other languages
English (en)
Other versions
CN110196053A (zh
Inventor
张志斌
李杉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inner Mongolia University
Original Assignee
Inner Mongolia University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inner Mongolia University filed Critical Inner Mongolia University
Priority to CN201910511693.3A priority Critical patent/CN110196053B/zh
Publication of CN110196053A publication Critical patent/CN110196053A/zh
Application granted granted Critical
Publication of CN110196053B publication Critical patent/CN110196053B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A40/00Adaptation technologies in agriculture, forestry, livestock or agroalimentary production
    • Y02A40/10Adaptation technologies in agriculture, forestry, livestock or agroalimentary production in agriculture

Landscapes

  • Engineering & Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

本发明属于机器视觉导航技术领域,公开了一种基于FPGA的实时田间机器人视觉导航方法与系统,将获取到的田间图像通过图像预处理分割出绿色作物;检测田间作物垄线图像中的垄线信息,垄线信息包括两条相邻垄线位置信息及其斜率;通过垄线信息计算提取机器人的导航信息,用于控制机器人行走;图像预处理模块、图像存储模块、田间垄线检测模块、导航参数提取模块。本发明相比于已有算法,优化后的算法平均准确率可达89.7%;与真值相比F‑score值为91.1%,用时仅16ms,占用2824个触发器、4625个查找表及4kb块寄存器(BRAM);导航参数提取模块仅占用372个触发器和1013个查找表。

Description

一种基于FPGA的实时田间机器人视觉导航方法与系统
技术领域
本发明属于机器视觉导航技术领域,尤其涉及一种基于FPGA的实时田间机器人视觉导航方法与系统。
背景技术
目前,最接近的现有技术:
由于农作物与土壤、石头等非植物在颜色上有较为明显的差异,因此,大多数视觉系统利用可见光成像获取分割后的植物图像,提取机器人导航参数,如导航线和导航角等,然后通过它们控制机器人行走。基于机器视觉的导航系统有两个分支:1)利用单目相机获取图像,并结合图像处理方法得到导航参数的二维视觉导航系统;2)通过两个或多个相机同时获得多幅图像,使用立体匹配方法得到特征点并匹配得到导航信息的三维视觉导航系统。在田间机器人导航系统中,机器人能够根据检测到的田间垄线信息控制车辆行走,因此,为了能准确地控制机器人行走,快速地获得作物垄线位置信息是目前田间机器人导航算法中亟需解决的最重要问题。
目前已有几种基于机器视觉的作物垄线行检测算法,这些算法虽然能较准确地实现对作物垄线行检测,但大多数算法都是离线、处理时间较长,使得无法实时控制田间机器人按照既定状态沿垄线行走。当车辆一直处于匀速状态,而指导机器人的导航信息需较长时间才计算到,这将导致对作物的碾压。其原因为田间图像相比于其他自然环境复杂,作物垄线可能存在弯曲、缺失等,系统需要进行复杂计算所造成的。有代表性的算法依据检测原理可分为以下几种:
(1)基于霍夫变换的方法(Hough transform,HT)。该方法是现今最常用的作物行检测方法,最早由Hough在1962年提出。之后,首先提出了基于霍夫变换的作物行检测方法,并总结了作物行检测方法的相关先验知识。基于该先验知识,该方法对于作物植株缺失和杂草识别等问题具有鲁棒性。提出了一种基于随机霍夫变换(RHT)的通过作物中心线确定作物行的检测方法。该方法在植物分布稀疏、一般和密集三种情况下进行测试。根据试验结果可知,此类方法比普通的霍夫变换更准确。
(2)基于线性回归的方法。提出在杂草密集的情况下,通过图像分割、双阈值可实现对作物和杂草的分离,同时采用最小二乘线性回归方法计算、拟合得到图像中作物垄线。实验结果表明,该方法比霍夫变换得到的结果具有较高的准确性。首先使用颜色植被指数方法分割出粗略的二值图像,之后采用Theil-Sen方法矫正作物行。同时该方法具有更高的准确性。
(3)基于绿色像素点统计的方法。通过图像分割,特征点提取,候选行估计,消失点检测等步骤实现对小麦行的检测。其中,候选行估计是通过统计当前直线上绿色像素点个数实现的。该方法可有效地检测早期生长阶段的小麦行,正确率可达90%。提出了一种新的有效的作物行检测方法。该方法使用动态规划技术将图像中几何结构和先验知识相结合,能够准确地检测出图像中弯曲的作物垄线。介绍了一种基于绿色像素点统计的既能检测直线也能检测弯曲垄线的检测方法。
(4)基于区块和滤波的方法。该方法主要是将图像分割成多个区域,并对每个区域内的像素进行计算从而确定作物的垄线信息。通过灰度相似性标准对图像进行分组,计算并获得每个分组的角度和重心,从而确定作物行。提出一种基于多感兴趣区域(region ofinterest,简称ROI)的作物行检测算法。该方法通过构建多ROI并采用线性回归拟合求得作物行。在杂草率较高或植被覆盖较低的情况下均可有效地检测作物行,且最终检测正确率达93%。
(5)基于双目立体视觉的方法。立体视觉技术已应用于多个农业领域,同时在垄线检测方面也有所涉及和应用。该方法主要是基于作物与杂草高度不同这一先验知识,而通过立体视觉技术可计算出图像中物体高度信息,进而分割作物与杂草。一种鲁棒的垄线检测方法,不受光照变化和杂草的影响。通过使用双目立体视觉技术确定场景中感兴趣对象(通常为农业作物)的三维(3D)位置,并求得当前作物图像的高程图以引导田间机器人沿垄线方向行走。开发了一种基于立体视觉的地面特征检测和跟踪田间机器人的行走误差方法。但在实际情况下,车辆会随着地形变化而变化,如相机旋转等情况会使得该方法失效。
中国农业大学的李景彬针对自然环境下棉花播种作业图像,设计了基于HT方法的田间图像导航路线和田端检测算法。对于图像尺寸为640×480的情况下,平均处理时间为72.02ms。采用隔行统计采集图像中绿色分量的个数,计算得到垄线的候补点。然后采用HT方法拟合出玉米作物的导航线。试验结果表明该方法的平均检测时间为50.13ms/帧。中国科学技术大学的刘路提出了在狭窄的作物行间检测导航信息和控制机器人行走的方法。通过对秸秆图像进行主成分分析、形态学分割和相机的标定等步骤,最终定位图像中秸秆根部,并依据秸秆根部行走。该系统在图像尺寸为640×480的情况下平均耗时250ms。哈尔滨工程大学的徐璟雪提出使用基于概率的霍夫变换检测垄线,该方法能计算出作物垄线所在位置,且误差较小。对于像素尺寸为400×247的图像,处理时间为178.68ms。湖北工业大学马志艳等提出利用漫水法分割出茶叶作物的垄线,之后使用最小二乘法拟合出作物的垄线并用于导航。最终的试验结果表明,该方法能有效提取到导航线,对于640×480图像处理速度为150ms。内蒙古大学的赵帅领等提出使用扇形密度模型和垄线角度约束关系搜索垄线,并利用目标作物视差和坐标转换关系计算出高程图,最终生成对应图像的垄线置信密度图用于导航。
同时,近年来大部分研究人员提出使用FPGA加速图像处理速度,并得到的相对较好的结果。典型的例子如:Jens Rettkowski等实现了基于FPGA的定向梯度直方图(HOG)算法并对该算法进行了优化,在全高清分辨率图像尺寸下,每秒可处理39.6帧。B.Johnson等提出基于FPGA的定点离散卡尔曼滤波器(DKF)算法,用于实时去除图像中的高斯白噪声。该方法实现在Xilinx Virtex-6FPGA上,对于512×512尺寸的图像每秒可处理33帧。同时,Heng Li等提出了一种快速综合计算加速双边滤波除雾(CABFD)方案,所提出的FPGA去雾架构可直接应用于实现1920×1080视频显示,处理速度可达到实时,仅用时约170ms。Puglia等实现了基于FPGA的DNA序列视差比对算法。该设计每秒能处理30帧1024x768图像,同时芯片功耗仅为0.17瓦。
我国《十三五规划纲要》提出“加强农业与信息技术相结合,发展智慧农业,提高农业生产力和生产水平”这一方针。智慧农业即实现农业精细化、高效化与绿色化,保障农产品质量,提高农业竞争力和可持续发展。近几年来,我国农业发展水平已有较大的提高,但我国作为农业发展大国仍存在不少的困难和问题。作为智慧农业的重要组成部分,田间机器人自动导航算法和系统在近年来颇受关注。田间机器人导航系统主要广泛应用于农作物种植、除草和施肥等阶段。农业机器人代替传统的人力,有效地降低农民的劳动强度,降低了农业生产的成本,从而提高了农作物产品的品质。
综上所述,国内外研究学者对于基于视觉的田间垄线检测算法研究较多,并且每种方法相对有效地计算得到田间作物垄线。然而,现有的算法大部分是实现在离线和低分辨率图像情况下,对于实时高分辨率的复杂自然环境下的垄线检测并不一定适用。截至目前,鲜有学者将FPGA加速方法与基于农业视觉图像处理方法或农业导航算法相结合。目前基于双目视觉的田间机器人导航算法的主要难点在于光照、作物形态等因素的影响导致田间环境较为复杂,使得大部分视觉导航算法无法满足实时性和鲁棒性的要求。本发明针对田间作物垄线的特点,对已有的田间垄线方法进行优化,并提出一种基于FPGA的田间机器人导航算法,用于优化和提高算法的实时性,准确地检测田间垄线信息,并通过提取出的导航参数控制机器人行走。
综上所述,现有技术存在的问题是:
(1)现有基于视觉的田间垄线检测算法大部分是实现在离线和低分辨率图像情况下,对于实时高分辨率的复杂自然环境下的垄线检测并不一定适用;截至目前,鲜有学者将FPGA加速方法与基于农业视觉图像处理方法或农业导航算法相结合。
(2)传统的垄线提取方法均是离线的、非实时的,并不能有效地控制机器人行动。
(3)目前基于双目视觉的田间机器人导航算法的主要难点在于光照、作物形态等因素的影响导致田间环境较为复杂,使得大部分视觉导航算法无法满足实时性和鲁棒性的要求。
解决上述技术问题的难度:
目前基于双目视觉的田间机器人导航算法的主要难点在于光照、作物形态等因素的影响导致田间环境较为复杂。
解决上述技术问题的意义:
田间机器人具备感知、决策和控制能力,依据获取的感知信息控制自身行走。田间机器人通过确定作物垄线的位置,实现实时、精确控制行走,避免碾压、伤害作物。田间机器人可提高收益降低生产成本,提升效率,减少人力成本。早在20世纪80年代,已有部分研究人员着手研究农业自动化方法。之后,随着高分辨率相机的发展,基于机器视觉的田间导航也开始逐渐应用于农业自动化。主要通过相机采集复杂田间图像,通过作物与土壤在颜色、纹理上的不同,识别出图像中作物垄线位置,从而实现基于视觉的田间机器人导航控制。相较于标准可控的实验室环境,农业环境复杂多变,可能会受到气候、时间、作物种类等因素的影响。因此,需要结合田间作物特性,进行机器视觉系统的设计和图像处理方法研究。
如何精确快速地获得作物垄线行的位置信息是实现田间机器人导航的必要条件,因此,确定作物垄线行位置也是实现田间机器人导航的关键技术。据此,已有大量的国内外研究人员对田间垄线行检测进行对于多方面的探索,如基于实时动态全球定位系统(RTK-GPS)、传感器(陀螺仪、压力等传感器)、机器视觉、激光雷达(LADAR)、近红外(NIR)等实现方法。由于机器视觉系统具有信息量大、精度较高、成本相对较低等特点,因此基于机器视觉的田间作物行检测方法被广泛使用。
近几十年来,自动化技术,特别是自动拖拉机的使用已形成,使得农业生产效率大大提高。然而与美国、日本、欧洲等发达国家相比,我国田间机器人导航领域内相关研究起步较晚,国内相关技术尚处于研究阶段,同时现有的大部分田间垄线检测方法都停留在离线图像处理阶段,并不能满足田间机器人导航的实时性需求。
发明内容
针对现有技术存在的问题,本发明提供了一种基于FPGA的实时田间机器人视觉导航方法与系统。
本发明是这样实现的,一种基于FPGA的实时田间机器人视觉导航方法,所述基于FPGA的实时田间机器人视觉导航方法包括以下步骤:
第一步,将获取到的田间图像通过图像预处理分割出绿色作物。
第二步,检测田间作物垄线图像中的垄线信息,垄线信息包括两条垄线位置信息及其斜率。
第三步,通过垄线信息计算提取机器人的导航信息,用于控制机器人行走。
进一步,所述第一步的图像预处理包括:
1)超绿指数,选择ExG指数进行绿度识别增强图像中绿色作物,使用原始图像中红、绿、蓝三个通道的像素值线性求和计算得到,同时将原始的彩色图像转换为灰度图像,具体的计算过程:
Figure SMS_1
2)采用最大类间方差法Otsu,将图像分割为两个区域,通过不断地迭代统计各个区域的直方图信息,求出前景和背景间最大类间方差,最大类间方差对应的灰度值即为最合适的分割阈值T。算法通过不断地迭代t,范围0-255,针对每个t均有方差σ2(t)和当前小于灰度值t的像素点个数与整幅图像中像素点总个数的比值ω(t)。其中,阈值最大化前景和背景之间的类间方差可通过计算得到,当像素点对应的灰度值大于该阈值T时,则设该像素点值为1,反之则设为0:
Figure SMS_2
3)选用中值滤波方法进行预处理,并设置中值滤波窗口大小为5×5,表示为下式。其中,fi-k,L,fi,L,fi+k为滤波窗口中的像素值,f为滤波窗口中所有像素的中值:
f=med(fi-k,L,fi,L,fi+k)。
进一步,所述第二步检测田间作物垄线图像中的垄线信息使用的田间垄线检测算法分为密度计算,第一条垄线检测及寻找第二条垄线检测三个部分。通过计算图像基线上每个像素点的密度,确定垄线的位置。
1)密度计算,由两条角度约束线构成当前垄线对应的扇形区域,角度为θ时且过BL直线上的点(x,y)的直线为候选检测线,通过下面两式获得该直线同图像边缘的交点分别为(x0,y0)和(x1,y1)。其中,width和height分别表示图像的长宽,θ为当前像素点对应的扇形角度,其范围为[45°,135°]。计算每个像素点在扇形区域的密度,其中Gi为过点(x,y)且角度为θ所构成的直线下非零像素点的个数,而Vi则是该直线上所有像素点个数:
temp0=(1-y)/tanθ+x。
Figure SMS_3
Figure SMS_4
temp1=(height-y)/tanθ+x。
Figure SMS_5
Figure SMS_6
Figure SMS_7
2)将计算得到的每个BL线上的所有点的密度进行比较,找到全局最大点。全局最大点即对应第一条垄线中心线。从中心线沿着BL线左侧逐像素点移动,在搜索过程中,逐点比较每个像素点在约束角度范围内的密度,计算约束角度γ2。计算左边界时约束角度。而计算右边界时约束角度应满足公式式。式中(x0,y0)和(x1,y1)分别为当前角度所构成的直线与图像边界的交点。与搜索垄线中心线不同的是,这次选择不大于平均密度ρ的最小密度值所对应的位置作为左边界,其中,通过统计图像中非零绿色作物像素点个数与图像中所有像素点的比值计算整幅图像的平均密度ρ:
Figure SMS_8
max(π/4,γ2)y≤θ≤β。
β≤θ≤min(3π/4,γ2)。
Figure SMS_9
3)寻找最近的垄线,将计算左、右边界垄线约束角度。当计算得到左右垄线边界线后,通过式计算出垄线宽度Lw
β-10≤θ≤β+10。
Lw=rightBL-leftBL
选择垄线角度、垄线宽度作为第二条垄线检测特征,检测田间图像中第二条垄线位置。首先确定第一条垄线在图像中的相对位置,预估第二条垄线的位置情况。当垄线位于整幅图像左侧,则选择垄线的右边界加垄线宽度的一半为起点,向右查找大于平均阈值且最小的密度信息作为第二条垄线。否则,采用垄线左边界减垄线宽度一半为起点检测垄线,具体如式所示:
Figure SMS_10
将第一条垄线及边界的角度和第一条垄线宽度作为第二条垄线检测判断条件,确定第二条垄线及垄线边界线的位置。
进一步,所述第三步通过垄线信息计算提取机器人的导航信息,用于控制机器人行走包括:O为图像平面的中心位置,L为图像中垄线所在位置。此时,以O为坐标原点建立图像坐标系。其中,L与x轴相交,且与x轴所成夹角为θ,同时该直线与y轴夹角为α,这里称之为偏航角。垄线与x轴的交点坐标为(x,y),则该交点与图像平面中心点的距离为d,该距离称为偏航距离。偏航角和偏航距离即为控制机器人行走的重要导航参数。当垄线在中心位置左侧时,垄线角度为小于90°的锐角,而当垄线位于中心位置右侧,则垄线角度为钝角。在已知垄线的位置信息和垄线角度时,导航参数的计算可通过得到:
d=x-xo
Figure SMS_11
根据导航模型计算得到的田间机器人行走的导航参数d和α后,通过计算导航参数与阈值的变化情况,确定当前机器人的下一步动作。
本发明与已有算法不同,是本发明的新方法,也即对有算法进行了改进。具体来说本发明在检测第二条垄线的时候,不采用神经网络算法,而利用相邻垄线的属性进行直接检测,这样不牺牲准确性的情况下,提高了算法的实时性。
机器人下一步动作可分为以下状态:
1)直线行驶状态。当导航参数满足式时,此时所求导航线和导航角度在阈值范围内,即田间机器人前进方向与所求导航线的延伸方向一致,因此应维持机器人按当前方向继续行走:
|d|<dt
Figure SMS_12
2)左、右急转状态。当满足式时,田间机器人的行走方向与导航线方向、角度的存在偏差较大,机器人应立即停止行进,并以较大转向角度向左或向右转向:
(d<-dt)∩(α<-αt)。
(d>dt)∩(α>αt)。
3)左、右转向状态。当满足式时,田间机器人行走方向与导航线向产生较小偏差。由于所求得导航参数d与α偏离阈值较小,此时机器人的转向曲率较小,在保持向前行走的同时向左或向右转弯:
(d<-dt)∩(-αt<α<0)。
(d>dt)∩(0<α<αt)。
进一步,所述第三步通过垄线信息计算提取机器人的导航信息,用于控制机器人行走进一步包括:田间机器人导航参数提取首先将垄线信息作为整个模块的输入,通过偏航距离和偏航角度计算得到当前时刻机器人与导航线的偏航距离和偏航角。同时将偏航距离和偏航角与阈值进行比较最终确定机器人的导航参数和下一步动作。
偏航距离和偏航角计算,当计算得到垄线位置信息和角度信息后,将利用垄线信息计算得到机器人的偏航距离和偏航角度。选用减法器将垄线位置信息和中心像素点相减得到机器人的偏航距离。根据计算当前偏航角。当垄线角度为锐角时,偏航角为垄线角度加90°。而垄线角度为钝角时,偏航角为垄线角度减90°。
当获得偏航角和偏航距离后,通过偏航角和偏航距离与其对应的阈值的差值判断机器人行走策略,即确定机器人应保持直行、转弯或者急转弯,通过比较当前偏航角度和阈值大小,将当前的偏航角度和偏航距离及机器人的控制策略作为整个模块的输出。
本发明的另一目的在于提供一种基于所述基于FPGA的实时田间机器人视觉导航方法的基于FPGA的实时田间机器人视觉导航系统,所述基于FPGA的实时田间机器人视觉导航系统包括:
图像预处理模块,用于实现将采集到的彩色田间作物与背景图像进行分割。首先计算图像的绿度和阈值,并依据该阈值达到分割图像中绿色作物的效果。同时实现中值滤波方法对图像噪声的滤除。
图像存储模块,用于实现将二值图像存储到块随机存取存储器中。
田间垄线检测模块,由密度计算、第一条垄线计算和第二条垄线计算三个部分组成。通过从BRAM中查找当前确定的直线上对应点的像素情况计算的得到当前像素点的密度信息。通过密度信息计算确定田间垄线的位置。
导航参数提取模块,将田间垄线检测模块计算得到的垄线位置和角度信息作为输入,计算得到下一步机器人行走的导航参数。
所述图像预处理模块进一步包括:
绿度计算和阈值计算模块,用于实现对图像阈值的确定。通过VDMA的MM2S将图像数据以数据流的方式从DDR寄存器中读出,即每次仅读取一个数据宽度为32位的图像数据。读取到的32位图像数据在绿度计算和阈值计算模块中,分割为红、绿、蓝和透明度α四个灰度通道分量。将红、绿、蓝通道的灰度值进行线性变换计算得到当前像素点增强绿色通道的灰度图。
作物分割和中值滤波模块,用于当计算得到当前图像的阈值信息后,将阈值作用于得到的灰度图像中分割出图像中的绿色作物,并对图像中存在的噪声进行滤除。
所述田间垄线检测模块进一步包括:
密度计算和垄线中心线检测模块,用于检测当前图像中的密度信息及获取图像中的垄线信息。
第一条垄线边界检测模块,计算得到第一条垄线后,通过第一条垄线位置获取当前第一条垄线的左右边界线以提取垄线导航线。根据优化后的垄线检测方法,垄线约束角度范围无需选用复杂的公式计算,只需要将第一条垄线求得的角度通过加法器和减法器计算得到。
第二条垄线中心线计算模块,用于通过密度信息、垄线宽度和第一条垄线左、右边界线及其角度可确定第二条垄线信息。
本发明的另一目的在于提供一种应用所述基于FPGA的实时田间机器人视觉导航方法的机器人。
综上所述,本发明的优点及积极效果为:本发明以农业为基础的信息技术的发展,是提升农业生产力、强化智慧农业的必要技术手段。基于机器视觉的导航算法因其使用成本低,包含信息具体直观等优点受到业界广泛关注。基于视觉的机器人导航方法虽然能较好指导机器人行走,但在不使用特殊硬件的普通个人电脑的前提下,田间机器人导航算法复杂且较难满足应用场景实时性要求。
本发明基于视觉的田间机器人导航算法实现的关键在于如何快速且精确地确定复杂田间图像中田垄的位置。传统的垄线提取方法均是离线的、非实时的,并不能有效地控制机器人行动。因此,通过分析已有田间垄线检测算法,提出基于扇形扫描垄线的优化方法,并采用该方法检测垄线位置。依据实验结果分析,该优化方法可有效检测到垄线信息,且相比于已有算法,优化后的算法平均准确率可达89.7%。继而在现场可编程门阵列(FPGA)上设计和实现田间机器人导航算法。整体算法由图像预处理、优化后的田间垄线检测和田间机器人导航参数提取三个部分组成。该三部分内部均采用并行流水线架构,而其部分间则采用串行方式。其中,图像预处理的各个子模块以并行方式计算图像绿度和阈值,并以流水线方式分割图像作物和背景。而田间垄线检测模块则采用并行方式计算垄线密度和左右边界,并以流水线的形式传输图像数据。依最终实验结果,对分辨率为1920×1080尺寸的图像,图像预处理模块能有效分割出图像中的绿色作物和背景,且与真值相比F-score值为91.1%,用时仅16ms,占用2824个触发器、4625个查找表及4kb块寄存器(BRAM)。本发明实现的田间垄线检测模块在0.2s内即可完成图像中垄线的检测,且仅占用11377个查找表、16634个触发器及46kb BRAM。导航参数提取模块仅占用372个触发器和1013个查找表。经过试验表明,在保证整体算法运算精度的前提下,本发明以较少资源实现了基于FPGA的田间机器人导航算法架构,并满足了算法的实时性要求。
本发明在国家自然科学基金项目(“基于双目视觉的三维结构识别与机器学习的全视觉导航方法研究”,31160253和“基于嵌入式FPGA的农业自动车辆智能4D视觉导航模型研究”,31760345)的资助下,以田间作物垄线在线识别技术作为研究重点,针对识别算法计算复杂导致的处理速度较慢的缺点展开研究,通过采用现场可编程门阵列(FPGA)并行流水线技术设计实现算法架构,从而加速垄线识别的处理速度,改善系统的精确性。这对于基于视觉的田间机器人导航算法在实现可持续农业发展中具有重要的理论与实际意义,在不远的将来将拥有较好的应用前景和经济效益。
本发明优化了已有算法,且在FPGA上进行了实现,极大地提高了垄线检测的实时性。
附图说明
图1是本发明实施例提供的基于FPGA的实时田间机器人视觉导航方法流程图。
图2是本发明实施例提供的基于FPGA的实时田间机器人视觉导航方系统结构示意图。
图中:1、图像预处理模块;2、图像存储模块;3、田间垄线检测模块;4、导航参数提取模块。
图3是本发明实施例提供的平面垄线图。
图4是本发明实施例提供的针孔相机模型示意图。
图5是本发明实施例提供的垄线模型示意图。
图6是本发明实施例提供的田间机器人导航算法流程图。
图7是本发明实施例提供的中值滤波方法示意图。
图8是本发明实施例提供的垄线扇形区域示意图。
图9是本发明实施例提供的杂草黏连示意图。
图10是本发明实施例提供的垄线密度图。
图11是本发明实施例提供的简化垄线密度图。
图12是本发明实施例提供的垄线中心线角度与边界线角度关系图。
图13是本发明实施例提供的优化前后垄线检测方法结果对比图。
图中:(a)原始作物彩色图像;(b)未采用logistic垄断检测结果;(c)采用logistic垄断检测结果。
图14是本发明实施例提供的顶层模块图。
图15是本发明实施例提供的V4L2操作流程图。
图16是本发明实施例提供的UIO驱动与用户空间和内核间的关系示意图。
图17是本发明实施例提供的软件模块设计框架图。
图18是本发明实施例提供的整体算法模块框架图。
图19是本发明实施例提供的机器人导航算法整体模块框架图。
图20是本发明实施例提供的图像显示模块整体框图。
图21是本发明实施例提供的绿度计算和阈值计算模块框架图。
图22是本发明实施例提供的绿度计算和阈值计算模块的并行处理流程图。
图23是本发明实施例提供的作物分割模块流水线架构示意图。
图24是本发明实施例提供的行缓存区缓存图像数据示意图(1)。
图中:(a)空白行缓冲区;(b)缓存一行。
图25是本发明实施例提供的行缓存区缓存图像数据示意图(2)。
图中:(a)缓存第二行时;(b)行缓存区端。
图26是本发明实施例提供的滤波窗口设计原理图。
图27是本发明实施例提供的田间垄线检测模块框架图。
图28是本发明实施例提供的资源占用率和位宽变化曲线示意图。
图29是本发明实施例提供的上下端点计算模块图。
图30是本发明实施例提供的BL线上像素点密度计算模块结构图。
图31是本发明实施例提供的第一条垄线中心线计算模块框架图。
图32是本发明实施例提供的第一条垄线边界计算模块框架图。
图33是本发明实施例提供的第二条垄线中心线检测模块框架图。
图34是本发明实施例提供的图像预处理模块结果与真图对比结果示意图。
图35是本发明实施例提供的田间垄线检测模块与软件实现对比结果示意图。
图36是本发明实施例提供的导航模型示意图。
图37是本发明实施例提供的田间机器人导航参数提取模块整体框架图。
图38是本发明实施例提供的偏航距离和偏航角计算模块框架图。
图39是本发明实施例提供的机器人控制参数提取模块框架图。
图40是本发明实施例提供的机器人控制参数提取模块状态转化图。
图41是本发明实施例提供的田间垄线图像示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有基于视觉的田间垄线检测算法大部分是实现在离线和低分辨率图像情况下,对于实时高分辨率的复杂自然环境下的垄线检测并不一定适用;截至目前,鲜有学者将FPGA加速方法与基于农业视觉图像处理方法或农业导航算法相结合;传统的垄线提取方法均是离线的、非实时的,并不能有效地控制机器人行动;目前基于双目视觉的田间机器人导航算法的主要难点在于光照、作物形态等因素的影响导致田间环境较为复杂,使得大部分视觉导航算法无法满足实时性和鲁棒性的要求的问题。本发明提出一种基于FPGA的实时田间机器人的视觉导航算法,更改并优化原有的算法以适应FPGA设计架构,并提高田间图像中垄线检测的处理速率,增加算法的实时性。
针对现有技术存在的问题,本发明提供了一种基于FPGA的实时田间机器人视觉导航方法,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的基于FPGA的实时田间机器人视觉导航方法包括以下步骤:
S101:将获取到的田间图像通过图像预处理分割出绿色作物,便于后期垄线检测。
S102:检测田间作物垄线图像中的垄线信息,其中包括两条垄线位置信息及其斜率。
S103:通过上述垄线信息计算提取机器人的导航信息,用于控制机器人行走。
如图2所示,本发明实施例提供的基于FPGA的实时田间机器人视觉导航系统包括:
图像预处理模块1,主要实现将采集到的彩色田间作物与背景图像进行分割。首先计算图像的绿度和阈值,并依据该阈值达到分割图像中绿色作物的效果。同时实现中值滤波方法对图像噪声的滤除。
图像存储模块2,主要实现将二值图像存储到块随机存取存储器(block randomaccess memory,简称BRAM)中。
田间垄线检测模块3,主要由密度计算、第一条垄线计算和第二条垄线计算三个部分组成。通过从BRAM中查找当前确定的直线上对应点的像素情况计算的得到当前像素点的密度信息。通过密度信息计算确定田间垄线的位置。
导航参数提取模块4,将田间垄线检测模块3计算得到的垄线位置和角度信息作为输入,通过该模块计算得到下一步机器人行走的导航参数。
下面结合附图对本发明的技术方案作进一步的描述。
1田间机器人导航算法原理
主要介绍采用视觉和绿色像素点统计的田间机器人导航算法原理。首先确定田间垄线模型,进一步了解田间垄线的先验知识。之后,确定机器人导航算法的流程并介绍完成导航算法的必要步骤。最后,确定每个算法在软件实现过程中所消耗的时间,并为后续在FPGA架构实现提供基础。
1.1田间垄线模型
描述针孔相机模型及对应的垄线模型。在通常情况下,作物垄线检测方法都是假设作物垄线表示在平面的直线上,如图3灰色直线所示。一组平行直线的图像投影到图像平面上是相交于公共点的一组直线,如图5所示。为了便于计算垄线模型,首先定义一个位于田间作物上方的相机的参考系,并假设该参考系的原点位于相机的光学中心,其中z轴平行于相机光轴,其x轴和y轴分别平行于相机CCD的水平和垂直方向,该相机参考系和投影平面如图3所示。图中Pv表示垄线行,x、y、z分别是以相机光心为中心的相机坐标系下的坐标轴。
假设垄线图像是由针孔相机拍摄得到,具体的针孔相机模型如图4所示,并可通过式(2-1)到(2-4)将世界坐标系转换为图像坐标系。相机参考坐标系下的点(x0,y0,z0)投影到图像中表示为点(u,v),其转换公式如式(2-1)所示。每一个像素点在成像平面的宽度和高度分别为dx,dy。同样,图像成像内容可理解为将物体平移或旋转得到的,如式(2-3)所示。其中,fx,fy为相机的焦距到成像平面原点位置的距离,(x0,y0,z0)为现实世界中物体的位置。由于相机成像平面与图像坐标系的原点不同,因此光心O的位置与成像平面在x方向和y方向上的距离分别为uc,vc
Figure SMS_13
Figure SMS_14
Figure SMS_15
Figure SMS_16
根据上述式子,可计算得到世界坐标系和图像坐标系之间的关系如式(2-4)所示。其中该式右侧的第一个矩阵可称为内参矩阵,其参数均由相机内部物理结构决定,第二个参数矩阵则是相机外部参数,其中,R、T分别为从相机坐标系到世界坐标系的旋转和平移矩阵。
下面,继续讨论基于视觉的垄线成像模型。首先假设在垄线图像中存在一系列等距的点,且这些点位于与相机参考系中x轴方向平行的直线上,因此,这些点的y、z坐标值相同并通过式(2-2)投射到相同的图像垄线上。如果图3中的垄线行Pv与相机的参考坐标系的x轴方向平行,则垄线的透视图如图5所示。其中,虚线为图像的中心基准线。因此,如果使得相机x轴方向与垄线平行,则垄线在图像中的投影是等距的,如图5所示。其中,v为选取第几条垄线,dv表示的两条垄线间的距离,cv表示中心垄线与图像中心的距离。
1.2田间机器人导航算法的原理与流程,主要介绍田间机器人导航算法,从软件层次方面可分为:图像预处理、田间垄线检测和导航信息提取三大部分。首先将获取到的田间图像通过图像预处理分割出绿色作物,便于后期垄线检测,之后,检测田间作物垄线图像中的垄线信息,其中包括两条垄线位置信息及其斜率。之后,通过上述垄线信息计算提取机器人的导航信息,用于控制机器人行走[37]。具体的流程图如图6所示。
在实现田间图像进行垄线识别之前,需要对采集到的原始田间作物图像进行预处理,将绿色作物从复杂的背景(如行人、石块、土壤)中分割出来。作物分割主要依据作物颜色与背景存在较大差异这一特性实现,同时采用形态学方法中的中值滤波过滤掉图像中存在的细微噪声。作物分割预处理过程是田间机器人导航算法的基础,较好的分割结果能有效地提高后续对作物垄线位置信息检测的准确性。接下来,本发明将分别介绍田间机器人导航算法中涉及的图像预处理和田间垄线检测算法。
1.3图像预处理
1)超绿指数,旨在强调原始图像中绿色通道信息。常见的超绿指数包括:ExG,ExGR,CIVE,VEG,COM等。因为ExG指数方法具有良好的鲁棒性和光照不变性,本发明选择ExG指数进行绿度识别增强图像中绿色作物。ExG算法主要是使用原始图像中红、绿、蓝三个通道的像素值线性求和计算得到,同时将原始的彩色图像转换为灰度图像,具体的计算过程如式(2-5)所示。
Figure SMS_17
2)阈值处理是通过一个阈值来区分图像中的前景和背景,在田间作物图像中,即用于区分绿色作物和非绿色背景。本发明采用最大类间方差法(Otsu),该方法无需人为设置各个参数,即可较好的分割出前景和背景。且该方法特别适合复杂的田间作物图像。该算法假设将图像分割为两个区域,通过不断地迭代统计各个区域的直方图信息,求出前景和背景间最大类间方差,其最大类间方差对应的灰度值即为最合适的分割阈值T。算法通过不断地迭代t(其范围0-255),针对每个t均有方差σ2(t)和当前小于灰度值t的像素点个数与整幅图像中像素点总个数的比值ω(t)。其中,阈值最大化前景和背景之间的类间方差可通过式(2-6)计算得到。当像素点对应的灰度值大于该阈值T时,则设该像素点值为1(白色),反之则设为0(黑色):
Figure SMS_18
3)形态学操作,目的是清除图像中的噪声,使得二值图像的边缘更加平滑。常用的形态学操作有开闭操作、滤波方法等。常见的滤波方法包括:中值滤波、均值滤波、高斯滤波等。其中,中值滤波在降低图像中存在的信号噪声的同时,相对于其他滤波平滑方法而言,能较好的保留边缘信息。由于边缘信息对田间机器人导航算法至关重要,因此,本发明选用中值滤波方法进行预处理,并设置中值滤波窗口大小为5×5。中值滤波操作过程如图7所示。同时,这一系列过程可表示为式(2-7)。其中,fi-k,L,fi,L,fi+k为滤波窗口中的像素值,f为滤波窗口中所有像素的中值:
f=med(fi-k,L,fi,L,fi+k) (2-7)
1.4田间垄线检测算法
田间垄线检测算法主要用于检测田间中的垄线信息。田间垄线检测算法可分为密度计算,第一条垄线检测及寻找第二条垄线检测三个部分。通过计算图像基线上每个像素点的密度,从而确定垄线的位置。
1)密度计算是田间垄线检测方法的第一步。图8展示了扇形区域计算垄线密度方法,其中,由两条角度约束线构成当前垄线对应的扇形区域。角度为θ时且过BL直线上的点(x,y)的直线为候选检测线,通过式(2-8)到式(2-13)可获得该直线同图像边缘的交点分别为(x0,y0)和(x1,y1)。其中,width和height分别表示图像的长宽,θ为当前像素点对应的扇形角度,其范围为[45°,135°]。与此同时,通过式(2-14)计算每个像素点在扇形区域的密度,其中Gi为过点(x,y)且角度为θ所构成的直线下非零像素点的个数(即绿色作物像素点个数),而Vi则是该直线上所有像素点个数:
temp0=(1-y)/tanθ+x (2-8)
Figure SMS_19
Figure SMS_20
temp1=(height-y)/tanθ+x (2-11)
Figure SMS_21
Figure SMS_22
Figure SMS_23
虽然复杂背景下的田间图像在经过预处理后可能存在垄线和杂草黏连情况如图9中框标注所示,然而以扇形角度扫描图像并计算对应点的密度的方法,使得垄线检测的结果并不会受到类似黏连的影响。
2)寻找第一条垄线是垄线检测方法中重要的一步。之后所有的导航线信息均与其相关,因此准确地计算该垄线是十分必要的。计算第一条垄线需要两步完成:首先主要是将上一步计算得到的每个BL线上的所有点的密度进行比较,找到全局最大点。其中,全局最大点即对应第一条垄线中心线。首先从中心线沿着BL线左侧逐像素点移动,在搜索过程中,逐点比较每个像素点在约束角度范围内的密度,其中约束角度γ2由式(2-15)计算,不同的是在计算左边界时约束角度由式(2-16)计算,而计算右边界时约束角度应满足式(2-17)[30]。式中(x0,y0)和(x1,y1)分别为当前角度所构成的直线与图像边界的交点。与搜索垄线中心线不同的是,这次选择不大于平均密度ρ的最小密度值所对应的位置作为左边界,其中,通过统计图像中非零绿色作物像素点个数与图像中所有像素点的比值计算整幅图像的平均密度ρ,如式(2-18)所示:
Figure SMS_24
max(π/4,γ2)y≤θ≤β (2-16)
β≤θ≤min(3π/4,γ2) (2-17)
Figure SMS_25
3)寻找最近的垄线,首先计算第一条垄线左边界和右边界在BL线方向上的距离,设为垄线间距LW。之后沿第一条垄线的位置,分别向左或右两侧逐点搜索,找到与左边界或右边界角度约束关系类似但密度最大的点作为第二条垄线中心线。由于采用双峰法检测最近垄线,在检测过程中可能会检测到多条候选最近垄线,其中可能包含一些错误垄线。之后,采用Logistic方法选取最合适的一条作为最近垄线,其中,Logistic回归方法如式(2-19)表示,并选取参考垄线的密度、垄线宽度、垄线与BL线夹角等作为特征确定第二条垄线位置,如式(2-20)表示。其中,g(z)为sigmod函数,将变量映射到[0,1]之间,从而选出合适的第二条垄线:
Figure SMS_26
Figure SMS_27
1.5田间垄线检测方法的优化
依据对多幅图像的分析发现,经过预处理后的图像在中间基线(BL)上的灰度值变化规律性较强,同时,其强度分布的峰值之间间隔可体现出垄线条数,如图10所示。然而,当忽略垄线波动时,图10可简化为图11。在简化垄线图11中,将作物图像简化为三种情况。其中,局部的极大值r代表垄线,局部极小值g为非垄线(如土壤),而在局部极大值和局部极小值之间会存在一些大于平均值的部分e,则该部分认为是垄线的边缘。其中,存在局部最大值Zmax,同样本发明选择该位置作为图像中的第一条垄线位置。
原有垄线检测算法中垄线约束角度计算需要耗费大量的计算时间。然而,在简化垄线密度图11中,绝大部分作物垄线近乎直线,垄线边缘线与中心线也基本平行。同时本发明通过统计大量田间作物垄线中心线与边界线角度关系如图12所示,可发现图像中左边界垄线与中心垄线角度变化差值最大为10°,而且大部分差异值分布在5°以内。对于右边界与中心线的角度相对而言变化较复杂,但也基本维持在10°之内。因此根据统计结果,原来田间垄线检测方法中复杂的约束角度计算公式转化为左、右边界约束角度为垄线中心线角度的[-10°,+10°]之间。因此本发明将计算左、右边界垄线约束角度的式(2-16)和(2-17)转换为式(2-21),从而降低了对垄线边界角度的计算复杂度。当计算得到左右垄线边界线后,可通过式(2-22)计算出垄线宽度Lw
β-10≤θ≤β+10 (2-21)
Lw=rightBL-leftBL (2-22)
通过Logistic回归分析确定当前垄线中垄线角度、垄线宽度与第二条垄线检测正相关。因此选择垄线角度、垄线宽度作为第二条垄线检测特征,检测田间图像中第二条垄线位置。首先确定第一条垄线在图像中的相对位置,从而预估第二条垄线的位置情况。当垄线位于整幅图像左侧,则选择垄线的右边界加垄线宽度的一半为起点,向右查找大于平均阈值且最小的密度信息作为第二条垄线。否则,采用垄线左边界减垄线宽度一半为起点检测垄线。具体如式(2-23)所示:
Figure SMS_28
经过优化后的田间垄线检测方法,省略了logistic回归分析,将第一条垄线及边界的角度和第一条垄线宽度作为第二条垄线检测判断条件,确定第二条垄线及垄线边界线的位置。同时,分析实验结果简化了垄线中心线和边界线约束角度计算过程。图13给出了优化前后的垄线检测算法对同一图像处理结果。图中展示了A、B、C三个图像数据集下对应的典型图像。其中,数据集A中图像采集于华南农业大学试验田的小青菜,数据集B和C中图像采集于内蒙古大学试验田,采集作物分别为玉米和玉米幼苗。本发明选用这三个数据集,验证本发明方法与已有方法在垄线检测结果上的差异。根据图中结果可得到,本发明实现的田间垄线检测结果能较准确地检测到复杂田间图像中的垄线信息。同时简化了原有算法的计算过程。如图13所示,原有算法在未使用Logistic算法检测到的错误检测垄线位置,而本发明优化后的垄线检测方法则可有效地检测到。
表1展示了在三个不同的数据集中垄线检测识别结果的正确率。优化前算法对于数据集A、B、C第一条垄线检测正确率分别为100%,92.6%和100%。未采用logistic回归的第二条垄线正确率可达到88.9%,82.7%和22.2%,而采用Logistic回归后的第二条垄线检测方法正确率可达到100%,84%和100%。通过表1结果可看出,本发明提出的优化算法能较好的实现垄线检测。由于本发明对于第一条垄线检测方法并没有进行改进,因此对于第一条垄线检测正确率在三个数据集上仍可达到100%,92.6%和100%。同时,第二条垄线检测正确率也有所提升,分别达到88.9%,80.2%和100%。经过试验结果表明,本发明所提出的优化算法能有效的检测到田间图像中的垄线信息,虽未能达到采用Logistic回归方法正确率,但相比于未采用Logistic回归实现方法提升十分明显。
表1田间垄线检测算法识别准确率
Figure SMS_29
1.6田间机器人导航相关算法软件实现时间分析
基于软件实现的机器人导航算法由主要由图像预处理、垄线检测和导航参数提取三部分组成。本发明主要讨论田间机器人导航在纯软件下实现由图像预处理、垄线检测算法在PC机上运行所消耗的时间情况。通过分析各个部分的时间消耗情况,为后期设计、实现并优化基于FPGA的田间机器人导航算法提供基础。
表2中展示了田间机器人导航算法中涉及到的图像处理方法软件下实现的时间消耗情况,其中包括图像预处理方法和优化后的田间垄线检测方法。图像预处理方法包括:超绿指数、阈值处理、形态学操作。田间垄线检测方法包括密度计算、第一条垄线计算和第二条垄线计算两个步骤。对于图像尺寸为640×480时,图像预处理方法中的超绿指数、阈值处理方法能较快的实现,但中值滤波方法大约用时0.45s,占用了图像预处理运行的大部分实现。而田间垄线检测方法中大量的处理时间花费在点密度的计算中,大约用时4.92秒,而当计算完点密度后分别计算第一条垄线和第二条垄线的时间仅为1.05秒和1.02秒。随着图像尺寸继续增大,算法运行所消耗时间也将增多。据此,本发明在后续FPGA设计实现过程中重点实现图像预处理过程中的中值滤波算法和田间垄线检测算法中的密度计算过程,提高中值滤波操作和密度计算的运行时间,同时保证该算法计算过程中的准确率。
表2田间机器人导航算法软件实现用时分析
Figure SMS_30
本发明所提出的优化方法能有效地检测到图像中的垄线,同时本发明所提方法与未采用Logistic回归的垄线检测方法相比平均正确率提高了25.1%。最后本发明介绍并总结了在PC机实现田间垄线导航算法所消耗的时间情况。
2、田间机器人导航算法总体设计,主要介绍FPGA架构下算法的加速方法和田间机器人导航算法的硬件总体设计。首先介绍基于FPGA硬件架构的并行加速的方法和设计原则。然后确定实现本发明所提方法需要的设备和硬件开发平台,最后详细的介绍基于嵌入式FPGA的田间机器人视觉导航算法的硬件架构设计和软件流程设计。
2.1基于FPGA的加速方法
本发明主要在FPGA上设计并实现基于视觉的导航算法,本发明主要介绍FPGA框架下加速算法的方法。其主要包含FPGA硬件架构的设计原则,适合FPGA加速的算法满足的原则及通用的FPGA算法优化的具体方法。
FPGA的设计原则
与传统单片机和PC机等设计方法不同,FPGA设计主要以并行、流水线等方法,通过硬件描述语言(VHDL或Verilog HDL)设计门电路编程来实现。在FPGA架构中,设计原则包括硬件可实现原则、同步设计原则和面积与速度互换原则。
硬件可实现原则是在描述设计硬件电路时,需要确保所描述的电路是可被实现的。由于Verilog HDL和C语言框架不同,虽然它们的语法内容相类似,但导致编程思想存在本质上的不同。其中C语言是基于过程的高级语言,编译通过之后生成可执行文件即可运行在CPU上。然而Verilog HDL或VHDL语言则是用于描述硬件门电路及其结构,通过综合后形成硬件电路,独立于CPU架构。虽然大部分的Verilog HDL语句都可被综合生成对应的硬件电路,但仍存在一定的特例,例如:动态内存分配和数组长度不固定等情况。同样,如果以C语言的思想编写描述硬件电路,则可能会导致设计结果的不正确、浪费资源甚至综合错误等一系列不可预知的情况出现。
同步设计原则主要用于确保设计实现的电路时序稳定。在FPGA架构下存在同步电路和异步电路两个基本的电路结构形式。同步设计电路的核心由边缘触发器(Flip-flop)构成,该元器件在时钟边缘时出发,能有效地稳定电路时序,避免毛刺对系统的影响。
面积与速度互换原则是FPGA设计实现中需要重点考量的部分。此处面积是指设计实现某一算法时FPGA占用的逻辑资源、存储资源和I/O资源等芯片资源情况。而速度则是指FPGA在最高频率情况下执行实现的组合逻辑模块所占用的时钟延迟。以最小的面积设计出最高运行频率的算法模块是开发设计人员所追求的目标。但在现实中是不可兼得的。因此,需要在速度和面积上进行平衡和取舍。面积换速度则主要是并行处理通过面积的复制从而提高逻辑电路的运行速度;而速度换面积则是在牺牲一定的执行效率的前提下,使用流水线的方式以降低资源的占用。
2.2算法特性分析原则
虽然FPGA能极大地提升算法的执行速度,有效地满足实时性应用的需求。然而,并非所有的算法都适合实现在FPGA架构下。大部分可实现在FPGA架构下的算法通常应满足局部性、规整性和重复性这三大原则。其中局部性是使用FPGA加速的必要条件,如果不能满足较好的满足局部性,则可能导致算法无法有效地并行加速。同时会消耗大量的逻辑硬件资源,使得FPGA架构下的硬件实现结果与软件实现结果相比毫无优势。而规整性算法则是要求算法中的计算是可拆分的,即算法每个操作均可拆分为相对简单的有限个步骤。当算法中存在大量复杂的计算或操作时,将不利于流水线或并行设计的实现。重复性原则是要求算法尽量需要重复的计算或是执行某一个操作。这一原则使得FPGA架构下实现的硬件算法相对于纯软件实现有极大地提升。同样,如果算法并不具备该原则无需使用FPGA进行加速实现。
2.3结构优化
当一个算法无法满足局部性、规整性或重复性这三个原则时,则需要对当前算法结构进行重新设计优化,优化后的算法应尽量满足上述原则。针对算法优化提出等效优化和近似优化两种优化方法。
等效优化是指算法在优化前后输出结果完全一致,唯一不同的是优化后的结构满足局部可计算性、规整性和重复性等特点,适合FPGA进行加速。主要是消除各个模块间的依赖关系,提高并行度。近似优化则是是对算法进行改造,消除模块间计算依赖性、打破全局计算依赖性,使得算法中各个模块能够有效地拆分成简单的操作或计算,以便于实现并行或者流水操作,但经过近似优化后的算法与原始算法并不等效。
2.4硬件选型及主要开发软件介绍
FPGA是在复杂可编程逻辑器件(Complex Programmable Logic Device,简称CPLD)、可编程阵列逻辑(Programmable Array Logic,简称PAL)等基础上进一步发展的半定制电路。它通过将门电路和存储器有机结合并设计实现门电路间互联,克服了定制电路存在的不足,同时解决了原有可编程逻辑器件的缺点。相对于专用电路(ApplicationSpecific Integrated Circuit,简称ASIC)而言,FPGA可根据用户或功能需要对电路进行重新编程设计。非冯诺依曼架构的FPGA在运算单元和存储单元间的信息交换量相对降低,具有流水处理和响应迅速的特点。同时FPGA开发过程中不涉及布线、掩模和流片等步骤,使得其开发周期相较于图形处理器(Graphics Processing Unit,简称GPU)、ASIC而言较短,从而降低了研发费用。
目前全球知名FPGA生产厂家有赛灵思(Xilinx)、阿尔特拉(Altera)、美高森美(Microsemi)、莱迪斯(Lattice)、爱特梅尔(Atmel)和安华高(Avago),以上几家企业握有大部分的FPGA专利,同时垄断了98%以上的市场份额[67]。其中,赛灵思公司作为FPGA和可编程片上系统SoC的发明者,拥有一系列FPGA产品,如:Spartan、Artix、Kintex、Virtex及MPSoC等。其中尤为突出的是Zynq UltraScale+MPSoC系列的FPGA,该产品通过嵌入ARMCortex系列CPU,将软硬件相结合,逐渐成为目前最热门的嵌入式FPGA芯片产品。
本发明选用赛灵思公司的MPSoC系列XCZU9EG-2FFVB1156E(本发明简称ZU9EG)开发板;该开发板搭载四核
Figure SMS_31
Cortex-A53、双核Cortex-R5实时处理器及Mali-400MP2图像处单元。除此之外,该开发板还支持各类常用的外设接口,如高速存储器接口、FMC扩展端口、串行收发器接口、光通信接口、千兆以太网接口及其他多用途接口(MIO)等,为用户定制设计FPGA逻辑提供了灵活的原型设计平台。表3列出了ZU9EG中可用资源的简要描述。
针对当前开发板,本发明选用赛灵思公司提供的
Figure SMS_32
Design Suite集成开发工具开发实现算法。由于Vivado允许将C/C++语言直接综合为寄存器转换级电路(RegisterTransfer Level,简称RTL电路)并打包生成IP核,从而缩短验证、实验和设计收敛点的开发周期,更有助于解决复杂图像处理问题。除此之外,该集成开发工具包还包括自定义模块设计、模块集成、电路设计验证、时序验证等功能。开发人员设计通过使用Verilog HDL描述时序电路。集成算法模块,综合生成逻辑电路配置到目标开发板上。同时,该工具中还拥有时序电路逻辑仿真器、资源能耗监控器、波形查看器用于确定生成的逻辑电路的具体情况。
表3 Zynq UltraScale+MPSoC ZCU9EG开发板可用资源
Figure SMS_33
2.5基于ZU9EG机器人导航算法的总体设计
基于ZU9EG FPGA的田间机器人导航算法从顶层上可分为三层:硬件外设层、操作系统内核层和应用程序层,如图14所示。硬件外设层主要由处理器系统(ProcessingSystem,简称PS)、可编程逻辑(Programmable logic,简称PL)及与其相连的外设组成。其中PL端主要用于实现与高清多媒体接口(High Definition Multimedia Interface,简称HDMI)显示器的连接和控制模块,及本发明设计和优化的重点内容——图像预处理模块、田间垄线检测模块及导航参数提取模块,而PS端则是实现对USB相机的连接。操作系统层则主要是开启内核中的Video4Linux2(简称V4L2)驱动模块和用户接口(User Interface,简称UIO)模块,分别用于控制相机数据传输和硬件加速模块的调用。图14中最顶层为应用程序层,用于展示最终的图像处理结果。
在Linux中,所有外部设备均以文件形式访问,这些文件统称为“设备文件”。同样,视频采集设备在Linux系统中也是设备文件,可读写普通文件的方式对其进行操作。Linux系统下相机设备可通过/dev/video*文件进行访问。
为了便于操作视频设备,Linux系统提出V4L2驱动框架启动图像、视频音频采集设备以实现对图像、视频或音频等数据的采集。V4L2规范中不仅定义了通用的API接口、图像的格式、输入输出的方法,还定义了处理数据的一系列接口。V4L2支持两种方式采集图像,一种是支持用于连续视频数据采集的内存映射方式(mmap),另一种是实现静态图像数据采集的直接读取方式(read)。
一般的,V4L2接口设备采集视频或图像数据时需要五个步骤,首先打开设备,查询设备信息并设置图像的采集格式,之后申请若干个缓冲区,并将缓冲区映射到用户空间便于用户访问缓冲区,然后将缓冲区插入采集驶入队列,启动设备开始采集图像,取出帧缓存区中数据,处理完后重新插入队列,循环往复采集图像数据。最后停止采集并关闭设备,如图15为V4L2驱动程序具体的操作流程。
大多数驱动设备都是运行在Linux内核空间,而对于部分设备无法划分到已有的设备中,如视频处理卡、现场总线接口或定制的FPGA。为了便于内核维护Linux系统将上述设备实例为字符型设备,并要求用户根据设备的需要在用户空间定制该设备的驱动。当系统内核发生变化时,不需要更改UIO框架上的驱动文件即可使用。同时UIO接口的编写可选用C++,JAVA等高级语言开发,极大的提高开发的速度并降低了开发的成本。图16展示了UIO驱动,用户空间及内核之间的关系。
图17展示了逻辑功能和数据在PS和PL端的变换和流向。图像缓存区配置主要为了配置视频直接内存访问(Video Direct Memory Access,简称VDMA)模块,控制和确定图像的缓存帧数。其中,VDMA模块可将数据流(AXI Stream)格式转换为寄存器读取(MemoryMap)格式,或将Memory Map格式转换为AXI Stream数据流。同时,该模块包括写入图像端S2MM和读出图像端MM2S两个端口,为从外部DDR存储器中搬运数据提供了一种便捷的方法。图17中虚线表示的是配置图像控制控制信息,通过V4L2 USB驱动控制VDMA模块将与PS直接相连的USB网络相机中的图像数据存储的DDR寄存器中。当图像数据存储到DDR后,则可启动打包完成的硬件IP核模块对捕获到的图像数据进行处理,并将处理得到的结果存入DDR寄存器中。最后,通过图像显示管理模块控制FPGA下实现的图像显示模块,该模块主要用于生成HDMI显示时序,将接收到的RGB三通道数据以该时序将之前处理得到的图像结果数据送到HDMI显示端口并显示。
图18展示了整体算法模块的框架结构。图中浅粉色方框为ZU9EG FPGA内部搭载的ARM Cortex A9的CPU,通过搭建裁剪后的Linux内核并启动V4L2视频控制驱动,实现对USB相机的控制。图中DDR寄存器与ARM CPU直接相连,因此在PS端的ARM CPU可直接访问DDR寄存器。而PL端访问DDR寄存器则需要通过高级微控制器总线结构(AdvancedMicrocontroller Bus Architecture,简称AMBA)实现。AMBA是由ARM公司提出的便于控制器访问其他芯片的协议,这里赛灵思公司通过该结构实现PL端访问DDR寄存器和PS与PL端交互。为了将控制命令和数据分离,使用AXI_HP和AXI Stream总线协议实现。其中,AXI_HP用于传输控制命令,而AXI Stream用于图像数据。同时还提供了一个通用总线协议AXI_GP。上述三种总线协议均连接到AXI内部互联结构(也可称为AXI interconnect)上,该结构为PS和PL交互提供了低延时、高吞吐量和缓存一致性的解决方案。为了便于实现算法的加速,将田间机器人导航算法分为三个部分:图像预处理、田间垄线检测和导航参数提取模块,如图18中浅灰色背景的方块内所示。
图19给出了本发明所设计的田间机器人导航算法架构中的主要模块和模块间的互联关系,同时各个模块与中所介绍的算法基本步骤一一对应。下面将介绍各个模块的具体功能。
图像预处理模块:主要实现将采集到的彩色田间作物与背景图像进行分割。首先计算图像的绿度和阈值,并依据该阈值达到分割图像中绿色作物的效果。同时实现中值滤波方法对图像噪声的滤除。
图像存储模块:主要实现将二值图像存储到块随机存取存储器(block randomaccess memory,简称BRAM)中。
田间垄线检测模块:主要由密度计算、第一条垄线计算和第二条垄线计算三个部分组成。通过从BRAM中查找当前确定的直线上对应点的像素情况计算的得到当前像素点的密度信息。通过密度信息计算确定田间垄线的位置。
导航参数提取模块:将田间垄线检测模块计算得到的垄线位置和角度信息作为输入,通过该模块计算得到下一步机器人行走的导航参数。
整体设计模块中需要对HDMI显示端口进行控制,同时,在ZU9EG开发板上包含一个双向的HDMI端口。该端口直接与PL端相连接,主要由PL端传输图像数据和图像显示时序。为了将最终的处理结果显示到HDMI显示器上,本发明主要介绍在PL端产生HDMI图像时序信号及图像数据信号。其中,HDMI显示原理与数字视频接口(Digital Visual Interface,简称DVI)显示原理基本相同。主要采用最小化传输差分信号(Transition MinimizedDifferential Signaling,简称TDMS)实现,该信号主要用于在保证图像画质的前提下,提高图像数据传输过程中的稳定性。对于PL端实现HDMI显示管理,主要将从PL端接收24位彩色图像信号及对应的图像时序信号转化为10位最小差分信号及其对应的时序信号送到HDMI显示屏上显示。为了便于实现对图像数据的显示,ZU9EG提供了ADV7511芯片专门用于将图像数据和对应的图像时序信号转化为差分信号。因此,对于ZU9EG开发板实现HDMI显示仅需要在PL端设计和实现图像的数据产生和时序的确定。如图20展示了具体的图像显示基本操作流程。首先通过PS端配置和启用ADV7511芯片,使其开始工作。之后,在PL端将生成的图像数据和时序送入ADV7511芯片,最后,将得到的差分信号用于HDMI显示。
主要包括三个部分:(1)介绍在FPGA架构进行硬件加速方法和原则;(2)确定FPGA芯片类型、软件设计开发平台及相机的型号;(3)阐述实现田间机器人导航算法的FPGA硬件平台的整体框架并介绍整个框架中各个模块的具体功能。在介绍整体框架的同时详细地描述了算法的整体架构,同时介绍了数据在PS端和PL端的流向及PS端和PL端间的交互方法。第四章FPGA实现图像预处理和田间垄线检测算法。
田间垄线检测算法主要用于检测作物垄线信息,用于机器人控制。在普通PC机上实现田垄检测算法时,虽然作物检测结果十分准确但算法运行时间相对较长。随着图像分辨率的提高,图像处理所需的时间逐渐增大。例如中提到,对于处理器主频3.4GHz,内存6G的PC机而言,处理一幅全高清图像需要大约6分钟。这限制了该算法应用于机器人导航等实时性应用场景中。因此,基于田间垄线检测算法实时性的问题,本发明根据FPGA内部流水线和并行技术在FPGA上实现所提出的优化后的田间垄线检测算法,并阐述在FPGA架构下实现该算法的具体过程。为了提高田间垄线检测算法的准确性,对采集到的田间作物图像进行预处理。因此,本发明先对图像预处理阶段FPGA实现过程进行描述。然后,阐述田间垄线检测算法的具体实现过程,最后,讨论硬件实现的算法模块的准确性、实时性及资源利用率等情况。
2.6图像预处理模块
参照FPGA加速方法并结合FPGA的流水线特性,本发明将阈值计算拆分成两个部分:一部分通过遍历整幅图像后确定图像的阈值信息;另一部分则将之前确定的阈值应用于分割当前图像。因此,图像预处理则可分为两个小模块实现,一个模块用于实现绿度计算和阈值计算,另一模块则用于实现作物分割和中值滤波操作,图像预处理模块对应的具体模块框架如图21所示。
2.7绿度计算和阈值计算模块
绿度计算和阈值计算模块主要用于实现对图像阈值的确定。同时为了实现对该模块的得加速,主要采用并行架构完成对图像的处理过程。首先通过VDMA的MM2S将图像数据以数据流的方式从DDR寄存器中读出,即每次仅读取一个数据宽度为32位的图像数据。读取到的32位图像数据在绿度计算和阈值计算模块中,分割为红、绿、蓝和透明度α四个灰度通道分量。之后,将红、绿、蓝通道的灰度值进行线性变换计算得到当前像素点增强绿色通道的灰度图。其中,绿色通道的灰度值需要乘2操作,在FPGA上实现乘法操作会占用大量的资源。为了降低资源的利用率,本发明选用移位运算器替换乘法器,并保证了算法的准确性。在遍历整幅图像计算增强后图像灰度值的同时,统计图像中所有像素点的灰度值在0-255范围内的分布情况,从而形成当前图像的灰度直方图。之后,通过计算得到当前图像的阈值信息。具体的并行处理流程如图22所示。
2.8作物分割和中值滤波模块
当计算得到当前图像的阈值信息后,将阈值作用于上一模块得到的灰度图像中分割出图像中的绿色作物,并对图像中存在的噪声进行滤除是本模块主要实现的步骤。本模块中图像像素点读取和图像像素点存储可细分为四个步骤,且每个步骤之间相互独立;同时数据流向不包含迭代或反馈,为单向的。因此,采用并行流水线架构提高该模块运行速率是有效方法,如图23所示。
同时,由于本模块中采用中值滤波滤除图像中的噪声,中值滤波操作需要对图像进行卷积操作。由于FPGA所提供资源较少,并不能像基于CPU架构或GPU架构的图像处理方法一样,将待处理的图像全部存储。FPGA采用流数据的形式读取图像数据,读取数据的过程中需要按照从左到右自上而下的方式读取。同时流数据也不支持随机读取、逆向读取。因此,窗口处理是本模块的核心问题。故本发明提出行缓存和窗口缓存机制实现中值滤波方法。缓冲区是由FPGA中的BRAM实现的,主要是将接收到的数据缓存到本地实现对图像数据的随机读取操作。
图24展示了行缓存区缓存图像数据的示意图。由于中值滤波方法需要用到5×5的滤波窗口,因此行缓存区的宽度为5,长度为图像宽度1920。未读入数据时,行缓存区为空白如图24(a)所示。之后,读取图像数据流从左向右依次存入缓存区。当缓存完一行数据后,第二行数据列会复制第一行数据列的值如中图25(a)所示。当全部五行数据全部缓存完成如中图25(b)所示。当行缓存区满时数据会复制到滑动窗口中,这即可保证在一个时钟周期内同时读取25个像素数据,并于下一个时钟周期同时计算它们。当完成当前窗口中的像素值处理后,整个滑动窗口向右移动一个像素,同时,行缓存中上一像素被下一行像素替代。
中值滤波操作核心是滤波窗口中的数据进行排序,找到当前窗口中所有数据的中值作为当前窗口的结果。由于处理的是二值图像,因此将原有的中值滤波操作转化为将滑动窗口中每一行数据相加,再将每一行相加后的结果相加与阈值(窗口大小的一半)比较,最终得到当前窗口下的中值滤波结果。图26展示了具体的中值滤波处理部分的详细结构图。
2.9田间垄线检测方法
田间垄线检测方法主要由密度计算、第一条垄线计算和第二条垄线计算三个部分组成。由于FPGA架构实现过程不同于基于PC机架构,因此在FPGA架构下将田间垄线检测方法分为密度和第一条垄线中心线检测模块、第一条垄线边界检测、最近垄线检测及第二条垄线检测计算四个部分。每个模块内采用流水线架构完成,且模块间则采用串行实现。田间垄线检测方法具体的模块框架如图27所示。由于第一、二条垄线边界检测的限制条件相同,因此本发明只介绍密度和第一条垄线中心线检测模块、第一条垄线边界检测、最近垄线检测这三个模块的设计过程。
密度计算和垄线中心线检测模块
密度计算和垄线中心线检测模块主要检测当前图像中的密度信息及获取图像中的垄线信息。在该模块中,实现数据存储是算法中的基础工作,而准确的计算出密度是整个模块的最终目标。由于FPGA中资源较少,无法满足存储一整幅每个像素点32位图像尺寸1920×1080全高清图像。计算垄线密度的过程中需要统计图像在当前候选直线上前景点的个数,因此必必须实现对图像的缓存以保证后期实现对图像数据的随机访问。因此本发明中存储图像数据是首要解决的问题。由于读入图像数据为二值图像,图像数据非0即1。根据图像的特性,本发明提出选用1位数据位而非8位数据位存储当前像素点的值,从而降低了存储资源。
当实现数据存储后,通过逐点统计过BL线上的像素点且与BL线夹角为45°-135°的直线上的非零点个数,同时计算这条直线上的点的总个数,通过将两个求得的个数相除即可确定当前角度下该点的密度值。在计算垄线密度的过程中还需要动态确定当前直线的上下端点,可明显发现在公式中包含浮点数四则运算和正切计算。然而FPGA架构对浮点数计算能力相对较弱,实现大量的复杂浮点数运算也会浪费大量的资源同时也会影响算法的整体运行速度。依据FPGA以空间换时间的原则,这里将正切运算转换为查找表的方式从而降低模块运算过程中的时间开销,而对于浮点数运算则采用缩短数据位的方式实现。根据已有的实验表明,缩短数据位宽可有效地降低综合后的电路的资源占用率并提升执行速率。
本发明为选取合适的像素位宽统计了计算垄线密度过程中浮点数位数与该方法综合后形成的电路资源利用率的变化曲线,如图28所示。结合图曲线分析,当位宽为18位精度,已可满足需求(其中包括8个整数位和个10小数位)。如果继续增大数据的位宽,实验表明,计算结果的精确度并没有较大的提升。为了平衡计算精度和硬件实现的资源占用情况,本发明将原有的32位双精度浮点(double类型)缩短为18位。
在计算BL像素点的最大密度的过程中,需要确定过当前像素点在不同角度构成的直线在图像的交点,具体的交点计算方法如式(2-8)到式(2-13)所示。图29展示了计算上下端点的具体步骤。将像素点在BL线上的位置及所构成直线对应角度作为整个模块的输入,模块中角度的正切值计算通过查表得到。同时采用并行计算的方式,计算得到当前输入像素点与图像上边缘和下边缘对应的交点。
当计算得到待检测直线的上下端点之后,即可通过统计当前直线上的像素点个数计算出该角度下像素点的密度信息。图29中BRAM中为存储二值图像对应的图像值。查表操作即从BRAM中查找当前确定的直线上对应点的像素情况。通过查表统计该直线上非零点的个数及直线上所有点的总个数。并通过除法器计算的得到当前像素点的密度信息。图30展示了图像中心线BL上所有像素点的最大密度的计算过程。
通过图30并行计算BL线上所有像素点的最大密度及最大密度对应的角度,之后将所有的最大密度值输入比较器选择出所有像素点中最大的密度值作为第一条垄线的中心线。同时,将该密度对应的角度作为第一条垄线中心线的角度。第一条垄线中心线检测过程中所有像素点及该像素点对应的90个不同角度下的密度计算均为并行实现。其中,图31详细描述了检测得到第一条垄线具体框架结构。
第一条垄线边界检测模块
计算得到第一条垄线后,本发明主要通过第一条垄线位置获取当前第一条垄线的左右边界线以提取垄线导航线。根据优化后的垄线检测方法,垄线约束角度范围无需选用复杂的公式计算,只需要将第一条垄线求得的角度通过加法器和减法器计算得到。
在确定了左、右垄线边界约束角度后,开始设计垄线边界检测模块。整个模块中垄线边界检测过程主要是以垄线中心线为中心,同时向左、右两侧按已确定的约束角度查找当前像素点中的密度信息,将查找到的密度值通过选择比较器进行比较,选出大于平均密度且密度值最小的密度对应的位置及角度作为左、右边界信息。这一过程中,左、右两侧密度的查找和比较是通过并行实现的,具体框架结构如图32所示。
第二条垄线中心线计算模块
当获得第一条垄线的左右边界垄线后,可通过边界垄线在BL线上的位置差值进一步获取当前图像的垄线宽度如式(2-22)所示。通过密度信息、垄线宽度和第一条垄线左、右边界线及其角度可确定第二条垄线信息。根据文献得知:1)两个垄线中心线的距离必定大于垄线宽度;2)垄线边缘到第二条垄线的距离必定大于垄线间隔的一半[54]。在检测第二条垄线中心线之前,需要判断第一条垄线边缘线在图像的位置情况以此测估第二条垄线在图像中的位置。确定第一条垄线在图中的位置后,如果第一条垄线位于图像的左半部分,则选用第一条垄线右边界加上垄线间隔的一半
Figure SMS_34
作为第二条垄线检测的起始点,否则选用第一条垄线的左边界减去/>
Figure SMS_35
作为起点。之后,向左或向右找到最临近的密度峰值中心,该峰值中心对应的位置为第二条垄线与BL线的交点。第二条垄线中心线检测模块具体框架图如图33表示。最后,按照图34框架图中展示的方法获得第二条垄线的边界。
下面结合实验对本发明的就是效果作详细的描述。
1、实验结果分析,为了评估算法实现情况,本发明从以下三个方面对硬件实现的算法进行评估。首先选用已有测试集分别测试图像预处理和田间垄线识别方法,并对实现结果进行评估。然后分析所实现方法的资源占用率情况,最后将实现的方法同纯软件实现进行对比分析。
1.1精度评估
本发明选用大量拍摄于大棚和室外的田间作物图像分别验证图像预处理模块和田间垄线检测模块,如图35所示。图35包含三行图像,第一行为原始作物图像,第二行为人工标注的真图,第三行为经过硬件实现的图像预处理结果。其中前三幅作物图像是温室内种植的草莓作物,依据光照情况不同,可分为三种:正常光照下作物图像,第二幅作物叶片呈鲜暗色,第三幅作物叶片出现反光情况,在这三种情况下,本发明实现的结果与标准真值(GT)图像基本相同,只是在作物出现反光情况下,图像预处理结果不太理想但并不影响实际效果。之后的五幅图像是在室外采集得到的。其中中间三幅为甜菜,依据光照情况可分解为晴天和阴天两种,在这两种情况下,其实验结果与人工标注的真图基本一致。依据处理结果,可发现在提升速度的同时并未降低对图像获取的准确性。除此之外,在室外采集图像中,本发明还挑选了一些比较典型的图像,如图35第一行的第六幅图像,该图像拍摄于阴天并且因为相机运动使得图像成像模糊,但通过图像预处理方法依旧可实现对图像中作物的检测。第七幅图像为室外环境下拍摄的白菜作物。由于白菜叶片较大,在图像中阴影和反光相对较多,通过本发明预处理方法,但仍能较好的检测到作物。最后一幅为室外拍摄的小麦。该拍摄场景中包含大量非作物如:出租车,行人和远方的树。实验结果表明,通过图像预处理方法,目标作物能够很好地被识别,且田间垄线检测算法也能较准确地获得当前图像的垄线信息。
同样,本发明选用不同垄线疏密的图像对田间垄线检测结果进行分析,如图35所示。图像中包含三行,其中第一行为原始作物图像,第二行为不采用Logistic回归软件实现结果,而第三行则是基于FPGA硬件设计实现的田间垄线检测模块的结果,同时图中标记出所有相关垄线位置。由对比结果可看出,对于部分图像中的结果比不采用Logistic回归的垄线检测结果好,如图35中b,c所示。
为了能定量分析田间作物预处理结果,本发明使用常见的精确率(precision),召回率(recall)及F得分(F-score)三个指标,如式(4-1)、(4-2)和(4-3)所示,评判图像预处理结果的准确度[72]。式中TP为正确分类像素点个数,FP是负样本但判定为正样本的像素个数。FN则是应为正样本但判定为负样本的像素个数。本次实验中使用了300幅,具体如图35第一行所展示的原始图像,在照明条件不好的条件下获得的图像大约占整体的10%。作物分割方法与理想情况如图35中b,d所示,此时的系统对作物识别率可达到91.1%,然而对于低光照、叶片反光或有大量噪声的情况,如图35中e,g,h,仍可达到80.8%。
Figure SMS_36
Figure SMS_37
Figure SMS_38
表4图像预处理过程在图像数据集中的结果准确率
Figure SMS_39
1.2资源利用率
在赛灵思ZU9EG的SoC-FPGA上基于Vivado工具包采用C/C++与Verilog HDL混合编程实现图像预处理,其实现在图37所示的硬件架构上。表5和表6列出图像分辨率为1920×1080时图像预处理算法的资源利用率。从表中可看出,图像预处理方法中绿度计算和阈值计算模块占用了1293个触发器(FF)和2353个查找表(LUT),而作物分割和中值滤波模块则占用了1531个FF,2273个LUT,同时采用4kb个BRAM实现中值滤波方法中的行缓存结构。而对于田间垄线检测方法共占用了11377个FF,16634个LUT及46kb的BRAM。实验结果表明,本发明设计并实现的图像预处理和田间垄线检测算法模块占用了较少的资源。
表5图像预处理模块各部分资源占用率
Figure SMS_40
表6田间垄线检测模块各部分资源占用率
Figure SMS_41
/>
Figure SMS_42
1.3性能评估
由于现有工作中并没有学者提出或实现基于FPGA架构的田间垄线检测方法的相关工作,因此,本发明将基于硬件设计实现的图像预处理方法和田间垄线检测模块与基于OpenCV库函数的普通PC机以单线程和16线程进行对比。其中PC机搭载Intel i3-21303.4GHz双核处理器,且内存容量为6GB。表7列出了本发明所采用硬件实现和纯软件实现所花费时间的平均结果。在单线程情况下,处理分辨率为1920×1080图像实现图像预处理和田间垄线检测算法平均用时158.2ms和22930.5ms,而采用多线程实现时分别用时98.3ms和10370.8ms。对于硬件实现图像预处理和田间垄线检测算法仅用时16.0ms和210.8ms。同时表7还测试了在不同图像分辨率情况下的运行情况。在CPU架构下,随着分辨率的增长处理时间也呈倍数的增长。如分辨率为1920×1080的运行速度是640×480的3倍。虽然硬件处理时间也随着分辨率增大而增长,但本发明实现的硬件实现结果仍快于PC机的处理时间为单线程和的10倍和108倍及16线程的6倍和50倍。
表7图像预处理和田间垄线检测模块与纯软件实现结果对比
Figure SMS_43
本发明提出一种实时基于FPGA的图像预处理和田间垄线检测方法,它能够以60帧每秒的速度对图像进行预处理,并以210ms处理一帧分辨率为1920×1080的图像,并计算出垄线的具体位置。同时,所得到的结果与真值和纯软件实现结果基本一致。同时实验结果表明,本发明提出的基于FPGA架构的图像预处理方法和田间垄线检测方法在不影响整体算法精度的过程中极大地提升了算法的处理速度。
下面结合具体实施例对本发明的技术方案作进一步的描述。
导航参数信息是用于控制机器人行走的重要依据。本发明详细介绍了FPGA上实现检测作物垄线信息的田间垄线检测算法的步骤与方法。为了完善田间机器人导航算法框架结构,本发明在FPGA上实现机器人导航参数提取。首先简要介绍视觉导航模型,确定所需导航参数信息。之后,硬件实现基于视觉的导航参数提取模块。最后,对硬件实现的算法模块在准确率、运行速度和资源占用情况进行分析。
1、田间机器人控制策略
图36中矩形为相机拍摄所得田间作物垄图像,其中O为图像平面的中心位置,L为图像中垄线所在位置。此时,以O为坐标原点建立图像坐标系。其中,L与x轴相交,且与x轴所成夹角(后简称为垄线角度)为θ,同时该直线与y轴夹角为α,这里称之为偏航角。设垄线与x轴的交点坐标为(x,y),则该交点与图像平面中心点的距离为d,该距离称为偏航距离。偏航角和偏航距离即为控制机器人行走的重要导航参数。当垄线在中心位置左侧时,垄线角度为小于90°的锐角,而当垄线位于中心位置右侧,则垄线角度为钝角。在已知垄线的位置信息和垄线角度时,导航参数的计算可通过式(5-1)和(5-2)得到。
d=x-xo (5-1)
Figure SMS_44
根据图36导航模型计算得到的田间机器人行走的导航参数d和α后,通过计算导航参数与阈值的变化情况,即可确定当前机器人的下一步动作。机器人下一步动作可分为以下几种状态。
1)直线行驶状态;当导航参数满足式(5-4)和(5-4)时,此时所求导航线和导航角度在阈值范围内,即田间机器人前进方向与所求导航线的延伸方向一致,因此应维持机器人按当前方向继续行走。
|d|<dt (5-3)
Figure SMS_45
2)左、右急转状态;当满足式(5-5)和式(5-6)时,田间机器人的行走方向与导航线方向、角度的存在偏差较大。为了防止碾压作物,机器人应立即停止行进,并以较大转向角度向左或向右转向。
(d<-dt)∩(α<-αt) (5-5)
(d>dt)∩(α>αt) (5-6)
3)左、右转向状态;当满足式(5-7)和式(5-8)时,田间机器人行走方向与导航线向产生较小偏差。由于所求得导航参数d与α偏离阈值较小,此时机器人的转向曲率较小。因此可在保持向前行走的同时向左或向右转弯。
(d<-dt)∩(-αt<α<0) (5-7)
(d>dt)∩(0<α<αt) (5-8)
2、田间机器人导航参数提取模块硬件设计
提取导航参数主要是将田间垄线检测算法检测到的垄线参数转换为机器人导航控制参数。田间机器人导航参数提取模块主要由田间垄线检测方法主要由偏航角和偏航距离计算模块和机器人控制参数计算两个模块组成。田间机器人导航参数提取模块框架图如图37所示。首先将垄线信息作为整个模块的输入,通过偏航距离和偏航角度计算得到当前时刻机器人与导航线的偏航距离和偏航角。同时将偏航距离和偏航角与阈值进行比较最终确定机器人的导航参数和下一步动作。
偏航距离和偏航角计算模块
当计算得到垄线位置信息和角度信息后,本发明将利用上述垄线信息计算得到机器人的偏航距离和偏航角度。由于图像尺寸已确定,故图像中心点的位置也确定。根据式(5-1),本发明选用减法器将垄线位置信息和中心像素点相减得到机器人的偏航距离。之后,根据式(5-2)计算当前偏航角。当垄线角度为锐角时,偏航角为垄线角度加90°。而垄线角度为钝角时,偏航角为垄线角度减90°。因此选用本发明选用加法器和减法器实现对垄线偏航角的计算,同时选用比较器实现对不同情况下的偏航角度的选择。在整个模块中,偏航角和偏航距离计算为并行实现方式。具体计算框架结构图如图38所示。
机器人控制参数计算模块
当获得偏航角和偏航距离后,可通过偏航角和偏航距离与其对应的阈值的差值判断机器人行走策略,即确定机器人应保持直行、转弯或者急转弯。在FPGA中实现机器人控制参数计算模块主要用到了大量的比较器,通过比较当前偏航角度和阈值大小,将当前的偏航角度和偏航距离及机器人的控制策略作为整个模块的输出。图39详细的介绍了机器人控制参数模块框架结构。
同时,本发明为了便于设计和实现机器人控制策略,将控制策略分别用3位表示,其中,000代表直行,001代表左转,011为右转,100表示向左急转,110则表示向右急转,而111则表示机器人停止行走。整个模块的状态转化图40所示。
3、田间机器人导航参数提取模块实验结果分析
为了评估本发明对于田间机器人导航参数提取的实现情况,本发明从以下三个方面对提取到的参数进行评估。首先将本发明提取到的田间机器人导航参数与在PC机架构上提取得到的导航参数进行对比,分析两种实现方法在精度上的差异。然后分析硬件实现的模块占用的资源利用率,最后将本发明实现的田间机器人导航参数提取模块与软件实现的时间消耗情况进行对比。
4、田间机器人导航参数模块实现精度
本发明将机器人垄线信息作为导航参数模块的输入,验证并分析硬件模块实现结果的精度。经过田间机器人导航参数提取模块的提取到的导航参数结果如表8所示。表中展示了部分测试结果,其中典型的田间作物垄线图像,如图41所示。表中偏航角的单位为度,偏航距离的单位为像素。以上八幅图像分别对应表中前八幅图像分别在软件和硬件上计算得到的偏航角及偏航距离参数。
表8软、硬件导航参数提取实现精度对比
Figure SMS_46
表8中统计了在软件和硬件上对同样的田间垄线图像分别计算偏航角和偏航距离的结果。其中,软件检测垄线信息是使用非Logistic回归方式计算,而硬件检测垄线结果则是采用本发明优化后的田间垄线检测方法。同时在计算得到垄线结果后分别在软件和硬件上计算对应垄线信息的偏航角和偏航距离。通过表8可看出,软件实现结果与硬件实现结果存在细微的差异,但计算得到的偏航角差值在1°之内,而偏航距离的差异在5个像素范围之间。表中标签为3、10和22的图像,对应的硬件处理结果和软件结果存在较大的差异,这是由于软件实现过程中,采用非Logistic回归方法计算的得到的垄线结果出错,而采用优化后的垄线检测方法的硬件实现结果正确造成的。
田间机器人导航参数提取模块的资源占用情况
选用Vivado开发工具包作为软件开发平台,并使用C语言和Verilog HDL混合编程实现了田间机器人导航参数提取方法并将模块实现在FPGA开发板上。表9列出了基于FPGA架构实现机器人导航参数提取模块所占用的硬件资源情况。由于模块实现过程中仅用到了数据选择器、加法器和减法器,因此,整个模块的资源占用率相对较低,同时并未占用BRAM缓存数据。从表中可看出,田间机器人导航参数提取模块占用了1013个LUT查找表,372个触发器。表中大量的查找表资源被应用于构建模块的接口部分。同时,本发明所实现的田间机器人导航参数提取模块仅用时83ns。
表9导航参数提取模块资源占用情况
Figure SMS_47
本发明实现了基于FPGA的田间机器人导航参数提取模块。将田间垄线检测算法模块中得到的垄线和垄线夹角作为输入,通过导航参数提取模块得到用于控制机器人行走的导航角和导航线。实验结果表明,在FPGA上实现导航参数模块与软件实现结果相比,硬件模块能够快速并准确的计算出导航参数(偏航角和偏航距离)。同时在FPGA上实现田间机器人导航参数模块,更完善了基于FPGA的田间机器人导航算法。
为了满足田间机器人导航算法在实时性上的需求,本发明主要提出基于FPGA的实时田间机器人视觉导航算法架构的设计与实现。本发明将田间机器人导航算法拆分为图像预处理、田间垄线检测和田间机器人导航参数提取这三个基本步骤并实现。通过分析软件实现算法的情况,有针对性展开研究基于FPGA的实时田间机器人导航算法架构,并在FPGA上设计、实现并优化该算法。本发明的主要研究成果包括以下内容:
首先,本发明展开介绍了田间机器人导航算法的理论基础,并提出对原有算法的优化。(1)介绍了田间垄线模型,了解并掌握垄线结构及相关先验知识。(2)阐述了基于FPGA的加速方法和优化原则,并将该方法和原则作为后期对算法优化的依据。(3)确定了本发明所用到的硬件设备及相关开发工具,同时,确定了机器人导航算法中所涉及的相关算法,并介绍各个算法的具体实现原理。(4)分析田间机器人导航算法中各个部分在软件实现性能上的不足,并有针对性的提出基于已有田间垄线检测算法的优化方法。优化后的算法相比于原有算法正确率提升了25.1%。
其次,本发明提出基于FPGA的田间机器人导航算法的整体架构,明确了每个算法功能模块具体要实现的功能和目的,详细介绍了各个模块间通信的方法,并阐述实现各个模块通信所用到的相关技术。算法的整体架构采用并行流水线技术实现。通过这一系列优化策略,使得整个田间机器人导航算法满足实时性要求。
然后,本发明详细介绍了上述架构中图像预处理和田间垄线检测部分的FPGA实现。由于实现过程中采用并行流水线架构,所实现方法在分辨率为1920×1080图像尺寸下仅用时16ms和210ms,相对于16线程下软件实现所耗费时间的6倍和50倍。通过提高算法运行时间,增加模块并行度,以满足图像处理实时性要求。在满足实时性要求的同时,本发明实现结果与真值(或软件实现结果)对比并没有明显的退化。
最后,本发明实现了FPGA下的田间机器人导航参数提取。所得导航参数与软件实现结果对比,根据实验结果表明,本发明实现的田间机器人导航参数提取方法具有一定的准确性,同时满足实时性要求,且在大量的实验结果中均能证明算法的有效性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种基于FPGA的实时田间机器人视觉导航方法,其特征在于,所述基于FPGA的实时田间机器人视觉导航方法包括以下步骤:
第一步,将获取到的田间图像通过图像预处理分割出绿色作物;
第二步,检测田间作物垄线图像中的垄线信息,垄线信息包括两条垄线位置信息及两条垄线斜率;检测田间作物垄线信息中,使用田间垄线检测算法寻找最近的垄线,计算左、右边界垄线约束角度;当计算得到左右垄线边界线后,通过式计算出垄线宽度Lw,公式(2):
β-10≤θ≤β+10 (1);
Lw=rightBL-leftBL (2);
选择垄线角度、垄线宽度作为第二条垄线检测特征,检测田间图像中第二条垄线位置;首先确定第一条垄线在图像中的相对位置,然后预估第二条垄线的位置;当垄线位于整幅图像左侧,则选择垄线的右边界加垄线宽度的一半为起点,向右查找大于平均阈值且最小的密度信息作为第二条垄线;否则,采用垄线左边界减垄线宽度一半为起点检测垄线,具体如式(3)所示:
Figure FDA0004165689600000011
将第一条垄线及边界的角度和第一条垄线宽度作为第二条垄线检测判断条件,确定第二条垄线及垄线边界线的位置;
第三步,通过垄线信息计算提取机器人的导航信息,用于控制机器人行走;
所述第二步检测田间作物垄线图像中的垄线信息使用的田间垄线检测算法包括密度计算,第一条垄线检测及寻找第二条垄线检测;通过计算图像基线上每个像素点的密度,确定垄线的位置;具体包括:
1)密度计算,由两条角度约束线构成当前垄线对应的扇形区域,角度为θ时且过BL直线上的点(x,y)的直线为候选检测线,通过下面式(5)-(9)获得该直线同图像边缘的交点分别为(x0,y0)和(x1,y1);其中,width和height分别表示图像的长宽,θ为当前像素点对应的扇形角度,范围为[45°,135°];式(10)计算每个像素点在扇形区域的密度,其中Gi为过点(x,y)且角度为θ所构成的直线下非零像素点的个数,而Vi则是该直线上所有像素点个数:
temp0=(1-y)/tanθ+x (4);
Figure FDA0004165689600000021
Figure FDA0004165689600000022
temp1=(height-y)/tanθ+x (7);
Figure FDA0004165689600000023
Figure FDA0004165689600000024
Figure FDA0004165689600000025
2)将计算得到的每个BL线上的所有点的密度进行比较,找到全局最大点;全局最大点即对应第一条垄线中心线;从中心线沿着BL线左侧逐像素点移动,在搜索过程中,逐点比较每个像素点在约束角度范围内的密度,计算约束角度γ2式(11);计算左边界时约束角度式(12);而计算右边界时约束角度应满足公式(13);式中(x0,y0)和(x1,y1)分别为当前角度所构成的直线与图像边界的交点;与搜索垄线中心线不同的是,这次选择不大于平均密度ρ的最小密度值所对应的位置作为左边界,其中,通过统计图像中非零绿色作物像素点个数与图像中所有像素点的比值计算整幅图像的平均密度ρ,式(14):
Figure FDA0004165689600000031
max(π/4,γ2)y≤θ≤β (12);
β≤θ≤min(3π/4,γ2) (13);
Figure FDA0004165689600000032
3)寻找最近的垄线,将计算左、右边界垄线约束角度;当计算得到左右垄线边界线后,通过式(16)计算出垄线宽度Lw
β-10≤θ≤β+10 (15);
Lw=rightBL-leftBL (16);
选择垄线角度、垄线宽度作为第二条垄线检测特征,检测田间图像中第二条垄线位置;首先确定第一条垄线在图像中的相对位置,预估第二条垄线的位置情况;当垄线位于整幅图像左侧,则选择垄线的右边界加垄线宽度的一半为起点,向右查找大于平均阈值且最小的密度信息作为第二条垄线;否则,采用垄线左边界减垄线宽度一半为起点检测垄线,具体如式(17)所示:
Figure FDA0004165689600000041
将第一条垄线及边界的角度和第一条垄线宽度作为第二条垄线检测判断条件,确定第二条垄线及垄线边界线的位置。
2.如权利要求1所述的基于FPGA的实时田间机器人视觉导航方法,其特征在于,所述第一步的图像预处理包括:
1)超绿指数,选择ExG指数进行绿度识别增强图像中绿色作物,使用原始图像中红、绿、蓝三个通道的像素值线性求和计算得到,同时将原始的彩色图像转换为灰度图像,具体的计算过程式(18):
Figure FDA0004165689600000042
2)采用最大类间方差法Otsu,将图像分割为两个区域,通过不断地迭代统计各个区域的直方图信息,求出前景和背景间最大类间方差,最大类间方差对应的灰度值为最合适的分割阈值T;算法通过不断地迭代t,范围0-255,针对每个t均有方差σ2(t)和当前小于灰度值t的像素点个数与整幅图像中像素点总个数的比值ω(t);其中,阈值最大化前景和背景之间的类间方差可通过式(19)计算得到,当像素点对应的灰度值大于该阈值T时,则设该像素点值为1,反之则设为0:
Figure FDA0004165689600000043
3)选用中值滤波方法进行预处理,并设置中值滤波窗口大小为5×5,表示为式(20);其中,fi-k,L,fi,L,fi+k为滤波窗口中的像素值,f为滤波窗口中所有像素的中值:
f=med(fi-k,L,fi,L,fi+k) (20)。
3.如权利要求1所述的基于FPGA的实时田间机器人视觉导航方法,其特征在于,所述第三步通过垄线信息计算提取机器人的导航信息,用于控制机器人行走包括:O为图像平面的中心位置,L为图像中垄线所在位置,以O为坐标原点建立图像坐标系;其中,L与x轴相交,且与x轴所成夹角为θ,同时该直线与y轴夹角为α,这里称之为偏航角;垄线与x轴的交点坐标为(x,y),则该交点与图像平面中心点的距离为d,该距离称为偏航距离;偏航角和偏航距离即为控制机器人行走的重要导航参数;当垄线在中心位置左侧时,垄线角度为小于90°的锐角,而当垄线位于中心位置右侧,则垄线角度为钝角;在已知垄线的位置信息和垄线角度时,导航参数的计算可通过得到:
d=x-xo (21);
Figure FDA0004165689600000051
根据导航模型计算得到的田间机器人行走的导航参数d和α后,通过计算导航参数与阈值的变化情况,确定当前机器人的下一步动作。
4.如权利要求3所述的基于FPGA的实时田间机器人视觉导航方法,其特征在于,所述机器人下一步动作包括以下状态:
1)直线行驶状态;当导航参数满足式时,此时所求导航线和导航角度在阈值范围内,即田间机器人前进方向与所求导航线的延伸方向一致,因此应维持机器人按当前方向继续行走:
|d|<dt (23);
Figure FDA0004165689600000052
2)左、右急转状态;当满足式时,田间机器人的行走方向与导航线方向、角度的存在偏差较大,机器人应立即停止行进,并以较大转向角度向左或向右转向:
(d<-dt)∩(α<-αt) (25);
(d>dt)∩(α>αt) (26);
3)左、右转向状态;当满足式时,田间机器人行走方向与导航线向产生较小偏差;由于所求得导航参数d与α偏离阈值较小,此时机器人的转向曲率较小,在保持向前行走的同时向左或向右转弯:
(d<-dt)∩(-αt<α<0) (27);
(d>dt)∩(0<α<αt) (28)。
5.如权利要求3所述的基于FPGA的实时田间机器人视觉导航方法,其特征在于,所述第三步通过垄线信息计算提取机器人的导航信息,用于控制机器人行走进一步包括:田间机器人导航参数提取首先将垄线信息作为整个模块的输入,通过偏航距离和偏航角度计算得到当前时刻机器人与导航线的偏航距离和偏航角;同时将偏航距离和偏航角与阈值进行比较最终确定机器人的导航参数和下一步动作;
偏航距离和偏航角计算,当计算得到垄线位置信息和角度信息后,将利用垄线信息计算得到机器人的偏航距离和偏航角度;选用减法器将垄线位置信息和中心像素点相减得到机器人的偏航距离;根据计算当前偏航角;当垄线角度为锐角时,偏航角为垄线角度加90°而垄线角度为钝角时,偏航角为垄线角度减90°;
当获得偏航角和偏航距离后,通过偏航角和偏航距离与其对应的阈值的差值判断机器人行走策略,确定机器人应保持直行、转弯或者急转弯,通过比较当前偏航角度和阈值大小,将当前的偏航角度和偏航距离及机器人的控制策略作为整个模块的输出。
6.一种基于权利要求1所述基于FPGA的实时田间机器人视觉导航方法的基于FPGA的实时田间机器人视觉导航系统,其特征在于,所述基于FPGA的实时田间机器人视觉导航系统包括:
图像预处理模块,用于实现将采集到的彩色田间作物与背景图像进行分割;首先计算图像的绿度和阈值,并依据该阈值达到分割图像中绿色作物的效果;同时实现中值滤波方法对图像噪声的滤除;
图像存储模块,用于实现将二值图像存储到块随机存取存储器中;
田间垄线检测模块,由密度计算、第一条垄线计算和第二条垄线计算三个部分组成;通过从BRAM中查找当前确定的直线上对应点的像素情况计算的得到当前像素点的密度信息;通过密度信息计算确定田间垄线的位置;
导航参数提取模块,将田间垄线检测模块计算得到的垄线位置和角度信息作为输入,计算得到下一步机器人行走的导航参数。
7.如权利要求6所述的基于FPGA的实时田间机器人视觉导航系统,其特征在于,所述图像预处理模块进一步包括:
绿度计算和阈值计算模块,用于实现对图像阈值的确定;通过VDMA的MM2S将图像数据以数据流的方式从DDR寄存器中读出,即每次仅读取一个数据宽度为32位的图像数据;读取到的32位图像数据在绿度计算和阈值计算模块中,分割为红、绿、蓝和透明度α四个灰度通道分量;将红、绿、蓝通道的灰度值进行线性变换计算得到当前像素点增强绿色通道的灰度图;
作物分割和中值滤波模块,用于当计算得到当前图像的阈值信息后,将阈值作用于得到的灰度图像中分割出图像中的绿色作物,并对图像中存在的噪声进行滤除。
8.如权利要求6所述的基于FPGA的实时田间机器人视觉导航系统,其特征在于,所述田间垄线检测模块进一步包括:
密度计算和垄线中心线检测模块,用于检测当前图像中的密度信息及获取图像中的垄线信息;
第一条垄线边界检测模块,计算得到第一条垄线后,通过第一条垄线位置获取当前第一条垄线的左右边界线以提取垄线导航线;根据优化后的垄线检测方法,垄线约束角度范围无需选用复杂的公式计算,只需要将第一条垄线求得的角度通过加法器和减法器计算得到;
第二条垄线中心线计算模块,用于通过密度信息、垄线宽度和第一条垄线左、右边界线及其角度可确定第二条垄线信息。
9.一种应用权利要求1~5任意一项所述基于FPGA的实时田间机器人视觉导航方法的机器人。
CN201910511693.3A 2019-06-13 2019-06-13 一种基于fpga的实时田间机器人视觉导航方法与系统 Active CN110196053B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910511693.3A CN110196053B (zh) 2019-06-13 2019-06-13 一种基于fpga的实时田间机器人视觉导航方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910511693.3A CN110196053B (zh) 2019-06-13 2019-06-13 一种基于fpga的实时田间机器人视觉导航方法与系统

Publications (2)

Publication Number Publication Date
CN110196053A CN110196053A (zh) 2019-09-03
CN110196053B true CN110196053B (zh) 2023-06-20

Family

ID=67754529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910511693.3A Active CN110196053B (zh) 2019-06-13 2019-06-13 一种基于fpga的实时田间机器人视觉导航方法与系统

Country Status (1)

Country Link
CN (1) CN110196053B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110320908B (zh) * 2019-06-06 2021-06-15 华南农业大学 一种agv实时仿真系统
CN110780288A (zh) * 2019-09-29 2020-02-11 深圳市元征科技股份有限公司 道路危险提示方法、装置、车载设备和存储介质
CN110881305B (zh) * 2019-11-13 2021-04-13 青岛农业大学 花生收获机的自适应控制方法
CN111008994A (zh) * 2019-11-14 2020-04-14 山东万腾电子科技有限公司 基于MPSoC的运动目标实时检测跟踪系统及方法
CN111143250B (zh) * 2019-12-20 2022-03-22 苏州浪潮智能科技有限公司 一种基于axi-st接口访问fpga存储单元的方法、设备及介质
CN111179303B (zh) * 2020-01-07 2021-06-11 东南大学 基于粒子滤波的谷物收获机器人视觉导航方法及其应用
CN112862765B (zh) * 2021-01-26 2022-08-02 重庆师范大学 基于半监督离散度的土壤彩色图像阴影检测方法
CN113079138A (zh) * 2021-03-23 2021-07-06 哈尔滨理工大学 一种生物信息数据在线过滤系统
CN113065503B (zh) * 2021-04-15 2023-12-22 黑龙江惠达科技股份有限公司 基于单目摄像头的苗线识别方法、装置和农机
CN113111892B (zh) * 2021-05-12 2021-10-22 中国科学院地理科学与资源研究所 一种基于无人机影像的作物种植行提取方法
CN113450402B (zh) * 2021-07-16 2022-12-13 天津理工大学 用于蔬菜大棚巡检机器人的导航中心线提取方法
CN113570612B (zh) * 2021-09-23 2021-12-17 苏州浪潮智能科技有限公司 一种图像处理方法、装置及设备
CN114494888B (zh) * 2022-02-18 2022-08-19 中国科学院地理科学与资源研究所 一种无人机影像中机播小麦苗期断垄自动监测方法
CN114600714A (zh) * 2022-02-28 2022-06-10 山东省农业技术推广中心(山东省农业农村发展研究中心) 一种基于小麦生物学特征的减垄增地种植方法
CN117689732B (zh) * 2024-01-31 2024-04-23 西南技术物理研究所 一种基于fpga的图像灰度直方统计和目标搜索方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104616014A (zh) * 2014-12-15 2015-05-13 广西科技大学 基于形态学操作的田间曲线导航线提取方法
CN105987684A (zh) * 2015-12-18 2016-10-05 中国科学院合肥物质科学研究院 一种基于单目视觉的农业车辆导航线检测系统及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7580549B2 (en) * 2005-07-01 2009-08-25 Deere & Company Method and system for vehicular guidance using a crop image
CN101750051A (zh) * 2010-01-04 2010-06-23 中国农业大学 一种视觉导航的多作物行检测方法
CN101990796B (zh) * 2010-09-13 2012-07-18 中国农业大学 基于机器视觉的锄草机器人系统及方法
CN102252681A (zh) * 2011-04-18 2011-11-23 中国农业大学 基于gps和机器视觉的组合导航定位系统及方法
CN103186773B (zh) * 2013-02-06 2016-05-25 内蒙古大学 一种基于一维Hough变换和专家系统的早期苗田垄线识别算法
CN103914836B (zh) * 2014-03-24 2017-03-01 郑州轻工业学院 基于机器视觉的农田机械导航线提取算法
CN105783935A (zh) * 2016-03-07 2016-07-20 河北科技大学 农业机械视觉导航方法
CN106338989B (zh) * 2016-08-01 2019-03-26 内蒙古大学 一种田间机器人双目视觉导航方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104616014A (zh) * 2014-12-15 2015-05-13 广西科技大学 基于形态学操作的田间曲线导航线提取方法
CN105987684A (zh) * 2015-12-18 2016-10-05 中国科学院合肥物质科学研究院 一种基于单目视觉的农业车辆导航线检测系统及方法

Also Published As

Publication number Publication date
CN110196053A (zh) 2019-09-03

Similar Documents

Publication Publication Date Title
CN110196053B (zh) 一种基于fpga的实时田间机器人视觉导航方法与系统
Tian et al. Apple detection during different growth stages in orchards using the improved YOLO-V3 model
CN110458805B (zh) 一种平面检测方法、计算设备以及电路系统
CN109146948B (zh) 基于视觉的作物长势表型参数量化与产量相关性分析方法
US7756296B2 (en) Method for tracking objects in videos using forward and backward tracking
CN108734120A (zh) 标注图像的方法、装置、设备和计算机可读存储介质
Geng et al. Using deep learning in infrared images to enable human gesture recognition for autonomous vehicles
Ma et al. Automatic branch detection of jujube trees based on 3D reconstruction for dormant pruning using the deep learning-based method
CN102663757A (zh) 基于核传递的半自动图像分割方法
CN109389617A (zh) 一种基于片上异构系统的运动目标识别与追踪方法及系统
Yan et al. Monocular depth estimation with guidance of surface normal map
WO2022062238A1 (zh) 一种足球检测方法、装置、计算机可读存储介质及机器人
Li et al. A new automatic real-time crop row recognition based on SoC-FPGA
Wang et al. Unsupervised segmentation of greenhouse plant images based on modified Latent Dirichlet Allocation
CN105631799A (zh) 一种动平台激光红外融合检测识别系统
CN114689038A (zh) 基于机器视觉的果实检测定位与果园地图构建方法
Zuo et al. A method of crop seedling plant segmentation on edge information fusion model
CN114120141A (zh) 一种可全天候遥感监测自动分析方法及其系统
CN105205485B (zh) 基于多类类间最大方差算法的大尺度图像分割算法
CN115274099B (zh) 一种人与智能交互的计算机辅助诊断系统与方法
CN108921852B (zh) 基于视差与平面拟合的双分支室外非结构化地形分割网络
Wang et al. EFN6D: an efficient RGB-D fusion network for 6D pose estimation
CN111161219A (zh) 一种适用于阴影环境的鲁棒单目视觉slam方法
Qing et al. Multi-Class on-Tree Peach Detection Using Improved YOLOv5s and Multi-Modal Images.
Li Research on RGB-D SLAM Dynamic Environment Algorithm Based on YOLOv8

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant