CN106910197A - 一种单目标区域的复杂背景植物叶片图像的分割方法 - Google Patents
一种单目标区域的复杂背景植物叶片图像的分割方法 Download PDFInfo
- Publication number
- CN106910197A CN106910197A CN201710026209.9A CN201710026209A CN106910197A CN 106910197 A CN106910197 A CN 106910197A CN 201710026209 A CN201710026209 A CN 201710026209A CN 106910197 A CN106910197 A CN 106910197A
- Authority
- CN
- China
- Prior art keywords
- point
- leaf
- mark
- image
- pos
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
- G06T2207/20152—Watershed segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30181—Earth observation
- G06T2207/30188—Vegetation; Agriculture
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种单目标区域的复杂背景植物叶片图像的分割方法,包括以下步骤:首先是预处理。把图像缩小到适当的尺度,并显示;让用户标定“叶边缘点或叶内点”序列。接着,在围绕每一个叶边缘点并以较小尺寸为半径的圆周上,依赖图像的彩色像素值以及前述序列的形状信息,较为准确地确定其中一点为叶外点。然后结合叶边缘点、叶内点以及叶外点的信息,完善前景标记和背景标记。最后作标记分水岭分割,并修正结果。
Description
技术领域
本发明涉及图像识别研究领域,特别涉及一种单目标区域的复杂背景植物叶片图像的准确分割方法。
背景技术
植物,尤其药用植物,是大自然赋予人类的重要资源。药用植物在人类与疾病抗争的千古历程中,一直发挥着显著的作用。然而,近年来,由于对生物资源保护和可持续利用意识的薄弱,致使大面积植被被毁,生态环境急剧恶化,药用植物资源快速萎缩,一部分种类濒临灭绝。加强对药用植物的保护已刻不容缓。
毋容置疑,全面深入地摸清濒危药用植物的地理分布,构建起较为完备的地理信息资源库,对于野生药用植物的保护、引种和利用等,将会起到重要的支撑作用,是一项惠及大众的基础性工程。
然而,一般人无法担负野外鉴别植物的任务;相关专业的大学生也不行;只有从事有关工作多年,又可时常出差野外的中青年专家才能胜任。即便是放眼全球,这一类的高端人才都是非常缺乏的。而他们本身往往已经肩负着沉重的教学和科研任务。
所以,现行的资源调查,也只能采取抽样选点的方式,离全面深入的调查还有一定距离。这样构建起的资源库,其作用是差强人意的。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种单目标区域的复杂背景植物叶片图像的准确分割方法。该方法对于直接拍摄植物枝干上的叶片所得的复杂背景图像,能取得较为准确的分割结果。此类图像中除了目标叶片外,还含有枝干、泥土、其他叶片等背景对象,分割难度大。本发明为叶片生长参数的无损测定乃至植物无损自动鉴别,扫清了一道障碍。
为解决上述技术问题,本发明的技术方案如下:
一种单目标区域的复杂背景植物叶片图像的准确分割方法,包括以下步骤:
第一步、预处理:把图像缩放至所设定的尺度并显示,用户标定叶边缘点或叶内点得到标记点序列pos,再初始化前景和背景图像;
第二步、检测叶外点:围绕每一个叶边缘点并在以半径为radius的圆周上,依赖图像的彩色像素值以及前述标记点序列pos的形状信息,确定每一个叶边缘点的叶外点;
第三步、结合叶外点信息修改前景背景标记;结合叶边缘点、叶内点以及叶外点的信息,完善前景标记和背景标记;
第四步、分割及修正处理;在彩色空间直接求取梯度图,而后作标记分水岭分割,并运用数学形态学方法修正结果;
第五步、判断分割及修改结果是否满意,不满意则返回步骤第一步,满意则输出分割及修改结果。
优选的,所述第一步的预处理过程具体为:
step1:把图像缩小至所设定的尺度,首先计算缩放比例系数ratio=(2592×1936)/(图像的行数×图像的列数),若ratio<1,则把图像以ratio的开平方的值为倍数缩小;否则无需缩小;
step2:显示缩小后的图像currentImage;
step3:用户标定叶边缘点或叶内点,得到标记点序列pos;在此,用户选点的原则是:
第1个叶边缘点标定在叶基点处,循着顺时针或逆时针方向,依次标定后续的叶边缘点或叶内点;要求前后相邻的两个标记点之间的连线不经过叶片的外部;当第二次标记第1点所在位置时,标记过程结束,第二次标定的与第1点相同位置的点,不会被存储于标记点序列pos;随即会依次连接相邻的两点,组成一个封闭的多边形;
step4:初始化背景二值图backgroundMask;新建一个与当前显示图像currentImage大小一致的全“0”二值图像backgroundMask,然后把它的四边框上的像素全修改为“1”;
step5:初始化前景二值图foregroundMask;新建一个与当前图像currentImage大小一致的全“0”二值图像foregroundMask;然后在foregroundMask内,把处于pos中所有标记点依次连结而成的多边形polygon内部及边界上的点,修改为“1”。
优选的,所述第二步检测叶外点的具体实现过程为:
step6:初始化计数器变量i=1;
step7:依次对标记点序列pos中的每一个标记点p,确定其是否为叶边缘点;
Step8:统计标记点序列pos中,未被标记为叶边缘点的点数concavepointsNum;
Step9:设置一个叶边缘点判断距离;
Step10:判断concavepointsNum是否大于2;若是,把叶边缘点判断距离加倍;
Step11:对标记点序列pos中每一个未被标记为叶边缘点的点p,判断点p与前面的一点pBefored的距离,以及与后面一点pBehind的距离,均小于叶边缘点判断距离,若是,确定点p为叶边缘点;
step12:检测每一个叶边缘点p的叶外点o,并依次存于点列表outPosForLine;其中,检测一个叶边缘点p对应的叶外点o。
优选的,所述步骤step7的依次对标记点序列pos中的每一个标记点p,确定其是否为叶边缘点具体方式为:
做step7.1至step7.6的操作,直至处理完标记点序列pos中的所有点为止;
Step7.1:如果i小于等于标记点p的总数,转向step7.2,否则转向step8;
Step7.2:i是否等于1,若是,标记pos中的第i点为叶边缘点,转向step7.6,否则转向step7.3;
Step7.3:设置点p等于pos中的第i点;
Step7.4:判断点p在多边形polygon中,是否为凸点。若是,确定点p为叶边缘点,即标记pos中的第i点为叶边缘点,转向step7.6;否则,转向Step7.5。
Step7.5:把点p以及在标记点序列pos中p前面的一点pBefore、在ppos中p后面的一点pBehind组成三角形,若点p是ppos中的最后一点,则把ppos中的第一点作为pBehind,计算点p所在的角的角度angle1,若angle1的范围为[150°,180°),则确定点p为叶边缘点,即标记pos中的第i点为叶边缘点;
Step7.6:令i=i+1,转向step7.1。
优选的,所述步骤step12的具体实现过程如下:
step12.1:抽样选取圆周上的点,在叶边缘点p为中心,半径为radius的圆周上,按顺时针或逆时针方向,均匀地选取circlePointsNum个点,依次存储每一个点的横坐标和纵坐标组成的二元组于circlePoints;
step12.2:圆周点的像素值整理复制,顺序检测circlePoints中的每一个点在前景二值图foregroundMask里的值;从circlePoints中,把在前景二值图foregroundMask中为“1”的那部分点,按其从圆周上抽取的顺序,依次复制它们在currentImage中的红、绿、蓝像素值于pixelList,同时记录它们的横纵坐标到pixelIndexInCirclePoints中的相同位置;而后,从circlePoints中,把在前景二值图foregroundMask中为“0”的那部分点,按其从圆周上抽取的顺序,紧跟着pixelList上的最后一个点,依次复制它们在currentImage中的红、绿、蓝像素值于pixelList,同时记录它们的横纵坐标于pixelIndexInCirclePoints中的相同位置;记录pixelList中,在foregroundMask里为“1”且下标最大的那个点的下标LastInpointIndex;
step12.3:初始化最大类间方差maxD=-1;
step12.4:初始化背景类起始下标i等于LastInpointIndex+1;
step12.5:判断背景类起始下标i是否小于等于circlePointsNum;若是,转向步骤step12.6;否则转向step12.16;
step12.6:初始化背景类终止下标j等于背景类起始下标i;
step12.7:判断背景类终止下标j是否小于等于circlePointsNum;若是,转向步骤step12.8;否则,转向step12.15;
step12.8:求分量类间方差:把pixelList中,下标从i到j的点,看作一类;剩下的为另一类,分别就两类点的红色像素值、绿色像素值、蓝色像素值三个分量,求类间方差d1、d2、d3;类间方差公式为:d=ω1(μ1-μ)^2+ω2(μ2-μ)^2;
其中,ω1,ω2分别为第一类和第二类的点出现的概率,ω1+ω2=1;μ表示所有点某一颜色分量的像素均值;μ1、μ2分别为第一类和第二类的点某一颜色分量的像素均值;
step12.9:令综合类间方差D=d1+d2+d3;
step12.10:求修正系数modifyCoefficient,具体为:
step12.10.1:计算i和j的均值并取整,记为midOfij;
step12.10.2:求midOfij-LastInpointIndex和circlePointsNum-midOfij中的最小者,记为testX;
step12.10.3:计算(circlePointsNum-LastInpointIndex)/2,并取整,记为testR;
step12.10.4:modifyCoefficient=arctan(testX/testR×20)/(π/2);arctan为反正切函数;
其中下标为midOfij的点即为拟确定的叶外点o;叶片区域包含前景标记区域,即foregroundMask中为“1”的点组成的区域,
step12.11:基于下式求综合类间方差修正值D’,D’=D^modifyCoefficient;
step12.12:判断当前的D’是否大于maxD,若是,转向step12.13;否则,转向step12.14;
step12.13:更新最优值:maxD=D;bestStartIndex=i;bestStopIndex=j;其中bestStartIndex表示最佳分类方案的背景点类起始下标;bestStopIndex表示最佳分类方案的背景点类终止下标;
step12.14:j=j+1;转向step12.7;
step12.15:i=i+1;转向step12.5;
step12.16:确定叶外点o的坐标:求bestStartIndex和bestStopIndex的均值并取整,以此为下标,在pixelIndexInCirclePoints中查询得到叶外点o在currentImage中的横纵坐标。
优选的,所述第三步结合叶外点信息修改前景背景标记的具体实现过程为:
Step13:在背景二值图像backgroundMask上修改所有叶外点o为“1”;
Step14:新建一个大小与backgroundMask一致的全“0”二值图像backgroundMaskAdd;
Step15:初始化drawLineNum为0;
Step16:如果concavepointsNum小于等于6,转向Step17,否则转向Step18;
Step17:在backgroundMaskAdd上,在满足特定条件的相邻的每两个叶外点之间画一条线;该线轨迹上的点均为“1”;每画一条线,把drawLineNum累加1;
所述的相邻是指:每个叶外点在outPosForLine的下标相差为1,或者一个位于outPosForLine的第一个位置,另一个位置outPosForLine的最后一个位置;
所述的特定条件定义为:两点距离小于标准参照距离standardDis的a1倍;或者两点距离小于标准参照距离standardDis的a2倍,同时concavepointsNum小于等于b1;或者标记点总数大于等于c1且两点距离小于标准参照距离standardDis的a3倍,同时concavepointsNum小于等于b2;或者标记点总数大于等于c2;
前述standardDis的取值是,currentImage宽度(矩形的短边)的2%到50%间的任意值。
前述a1的取值范围是[0.05,1];a2的取值范围是[0.1,10]且要求a2>a1;a3的取值范围是[0.5,50)且要求a3>a2;此外,要求a1、a2、a3与standardDis的乘积,均小于图像的宽度。
前述b1的取值范围是[2,10];b2的取值范围是[1,5]且b2<b1。
前述c1的取值范围是[10,30];c2的取值范围是[20,40]且c2>c1。画线的过程是:按在outPosForLine中的顺序,把两个叶外点分别作为第二点p2和第三点p3;把p2在outPosForLine中的前一个叶外点,作为p1;p3在outPosForLine中的后一个叶外点,作为p4;特别地,若p2为outPosForLine中的第一点,则把outPosForLine中的最后一点作为p1;若p3为outPosForLine中的最后一点,则把outPosForLine中的第1点作为p4;计算p1、p2、p3形成的三角形中,p2所在的角的角度;计算p2、p3、p4形成的三角形中,p3所在的角的角度;若上述两个角度均大于等于预设的角度值(该预设的角度值是根据测试和经验直接写进去的一个值),依次以p1、p2、p3、p4为控制点,在p2、p3间画样条曲线;否则,在p2、p3间画直线段;
Step18:比较outPosForLine包含叶外点的总数和drawLineNum是否相等,若是,则认为相邻的每两个叶外点都在backgroundMaskAdd上画了线,从而组成了封闭的曲线,转向Step19:否则转向Step21;
Step19:对backgroundMaskAdd进行孔洞填充;
Step20:把backgroundMaskAdd取反;
Step21:计算backgroundMask=backgroundMask||backgroundMaskAdd;
Step22:在backgroundMask中,把在backgroundMask和foregroundMask中均为“1”的点重置为“0”;即删除两者的前景区域的重叠部分;
Step23:对foregroundMask做数学形态学的腐蚀操作。
优选的,所述第四步分割及修正处理的具体实现过程为:
Step24:在rgb空间中,求currentImage的梯度图VG;
Step25:求mask=backgroundMask||foregroundMask;
Step26:以VG为梯度图,mask为标记,作标记分水岭分割,得到outputImage;
Step27:确定foregroundMask任意一个为“1”的点,在outputImage中的值leafLabelNum;
Step28:在outputImage中,把值为leafLabelNum的点设置为“1”,其余为“0”,得到二值图像logicImage;
Step29:对logicImage作数学形态学闭运算;
Step30:对logicImage作数学形态学开运算;
Step31:对logicImage进行孔洞填充;
Step32:在logicImage中,删除所有小面积区域,仅保留面积最大的唯一区域;
Step33:显示结果,让用户判断是否满意;若是,全过程结束;若否,转向Step34;
Step34:让用户修改所标记的点,即增加点或删除已有的点,同步更新pos;待用户完成修改后,转向Step5。
优选的,所述Step24的具体实现过程为:
Step24.1:求x和y方向的偏导数;令图像currentImage上任意一点的坐标为(x,y),像素值为(R,G,B),其中R,G,B分别表示红、绿、蓝的分量值;在此,(R,G,B)就是一个关于(x,y)的二元向量值函数。求
其中,和分别是二元向量值函数(R,G,B)关于x和y的偏导数。
Step24.2:求与自身的点积 与自身的点积 与的点积
Step24.3:求其中arctan为反正切函数;θ1和θ2两者之一,是二元向量值函数(R,G,B)的最大变化率方向的角度值,另一个,则是相反方向的角度值。
Step24.4:求和 和两者其中之一,就是二元向量值函数(R,G,B)最大变化率的值。
Step24.5:max即为求取最大值的意思。以和中的最大者为F(x,y);F(x,y)即为所求的梯度值,存储得到梯度图VG。
本发明打破现有的僵局,提出拍摄植物叶片图像,继而进行机器鉴别的设想,让更多的只具有初步基础的人员在野外通过简单的手机操作就能相对准确地鉴定当前植物的种类。
和多数的图像识别问题一样,叶片图像的分割是第一道难关。在此,本文提出一种分割方法。先让用户近似地标记少量的叶边缘点;接着在此基础上,检测出相应的叶外点;然后分别优化构造出前景标记图像和背景标记图像;最后应用标记分水岭方法对图像进行分割。
本方法能对复杂背景的叶片图像,实现较为准确的分割。
从更长远来看,在本方法基础上继续研究的植物机器识别,将来也可以用于帮助人们,特别是青少年,去认识身边的植物,从而慢慢地改变人们对待植物的生活态度,拉近人与植物的距离,帮助人们重回大自然的怀抱,尽情享受阳光、绿树、清风的美好。
与现有技术相比,本发明技术方案的有益效果是:
基于叶片图像的植物参数测定、病害自动诊断和机器鉴别,是发展的趋势。
目前,相关研究的图像采集方式具体又分为两种。一是把叶片摘下来,再拍摄或扫描,得到简单背景叶片图像。其优点是图像容易分割,分割准确率高;缺点是对植物造成损伤。现有研究多采用这种方式。二是直接拍摄枝干上的叶片,得到复杂背景叶片图像。优点是不对植物造成任何损伤;缺点是图像中除了目标叶片外,还含有枝干、泥土、其他叶片等背景对象,分割难度大,分割准确率低,严重影响了后续分类识别的准确性。
本方法就是针对复杂背景叶片图像,为了支持植物叶片的无损检测或鉴别而设计的。它相比于已报道的同类方法,有着更好的分割准确性。初步测试,平均分割准确率达99.03%。比当前报道的最好结果85.95%有相对显著的提升。
附图说明
图1是本发明方法的流程图。
图2是图像库中随机选取的4张叶片图像及其分割结果示意图;(a)为防风草叶片原图,(b)为防风草分割结果图;(c)为广金钱草叶片原图,(d)为广金钱草分割结果图;(e)为排前树叶片原图,(f)为排前树分割结果图;(g)为紫苏叶片原图,(h)为紫苏分割结果图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。下面结合附图和实施例对本发明的技术方案做进一步的说明。
一种单目标区域的复杂背景药用植物叶片图像的准确分割方法,包括以下步骤:
预处理,具体如下:
step1:把彩色图像缩小至适当的尺度下。先计算ratio=(2592×1936)/(图像的行数×图像的列数)。若ratio<1,则把图像以ratio的开平方的值为倍数缩小;否则无需缩小。
step2:显示处理后的图像currentImage。
step3:让用户标定叶边缘点或叶内点,得到标记点序列pos。在此,用户选点的原则是:
第1个叶边缘点标定在叶基点处,然后循着顺时针或逆时针方向,依次标定后续的叶边缘点或叶内点。要求前后相邻的两个标记点之间的连线不经过叶片的外部。当第二次标记第1点所在位置时,标记过程结束,第二次标定的与第1点相同位置的点,不会被存储于pos。系统随即会依次连接相邻的两点,组成一个封闭的多边形。如图2(a)所示。
补充说明:连接叶片和枝干的,常呈圆柱形的部分称为叶柄;叶柄与叶片的交界处称为叶基点。
step4:初始化背景二值图backgroundMask。新建一个与当前图像currentImage大小一致的全“0”二值图像backgroundMask,然后把它的四边框上的像素全修改为“1”。
step5:初始化前景二值图foregroundMask。新建一个与当前图像currentImage大小一致的全“0”二值图像foregroundMask;然后在foregroundMask内,把处于pos中所有标记点依次连结而成的多边形polygon内部及边界上的点,修改为“1”。
检测叶外点,具体如下:
step6:初始化计数器变量i=1。
step7:依次对pos中的每一个标记点p,做step7.1至step7.6的操作,直至处理完pos中的所有点为止。
Step7.1:如果i小于等于标记点总数(pos的点的总数),转向step7.2,否则转向step8。
Step7.2:i等于1么,若是,标记pos中的第i点为叶边缘点。(注:按约定,第1点是叶柄点,一般而言,即便在多边形polygon中是一个凹点,也都应判为叶边缘点的。)转向step7.6,否则转向step7.3。
Step7.3:设置点p等于pos中的第i点
Step7.4:判断点p在多边形polygon中,是否为凸点。若是,确定点p为叶边缘点,即标记pos中的第i点为叶边缘点,转向step7.6;否则,转向Step7.5。
Step7.5:把点p以及在pos中p前面的一点pBefore、在pos中p后面的一点pBehind(若点p是pos中的最后一点,把pos中的第一点作为pBehind),组成三角形,计算p所在的角的角度angle1。若angle1大于某个接近180度的值(如170度),则确定点p为叶边缘点,即标记pos中的第i点为叶边缘点。
Step7.6:i=i+1,转向step7.1。
Step8:统计pos中,未被标记为叶边缘点的点数concavepointsNum。concavepointsNum也可以近似理解为凹点的数量。
Step9:设置一个叶边缘点判断距离,如设为currentImage的宽度的10分之1。
Step10:判断concavepointsNum是否大于2,若是,把叶边缘点判断距离加倍。(注:多于2个凹点,就考虑叶片有大锯齿了)
Step11:对pos中每一个未被标记为叶边缘点的点p,判断点p与前面的一点pBefored的距离,以及与后面一点pBehind的距离,均小于叶边缘点判断距离,若是,确定点p为叶边缘点。
step12:检测每一个叶边缘点p的叶外点o,并依次存于点列表outPosForLine。其中,检测一个叶边缘点p对应的叶外点o的具体过程如下:
step12.1:抽样选取圆周上的点。在叶边缘点p为中心,radius(如25)为半径的圆周上,按顺时针或逆时针方向,均匀地选取circlePointsNum(如circlePointsNum=radius×9)个点,依次存储每一个点的横坐标和纵坐标组成的二元组(后面简称横纵坐标)于circlePoints。
step12.2:圆周点的像素值整理复制。顺序检测circlePoints中的每一个点在前景二值图foregroundMask里的值。从circlePoints中,把在前景二值图foregroundMask中为“1”的那部分点,按其从圆周上抽取的顺序,依次复制它们在currentImage中的红、绿、蓝像素值于pixelList,同时记录它们的横纵坐标到pixelIndexInCirclePoints中的相同位置。而后,从circlePoints中,把在前景二值图foregroundMask中为“0”的那部分点,按其从圆周上抽取的顺序,紧跟着pixelList上的最后一个点,依次复制它们在currentImage中的红、绿、蓝像素值于pixelList,同时记录它们的横纵坐标于pixelIndexInCirclePoints中的相同位置。记录pixelList中,在foregroundMask里为“1”且下标最大的那个点的下标LastInpointIndex。
step12.3:初始化最大类间方差maxD=-1;
step12.4:初始化背景类起始下标i等于LastInpointIndex+1;
step12.5:判断背景类起始下标i是否小于等于circlePointsNum;若是,转向步骤step12.6;否则转向step12.16;
step12.6:初始化背景类终止下标j等于背景类起始下标i;
step12.7:判断背景类终止下标j是否小于等于circlePointsNum;若是,转向步骤step12.8;否则,转向step12.15;
step12.8:求分量类间方差:把pixelList中,下标从i到j的点,看作一类;剩下的为另一类,分别就两类点的红色像素值、绿色像素值、蓝色像素值三个分量,求类间方差d1、d2、d3;类间方差公式为:d=ω1(μ1-μ)^2+ω2(μ2-μ)^2;
其中,ω1,ω2分别为第一类和第二类的点出现的概率,ω1+ω2=1;μ表示所有点某一颜色分量的像素均值;μ1、μ2分别为第一类和第二类的点某一颜色分量的像素均值;
step12.9:令综合类间方差D=d1+d2+d3;
step12.10:求修正系数modifyCoefficient,具体为:
step12.10.1:计算i和j的均值并取整,记为midOfij;
step12.10.2:求midOfij-LastInpointIndex和circlePointsNum-midOfij中的最小者,记为testX;
step12.10.3:计算(circlePointsNum-LastInpointIndex)/2,并取整,记为testR;
step12.10.4:modifyCoefficient=arctan(testX/testR×20)/(π/2);arctan为反正切函数;
其中下标为midOfij的点即为拟确定的叶外点o;叶片区域包含前景标记区域,即foregroundMask中为“1”的点组成的区域,
说明:下标为midOfij的点即为拟确定的叶外点o。叶片区域包含前景标记区域(foregroundMask中为“1”的点组成的区域),前者的范围比后者要大。单就这一因素而言,点o距离前景标记区域的两个边界点越远,它正确落到叶外区域的可能性就越大。当点o非常靠近前景标记区域时,即便它依然处于前景标记区域的外部,但是,它错误地落入叶片内部的风险也很高。所以,总的来说,修正系数modifyCoefficient的作用是鼓励远离前景标记区域的情形,抑制过于靠近前景标记区域的情形。
step12.11:基于下式求综合类间方差修正值D’,D’=D^modifyCoefficient;
step12.12:判断当前的D’是否大于maxD,若是,转向step12.13;否则,转向step12.14;
step12.13:更新最优值:maxD=D;bestStartIndex=i;bestStopIndex=j;其中bestStartIndex表示最佳分类方案的背景点类起始下标;bestStopIndex表示最佳分类方案的背景点类终止下标;
step12.14:j=j+1。转向step12.7。
step12.15:i=i+1。转向step12.5。
step12.16:确定叶外点o的坐标:求bestStartIndex和bestStopIndex的均值并取整,以此为下标,在pixelIndexInCirclePoints中查询得到叶外点o在currentImage中的横纵坐标。
结合叶外点信息修改前景背景标记,具体如下:
Step13:在背景二值图像backgroundMask上修改所有叶外点o为“1”。
Step14:新建一个大小与backgroundMask一致的全“0”二值图像backgroundMaskAdd。
Step15:初始化drawLineNum为0。
Step16:如果concavepointsNum小于等于6,转向Step17,否则转向Step18。(注:凹点少于等于6时,才考虑画叶外线。凹点多于6,很大可能是锯齿较大的叶片。此时应该避免画线,以防误伤锯齿。)
Step17:在backgroundMaskAdd上,于满足特定条件的相邻的每两个叶外点之间,画一条线。该线轨迹上的点均为“1”。每画一条线,就把drawLineNum累加1。
所述的相邻是指:每个叶外点在outPosForLine的下标相差为1,或者一个位于outPosForLine的第一个位置,另一个位置outPosForLine的最后一个位置。
所述的特定条件定义为:两点距离小于currentImage的宽度的10分之1的一半;或者两点距离小于currentImage的宽度的10分之1,同时concavepointsNum小于等于4;或者标记点总数(pos的点的总数)大于等于20且两点距离小于某参数值的2倍,同时concavepointsNum小于等于2;或者标记点总数大于等于30。(凹点多于2,就要堤防具有锯齿的情形,画线的条件就要收紧。)
画线的过程是:按在outPosForLine中的顺序,把两个叶外点分别作为第二点p2,和第三点p3。把p2在outPosForLine中的前一个叶外点,作为p1;p3在outPosForLine中的后一个叶外点,作为p4。特别地,若p2为outPosForLine中的第一点,则把outPosForLine中的最后一点作为p1;若p3为outPosForLine中的最后一点,则把outPosForLine中的第1点作为p4。计算p1、p2、p3形成的三角形中,p2所在的角的角度;计算p2、p3、p4形成的三角形中,p3所在的角的角度。若上述两个角度均大于等于某参数值(如90度),依次以p1、p2、p3、p4为控制点,在p2、p3间画样条曲线(如三次B样条);否则,在p2、p3间画直线段。
Step18:比较outPosForLine包含叶外点的总数和drawLineNum是否相等,若是,则认为相邻的每两个叶外点都在backgroundMaskAdd上画了线,从而组成了封闭的曲线,转向Step19:否则转向Step21。
Step19:对backgroundMaskAdd进行孔洞填充。
Step20:把backgroundMaskAdd取反。
Step21:计算backgroundMask=backgroundMask||backgroundMaskAdd。
Step22:在backgroundMask中,把在backgroundMask和foregroundMask中均为“1”的点重置为“0”。即删除两者的前景区域的重叠部分。
Step23:对foregroundMask做数学形态学的腐蚀操作。
分割及修正,具体如下:
Step24:在rgb空间中,求currentImage的梯度图VG。具体过程是:
Step24.1:求x和y方向的偏导数。令图像currentImage上任意一点的坐标为(x,y),像素值为(R,G,B),其中R,G,B分别表示红、绿、蓝的分量值。求
在本实施例中,计算等六个偏导数时,可以使用sobel算子。
Step24.2:求
Step24.3:求其中arctan为反正切函数。
Step24.4:求和
Step24.5:以和中的最大者为F(x,y)。F(x,y)即为所求的梯度值,存储得到梯度图VG。
Step25:求mask=backgroundMask||foregroundMask。
Step26:以VG为梯度图,mask为标记,作标记分水岭分割,得到outputImage。
Step27:确定foregroundMask任意一个为“1”的点,在outputImage中的值leafLabelNum。
Step28:在outputImage中,把值为leafLabelNum的点设置为“1”,其余为“0”,得到二值图像logicImage。
Step29:对logicImage作数学形态学闭运算。
Step30:对logicImage作数学形态学开运算。
Step31:对logicImage进行孔洞填充。
Step32:在logicImage中,删除所有小面积区域,仅保留面积最大的唯一区域。
Step33:显示结果,让用户判断是否满意。若是,全过程结束;若否,转向Step34。
Step34:让用户修改所标记的点,即增加点或删除已有的点,同步更新pos。待用户完成修改后,转向Step5。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (7)
1.一种单目标区域的复杂背景植物叶片图像的分割方法,其特征在于,包括以下步骤:
第一步、预处理:把图像缩放至所设定的尺度并显示,用户标定叶边缘点或叶内点得到标记点序列pos,再初始化前景和背景图像;
第二步、检测叶外点:围绕每一个叶边缘点并在以半径为radius的圆周上,依赖图像的彩色像素值以及前述标记点序列pos的形状信息,确定每一个叶边缘点的叶外点;
第三步、结合叶外点信息修改前景背景标记;结合叶边缘点、叶内点以及叶外点的信息,完善前景标记和背景标记;
第四步、分割及修正处理;在彩色空间直接求取梯度图,而后作标记分水岭分割,并运用数学形态学方法修正结果;
第五步、判断分割及修改结果是否满意,不满意则返回步骤第一步,满意则输出分割及修改结果。
2.根据权利要求1所述的分割方法,其特征在于,所述第一步的预处理过程具体为:
step1:把图像缩小至所设定的尺度,首先计算缩放比例系数ratio=(2592×1936)/(图像的行数×图像的列数),若ratio<1,则把图像以ratio的开平方的值为倍数缩小;否则无需缩小;
step2:显示缩小后的图像currentImage;
step3:用户标定叶边缘点或叶内点,得到标记点序列pos;在此,用户选点的原则是:
第1个叶边缘点标定在叶基点处,循着顺时针或逆时针方向,依次标定后续的叶边缘点或叶内点;要求前后相邻的两个标记点之间的连线不经过叶片的外部;当第二次标记第1点所在位置时,标记过程结束,第二次标定的与第1点相同位置的点,不会被存储于标记点序列pos;随即会依次连接相邻的两点,组成一个封闭的多边形;
step4:初始化背景二值图backgroundMask;新建一个与当前显示图像currentImage大小一致的全“0”二值图像backgroundMask,然后把它的四边框上的像素全修改为“1”;
step5:初始化前景二值图foregroundMask;新建一个与当前图像currentImage大小一致的全“0”二值图像foregroundMask;然后在foregroundMask内,把处于pos中所有标记点依次连结而成的多边形polygon内部及边界上的点,修改为“1”。
3.根据权利要求2所述的分割方法,其特征在于,所述第二步检测叶外点的具体实现过程为:
step6:初始化计数器变量i=1;
step7:依次对标记点序列pos中的每一个标记点p,确定其是否为叶边缘点;
Step8:统计标记点序列pos中,未被标记为叶边缘点的点数concavepointsNum;
Step9:设置一个叶边缘点判断距离;
Step10:判断concavepointsNum是否大于2;若是,把叶边缘点判断距离加倍;
Step11:对标记点序列pos中每一个未被标记为叶边缘点的点p,判断点p与前面的一点pBefored的距离,以及与后面一点pBehind的距离,均小于叶边缘点判断距离,若是,确定点p为叶边缘点;
step12:检测每一个叶边缘点p的叶外点o,并依次存于点列表outPosForLine;其中,检测一个叶边缘点p对应的叶外点o。
4.根据权利要求3所述的分割方法,其特征在于,所述步骤step7的依次对标记点序列pos中的每一个标记点p,确定其是否为叶边缘点具体方式为:
做step7.1至step7.6的操作,直至处理完标记点序列pos中的所有点为止;
Step7.1:如果i小于等于标记点p的总数,转向step7.2,否则转向step8;
Step7.2:i是否等于1,若是,标记pos中的第i点为叶边缘点,转向step7.6,否则转向step7.3;
Step7.3:设置点p等于pos中的第i点;
Step7.4:判断点p在多边形polygon中,是否为凸点。若是,确定点p为叶边缘点,即标记pos中的第i点为叶边缘点,转向step7.6;否则转向step7.5;
Step7.5:把点p以及在标记点序列pos中p前面的一点pBefore、在ppos中p后面的一点pBehind组成三角形,若点p是ppos中的最后一点,则把ppos中的第一点作为pBehind,计算点p所在的角的角度angle1,若angle1的范围为[150°,180°),则确定点p为叶边缘点,即标记pos中的第i点为叶边缘点;
Step7.6:令i=i+1,转向step7.1。
5.根据权利要求3所述的分割方法,其特征在于,所述步骤step12的具体实现过程如下:
step12.1:抽样选取圆周上的点,在叶边缘点p为中心,半径为radius的圆周上,按顺时针或逆时针方向,均匀地选取circlePointsNum个点,依次存储每一个点的横坐标和纵坐标组成的二元组于circlePoints中;
step12.2:圆周点的像素值整理复制,顺序检测circlePoints中的每一个点在前景二值图foregroundMask里的值;从circlePoints中,把在前景二值图foregroundMask中为“1”的那部分点,按其从圆周上抽取的顺序,依次复制它们在currentImage中的红、绿、蓝像素值于pixelList,同时记录它们的横纵坐标到pixelIndexInCirclePoints中的相同位置;而后,从circlePoints中,把在前景二值图foregroundMask中为“0”的那部分点,按其从圆周上抽取的顺序,紧跟着pixelList上的最后一个点,依次复制它们在currentImage中的红、绿、蓝像素值于pixelList,同时记录它们的横纵坐标于pixelIndexInCirclePoints中的相同位置;记录pixelList中,在foregroundMask里为“1”且下标最大的那个点的下标LastInpointIndex;
step12.3:初始化最大类间方差maxD=-1;
step12.4:初始化背景类起始下标i等于LastInpointIndex+1;
step12.5:判断背景类起始下标i是否小于等于circlePointsNum;若是,转向步骤step12.6;否则转向step12.16;
step12.6:初始化背景类终止下标j等于背景类起始下标i;
step12.7:判断背景类终止下标j是否小于等于circlePointsNum;若是,转向步骤step12.8;否则,转向step12.15;
step12.8:求分量类间方差:把pixelList中,下标从i到j的点,看作一类;剩下的为另一类,分别就两类点的红色像素值、绿色像素值、蓝色像素值三个分量,求类间方差d1、d2、d3;类间方差公式为:d=ω1(μ1-μ)^2+ω2(μ2-μ)^2;
其中,ω1,ω2分别为第一类和第二类的点出现的概率,ω1+ω2=1;μ表示所有点某一颜色分量的像素均值;μ1、μ2分别为第一类和第二类的点某一颜色分量的像素均值;
step12.9:令综合类间方差D=d1+d2+d3;
step12.10:求修正系数modifyCoefficient,具体为:
step12.10.1:计算i和j的均值并取整,记为midOfij;
step12.10.2:求midOfij-LastInpointIndex和circlePointsNum-midOfij中的最小者,记为testX;
step12.10.3:计算(circlePointsNum-LastInpointIndex)/2,并取整,记为testR;
step12.10.4:modifyCoefficient=arctan(testX/testR×20)/(π/2);arctan为反正切函数;
其中下标为midOfij的点即为拟确定的叶外点o;叶片区域包含前景标记区域,即foregroundMask中为“1”的点组成的区域,
step12.11:基于下式求综合类间方差修正值D’,D’=D^modifyCoefficient;
step12.12:判断当前的D’是否大于maxD,若是,转向step12.13;否则,转向step12.14;
step12.13:更新最优值:maxD=D;bestStartIndex=i;bestStopIndex=j;其中bestStartIndex表示最佳分类方案的背景点类起始下标;bestStopIndex表示最佳分类方案的背景点类终止下标;
step12.14:j=j+1;转向step12.7;
step12.15:i=i+1;转向step12.5;
step12.16:确定叶外点o的坐标:求bestStartIndex和bestStopIndex的均值并取整,以此为下标,在pixelIndexInCirclePoints中查询得到叶外点o在currentImage中的横纵坐标。
6.根据权利要求5所述的分割方法,其特征在于,所述第三步结合叶外点信息修改前景背景标记的具体实现过程为:
Step13:在背景二值图像backgroundMask上修改所有叶外点o为“1”;
Step14:新建一个大小与backgroundMask一致的全“0”二值图像backgroundMaskAdd;
Step15:初始化drawLineNum为0;
Step16:如果concavepointsNum小于等于6,转向Step17,否则转向Step18;
Step17:在backgroundMaskAdd上,在满足特定条件的相邻的每两个叶外点之间画一条线;该线轨迹上的点均为“1”;每画一条线,把drawLineNum累加1;
所述的相邻是指:每个叶外点在outPosForLine的下标相差为1,或者一个位于outPosForLine的第一个位置,另一个位置outPosForLine的最后一个位置;
所述的特定条件定义为:两点距离小于标准参照距离standardDis的a1倍;或者两点距离小于标准参照距离standardDis的a2倍,同时concavepointsNum小于等于b1;或者标记点总数大于等于c1且两点距离小于标准参照距离standardDis的a3倍,同时concavepointsNum小于等于b2;或者标记点总数大于等于c2;
前述standardDis的取值是currentImage宽度(矩形的短边)的2%到50%间的任意值;
前述a1的取值范围是[0.05,1];a2的取值范围是[0.1,10]且a2>a1;a3的取值范围是[0.5,50)且a3>a2;此外,a1、a2、a3与standardDis的乘积,均小于图像的宽度;
前述b1的取值范围是[2,10];b2的取值范围是[1,5]且b2<b1;
前述c1的取值范围是[10,30];c2的取值范围是[20,40]且c2>c1;
画线的过程是:按在outPosForLine中的顺序,把两个叶外点分别作为第二点p2和第三点p3;把p2在outPosForLine中的前一个叶外点,作为p1;p3在outPosForLine中的后一个叶外点,作为p4;特别地,若p2为outPosForLine中的第一点,则把outPosForLine中的最后一点作为p1;若p3为outPosForLine中的最后一点,则把outPosForLine中的第1点作为p4;计算p1、p2、p3形成的三角形中,p2所在的角的角度;计算p2、p3、p4形成的三角形中,p3所在的角的角度;若上述两个角度均大于等于预设的角度值,依次以p1、p2、p3、p4为控制点,在p2、p3间画样条曲线;否则,在p2、p3间画直线段;
Step18:比较outPosForLine包含叶外点的总数和drawLineNum是否相等,若是,则认为相邻的每两个叶外点都在backgroundMaskAdd上画了线,从而组成了封闭的曲线,转向Step19:否则转向Step21;
Step19:对backgroundMaskAdd进行孔洞填充;
Step20:把backgroundMaskAdd取反;
Step21:计算backgroundMask=backgroundMask||backgroundMaskAdd;
Step22:在backgroundMask中,把在backgroundMask和foregroundMask中均为“1”的点重置为“0”;即删除两者的前景区域的重叠部分;
Step23:对foregroundMask做数学形态学的腐蚀操作。
7.根据权利要求6所述的分割方法,其特征在于,所述第四步分割及修正处理的具体实现过程为:
Step24:在rgb空间中,求currentImage的梯度图VG;
Step25:求mask=backgroundMask||foregroundMask;
Step26:以VG为梯度图,mask为标记,作标记分水岭分割,得到outputImage;
Step27:确定foregroundMask任意一个为“1”的点,在outputImage中的值leafLabelNum;
Step28:在outputImage中,把值为leafLabelNum的点设置为“1”,其余为“0”,得到二值图像logicImage;
Step29:对logicImage作数学形态学闭运算;
Step30:对logicImage作数学形态学开运算;
Step31:对logicImage进行孔洞填充;
Step32:在logicImage中,删除所有小面积区域,仅保留面积最大的唯一区域;
Step33:显示结果,让用户判断是否满意;若是,全过程结束;若否,转向Step34;
Step34:让用户修改所标记的点,即增加点或删除已有的点,同步更新pos;待用户完成修改后,转向Step5。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710026209.9A CN106910197B (zh) | 2017-01-13 | 2017-01-13 | 一种单目标区域的复杂背景植物叶片图像的分割方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710026209.9A CN106910197B (zh) | 2017-01-13 | 2017-01-13 | 一种单目标区域的复杂背景植物叶片图像的分割方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106910197A true CN106910197A (zh) | 2017-06-30 |
CN106910197B CN106910197B (zh) | 2019-05-28 |
Family
ID=59206470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710026209.9A Active CN106910197B (zh) | 2017-01-13 | 2017-01-13 | 一种单目标区域的复杂背景植物叶片图像的分割方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106910197B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109166148A (zh) * | 2018-08-08 | 2019-01-08 | 长春工程学院 | 区域灰度和方向成分算子的遥感影像中树冠直径提取方法 |
CN109684938A (zh) * | 2018-12-06 | 2019-04-26 | 广西大学 | 一种基于作物冠层航拍俯视图的甘蔗株数自动识别方法 |
CN110443811A (zh) * | 2019-07-26 | 2019-11-12 | 广州中医药大学(广州中医药研究院) | 一种复杂背景叶片图像的全自动分割方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102509270A (zh) * | 2011-11-14 | 2012-06-20 | 西安电子科技大学 | 基于标记分水岭算法和核进化聚类的图像分割方法 |
CN102609701A (zh) * | 2012-01-10 | 2012-07-25 | 河海大学 | 基于最佳尺度的高分辨率合成孔径雷达遥感检测方法 |
CN104050670A (zh) * | 2014-06-24 | 2014-09-17 | 广州中医药大学 | 结合简单交互和标记分水岭的复杂背景叶片图像分割方法 |
CN105069799A (zh) * | 2015-08-13 | 2015-11-18 | 深圳市华汉伟业科技有限公司 | 一种角点定位方法及装置 |
CN105718945A (zh) * | 2016-01-20 | 2016-06-29 | 江苏大学 | 基于分水岭和神经网络的苹果采摘机器人夜间图像识别方法 |
-
2017
- 2017-01-13 CN CN201710026209.9A patent/CN106910197B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102509270A (zh) * | 2011-11-14 | 2012-06-20 | 西安电子科技大学 | 基于标记分水岭算法和核进化聚类的图像分割方法 |
CN102609701A (zh) * | 2012-01-10 | 2012-07-25 | 河海大学 | 基于最佳尺度的高分辨率合成孔径雷达遥感检测方法 |
CN104050670A (zh) * | 2014-06-24 | 2014-09-17 | 广州中医药大学 | 结合简单交互和标记分水岭的复杂背景叶片图像分割方法 |
CN105069799A (zh) * | 2015-08-13 | 2015-11-18 | 深圳市华汉伟业科技有限公司 | 一种角点定位方法及装置 |
CN105718945A (zh) * | 2016-01-20 | 2016-06-29 | 江苏大学 | 基于分水岭和神经网络的苹果采摘机器人夜间图像识别方法 |
Non-Patent Citations (1)
Title |
---|
满庆奎: "复杂背景下植物叶片图像分割算法及其应用研究", 《中国优秀硕士学位论文全文数据库信息科技(月刊)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109166148A (zh) * | 2018-08-08 | 2019-01-08 | 长春工程学院 | 区域灰度和方向成分算子的遥感影像中树冠直径提取方法 |
CN109166148B (zh) * | 2018-08-08 | 2021-08-27 | 长春工程学院 | 区域灰度和方向成分算子的遥感影像中树冠直径提取方法 |
CN109684938A (zh) * | 2018-12-06 | 2019-04-26 | 广西大学 | 一种基于作物冠层航拍俯视图的甘蔗株数自动识别方法 |
CN110443811A (zh) * | 2019-07-26 | 2019-11-12 | 广州中医药大学(广州中医药研究院) | 一种复杂背景叶片图像的全自动分割方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106910197B (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Guo et al. | Aerial imagery analysis–quantifying appearance and number of sorghum heads for applications in breeding and agronomy | |
Lameski et al. | Weed detection dataset with RGB images taken under variable light conditions | |
US20190147249A1 (en) | Recognition of weed in a natural environment | |
CA3129174A1 (en) | Method and apparatus for acquiring boundary of area to be operated, and operation route planning method | |
CN107966116B (zh) | 一种水稻种植面积的遥感监测方法及系统 | |
CN109376728A (zh) | 一种基于多特征融合和bp神经网络的稻田杂草识别方法及其应用 | |
CN106022224B (zh) | 一种冬小麦识别方法 | |
CN106951836A (zh) | 基于先验阈值优化卷积神经网络的作物覆盖度提取方法 | |
Oppenheim et al. | Detecting tomato flowers in greenhouses using computer vision | |
CN106910197A (zh) | 一种单目标区域的复杂背景植物叶片图像的分割方法 | |
CN114067207A (zh) | 一种基于深度学习和图像处理的蔬菜苗田杂草检测方法 | |
CN108509928A (zh) | 针对矮化密植枣园田管作业视觉导航路径提取方法 | |
CN107680098A (zh) | 一种甘蔗蔗节特征的识别方法 | |
CN116091951A (zh) | 一种农田与机耕道边界线提取方法及系统 | |
CN114758132B (zh) | 一种基于卷积神经网络的果树病虫害识别方法及系统 | |
JP2008152425A (ja) | 農地区画データ作成システム | |
CN102663396A (zh) | 一种水稻乳熟期自动检测的方法 | |
CN103729621A (zh) | 基于叶片骨架模型的植物叶片图像自动识别方法 | |
Chen et al. | Application of deep learning algorithm on tea shoot identification and localization | |
CN113205006B (zh) | 一种基于水稻指数的多时相遥感影像水稻提取方法 | |
CN109166127A (zh) | 一种可穿戴式植物表型感知系统 | |
CN102231190A (zh) | 冲洪积扇信息的自动提取方法 | |
Korpela et al. | The performance of a local maxima method for detecting individual tree tops in aerial photographs | |
CN103136513B (zh) | 一种改进的asm人脸特征点定位方法 | |
CN108776803A (zh) | 一种去除农田中杂草的方法及系统 |
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 |