二值化图像切割,让机器人视觉识别变得简单高效

RoboMaster 2021-04-05 09:41:34

RoboMaster 技术智囊团,用简单的方式带你入门机器人知识,每周日准时更新。


前几天,小R 看到一个视频,有一只机器人在自动摘草莓。这个机器人可以发现草莓,判断草莓的成熟度,然后找到果梗夹取草莓,整个过程不需要人工参与。


摘草莓机器人


再举个实际生活中的例子,食品加工厂新进了一批胡萝卜,加工需要用机器把胡萝卜肉和叶子切割分开,那机器要如何判断识别这两者呢?


首先,机器需要拍摄胡萝卜图像,然后预处理,把杂七杂八的颜色去掉,让图像变干净,之后再把图像分割成萝卜叶、萝卜肉、背景墙等一块块区域,找到感兴趣的区域,单独进行分析,再对其执行切割动作。


视觉识别一般分为几个步骤:预处理、图像分割和图像分析。图像分割是其中的一个步骤。

食品加工厂的视觉处理


其中非常重要的一步就是图像分割(Image Segmentation)[1],它可以简化或改变图像的表示形式,让图像更容易被机器分析。


原图


图像分割结果


上图中,聪明的人类一眼就能区分出牛肉、木板和手,而“人工智障”要区分它们,就要将它们分割成三块,再进行图像分析,从而判断它们到底是什么。


今天我们就来讲讲,图像分割中最简单的方法——二值化


二值化(Binarization)


二值化就是将彩色图像变成二值图像,二值图像的每个像素只有两种取值:要么最黑,要么最白。


彩色图、灰度图、二值图对比


由于二值图像的数据足够简单,只有两个值,所以许多计算机视觉的算法都依赖二值图像。进行二值化有多种方式,其中最常用的就是采用阈值(Threshold)进行二值化。


阈值( Method)


在计算机视觉里,一般用矩阵来表示图像,三通道的彩色图片每个像素(小格子)的颜色,都可以被三个数字所表示。无论你的图片看上去多么好吃,对计算机来说都不过是个矩阵而已。


三通道彩色


而对于单通道的灰度图像来说,每个像素只有一个数字。


单通道灰度


这个数字代表了图像在这个点的亮度,数字越大像素点也就越亮,在常见的色彩空间中,0 代表全黑,255 代表全白。


全黑和全白


我们选取一个数字,大于它的像素就视为全白,小于它就视为全黑,这个被选取的数字,就是阈值。阈值就像一条及格线,数字超过及格线的归为全白,低于及格线的归位全黑。


好的二值化操作能将前景与背景精准分离。我们根据阈值的选取方式分类,有全局阈值局部阈值两种。


全局阈值(Global Method)


全局阈值,指的是对整个图像中的每一个像素都选用相同的阈值。我们可以在 Photoshop 的图像-调整-阈值里体验这一操作。


Photoshop里的阈值


看到阈值色阶从 1 到 255 的移动过程中,图像变黑的区域越来越多。因为阈值越高,那低于这个值的像素就越多,这些像素就会变黑。当阈值数字在某个特定范围内的时候,三文鱼的纹理清晰可辨。


正确的二值化使三文鱼纹理清晰可辨


在开头说的胡萝卜工厂中,光照是固定的,常常会设定一个固定的数字来作为全局阈值。但是在室外或者机器人比赛中,光照条件往往更加复杂,如果机器人还使用固定数值作为阈值,就很难正确进行视觉识别了。


RoboMaster 赛场开场灯光


比如下图,同样是奥利奥冰激凌,在白天和夜晚,摄像头看到的画面会不一样。 


明暗不同的画面


对于画面比较亮的白天(下图第一排),我们需要一个比较高的全局阈值,比如设定为 172,就能将黑白两色清晰地分开(右边)。


但是到了晚上(下图第二排),如果阈值依然是 172,图像就会变得一片黑(右边),设置成 50,才可以清晰地分割黑白两色(左边)。我们需要能够适应复杂环境的算法。


左边为阈值50的结果,右边为阈值172的结果


其实,仔细观察可以发现,图像的颜色是比较干净,只有深浅两种颜色。因此,无论是在白天还是黑夜,它的色阶直方图都是两个明显的波峰,分别代表深色和浅色的区域。只是波峰在白天会整体向右移动,而在夜晚向左移动罢了。


图像的色阶直方图


所以,一个很好的思路就是,找到两个波峰之间的波谷作为阈值,两个波峰就会被分隔开。


但是图像的直方图往往是不连续的,会有非常多尖峰和抖动,导致找到准确的极值点十分困难。比如这款雪糕的色相就有三个尖峰。


三色雪糕


来自霓虹国的大津展之为这种波谷找到了一个合适的数学表达,并于 1979 年发表论文[2]。这个二值化方法称为大津算法(Otsu’s method)


大津算法就是,从 1 到 255 一个个数字试,找到一个数字能够把两个波峰切开,让两个波峰内部的类内方差之和最小。类内方差之和就是,单独求这两个波峰各自的方差,乘上波峰的占比权重,然后加起来。


这个数字就能最好的把图像分开,对应的就是双峰直方图中的波谷。这个算法最多只需遍历两次直方图数组,速度飞快,至今仍被广泛应用。


