CN110443811B - 一种复杂背景叶片图像的全自动分割方法 - Google Patents
一种复杂背景叶片图像的全自动分割方法 Download PDFInfo
- Publication number
- CN110443811B CN110443811B CN201910683687.6A CN201910683687A CN110443811B CN 110443811 B CN110443811 B CN 110443811B CN 201910683687 A CN201910683687 A CN 201910683687A CN 110443811 B CN110443811 B CN 110443811B
- Authority
- CN
- China
- Prior art keywords
- image
- background
- segmentation
- point
- mark
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/136—Segmentation; Edge detection involving thresholding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/155—Segmentation; Edge detection involving morphological operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/187—Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/194—Segmentation; Edge detection involving foreground-background 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
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种复杂背景叶片图像的全自动分割方法,直接在彩色图像上求取梯度,然后抓住叶片区域含有叶脉这一特点,通过对叶脉进行有效的增强和提取,获得比较准确的前景标记图。最后采用标记分水岭方法,实现图像的分割。可以说,该方法,基本克服了复杂背景叶片图像全自动分割的难题,推动了复杂背景叶片图像识别的发展。尽管该方法针对叶片来设计,但是对于复杂背景下单目标且目标区域有纹理脉络的全自动图像分割问题,也有一定的参考意义。
Description
技术领域
本发明涉及图像处理领域,更具体地,涉及一种复杂背景叶片图像的全自动分割方法。
背景技术
药用植物,是中药材的主要来源,是中医药治病救人的物质基础。然而,近年来,由于生态环境的恶化,药用植物资源显著萎缩。加强对药用植物的保护迫在眉睫。
如果能深入地摸清濒危药用植物的地理分布,构建地理信息资源库,对于野生药用植物的保护、引种和利用等,将会起到重要的支撑作用。然而,由于一般人难以在复杂的野外生态环境中鉴别植物的类别,所以,现行的资源调查,也只能采取抽样选点的方式,离全面深入的调查还有一定距离。即便如此,已经是耗费了巨大的人力物力。
拍摄植物叶片图像,继而进行机器鉴别的设想,让更多的只具有初步基础的人员在野外通过简单的手机操作就能相对准确地鉴定当前植物的种类。和多数的图像识别问题一样,叶片图像的分割是第一道难关。现有的一种复杂背景药用植物叶片图像的准确分割方法,该方法需要人工的参与;
基于叶片图像的植物机器鉴别的研究,已有许多报道。按其图像采集的方式,可分为两种,一是把叶片摘下来,再拍摄或扫描,得到简单背景叶片图像。其优点是图像容易分割,分割准确率高;缺点是对植物造成损伤。现有研究多采用这种方式。二是直接拍摄枝干上的叶片,得到复杂背景叶片图像。优点是不对植物造成任何损伤;缺点是图像中除了目标叶片外,还含有枝干、泥土、其他叶片等背景对象,分割难度大,分割准确率低,严重影响了后续分类识别的准确性。
由于无损性优势,研究基于复杂背景叶片图像的机器鉴别是重点。那么,复杂背景叶片图像的准确分割,就是首要解决的问题。尽管当前的深度学习分类方法,可以实现图像到类别的映射。但是,植物叶片图像样本很难均衡地扩充到较大数量。小部分种类常见,大部分种类难找,有些还可遇不可求。这种情况下,深度学习分类方法的适用性有待验证。而且,如果能准确地进行图像分割,剔除图像背景,也就是干扰项,不管后续使用何种分类方法,也都是大有好处的。
图像分割方法有很多。有些需要人工参与。我们前一阶段对这一类的方法进行了深度的研究,并提出了一种有人工参与的高准确率的复杂背景叶片图像分割方法。但需要人工参与还是影响了用户的体验。显然,全自动的方法更受欢迎。
现有的全自动的图像分割方法也有许多,著名的有:
OTSU,是由日本学者OTSU于1979年提出的一种对图像进行二值化的阈值分割方法。该方法以最大类间方差为准则,选择最优的分割阈值。该方法对噪音和目标大小十分敏感,仅对前景和背景对比度明显的图像产生较好的分割效果。
Mean shift,是基于核密度估计的爬山算法,可用于聚类、图像分割、跟踪等。图像分割就是求每一个像素点的类标号。类标号取决于它在特征空间所属的cluster。对于每一个cluster,首先得有个类中心。mean shift认为是概率密度(probalility densityfunction)的极大值点就是类中心。Mean shift和OTSU类似,对于前景和背景对比度明显的图像,分割效果很好;否则,效果较差。
GraphCut方法把图像分割问题与图的最小割(min cut)问题相关联。基于图论的分割方法的本质就是以最小化Cost为目标去移除特定的边,将图划分为若干子图从而实现分割。Cost中包含区域项和边界项。它处理像素值存在明显差异的图像有优势,但对复杂背景图像,前景和背景较接近的图像,效果较差。
近年来,深度学习迅速发展。深度学习图像分割方法FCN(Fully ConvolutionalNetworks)也应运而生。并屡在各种复杂的图像分割问题上表现出优越的性能。FCN被以“像素-像素”、“端-端”的方式来训练(trained end-to-end,pixels-to-pixels on semanticsegmentation),实现了对图像的像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。如果不考虑时间和内存的限制,理论上,它可以接受任意尺寸的输入图像。但FCN也有不足之处:①得到的结果还是不够精细,对图像中的细节不敏感。②仅仅对各个像素进行分类,没有充分考虑像素与像素之间的关系。
另外一种经典分割方法——标记分水岭分割。它不受目标区域形状的限制,非常适合形状各异的多种类别叶片图像的分割。并且,它也非常适用于复杂背景的情形。只要输入的前景标记图像和背景标记图像准确,它往往能获得很好的分割结果。但如何准确地获得前景标记图像和背景标记图像,是一大难题。很多时候,只能采取人工参与的方式。
发明内容
本发明提供一种复杂背景叶片图像的全自动分割方法,实现在复杂背景中药用植物叶片的全自动分割。
为解决上述技术问题,本发明的技术方案如下:
一种复杂背景叶片图像的全自动分割方法,包括以下步骤:
S1:对原始叶片图像利用最大类间方差法进行前置简单分割;
S2:将所述原始叶片图像分别转换为HIS、Lab模型的表示形式,得到各分量图像,再在所述各分量图像的最大类间方差法分割结果中检测背景标记,并依据预设标准,选择其中一个背景标记作为最优背景标记;
S3:在原始叶片图像上检测前景标记;
S4:整理前景标记和背景标记,使用标记分水岭分割方法进行分割,得到最终分割图像。
优选地,步骤S1具体包括以下步骤:
S1.1:将彩色RGB的原始叶片图像缩小至预设的尺寸,得到图像currentImage,具体为:
计算ratio=(1200×900)/(原始叶片图像的行数×原始叶片图像的列数);
若ratio小于1,则把图像以ratio的开平方的值为倍数缩小,若ratio不小于1,无需缩小;得到图像currentImage;实际中,若需要使用其他的尺度,则可调整ratio的计算参数;
S1.2:把图像currentImage分别转换为HIS、Lab模型的表示形式,判断在H分量图像、S分量图像、a分量图像、b分量图像中前景颜色与背景颜色是否存在过大的差异,若是,记录对应的优胜系数coef和判断标志flat,输出分割图像BW;具体为:
S1.2.1:对各分量图像,采用最大类间方差法(OTSU)分割,得到对应的分割图像BW;
S1.2.2:计算各分割图像BW四边框的像素中,值为“1”的像素所占比例frameCof;
S1.2.3:计算各分割图像BW中值为“1”的像素的数量area;
S1.2.4:在各分割图像BW,删除所有小面积区域,保留面积最大的唯一区域;
S1.2.5:计算步骤S1.2.4后的图像BW中值为“1”的像素的数量targetArea;
S1.2.6:把targetArea与area的比值作为foregroundCoef;
S1.2.7:若frameCof<0.1且foregroundCoef>0.9,则认为是前景和背景颜色存在过大的差异,设置flat为1,并以(1-frameCof)*foregroundCoef作为优胜系数coef;若frameCof≥0.1或foregroundCoef≤0.9,把S1.2.4后的图像BW取反,重做S1.2.2至S1.2.6步,再判断是否frameCof<0.1且foregroundCoef>0.9,若是,设置flat为1,以(1-frameCof)*foregroundCoef作为优胜系数coef,否则设置flat为0;
S1.3:若步骤S1.2中每一个分量图像得到的判断标志flat均为0,则进入步骤S2;若有一个以上判断标志flat,则取优胜系数coef最大者对应的分割图像BW作为图像logicImage;
S1.4:检测图像logicImage的前景区域伸展到四边框的情况有多少处,若超过3处,进入步骤S2;若不超过3处,进入步骤S1.5;
一般来说,拍摄叶片的时候,会尽量完整拍摄,不大可能出现叶片触及边框的情况。偶尔叶柄过长,或叶尖较细长,伸展到了边框,那已经是极大容忍下的接纳了。因而,如果出现触及边框超过3次,那这个logicImage肯定不能作为分割结果。
S1.5:在图像logicImage的中部,裁剪一块长度为图像logicImage长度的0.6倍,宽度也占同样比例的子图logicImageCrop,子图logicImageCrop的四边框分别与图像logicImage的四边框平行,且两者的中心点重合;计算子图logicImageCrop中值为“1”的像素点的个数logicImageCropArea;计算logicImage中值为“1”的像素点的个数logicImageArea,计算logicImageCropArea与logicImageArea的比值,若不大于0.5,进入步骤S2;若大于0.5,进入步骤S1.6;
这步的目的是检测logicImage中,前景区域是否过小且位于图像边框的附近,若属于这种情况,则放弃此分割结果。因为拍摄叶片图像时,往往都会把叶片拍摄在图像中央,且会占据图像的大部分范围,而不会出现前述的情况。
S1.6:对图像logicImage进行闭运算;
S1.7:对步骤S1.6后的图像logicImage进行孔洞填充,得到分割结果。
优选地,步骤S2具体包括以下步骤:
S2.1:设置可信前景尺度参数para;
S2.2:分别在H分量图像、S分量图像、a分量图像、b分量图像对应的每一个分割图像BW上,检测背景标记,具体包括:
S2.2.1:在分割图像BW的中部,裁剪一块长度为分量图像长度的para×2倍,宽度也占同样比例的子图credibleForeground,所述子图credibleForeground的四边框分别与分割图像BW的四边框平行,子图credibleForeground的中心点与分割图像BW的中心点重合;这是因为拍摄叶片图像时,往往都会把叶片拍摄在图像中央,且会占据图像的大部分范围;因而,目标叶片较大可能覆盖了图像中央的小片区域。
S2.2.2:计算子图credibleForeground中,值为“1”的像素所占比例coefOfCredibleForeground;
S2.2.3:若coefOfCredibleForeground在区间[0.2,0.8]内,则该分割图像BW的分割准确性不适合在该分割图像BW检测背景标记,结束检测过程,返回检测失败消息;
S2.2.4:若coefOfCredibleForeground小于0.2,把该分割图像BW另存为图像backgroundCandidate,把该分割图像BW取反的结果存储为图像BW;若coefOfCredibleForeground不小于0.2,把该分割图像BW取反的结果存储为图像backgroundCandidate;
S2.2.5:计算图像BW四边框的像素中,值为“1”的像素所占比例frameCof;
S2.2.6:如果frameCof大于0.6,则认为此图像BW的分割准确性存疑,结束本检测过程,返回检测失败消息;
S2.2.7:对图像backgroundCandidate进行数学形态学的腐蚀操作;
S2.2.8:把S2.2.7后的图像backgroundCandidate的四边框的像素均置为“1”;
S2.2.9:在S2.2.8后的图像backgroundCandidate上,选择保留与图像左上角那一点连通的区域,其他区域删除,结果记为图像background,得到要求的背景标记;但里面可能还存在孔洞。通过以下三个步骤消除孔洞,有利于节省标记分水岭分割的时间消耗。
S2.2.10:把图像background取反,另存为图像reverseBackground;
S2.2.11:在图像reverseBackground上,选择保留与图像中心点连通的区域,其他区域删除,结果记为图像reverseBackground2;
S2.2.12:把图像reverseBackground2取反的结果存为图像background;
S2.2.13:在图像reverseBackground2的中部,裁剪一块长度为分量图像长度的(para×2)倍,宽度也占同样比例的子图credibleForegroundClean,子图的四边框分别与原图的四边框平行,子图的中心点与原图的中心点重合;
S2.2.14:计算子图credibleForegroundClean中,值为“1”的像素所占比例coefOfCredibleForegroundClean;
S2.2.15:计算backgroundCoef=1-(1.01-coefOfCredibleForegroundClean)×frameCof,返回图像background、backgroundCoef以及检测成功消息;
S2.3:在S2.2得到的四个背景标记检测结果中,挑选检测成功且backgroundCoef最大者的图像background作为图像bestBackgroundDetect,并登记bestBackgroundDetectFlat为真,若四个背景标记检测结果皆返回失败信息,则登记bestBackgroundDetectFlat为假;
S2.4:如果bestBackgroundDetectFlat为真,则对图像bestBackgroundDetect进行修正,具体过程为:先对图像bestBackgroundDetect进行腐蚀,然后把它的四边框上的像素点全置为“1”,最后选择保留与它的左上角那一点连通的区域,删除其余区域。
优选地,步骤S3包括以下步骤:
S3.1:初始化设置,得到初始化前景标记图foregroundMask和初始化背景标记图backgroundMask;
S3.2:对彩色RGB图像currentImage直接求梯度;
S3.3:叶脉增强;
S3.4:叶脉分割;
S3.5:主叶脉并入;
S3.6:零碎细叶脉并入。
优选地,步骤S3.1包括以下步骤:
S3.1.1:设置近邻距离判据系数nearDistancePara,设置近邻距离判据nearDistance为图像长和宽的平均值乘以nearDistancePara,并四舍五入取整;设置贴近边框距离判据系数nearBoundaryPara,设置贴近边框行数判据nearBoundaryRowDistance为图像的总行数乘以nearBoundaryPara,并四舍五入取整,设置贴近边框列数判据nearBoundaryColDistance为图像的总列数乘以nearBoundaryPara,并四舍五入取整;设置非常贴近边框距离判据系数veryNearBoundaryPara,设置非常贴近边框行数判据veryNearBoundaryRowDistance为图像的总行数乘以veryNearBoundaryPara,并四舍五入取整,设置非常贴近边框列数判据veryNearBoundaryColDistance为图像的总列数乘以veryNearBoundaryPara,并四舍五入取整;设置避让边框距离系数dodgeBoundaryPara(例如0.2,它的取值必须大于nearBoundaryPara),设置避让边框行数dodgeBoundaryRowDistance为图像的总行数乘以dodgeBoundaryPara,并四舍五入取整,设置避让边框列数dodgeBoundaryColDistance为图像的总列数乘以dodgeBoundaryPara,并四舍五入取整;
S3.1.2:初始化前景标记图foregroundMask,具体为:新建一个大小与彩色RGB图像currentImage一致,像素值全为“0”的二值图像foregroundMask,把foregroundMask的中部长度为foregroundMask的长度的(para×2)倍,宽度也占同样比例的矩形区域内的像素值重置为“1”,该矩形的四边框分别与foregroundMask的四边框平行,两者的中心点也重合;
S3.1.3:初始化背景标记图backgroundMask,具体为:新建一个大小与彩色RGB图像currentImage一致,像素值全为“0”的二值图像backgroundMask,把backgroundMask四边框上的像素值重置为“1”。
优选地,步骤S3.2包括以下步骤:
对彩色RGB图像currentImage直接求梯度,得到梯度幅度图像VG和梯度角度图像A,具体过程是:
S3.2.1:求x和y方向的偏导数:令图像currentImage上任意一点的坐标为(x,y),像素值为(R,G,B),其中R,G,B分别表示红、绿、蓝的分量值。求
优选地,步骤S3.3包括以下步骤:
S3.3.1:如果bestBackgroundDetectFlat为真,则检测bestBackgroundDetect中任意一点的值,若是“1”,重置梯度幅度图VG中同一位置的点值为“0”;这一步骤杜绝了背景区域中的某些像素点在增强后重新混入前景的可能;
S3.3.2:统计梯度幅度图VG中,划分像素值最大的1%的那部分点的分界阈值high,划分像素值最小的1%的那部分点的分界阈值low;把所有像素值大于high的点,重置为high;把所有像素值小于low的点,重置为low;该步骤去掉了梯度幅度图中像素值较为极端的点,有利于后续的OTSU分割;
S3.3.3:在梯度角度图A中,对每一点,以半径为小尺度的圆盘为邻域范围,求标准差,到标准差图像stdOfA;局部范围内的标准差越小,表示该点附近的梯度向量的角度的一致性越高;
S3.3.4:对梯度幅度图VG上的每一点的像素值α,重置α=α/(stdOfA+0.1)。其作用是增强VG中的叶脉。
优选地,S3.4包括以下步骤:
S3.4.1:在梯度幅度图VG中央裁剪一块长度为梯度幅度图VG的长度的(para×2)倍,宽度也占同样比例的子图VGCrop,子图的四边框分别与VG的四边框平行,子图的中心点与VG的中心点重合;从中央采样确定阈值的目的,是希望阈值不受叶外区域像素值的干扰;
S3.4.2:求VGCrop的最大类间方差法分割阈值level;
S3.4.3:以level为阈值,对梯度幅度图VG进行阈值分割,得到OtsuBW;此举的目的是求叶脉。
S3.4.4:删除OtsuBW中过小的连通区域;
S3.4.5:对OtsuBW进行膨胀,目的是把断裂的叶脉连上;
优选地,步骤S3.5包括以下步骤:
S3.5.1:复制备份foregroundMask为foregroundMaskBackup;
S3.5.2:把foregroundMask或OtsuBW,存储为foregroundMask;
S3.5.3:在foregroundMask上,选择保留与图像中心点连通的区域,删除其他区域;
S3.5.4:复制备份foregroundMask为foregroundMaskForDel;
S3.5.5:检测foregroundMask上,有没有值为“1”的点,落在前nearBoundaryRowDistance行内,或落在后nearBoundaryRowDistance行内,或落在前nearBoundaryColDistance列内,或落在后nearBoundaryColDistance列内,若无,认为新并入的前景区域离图像边框较远,很有可能是穿过图像中央区域的主叶脉,目的达到,转向S3.6;
S3.5.6:对foregroundMask进行小尺度腐蚀,然后选择保留与图像中心点连通的区域,删除其他区域;
S3.5.7:进一步检测foregroundMask上,有没有值为“1”的点,落在前veryNearBoundaryRowDistance行内,或落在后veryNearBoundaryRowDistance行内,或落在前veryNearBoundaryColDistance列内,或落在后veryNearBoundaryColDistance列内,若有,则表明图像前景区域非常逼近图像边框,意味着前面的腐蚀并没有达到修剪的目的,需要再次腐蚀;若无,转向S3.5.11;
S3.5.8:对foregroundMask进行小尺度腐蚀,然后选择保留与图像中心点连通的区域,删除其他区域;
S3.5.9:进一步检测foregroundMask上,有没有值为“1”的点,落在前veryNearBoundaryRowDistance行内,或落在后veryNearBoundaryRowDistance行内,或落在前veryNearBoundaryColDistance列内,或落在后veryNearBoundaryColDistance列内,若有,则表明图像前景区域仍然非常逼近图像边框,意味着前面腐蚀操作还是没有达到目的,需要特殊处理;若无,转向S3.5.11;
S3.5.10:把foregroundMask中的前dodgeBoundaryRowDistance行、后dodgeBoundaryRowDistance行、前dodgeBoundaryColDistance列、后dodgeBoundaryColDistance列,全部重置为“0”;
S3.5.11:把foregroundMask或上foregroundMaskBackup,存储为foregroundMask,完成了主叶脉的并入;
优选地,步骤S3.6包括以下步骤:
S3.6.1:在OtsuBW中,删除foregroundMaskForDel中的前景区域,另存为零碎叶脉候选图candidates,所述的删除为:对OtsuBW中任意一点,若foregroundMaskForDel中同一位置的点值为“1”,则把OtsuBW中的该点重置为“0”;
S3.6.2:在candidates上扫描全图,找出每一个区域离图像中心点最近的距离DN;若DN小于nearDistance,做标记,并记录该区域中离图像中心点最近的点的行号row和列号col,同时判断每一个区域离图像四个边框的水平距离是否小于nearBoundaryRowDistance,垂直距离是否小于nearBoundaryColDistance,如果是,就标记该区域离边框太近;
S3.6.3:复制备份candidates为avoidRegions;
S3.6.4:把candidates中被标记为离边框太近的区域都删掉;
S3.6.5:对于candidates中每一个离图像中心点距离小于nearDistance的区域,有避让地画一条从该区域最近图像中心点的点,其行号列号S3.6.2中已求出,指向图像中心点的线段,避让规则是:设线段任意一点的坐标为(x,y),若avoidRegions(x,y)为“1”,同时该点不是线段的起点,则取消该线段,此外,画线过程中,若检测到foregroundMask(x,y)为“1”,则认为已经连通了foregroundMask,任务完成;
S3.6.6:把foregroundMask或上candidates,存为foregroundMask;
S3.6.7:在foregroundMask中选择保留与图像中心点连通的区域。
优选地,S4包括以下步骤:
S4.1:如果bestBackgroundDetectFlat为真,首先把bestBackgroundDetect轻微膨胀为bestBackgroundDetectFat,然后在foregroundMask中,删除与bestBackgroundDetectFlat重叠的区域,并对foregroundMask,保留与图像中心点连通的区域,删除其他区域,最后,置backgroundMask等于bestBackgroundDetect;
S4.2:以backgroundMask或上foregroundMask的结果为标记,做标记分水岭分割,得到outPutImage;
S4.3:把outPutImage中标记号为“2”的区域作为前景,其余作为背景,得到最终的二值分割结果logicImage。
与现有技术相比,本发明技术方案的有益效果是:
本发明直接在彩色图像上求取梯度,然后抓住叶片区域含有叶脉这一特点,通过对叶脉进行有效的增强和提取,获得比较准确的前景标记图。最后采用标记分水岭方法,实现图像的分割。本发明克服了复杂背景叶片图像全自动分割的难题,推动了复杂背景叶片图像识别的发展。对于复杂背景下单目标且目标区域有纹理脉络的全自动图像分割问题,也有一定的参考意义。
附图说明
图1为本发明的流程示意图。
图2为S1中前置背景分割的结果示意图,其中(a)为叶片原图,(b)S分量图分割结果,(c)为b分量图分割结果,(d)为修正后的最终分割结果,(e)为H分量图,(f)为S分量图,(g)为a分量图,(h)为b分量图,(i)为H分量图经OTSU后,(j)为S分量图经OTSU后,(k)为a分量图经OTSU后,(l)为b分量图经OTSU后。
图3为Lonicerae Confusae(Sweet.)DC.叶片图像经S1.2的结果示意图,其中(a)为原图,(b)为b分量图,(c)为b分量图经OTSU后,(d)为S1.2输出的结果。
图4为Clematis chinensis Osbeck叶片图像经S1.2的结果示意图,其中(a)为原图,(b)为H分量图,(c)为H分量图经OTSU后,(d)为S1.2输出的结果。
图5为检测最优背景标记时的结果示意图,其中(a)为叶片原图,(b)最优背景标记,(c)为前景标记,(d)为最终分割结果,(e)为H分量图,(f)为S分量图,(g)为a分量图,(h)为b分量图,(i)为H分量图分割结果,(j)为S分量图分割结果,(k)为a分量图分割结果,(l)为b分量图分割结果,(m)为从H分量图检测到的背景,(n)为从S分量图检测到的背景,(o)为从a分量图检测到的背景,(p)为从b分量图检测到的背景。
图6为Polygonum chinense L.叶片,其中(a)为叶片原图,(b)为梯度幅度图,(c)为梯度角度图,(d)为梯度幅度图去背景后,(e)为梯度幅度图去极端点后,(f)为梯度角度图局部标准差,(g)为梯度幅度图增强后,(h)为中央矩形区域,(i)为增强梯度幅度图的分割结果,(j)为删除小区域后,(k)为膨胀后,(l)为初始前景并上主叶脉后,(m)为零碎叶脉候选图,(n)为从删除近边界区域后,(o)为朝着中心点连线后,(p)为零碎细叶脉并入完成。
图7为主叶脉并入时的结果示意图,其中(a)为原图,(b)为刚并入主叶脉,(c)为第一次小裁剪后,(d)为最终分割结果。
图8为其它种类植物叶片的分割结果示意图,其中(a)、(e)、(i)、(m)分别为不同种类植物叶片的原图,(b)为(a)对应的背景标记图,(c)为(a)对应的前景标记图,(d)为(a)对应的分割结果,(f)为(e)对应的背景标记图,(g)为(e)对应的前景标记图,(h)为(e)对应的分割结果,(j)为(i)对应的背景标记图,(k)为(i)对应的前景标记图,(l)为(i)对应的分割结果,(n)为(m)对应的背景标记图,(o)为(m)对应的前景标记图,(p)为(m)对应的分割结果。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例公开了一种复杂背景叶片图像的全自动分割方法,如图1,包括以下步骤:
S1:对原始叶片图像利用最大类间方差法进行前置简单分割;
S2:将所述原始叶片图像分别转换为HIS、Lab模型的表示形式,得到各分量图像,再在所述各分量图像的最大类间方差法分割结果中检测背景标记,并依据预设标准,选择其中一个背景标记作为最优背景标记;
S3:在原始叶片图像上检测前景标记;
S4:整理前景标记和背景标记,使用标记分水岭分割方法进行分割,得到最终分割图像。
步骤S1具体包括以下步骤:
S1.1:将彩色RGB的原始叶片图像缩小至预设的尺寸,得到图像currentImage,具体为:
计算ratio=(1200×900)/(原始叶片图像的行数×原始叶片图像的列数);
若ratio小于1,则把图像以ratio的开平方的值为倍数缩小,若ratio不小于1,无需缩小;得到图像currentImage;实际中,若需要使用其他的尺度,则可调整ratio的计算参数;
S1.2:把图像currentImage分别转换为HIS、Lab模型的表示形式,判断在H分量图像、S分量图像、a分量图像、b分量图像中前景颜色与背景颜色是否存在过大的差异,若是,记录对应的优胜系数coef和判断标志flat,输出分割图像BW;具体为:
S1.2.1:对各分量图像,采用最大类间方差法(OTSU)分割,得到对应的分割图像BW;
S1.2.2:计算各分割图像BW四边框的像素中,值为“1”的像素所占比例frameCof;
S1.2.3:计算各分割图像BW中值为“1”的像素的数量area;
S1.2.4:在各分割图像BW,删除所有小面积区域,保留面积最大的唯一区域;
S1.2.5:计算步骤S1.2.4后的图像BW中值为“1”的像素的数量targetArea;
S1.2.6:把targetArea与area的比值作为foregroundCoef;
S1.2.7:若frameCof<0.1且foregroundCoef>0.9,则认为是前景和背景颜色存在过大的差异,设置flat为1,并以(1-frameCof)*foregroundCoef作为优胜系数coef;若frameCof≥0.1或foregroundCoef≤0.9,把S1.2.4后的图像BW取反,重做S1.2.2至S1.2.6步,再判断是否frameCof<0.1且foregroundCoef>0.9,若是,设置flat为1,以(1-frameCof)*foregroundCoef作为优胜系数coef,否则设置flat为0;
在图2中,S分量图像分割结果的flat为1,coef为0.9536,输出的BW如图2(b);b分量图像分割结果的flat为1,coef为0.8722,输出的BW如图2(c)。其余分量图像的flat均为0。图2中,选择flat为1且coef最大的S分量图像的分割图像BW,也就是图2(b)。
S1.3:若步骤S1.2中每一个分量图像得到的判断标志flat均为0,则进入步骤S2;若有一个以上判断标志flat,则取优胜系数coef最大者对应的分割图像BW作为图像logicImage;
S1.4:检测图像logicImage的前景区域伸展到四边框的情况有多少处,若超过3处,进入步骤S2;若不超过3处,进入步骤S1.5;
一般来说,拍摄叶片的时候,会尽量完整拍摄,不大可能出现叶片触及边框的情况。偶尔叶柄过长,或叶尖较细长,伸展到了边框,那已经是极大容忍下的接纳了。因而,如果出现触及边框超过3次,那这个logicImage肯定不能作为分割结果。
如图3(a)中的Lonicerae Confusae(Sweet.)DC.叶片图像,它的如图3(b)的b分量图,经OTSU后得到如图3(c)的二值图,再经选择最大前景区域后,判定满足frameCof<0.1且foregroundCoef>0.9(此例中frameCof是0.0970,foregroundCoef是0.9985),输出如图3(d)的分割结果。接着,该分割结果被选为logicImage。但显然,该结果与边界有多处的连接,分割效果并不好。这个问题被发现,该分割结果被放弃。
S1.5:在图像logicImage的中部,裁剪一块长度为图像logicImage长度的0.6倍,宽度也占同样比例的子图logicImageCrop,子图logicImageCrop的四边框分别与图像logicImage的四边框平行,且两者的中心点重合;计算子图logicImageCrop中值为“1”的像素点的个数logicImageCropArea;计算logicImage中值为“1”的像素点的个数logicImageArea,计算logicImageCropArea与logicImageArea的比值,若不大于0.5,进入步骤S2;若大于0.5,进入步骤S1.6;
这步的目的是检测logicImage中,前景区域是否过小且位于图像边框的附近,若属于这种情况,则放弃此分割结果。因为拍摄叶片图像时,往往都会把叶片拍摄在图像中央,且会占据图像的大部分范围,而不会出现前述的情况。
如图4(a)中的Clematis chinensis Osbeck叶片图像,它的如图4(b)的H分量图,经OTSU后得到如图4(c)的二值图,再经选择最大前景区域后,判定满足frameCof<0.1且foregroundCoef>0.9(此例中frameCof是0.0817,foregroundCoef是0.9993),输出如图4(d)的分割结果。接着,该分割结果被选为logicImage。但显然,所得结果完全错误。幸而检测出它的前景区域过小且位于图像边框附近而将其放弃。
S1.6:对图像logicImage进行闭运算;
S1.7:对步骤S1.6后的图像logicImage进行孔洞填充,得到分割结果。
如图2(b)的logicImage,通过了S1.4和S1.5两项检测,然后经过S1.6和S1.7的修正,得到了如图2(d)的结果。
优选地,步骤S2具体包括以下步骤:
S2.1:设置可信前景尺度参数para;
S2.2:分别在H分量图像、S分量图像、a分量图像、b分量图像对应的每一个分割图像BW上,检测背景标记,具体包括:
S2.2.1:在分割图像BW的中部,裁剪一块长度为分量图像长度的para×2倍,宽度也占同样比例的子图credibleForeground,所述子图credibleForeground的四边框分别与分割图像BW的四边框平行,子图credibleForeground的中心点与分割图像BW的中心点重合;这是因为拍摄叶片图像时,往往都会把叶片拍摄在图像中央,且会占据图像的大部分范围;因而,目标叶片较大可能覆盖了图像中央的小片区域。
S2.2.2:计算子图credibleForeground中,值为“1”的像素所占比例coefOfCredibleForeground;
S2.2.3:若coefOfCredibleForeground在区间[0.2,0.8]内,则该分割图像BW的分割准确性不适合在该分割图像BW检测背景标记,结束检测过程,返回检测失败消息;
S2.2.4:若coefOfCredibleForeground小于0.2,把该分割图像BW另存为图像backgroundCandidate,把该分割图像BW取反的结果存储为图像BW;若coefOfCredibleForeground不小于0.2,把该分割图像BW取反的结果存储为图像backgroundCandidate;
S2.2.5:计算图像BW四边框的像素中,值为“1”的像素所占比例frameCof;
S2.2.6:如果frameCof大于0.6,则认为此图像BW的分割准确性存疑,结束本检测过程,返回检测失败消息;
S2.2.7:对图像backgroundCandidate进行数学形态学的腐蚀操作;
S2.2.8:把S2.2.7后的图像backgroundCandidate的四边框的像素均置为“1”;
S2.2.9:在S2.2.8后的图像backgroundCandidate上,选择保留与图像左上角那一点连通的区域,其他区域删除,结果记为图像background,得到要求的背景标记;但里面可能还存在孔洞。通过以下三个步骤消除孔洞,有利于节省标记分水岭分割的时间消耗。
S2.2.10:把图像background取反,另存为图像reverseBackground;
S2.2.11:在图像reverseBackground上,选择保留与图像中心点连通的区域,其他区域删除,结果记为图像reverseBackground2;
S2.2.12:把图像reverseBackground2取反的结果存为图像background;
S2.2.13:在图像reverseBackground2的中部,裁剪一块长度为分量图像长度的(para×2)倍,宽度也占同样比例的子图credibleForegroundClean,子图的四边框分别与原图的四边框平行,子图的中心点与原图的中心点重合;
S2.2.14:计算子图credibleForegroundClean中,值为“1”的像素所占比例coefOfCredibleForegroundClean;
S2.2.15:计算backgroundCoef=1-(1.01-coefOfCredibleForegroundClean)×frameCof,返回图像background、backgroundCoef以及检测成功消息;
S2.3:在S2.2得到的四个背景标记检测结果中,挑选检测成功且backgroundCoef最大者的图像background作为图像bestBackgroundDetect,并登记bestBackgroundDetectFlat为真,若四个背景标记检测结果皆返回失败信息,则登记bestBackgroundDetectFlat为假;
S2.4:如果bestBackgroundDetectFlat为真,则对图像bestBackgroundDetect进行修正,具体过程为:先对图像bestBackgroundDetect进行腐蚀,然后把它的四边框上的像素点全置为“1”,最后选择保留与它的左上角那一点连通的区域,删除其余区域。
如图5所示,图5(a)是一张Polygonum chinense L.叶片的原图。图5(e)到图5(h)依次是H分量图、S分量图、a分量图和b分量图。图5(i)到图5(l)则是这四个分量图经过OTSU分割后的二值图。而图5(m)到图5(p)是分别在四张二值图上,经过S2.2后检测到的四张背景标记图。与此同时,还测得对应的backgroundCoef分别为0.9942、0.9972、0.9964和0.9986。也就是说,在b分量图的二值图上检测到的背景标记(图5(p))对应的backgroundCoef最大。所以在S2.3中选择了该背景标记为最优背景标记,并在S2.4中进行了修正,得到了如图5(b)的bestBackgroundDetect。接下来,还将检测得到如图5(c)的前景标记。最后结合两个标记图像,获得如图5(d)的分割结果。
步骤S3包括以下步骤:
S3.1:初始化设置,得到初始化前景标记图foregroundMask和初始化背景标记图backgroundMask;
S3.2:对彩色RGB图像currentImage直接求梯度;
S3.3:叶脉增强;
S3.4:叶脉分割;
S3.5:主叶脉并入;
S3.6:零碎细叶脉并入。
步骤S3.1包括以下步骤:
S3.1.1:设置近邻距离判据系数nearDistancePara,设置近邻距离判据nearDistance为图像长和宽的平均值乘以nearDistancePara,并四舍五入取整;设置贴近边框距离判据系数nearBoundaryPara,设置贴近边框行数判据nearBoundaryRowDistance为图像的总行数乘以nearBoundaryPara,并四舍五入取整,设置贴近边框列数判据nearBoundaryColDistance为图像的总列数乘以nearBoundaryPara,并四舍五入取整;设置非常贴近边框距离判据系数veryNearBoundaryPara,设置非常贴近边框行数判据veryNearBoundaryRowDistance为图像的总行数乘以veryNearBoundaryPara,并四舍五入取整,设置非常贴近边框列数判据veryNearBoundaryColDistance为图像的总列数乘以veryNearBoundaryPara,并四舍五入取整;设置避让边框距离系数dodgeBoundaryPara(例如0.2,它的取值必须大于nearBoundaryPara),设置避让边框行数dodgeBoundaryRowDistance为图像的总行数乘以dodgeBoundaryPara,并四舍五入取整,设置避让边框列数dodgeBoundaryColDistance为图像的总列数乘以dodgeBoundaryPara,并四舍五入取整;
S3.1.2:初始化前景标记图foregroundMask,具体为:新建一个大小与彩色RGB图像currentImage一致,像素值全为“0”的二值图像foregroundMask,把foregroundMask的中部长度为foregroundMask的长度的(para×2)倍,宽度也占同样比例的矩形区域内的像素值重置为“1”,该矩形的四边框分别与foregroundMask的四边框平行,两者的中心点也重合;
S3.1.3:初始化背景标记图backgroundMask,具体为:新建一个大小与彩色RGB图像currentImage一致,像素值全为“0”的二值图像backgroundMask,把backgroundMask四边框上的像素值重置为“1”。
步骤S3.2包括以下步骤:
S3.2.1:求x和y方向的偏导数:令图像currentImage上任意一点的坐标为(x,y),像素值为(R,G,B),其中R,G,B分别表示红、绿、蓝的分量值。求
如图6(a)是Polygonum chinense L.叶片的彩色图像,由它直接求梯度,获得如图6(b)和图6(c)的梯度幅度图和梯度角度图。从图6(b)可见,叶片的叶脉虽然有些暗淡,但相对清晰,叶片外的背景区域,亮度均较低。
步骤S3.3包括以下步骤:
S3.3.1:如果bestBackgroundDetectFlat为真,则检测bestBackgroundDetect中任意一点的值,若是“1”,重置梯度幅度图VG中同一位置的点值为“0”;这一步骤杜绝了背景区域中的某些像素点在增强后重新混入前景的可能,如图6(d);
S3.3.2:统计梯度幅度图VG中,划分像素值最大的1%的那部分点的分界阈值high,划分像素值最小的1%的那部分点的分界阈值low;把所有像素值大于high的点,重置为high;把所有像素值小于low的点,重置为low;该步骤去掉了梯度幅度图中像素值较为极端的点,有利于后续的OTSU分割,结果如图6(e)所示,图像更为柔和。
S3.3.3:在梯度角度图A中,对每一点,以半径为小尺度的圆盘为邻域范围,求标准差,到标准差图像stdOfA;局部范围内的标准差越小,表示该点附近的梯度向量的角度的一致性越高,如图6(f),中间暗淡的线条,对应了主叶脉。
S3.3.4:对梯度幅度图VG上的每一点的像素值α,重置α=α/(stdOfA+0.1)。其作用是增强VG中的叶脉。如图6(g),为增强叶脉后的结果。相比于图6(e),叶脉确实明亮了。不过也看到,叶片边界也被增强了。叶片外部的一些点也被增强了。
S3.4包括以下步骤:
S3.4.1:在梯度幅度图VG中央裁剪一块长度为梯度幅度图VG的长度的(para×2)倍,宽度也占同样比例的子图VGCrop,子图的四边框分别与VG的四边框平行,子图的中心点与VG的中心点重合,如图6(h)所示;从中央采样确定阈值的目的,是希望阈值不受叶外区域像素值的干扰;
S3.4.2:求VGCrop的最大类间方差法分割阈值level;
S3.4.3:以level为阈值,对梯度幅度图VG进行阈值分割,得到OtsuBW;此举的目的是求叶脉,如图6(i)所示。。
S3.4.4:删除OtsuBW中过小的连通区域,删除面积为10及以下的区域,如图6(j)所示;
S3.4.5:对OtsuBW进行膨胀,目的是把断裂的叶脉连上,如图6(k)所示;
步骤S3.5包括以下步骤:
S3.5.1:复制备份foregroundMask为foregroundMaskBackup;
S3.5.2:把foregroundMask或OtsuBW,存储为foregroundMask;
S3.5.3:在foregroundMask上,选择保留与图像中心点连通的区域,删除其他区域,结果如图6(l)所示。;
S3.5.4:复制备份foregroundMask为foregroundMaskForDel;
S3.5.5:检测foregroundMask上,有没有值为“1”的点,落在前nearBoundaryRowDistance行内,或落在后nearBoundaryRowDistance行内,或落在前nearBoundaryColDistance列内,或落在后nearBoundaryColDistance列内,若无,认为新并入的前景区域离图像边框较远,很有可能是穿过图像中央区域的主叶脉,目的达到,转向S3.6;如图6(l),就没有前景靠近边界,因而该例子中,直接转向S3.6,该图也是主叶脉并入后的结果。
S3.5.6:对foregroundMask进行小尺度腐蚀,然后选择保留与图像中心点连通的区域,删除其他区域;该步骤的作用是:主叶脉过长,伸到了近邻图像边界的地方,要提防是它错误地连接了叶外的某些区域,因而需要对它进行裁剪。如原图为图7(a)的Daturametel L.的叶片图像,其并入主叶脉后的前景标记图如图7(b)所示,主叶脉伸到了图像边界附近(实际上,已经达到了图像四边框),显然需要裁减。所以该例子中,执行S3.5.5后,继续转入执行S3.5.6。裁减过后,得到了图7(c)的结果,原先并入的主叶脉基本得以保留。后来,获得了如图7(d)的最终分割结果。
S3.5.7:进一步检测foregroundMask上,有没有值为“1”的点,落在前veryNearBoundaryRowDistance行内,或落在后veryNearBoundaryRowDistance行内,或落在前veryNearBoundaryColDistance列内,或落在后veryNearBoundaryColDistance列内,若有,则表明图像前景区域非常逼近图像边框,意味着前面的腐蚀并没有达到修剪的目的,需要再次腐蚀;若无,转向S3.5.11;
S3.5.8:对foregroundMask进行应用半径为3的圆盘为结构元素腐蚀,然后选择保留与图像中心点连通的区域,删除其他区域;
S3.5.9:进一步检测foregroundMask上,有没有值为“1”的点,落在前veryNearBoundaryRowDistance行内,或落在后veryNearBoundaryRowDistance行内,或落在前veryNearBoundaryColDistance列内,或落在后veryNearBoundaryColDistance列内,若有,则表明图像前景区域仍然非常逼近图像边框,意味着前面腐蚀操作还是没有达到目的,需要特殊处理;若无,转向S3.5.11;
S3.5.10:把foregroundMask中的前dodgeBoundaryRowDistance行、后dodgeBoundaryRowDistance行、前dodgeBoundaryColDistance列、后dodgeBoundaryColDistance列,全部重置为“0”;
S3.5.11:把foregroundMask或上foregroundMaskBackup,存储为foregroundMask,完成了主叶脉的并入;
步骤S3.6包括以下步骤
S3.6.1:在OtsuBW中,删除foregroundMaskForDel中的前景区域,另存为零碎叶脉候选图candidates,所述的删除为:对OtsuBW中任意一点,若foregroundMaskForDel中同一位置的点值为“1”,则把OtsuBW中的该点重置为“0”;如图6(m)所示
S3.6.2:在candidates上扫描全图,找出每一个区域离图像中心点最近的距离DN;若DN小于nearDistance,做标记,并记录该区域中离图像中心点最近的点的行号row和列号col,同时判断每一个区域离图像四个边框的水平距离是否小于nearBoundaryRowDistance,垂直距离是否小于nearBoundaryColDistance,如果是,就标记该区域离边框太近;
S3.6.3:复制备份candidates为avoidRegions;
S3.6.4:把candidates中被标记为离边框太近的区域都删掉,如图6(n)所示;
S3.6.5:对于candidates中每一个离图像中心点距离小于nearDistance的区域,有避让地画一条从该区域最近图像中心点的点,其行号列号S3.6.2中已求出,指向图像中心点的线段,避让规则是:设线段任意一点的坐标为(x,y),若avoidRegions(x,y)为“1”,同时该点不是线段的起点,则取消该线段,此外,画线过程中,若检测到foregroundMask(x,y)为“1”,则认为已经连通了foregroundMask,任务完成,不需要再进一步画下去以节省时间,所得candidates如图6(o)所示;
S3.6.6:把foregroundMask或candidates,存为foregroundMask;
S3.6.7:在foregroundMask中选择保留与图像中心点连通的区域。
S4包括以下步骤:
S4.1:如果bestBackgroundDetectFlat为真,首先把bestBackgroundDetect以半径为3的圆盘算子轻微膨胀为bestBackgroundDetectFat,然后在foregroundMask中,删除与bestBackgroundDetectFlat重叠的区域,并对foregroundMask,保留与图像中心点连通的区域,删除其他区域,最后,置backgroundMask等于bestBackgroundDetect;
S4.2:以backgroundMask或上foregroundMask的结果为标记,做标记分水岭分割,得到outPutImage;其中,backgroundMask的示例见图5(b),foregroundMask的示例见图5(c)。
S4.3:把outPutImage中标记号为“2”的区域作为前景,其余作为背景,得到最终的二值分割结果logicImage,如图5(d)所示。
更多的举例展示,请参照图8。图8中给出了另外4张复杂背景叶片图像的原图、前景标记图(S4.2所述的foregroundMask)、背景标记图(S4.3所述的backgroundMask)和分割结果。
为了评价分割结果,采用了5个熟知的(well known)的观察标准(observationcriteria)。其中,TP(True Positive)表示本来是正样例(叶片区域内的点),被分类为正样例的数量;TN(True Negative)表示本来是负样例(背景点),被分类为负样例的数量;FP(False Positive)表示本来是负样例,被分类为正样例的数量,通常又称为误报;FN(FalseNegative)表示本来是正样例,被分类为负样例的数量,通常又称为漏报。
采集88个种类,每种图像100~115张。关于植物的种类名及药名等信息,请参照参考文献。
为了验证分割算法的有效性,从88种叶片图像中,每种随机选取5张图像;并逐张人工确定标准分割结果作为参照。从而组成Database 1。其中的8张图像如Fig.1所示。并随原图附上本算法的分割结果。
后来,为了对深度学习算法进行训练,又从88种叶片图像中,每种在排除已入选Database 1的图像后随机选取5张图像;并逐张人工确定标准分割结果。从而组成与测试集Database 1对应的训练集,记为Database 0。
为了与已有的主流算法进行直接的对比,先是采用了传统的OTSU、MeanShift、GraphCut等方法,分别对Database 1中的440张图像进行了分割测试。有关结果依次记录于Table 1的1到3行。
然后,我们进一步采用深度学习分割方法FCN。选择imagenet-vgg-verydeep-16作为内嵌的深度网络,以前面介绍过的Database 0作为训练集,对FCN做了50个epochs的训练,然后对Database 1进行了分割测试,获得了不错的结果。有关结果记录于Table 1的第4行。
接着,应用本方法,对Database 1中的440张复杂背景叶片图像进行分割。所得分割结果记录于Table 1的第5行(以粗体突出表示)。
补充说明的是,由于MeanShift在处理高分辨率图像时,运行时间太长(处理一张分辨率为400×300的图像,花费时间超过一个小时),所以把图像压缩到200×150下来处理。而FCN由于无法接受高分辨率图像来进行训练(内存和时间因素),所以把图像压缩到400×300下来处理。其他算法,则默认在图像分辨率1200×900下测试。该分辨率下,图像的细节,比如叶片边缘的绒毛或小刺,可以很好地保留。
从Table 1的第1到5行结果对比可见,本算法相比于三种传统方法,有明显的优胜。对比深度学习分割方法FCN,也略胜一筹。
TABLE 1
AVERAGE RESULT BASED ON DATABASE 1
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (9)
1.一种复杂背景叶片图像的全自动分割方法,其特征在于,包括以下步骤:
S1:对原始叶片图像利用最大类间方差法进行前置简单分割;
S2:将所述原始叶片图像分别转换为HIS、Lab模型的表示形式,得到各分量图像,再在所述各分量图像的最大类间方差法分割结果中检测背景标记,并依据预设标准,选择其中一个背景标记作为最优背景标记;
S3:在原始叶片图像上检测前景标记;
S4:整理前景标记和背景标记,使用标记分水岭分割方法进行分割,得到最终分割图像;
步骤S1具体包括以下步骤:
S1.1:将彩色RGB的原始叶片图像缩小至预设的尺寸,得到图像currentImage,具体为:
计算ratio=(1200×900)/(原始叶片图像的行数×原始叶片图像的列数);
若ratio小于1,则把图像以ratio的开平方的值为倍数缩小,若ratio不小于1,无需缩小;得到图像currentImage;
S1.2:把图像currentImage分别转换为HIS、Lab模型的表示形式,判断在H分量图像、S分量图像、a分量图像、b分量图像中前景颜色与背景颜色是否存在过大的差异,若是,记录对应的优胜系数coef和判断标志flat,输出分割图像BW;具体为:
S1.2.1:对各分量图像,采用最大类间方差法分割,得到对应的分割图像BW;
S1.2.2:计算各分割图像BW四边框的像素中,值为“1”的像素所占比例frameCof;
S1.2.3:计算各分割图像BW中值为“1”的像素的数量area;
S1.2.4:在各分割图像BW,删除所有小面积区域,保留面积最大的唯一区域;
S1.2.5:计算步骤S1.2.4后的图像BW中值为“1”的像素的数量targetArea;
S1.2.6:把targetArea与area的比值作为foregroundCoef;
S1.2.7:若frameCof<0.1且foregroundCoef>0.9,则认为是前景和背景颜色存在过大的差异,设置flat为1,并以(1-frameCof)*foregroundCoef作为优胜系数coef;若frameCof≥0.1或foregroundCoef≤0.9,把S1.2.4后的图像BW取反,重做S1.2.2至S1.2.6步,再判断是否frameCof<0.1且foregroundCoef>0.9,若是,设置flat为1,以(1-frameCof)*foregroundCoef作为优胜系数coef,否则设置flat为0;
S1.3:若步骤S1.2中每一个分量图像得到的判断标志flat均为0,则进入步骤S2;若有一个以上判断标志flat为1,则取优胜系数coef最大者对应的分割图像BW作为图像logicImage;
S1.4:检测图像logicImage的前景区域伸展到四边框的情况有多少处,若超过3处,进入步骤S2;若不超过3处,进入步骤S1.5;
S1.5:在图像logicImage的中部,裁剪一块长度为图像logicImage长度的0.6倍,宽度也占同样比例的子图logicImageCrop,子图logicImageCrop的四边框分别与图像logicImage的四边框平行,且两者的中心点重合;计算子图logicImageCrop中值为“1”的像素点的个数logicImageCropArea;计算logicImage中值为“1”的像素点的个数logicImageArea,计算logicImageCropArea与logicImageArea的比值,若不大于0.5,进入步骤S2;若大于0.5,进入步骤S1.6;
S1.6:对图像logicImage进行闭运算;
S1.7:对步骤S1.6后的图像logicImage进行孔洞填充,得到分割结果。
2.根据权利要求1所述的复杂背景叶片图像的全自动分割方法,其特征在于,步骤S2具体包括以下步骤:
S2.1:设置可信前景尺度参数para;
S2.2:分别在H分量图像、S分量图像、a分量图像、b分量图像对应的每一个最大类间方差法分割图像BW上,检测背景标记,具体包括:
S2.2.1:在分割图像BW的中部,裁剪一块长度为分量图像长度的para×2倍,宽度也占同样比例的子图credibleForeground,所述子图credibleForeground的四边框分别与分割图像BW的四边框平行,子图credibleForeground的中心点与分割图像BW的中心点重合;
S2.2.2:计算子图credibleForeground中,值为“1”的像素所占比例coefOfCredibleForeground;
S2.2.3:若coefOfCredibleForeground在区间[0.2,0.8]内,则该分割图像BW的分割准确性不适合在该分割图像BW检测背景标记,结束检测过程,返回检测失败消息;
S2.2.4:若coefOfCredibleForeground小于0.2,把该分割图像BW另存为图像backgroundCandidate,把该分割图像BW取反的结果存储为图像BW;若coefOfCredibleForeground不小于0.2,把该分割图像BW取反的结果存储为图像backgroundCandidate;
S2.2.5:计算图像BW四边框的像素中,值为“1”的像素所占比例frameCof;
S2.2.6:如果frameCof大于0.6,则认为此图像BW的分割准确性存疑,结束本检测过程,返回检测失败消息;
S2.2.7:对图像backgroundCandidate进行数学形态学的腐蚀操作;
S2.2.8:把S2.2.7后的图像backgroundCandidate的四边框的像素均置为“1”;
S2.2.9:在S2.2.8后的图像backgroundCandidate上,选择保留与图像左上角那一点连通的区域,其他区域删除,结果记为图像background,得到要求的背景标记;
S2.2.10:把图像background取反,另存为图像reverseBackground;
S2.2.11:在图像reverseBackground上,选择保留与图像中心点连通的区域,其他区域删除,结果记为图像reverseBackground2;
S2.2.12:把图像reverseBackground2取反的结果存为图像background;
S2.2.13:在图像reverseBackground2的中部,裁剪一块长度为分量图像长度的(para×2)倍,宽度也占同样比例的子图credibleForegroundClean,子图的四边框分别与原图的四边框平行,子图的中心点与原图的中心点重合;
S2.2.14:计算子图credibleForegroundClean中,值为“1”的像素所占比例coefOfCredibleForegroundClean;
S2.2.15:计算backgroundCoef=1-(1.01-coefOfCredibleForegroundClean)×frameCof,返回图像background、backgroundCoef以及检测成功消息;
S2.3:在S2.2得到的四个背景标记检测结果中,挑选检测成功且backgroundCoef最大者的图像background作为图像bestBackgroundDetect,并登记bestBackgroundDetectFlat为真,若四个背景标记检测结果皆返回失败信息,则登记bestBackgroundDetectFlat为假;
S2.4:如果bestBackgroundDetectFlat为真,则对图像bestBackgroundDetect进行修正,具体过程为:先对图像bestBackgroundDetect进行腐蚀,然后把它的四边框上的像素点全置为“1”,最后选择保留与它的左上角那一点连通的区域,删除其余区域。
3.根据权利要求2所述的复杂背景叶片图像的全自动分割方法,其特征在于,步骤S3包括以下步骤:
S3.1:初始化设置,得到初始化前景标记图foregroundMask和初始化背景标记图backgroundMask;
S3.2:对彩色RGB图像currentImage直接求梯度;
S3.3:叶脉增强;
S3.4:叶脉分割;
S3.5:主叶脉并入;
S3.6:零碎细叶脉并入。
4.根据权利要求3所述的复杂背景叶片图像的全自动分割方法,其特征在于,步骤S3.1包括以下步骤:
S3.1.1:设置近邻距离判据系数nearDistancePara,设置近邻距离判据nearDistance为图像长和宽的平均值乘以nearDistancePara,并四舍五入取整;设置贴近边框距离判据系数nearBoundaryPara,设置贴近边框行数判据nearBoundaryRowDistance为图像的总行数乘以nearBoundaryPara,并四舍五入取整,设置贴近边框列数判据nearBoundaryColDistance为图像的总列数乘以nearBoundaryPara,并四舍五入取整;设置非常贴近边框距离判据系数veryNearBoundaryPara,设置非常贴近边框行数判据veryNearBoundaryRowDistance为图像的总行数乘以veryNearBoundaryPara,并四舍五入取整,设置非常贴近边框列数判据veryNearBoundaryColDistance为图像的总列数乘以veryNearBoundaryPara,并四舍五入取整;设置避让边框距离系数dodgeBoundaryPara,dodgeBoundaryPara的取值必须大于nearBoundaryPara,设置避让边框行数dodgeBoundaryRowDistance为图像的总行数乘以dodgeBoundaryPara,并四舍五入取整,设置避让边框列数dodgeBoundaryColDistance为图像的总列数乘以dodgeBoundaryPara,并四舍五入取整;
S3.1.2:初始化前景标记图foregroundMask,具体为:新建一个大小与彩色RGB图像currentImage一致,像素值全为“0”的二值图像foregroundMask,把foregroundMask的中部长度为foregroundMask的长度的(para×2)倍,宽度也占同样比例的矩形区域内的像素值重置为“1”,该矩形的四边框分别与foregroundMask的四边框平行,两者的中心点也重合;
S3.1.3:初始化背景标记图backgroundMask,具体为:新建一个大小与彩色RGB图像currentImage一致,像素值全为“0”的二值图像backgroundMask,把backgroundMask四边框上的像素值重置为“1”。
5.根据权利要求4所述的复杂背景叶片图像的全自动分割方法,其特征在于,步骤S3.2包括以下步骤:
对彩色RGB图像currentImage直接求梯度,得到梯度幅度图像VG和梯度角度图像A,具体过程是:
S3.2.1:求x和y方向的偏导数:令图像currentImage上任意一点的坐标为(x,y),像素值为(R,G,B),其中R,G,B分别表示红、绿、蓝的分量值, 求
6.根据权利要求5所述的复杂背景叶片图像的全自动分割方法,其特征在于,步骤S3.3包括以下步骤:
S3.3.1:如果bestBackgroundDetectFlat为真,则检测bestBackgroundDetect中任意一点的值,若是“1”,重置梯度幅度图VG中同一位置的点值为“0”;
S3.3.2:统计梯度幅度图VG中,划分像素值最大的1%的那部分点的分界阈值high,划分像素值最小的1%的那部分点的分界阈值low;把所有像素值大于high的点,重置为high;把所有像素值小于low的点,重置为low;
S3.3.3:在梯度角度图A中,对每一点,以半径为小尺度的圆盘为邻域范围,求标准差,到标准差图像stdOfA;
S3.3.4:对梯度幅度图VG上的每一点的像素值α,重置α=α/(stdOfA+0.1)。
7.根据权利要求6所述的复杂背景叶片图像的全自动分割方法,其特征在于,S3.4包括以下步骤:
S3.4.1:在梯度幅度图VG中央裁剪一块长度为梯度幅度图VG的长度的(para×2)倍,宽度也占同样比例的子图VGCrop,子图的四边框分别与VG的四边框平行,子图的中心点与VG的中心点重合;
S3.4.2:求VGCrop的最大类间方差法分割阈值level;
S3.4.3:以level为阈值,对梯度幅度图VG进行阈值分割,得到OtsuBW;
S3.4.4:删除OtsuBW中过小的连通区域;
S3.4.5:对OtsuBW进行膨胀。
8.根据权利要求7所述的复杂背景叶片图像的全自动分割方法,其特征在于,步骤S3.5包括以下步骤:
S3.5.1:复制备份foregroundMask为foregroundMaskBackup;
S3.5.2:把foregroundMask或OtsuBW,存储为foregroundMask;
S3.5.3:在foregroundMask上,选择保留与图像中心点连通的区域,删除其他区域;
S3.5.4:复制备份foregroundMask为foregroundMaskForDel;
S3.5.5:检测foregroundMask上,有没有值为“1”的点,落在前nearBoundaryRowDistance行内,或落在后nearBoundaryRowDistance行内,或落在前nearBoundaryColDistance列内,或落在后nearBoundaryColDistance列内,若无,认为新并入的前景区域离图像边框较远,很有可能是穿过图像中央区域的主叶脉,目的达到,转向S3.6;
S3.5.6:对foregroundMask进行小尺度腐蚀,然后选择保留与图像中心点连通的区域,删除其他区域;
S3.5.7:进一步检测foregroundMask上,有没有值为“1”的点,落在前veryNearBoundaryRowDistance行内,或落在后veryNearBoundaryRowDistance行内,或落在前veryNearBoundaryColDistance列内,或落在后veryNearBoundaryColDistance列内,若有,则表明图像前景区域非常逼近图像边框,意味着前面的腐蚀并没有达到修剪的目的,需要再次腐蚀;若无,转向S3.5.11;
S3.5.8:对foregroundMask进行小尺度腐蚀,然后选择保留与图像中心点连通的区域,删除其他区域;
S3.5.9:进一步检测foregroundMask上,有没有值为“1”的点,落在前veryNearBoundaryRowDistance行内,或落在后veryNearBoundaryRowDistance行内,或落在前veryNearBoundaryColDistance列内,或落在后veryNearBoundaryColDistance列内,若有,则表明图像前景区域仍然非常逼近图像边框,意味着前面腐蚀操作还是没有达到目的,需要特殊处理;若无,转向S3.5.11;
S3.5.10:把foregroundMask中的前dodgeBoundaryRowDistance行、后dodgeBoundaryRowDistance行、前dodgeBoundaryColDistance列、后dodgeBoundaryColDistance列,全部重置为“0”;
S3.5.11:把foregroundMask或上foregroundMaskBackup,存储为foregroundMask,完成了主叶脉的并入;
步骤S3.6包括以下步骤:
S3.6.1:在OtsuBW中,删除foregroundMaskForDel中的前景区域,另存为零碎叶脉候选图candidates,所述的删除为:对OtsuBW中任意一点,若foregroundMaskForDel中同一位置的点值为“1”,则把OtsuBW中的该点重置为“0”;
S3.6.2:在candidates上扫描全图,找出每一个区域离图像中心点最近的距离DN;若DN小于nearDistance,做标记,并记录该区域中离图像中心点最近的点的行号row和列号col,同时判断每一个区域离图像四个边框的水平距离是否小于nearBoundaryRowDistance,垂直距离是否小于nearBoundaryColDistance,如果是,就标记该区域离边框太近;
S3.6.3:复制备份candidates为avoidRegions;
S3.6.4:把candidates中被标记为离边框太近的区域都删掉;
S3.6.5:对于candidates中每一个离图像中心点距离小于nearDistance的区域,有避让地画一条从该区域最近图像中心点的点,其行号列号S3.6.2中已求出,指向图像中心点的线段,避让规则是:设线段任意一点的坐标为(x,y),若avoidRegions(x,y)为“1”,同时该点不是线段的起点,则取消该线段,此外,画线过程中,若检测到foregroundMask(x,y)为“1”,则认为已经连通了foregroundMask,任务完成;
S3.6.6:把foregroundMask或上candidates,存为foregroundMask;
S3.6.7:在foregroundMask中选择保留与图像中心点连通的区域。
9.根据权利要求8所述的复杂背景叶片图像的全自动分割方法,其特征在于,S4包括以下步骤:
S4.1:如果bestBackgroundDetectFlat为真,首先把bestBackgroundDetect轻微膨胀为bestBackgroundDetectFat,然后在foregroundMask中,删除与bestBackgroundDetectFlat重叠的区域,并对foregroundMask,保留与图像中心点连通的区域,删除其他区域,最后,置backgroundMask等于bestBackgroundDetect;
S4.2:以backgroundMask或上foregroundMask的结果为标记,做标记分水岭分割,得到outPutImage,outPutImage是标记分水岭分割结果,outPutImage中标记号为“0”的为分水岭线,outPutImage中标记号为“1”的为背景区域,outPutImage中标记号为“2”的为前景区域;
S4.3:把outPutImage中标记号为“2”的区域作为前景,其余作为背景,得到最终的二值分割结果logicImage。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910683687.6A CN110443811B (zh) | 2019-07-26 | 2019-07-26 | 一种复杂背景叶片图像的全自动分割方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910683687.6A CN110443811B (zh) | 2019-07-26 | 2019-07-26 | 一种复杂背景叶片图像的全自动分割方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110443811A CN110443811A (zh) | 2019-11-12 |
CN110443811B true CN110443811B (zh) | 2020-06-26 |
Family
ID=68431864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910683687.6A Active CN110443811B (zh) | 2019-07-26 | 2019-07-26 | 一种复杂背景叶片图像的全自动分割方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110443811B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113223041B (zh) * | 2021-06-25 | 2024-01-12 | 上海添音生物科技有限公司 | 用于自动提取图像中目标区域的方法、***及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127735A (zh) * | 2016-06-14 | 2016-11-16 | 中国农业大学 | 一种设施蔬菜边缘清晰类叶面病斑分割方法及装置 |
CN106683098A (zh) * | 2016-11-15 | 2017-05-17 | 北京农业信息技术研究中心 | 一种重叠叶片图像的分割方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012200930A1 (de) * | 2012-01-23 | 2015-08-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und Verfahren zum Erfassen einer Pflanze vor einem Hintergrund |
CN103473550B (zh) * | 2013-09-23 | 2016-04-13 | 广州中医药大学 | 基于Lab空间和局域动态阈值的植物叶片图像分割方法 |
CN104050670B (zh) * | 2014-06-24 | 2016-08-17 | 广州中医药大学 | 结合简单交互和标记分水岭的复杂背景叶片图像分割方法 |
CN104598908B (zh) * | 2014-09-26 | 2017-11-28 | 浙江理工大学 | 一种农作物叶部病害识别方法 |
CN104850822B (zh) * | 2015-03-18 | 2018-02-06 | 浙江大学 | 基于多特征融合的简单背景下的叶片识别方法 |
CN106296662B (zh) * | 2016-07-28 | 2019-07-02 | 北京农业信息技术研究中心 | 田间环境下玉米叶片图像分割方法及装置 |
CN106910197B (zh) * | 2017-01-13 | 2019-05-28 | 广州中医药大学 | 一种单目标区域的复杂背景植物叶片图像的分割方法 |
CN108564589A (zh) * | 2018-03-26 | 2018-09-21 | 江苏大学 | 一种基于改进全卷积神经网络的植物叶片分割方法 |
CN109359653B (zh) * | 2018-09-12 | 2020-07-07 | 中国农业科学院农业信息研究所 | 一种棉花叶部粘连病斑图像分割方法和*** |
-
2019
- 2019-07-26 CN CN201910683687.6A patent/CN110443811B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127735A (zh) * | 2016-06-14 | 2016-11-16 | 中国农业大学 | 一种设施蔬菜边缘清晰类叶面病斑分割方法及装置 |
CN106683098A (zh) * | 2016-11-15 | 2017-05-17 | 北京农业信息技术研究中心 | 一种重叠叶片图像的分割方法 |
Non-Patent Citations (2)
Title |
---|
Segmentation of Defected Regions in Leaves using K- Means and OTSU"s Method;P.Divya等;《2018 4th International Conference on Electrical Energy Systems (ICEES)》;20180823;全文 * |
棉田复杂背景下棉花叶片分割方法;高攀 等;《新疆农业科学》;20181231;第55卷(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110443811A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107909138B (zh) | 一种基于安卓平台的类圆颗粒物计数方法 | |
JP4172941B2 (ja) | 土地区画データ作成方法および装置 | |
CN104751187B (zh) | 抄表图像自动识别方法 | |
Malambo et al. | Automated detection and measurement of individual sorghum panicles using density-based clustering of terrestrial lidar data | |
Gao et al. | Fully automatic segmentation method for medicinal plant leaf images in complex background | |
Gao et al. | A method for accurately segmenting images of medicinal plant leaves with complex backgrounds | |
CN103295013A (zh) | 一种基于成对区域的单幅图像阴影检测方法 | |
CN109993750A (zh) | 一种手腕骨的分割识别方法及***、终端及可读存储介质 | |
CN111259925B (zh) | 基于k均值聚类和宽度突变算法的田间麦穗计数方法 | |
US20170178341A1 (en) | Single Parameter Segmentation of Images | |
CN110309808A (zh) | 一种大范围尺度空间下的自适应烟雾根节点检测方法 | |
CN109145906B (zh) | 目标对象的图像确定方法、装置、设备及存储介质 | |
CN107992856A (zh) | 城市场景下的高分遥感建筑物阴影检测方法 | |
CN104598907A (zh) | 一种基于笔画宽度图的图像中文字数据提取方法 | |
JP4747122B2 (ja) | 特定領域自動抽出システム、特定領域自動抽出方法、および、プログラム | |
CN106485252A (zh) | 图像配准试验点阵靶标图像特征点识别方法 | |
CN112164030A (zh) | 水稻穗粒快速检测方法、装置、计算机设备及存储介质 | |
CN115761270A (zh) | 色卡的检测方法、装置、电子设备及存储介质 | |
CN110443811B (zh) | 一种复杂背景叶片图像的全自动分割方法 | |
CN110288616A (zh) | 一种基于分形和rpca分割眼底图像中硬性渗出的方法 | |
Kerle et al. | Reviving legacy population maps with object-oriented image processing techniques | |
CN115719355A (zh) | 一种可扩展的农田边界规整简化方法、***、设备及终端 | |
CN115511815A (zh) | 一种基于分水岭的宫颈液基细胞分割方法和*** | |
CN111401275B (zh) | 一种用于识别草地边缘的信息处理方法和装置 | |
Abraham et al. | Unsupervised building extraction from high resolution satellite images irrespective of rooftop structures |
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 |