本发明涉及智慧农业中数字图像处理技术领域,具体涉及分时重叠植株图像关键特征区域边缘路径获取方法。
背景技术:
机器视觉是利用机器代替人眼来对目标物做模式识别、测量与判断等的一项综合技术。近些年来,随着图像处理、人工智能等技术不断发展,计算机视觉技术已广泛应用于植物的长势监控、病虫害防治、品质分析等各个方面。
在计算机视觉应用于植物生长的长势监控与建模过程中,首先需要将植物图像的感兴趣区域分割出来。在传统方法中,通常使用深度相机、激光相机等专业程度较高的相机,通过感知植物与相机间的距离,进而将植物的根茎叶等关键特征区域与无关背景分离。但该方式成本高、鲁棒性弱,适用面较窄,无法推广落地。
为了以低成本、宽适用面的方法获取植株图像关键特征区域,运用普通监控摄像头的特性获取植株的彩色与灰度的分时图片,即日间采集彩色图片,夜间采集红外补光下的灰度图片。由于日间图片受到杂光影响,且背景混乱,因此采用夜间红外补光拍摄的灰度图像计算感兴趣区域。灰度图二值化后,可以得出植株的选区,将选区作为感兴趣区域,并遮罩在相同角度下的日间彩色图片上,可以有效的屏蔽与背景无关的内容。
植株在大棚中易受风力扰动、植物生长等影响,采用夜间灰度图确定的目标区域与日间彩色图像区域不能完全吻合,需要进一步的调整选区。智能剪刀算法可以辅助用户选取所需的植物感兴趣区域,其先选择一个接近目标边缘的种子点,鼠标沿着物体边缘不断移动,使用该算法计算出一条”live-wire(火线)”,火线可自动贴合所需要边界。然而,由于必须用手移动鼠标才会获取到想要的轮廓,无法自适应的引入前置条件作为初始条件。
技术实现要素:
针对现有技术存在上述问题,本发明目的是提供分时重叠植株图像关键特征区域边缘路径获取方法,其将夜间灰度图像作为前置条件,自适应寻找日间彩色图像中的植株图像关键特征区域。
为实现上述目的,本申请的技术方案为:分时重叠植株图像关键特征区域边缘路径获取方法,包括:
步骤一、寻找夜间灰度图像的边缘;
步骤二、将所述边缘作为前置条件,自适应寻找日间彩色图像中的植株图像关键特征区域。
进一步的,所述寻找夜间灰度图像的边缘,包括:
s11.对夜间红外补光拍摄的图像(灰度图)进行二值化处理,使所述图像呈现出明显的黑白效果,从而凸显出感兴趣区域的轮廓;
s12.将得到的二值化图像进行闭运算处理,填充图像的凹角;
s13.填充后在所述二值化图像中提取目标轮廓,得到多个区域的边缘。
进一步的,得到多个区域的边缘实现方式为:定义一个向量,向量内每个元素保存了一组由连续的点构成的点的集合向量,每一组点集就是一个轮廓边缘;检索所有轮廓并取其中长度最大的边缘,即为植株图像关键特征区域初始边缘,获取的初始边缘记为集合c={p|pincontourofbinarizedimage},p为(x,y)处的像素。
进一步的,所述自适应寻找日间彩色图像中的植株图像关键特征区域,包括:
s21.建立权重图,计算日间彩色图像区域耗费值,从而提取所述日间彩色图像边界;
s22.基于所述权重图,去寻找初始点和自由点之间的路径;
选取初始s=1,k=2作为初始的索引,s为集合c中第s个元素,k为集合c中第k个元素,设初始路径计数器数列,如下:
cn=0,n=1,2,3,4...
设初始最终路径点集合,如下:
s23.从二值化图像的边缘中选取一个点ps作为种子点,记为
pseed=ps,pseed∈c
从pseed的邻域内取一点pk作为自由点,记为:
pfree=pk,pfree∈c∩n4(pseed),ps∈c,
其中,n4(pseed)为像素4临域;
s24.通过pseed,pfree的坐标(xseed,yseed),(xfree,yfree)在权重图上定位两个节点,即矩阵a中的点
s25.将索引k向前移动一位,即
k:=k+1
s26.从集合c中取出第k个元素作为新的自由点,即
pfree=pk,pfree∈c∩n4(pseed)
同步骤s24,获取pseed至新的pfree的路径,记为{bn};
s27.比较路径{an}和{bn},将路径上的点按位相与,则有数列{dn}
dn=an∧bn,n=1,2,3,4...
此时,若在路径第n个点上an=bn,则有dn=1,否则为dn=0。
s28.将重合的路径点所对应的计数器加1,从第一个不重合点开始,后面的路径对应点计数器置0;即设g、h、m为数列的索引,如下
则有
ch:=ch+1,cm=0m≥g
其中,dg、dh为数列{dn}中的元素,ch、cm为数列{cn}中的元素;
s29.判断路径计数器数列{cx},将大于阈值n的路径设为冻结路径,并将所述冻结路径加入最终路径点集合,然后重新选取种子点;即设i、j、l为数列的索引,如下
则有
cend:=cend∪{p|pisthetermofn=jin{bn}}
其中,cj,cl为数列{cn}中的元素;
此时最终路径点集cend中包含了已冻结路径点;选取新的种子点为
pseed=pi,pseed∈c
将路径计数器数列{cn}、路径数列{bn}中对应的已冻结路径的数值丢弃,并将未冻结的数值重新排列至前方,即
s30.将索引k向前移动一位,并重设临时路径数列,即
判断寻路是否结束,若
最终,点集cend即为目标边界点集。
进一步的,建立权重图,具体为:从一个像素点p到另外一个像素点q的局部代价l(p,q)公式如下:
i(p,q)=ωz·fz(q)+ωd·fd(p,q)+ωg·fg(q)
其中ωz、ωd、ωg表示权值,fz表示拉普拉斯过零点代价,采用拉普拉斯过零点特征是为了确保像素节点位于边缘点上;fg是像素在x和y方向上的梯度,当有较大的梯度值时,说明图像存在边缘;fd是梯度方向代价,当两个像素具有相似的梯度方向,但是该方向和它们之间的连接方向接近垂直时给予高代价;当两个像素具有相似的梯度方向且和它们之间的连接方向一致时,给予低代价;
将计算权重后的权重图记为矩阵a,
apq=i(p,q)。
本发明由于采用以上技术方案,能够取得如下的技术效果:本发明可以有效的在日间植株图像中屏蔽无关背景,获取关键特征区域边缘路径,且与初始的二值化边缘相比,本方法获得的边缘与实际边缘更加贴近。
附图说明
图1为分时重叠植株图像关键特征区域边缘路径获取概要流程图;
图2为自适应寻找日间彩色图像中的植株图像关键特征区域流程图;
图3为分时重叠植株图像关键特征区域边缘路径获取检测效果图(其中白色路径为二值化图像中获取的初始路径,黑色为本发明获取的最终路径)。
具体实施方式
本发明的实施例是在以本发明技术方案为前提下进行实施的,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述实施例。
实施例1
本发明充分运用普通监控摄像头的特性,从监控摄像头分时获取同一角度夜间红外补光灰度图像与日间彩色图像。红外补光使得夜间灰度图像中感兴趣区域被凸显,无关背景被屏蔽。本发明将夜间灰度图像作为前置条件,自适应的寻找日间彩色图像中的植株图像关键特征区域,这一思想被描述为“分时重叠”。
本实施例提供分时重叠植株图像关键特征区域边缘路径获取方法,包括:
步骤一:找夜间灰度图像的初始边缘,具体操作如下:
s1.1对夜间红外补光拍摄的图像(灰度图)通过otsu算法进行二值化,使所述图像呈现出明显的黑白效果,从而凸显出感兴趣区域的轮廓。
s1.2.将得到的二值化图像利用opencv中morphologyex()函数进行闭运算处理(先膨胀,再腐蚀),填充图像的凹角来滤波,去除图像中的小黑点。
s1.3.提取目标轮廓并得到初始边缘图像。使用opencv中的函数findcontours()查找轮廓,该函数中定义一个向量,向量内每个元素保存了一组由连续的point点构成的点的集合向量,每一组点集就是一个轮廓,检索所有的轮廓并取其中最长的一条。最终得出的边缘的点保存在列表contours_g中。
步骤二:将所述边缘作为前置条件,自适应寻找日间彩色图像中的植株图像关键特征区域,如图2所示,具体操作如下:
s2.1.建立代价图,计算图像区域耗费值,提取图像的边界。调用智能剪刀intelligent-scissors包中的scissors类,实例化类即计算出一个权重图。scissors=scissors(img_rgb,use_dynamic_features=false)。
s2.2.初始化临时保存路径的列表list_a、list_b,路径计数器列表list_cou,最终边界列表list_contours。上述列表均为空。
s2.3.开始对contours_g进行迭代。获取contours_g中第s个元素,此元素为一个长度为2列表,其代表着一个像素坐标,将此坐标保存为种子点seed_x,seed_y,即seed_x,seed_y=contours_g[s]。获取contours_g中第k个元素,将此坐标保存为自由点free_x,free_y,即free_x,free_y=contours_g[k]。不失一般性,选取初始s=1,k=2作为算法初始的索引。
s2.4.调用scissors类的方法scissors.find_path(seed_x,seed_y,free_x,free_y),获取点seed_x,seed_y到点free_x、free_y的路径,保存为列表list_a。
s2.5.将索引向前移动一位,即k:=k+1,其中:=为赋值符号。
s2.6.获取contours_g中新的第k个元素,将此坐标保存为新的自由点free_x、free_y,即free_x,free_y=contours_g[k]。调用同步骤s2.3的方法,获取点seed_x,seed_y到新的点free_x、free_y的路径,保存为列表list_b。
s2.7.比较路径列表list_a、list_b,将列表按位相与,其结果保存为list_d,即list_a&list_b=list_d。此时,路径列表list_a与路径列表list_b相同的元素,在list_d中对应的位置上为1,反之为0。
s2.8.i、j为索引,为修改路径计数器数列list_cou,循环迭代list_d,将重合的路径点所对应的计数器元素,即若list_d[i]=1,则list_cou[i]:=list_cou[i]+1。从第一个不重合点开始,后面的路径list_cou对应若干个元素list_cou[j]=0。
s2.9.1为索引,迭代判断路径计数器数列list_cou,将大于阈值n的路径视为冻结路径,并将所述冻结路径对应的元素从list_b中出队,入队最终边界列表list_contours。即当list_cou[1]<=n,则有y,x=list_b.pop(0),list_contours.append([seed_y,seed_x])。将路径计数器数列list_cou、路径数列list_b中的已经冻结的数值丢弃,即list_cou[1]=list_cou[1+1],list_b[l]=list_b[l+1]。
s3.0.重新选取种子点。新种子点为list_b中最后一个出队的点,即seed_x,seed_y=y,x。
s3.1.将索引向前移动一位,即k:=k+1,list_a=list_b。判断寻路是否结束,若contours_g还未迭代结束,则返回第s2.5步;否则将零时路径列表list_b中的所有元素全部加入最终边界列表list_contours中。最终,列表list_contours是目标边缘。
本申请的效果对比如图3所示:其中a检测原图;b为采用夜间红外补光拍摄的黑白图像(灰度图)二值化后,得出的樱桃树选区;c是实施本发明方法获得的结果图;d为检测结果的局部放大图。从检测结果可以看出,本发明检测到的边缘更贴合实际边界,检测效率大大提升。
综上可得,本发明可以有效的在日间植株图像中获取关键特征区,在边缘检测、感兴趣区域分割等方面均有所提升,相比二值化图像边缘与实际边缘更为贴近。
本发明的实施例有较佳的实施性,并非是对本发明任何形式的限定。本发明实施例中描述的技术特征或技术特征的组合不应当被认为是孤立的,它们可以被互相组合从而达到更好的技术效果。本发明优选实施方式的范围也可以包括另外的实现,且者应被发明实施例所属技术领域的技术人员所理解。