图像比较复杂的时候,我们对大津算法稍加扩展也可以完成分割。对大津算法的多级推广成为多大津算法(multi Otsu method) [3]


局部阈值(Local Method)


局部阈值又称自适应阈值(Adaptive Thresholding),机器人比赛中常常会有聚光灯照在一个特定区域,产生局部受光、局部不受光的画面,我们要避免视觉识别被这种情况干扰。


我们以下面这张受光不均的图像为例子。


局部受光的图像


对于局部受光的图像进行全局阈值,可能会出现“无论设置什么阈值参数,都无法满足全图要求”的尴尬。如下图,直接进行全局阈值时,左上半边的寿司全都显露出来时,右下半边还是一片黑色。


局部受光图像的全局阈值处理


这个时候我们就要用到局部阈值来处理了。局部阈值法原理就是假定图像在一定区域内受到的光照比较接近。


我们将图像放大后会看到不同的颜色。一个滑窗扫描图像,并取滑窗中心点亮度与滑窗内其他区域(称为邻域)的亮度中值或均值进行比较。如果中心点亮度高于邻域亮度,则将中心点标记为白色,否则标记为黑色。


局部阈值的滑窗


标记完成后,只有黑白两色的二值图像就完成啦。


局部阈值处理结果


*这里提到的是局部阈值的基本方法,对于实际使用中常见的其他局部阈值方法,请参阅Chow-Kaneko 自适应阈值法 [4]


局部阈值的应用非常广泛,特别是对白纸黑字的处理非常有效。光学字符识别(OCR)和二维码扫描的算法中,很多都用了局部阈值操作。比如下面这张受光不均的二维码。


受光不均,也可以扫出来


如果对这张图片采用全局阈值(例如下图采用大津算法进行分割),是无论如何都无法正确分割的。


大津法


而采用局部阈值方法就能很好地分割图像。


局部阈值法


◆◆◆


实际运用中,我们需要根据实际,选择不同的二值化方法,没有哪个方法是绝对完美的。只有与相关领域的知识结合起来,才能更有效的解决该领域中的问题。


比如,在识别和自动打击敌方机器人时,由于装甲片灯条是自发光物体,受环境光影响较小,为了提高程序运行效率,我们采用固定数字作为全局阈值。


基地自动反击


在大能量机关的识别中,由于大能量机关只有黑白两种颜色,我们运用了大津算法及其多种变体。


大能量机关各区域的二值图


而在空中机器人读取基地区二维码的时候,由于受阴影干扰比较大,所以又用到了局部阈值方法。


空中机器人识别基地


在视觉识别中,图像分割非常重要,而二值化又是最简易的图像分割方法,它可以放大图像中的颜色差异,将不同的颜色变成黑白而区分开。


做好图像分割这一步,计算机可以更容易地分析图像,不管是想区分萝卜的叶和肉,还是二维码的黑和白,都会变得很简单了。


如果想要实际操作体验二值化,可以进入链接至 OpenCV 体验哦,里面有实现上述算法的库函数。

https://docs.opencv.org/master/d7/d1b/group__imgproc__misc.html


◆◆◆


今天所讲的内容只是图像分割的冰山一角,作为视觉领域最古老的问题之一,时至今日仍有非常多图像分割的新算法被提出。


除了基于阈值的图像分割方法外,常用的分割方法还可以基于边缘(如Yanowitz-Bruckstein自适应阈值方法[5])、区域(如区域生长算法[6])等,它们在卫星图像处理、交通控制系统、工业生产监控、医疗影像处理等领域发挥着巨大的作用。


大脑图像二值化



推荐学习书籍:《学习OpenCV》;作者: (美)布拉德斯基(Bradski,G.)、(美)克勒(Kaehler,A.);译者: 于仕琪、刘瑞祯;出版社: 清华大学出版社


参考文献:

[1] Spirkovska, L. (1993). A summary of image segmentation techniques. 

[2] Nobuyuki Otsu (1979). "A threshold selection method from gray-level histograms". IEEE Trans. Sys., Man., Cyber. 9 (1): 62–66.

[3] Ping-Sung Liao and Tse-Sheng Chen and Pau-Choo Chung (2001). "A Fast Algorithm for Multilevel Thresholding". J. Inf. Sci. Eng. 17 (5): 713–727.

[4] Chow, C.K.; and Kaneko, T.: Boundary Detection of Radiographic Images by a Thresholding Method. Frontiers of Pattern Recognition, S. Watanabe, ed., Academic Press, New York, 1972, pp. 61-82.

[5] Yanowitz, S. D., & Bruckstein, A. M. (1988, November). A new method for image segmentation. In Pattern Recognition, 1988., 9th International Conference on (pp. 270-275). IEEE.

[6] Richardson H W. Regional growth theory[M]. Macmillan, 1973.



 本期作者 


华南理工大学 华南虎

RoboMaster 校机器人队

生命不息、搞机不止的百人天团



本文来自 RoboMaster 技术智囊华工机器人实验室,文章部分有修改。如果你也希望加入技术智囊团,请通过 robomaster@dji.com 联系我们。


 

往期视觉识别文章回顾:

1、无论你走到天涯海角,我都能找到你

2、机器人如何在复杂的环境下进行视觉识别?

 

阅读原文可学习往期机器人的技术文章。

点个赞,给 RoboMaster 和机器人宣传加油!