基于图像分割的立体匹配算法

2020-06-07 07:06张一飞李新福田学东
计算机应用 2020年5期
关键词:视差纯色像素点

张一飞,李新福,田学东

(河北大学网络空间安全与计算机学院,河北保定071000)

(∗通信作者电子邮箱MC_LXF@126.COM)

0 引言

立体匹配可以概括为同一景物在不同视点下各个像素点间的一一对应匹配,Marr的视觉计算理论对立体匹配的发展奠定了基础[1]。随着该技术的发展,立体匹配在无人驾驶[2-3]、机器人视觉[4-5]、工业测量[6]和三维重建[7]等方面都有着广泛的应用,但其中针对弱纹理及纯色区域的匹配仍存在着一些问题。立体匹配算法分为三类:全局、局部、半全局匹配算法[8]。局部立体匹配算法是在参考图像中构建一个大小、形状和权重相适应的窗口,然后在匹配图像中构建参数相同的匹配窗口,计算视差值。该算法优点是可以获取稠密视差图,算法时效性好;缺点是在纯色区域的匹配准确度较低[9-11]。造成此问题的原因如图1所示,匹配窗口在可选区域(灰色区域)内滑动计算后,所得结果均相同,无法确定一个准确的点作为匹配点来计算视差[12]。

图1 纯色区域匹配示意图Fig.1 Schematic diagramof purecolor region matching

1 相关工作

针对弱纹理及纯色区域的匹配不准确的问题,许多学者都尝试过将颜色信息与图像分割算法融合到立体匹配过程中来 解 决 这 一 问 题 。 高 雅 昆 等[13]改 进 LocalExp(Local Expansion Move)算法,并提出一种融合多维信息的自适应像素类别优化的立体匹配算法,考虑到了构建与颜色相关的权重系数。马伟等[14]提出一种结合卷积神经网络(Convolutional Neural Network,CNN)与分割线索结合的立体匹配算法,该算法首先对图像进行区域切割,然后构造马尔可夫随机场(Markov Random Field,MRF)能量函数进行匹配,该算法采用了CNN和图像分割技术。上述两种算法在弱纹理及纯色区域的匹配精度均有提升,但共同的存在的问题就是算法运行耗时较多。Mohammadi等[15]提出的可见植被指数(Visible Vegetation Index,VVI)给本文利用图像色彩进行切割的想法带来很大的启发。郁怀波等[16]融合图像颜色、梯度和图像的Census变换进行匹配代价计算,但该算法并没有将图像切割,而是根据颜色在匹配计算中赋值相应的系数,采用树形结构进行匹配代价的聚合,最后得到视差图。该算法在弱纹理区域和视差不连续区域取得较好的匹配结果,但该算法中的截断阈值、融合权值、匹配窗口大小均由人工设置,对场景的针对性较强、灵活性较差。为解决绝对差值和(Sum of Absolute Differences,SAD)算法在纯色及弱纹理区域匹配不准确和图像分割算法在立体匹配中耗时较多的问题,进行以下操作:第一,提取图像的边缘特征,得到边缘特征图,在图像纹理丰富的区域得到更加准确的匹配结果;第二,提取图像红、绿、蓝三个颜色通道的色值,采用最大类间方差法进行二值化分类,然后再融合得到图像的模板图。上述预处理完成之后,将所得边缘特征图与分割模板图用于视差计算及视差优化过程中,得到视差图。

2 图像预处理

2.1 边缘特征

边缘是一幅图像的重要特征,优秀的边缘提取结果可以提高匹配的正确率[11]。Canny算子在边缘计算上较其他方法有着更加精确的结果[17],因此在计算图像边缘特征时主要参考了Canny算子中的两个步骤来提取图像的边缘特征:1)使用高斯滤波器平滑图像,滤除噪声[18];2)使用Sobel算子[19]平滑图像,增强每个像素点的梯度强度和方向。图2为各个步骤处理后的结果图,其中在计算过程中用到的高斯滤波核,水平方向与垂直方向的Sobel算子等参数设置参见文献[11]。

图2 预处理的结果Fig.2 Resultsof preprocessing

2.2 分割模板计算

数字图像的分割就是将一幅图像根据阈值、区域或者边缘分割成若干个特定的区域。Li等[20]提出基于补丁匹配的超像素分割算法,利用分割信息和补丁匹配的随机细化来更新每个像素的候选三维标签集,从而进行图像切割;Ma等[21]提出了一种交互式的切割匹配算法,通过交互绘制更多的笔画,或者使用添加对应点的交互方法来改进结果,直到对切割结果满意,这其中就涉及到较多的人工参与;龚文彪等[22]指出利用颜色将图像切割的方法是根据图像的颜色信息、像素之间的相似性、相邻性等特征将图像切分成不同颜色的区域。

上述学者都提出了分割效果不错的图像分割方法,但对于立体匹配的过程来说,都显得有些复杂,且切割过程耗时较多,运用到立体匹配过程中会使整个立体匹配算法的时效性较差。

颜色作为一个图像的重要特征,在许多场景下都有着非常重要的作用[23]。本文提出一种利用颜色将图像进行切分的分割算法,这一过程主要包括以下三步:单色通道提取、二值化分类和融合并分割图像。各步骤处理后的图像如图3所示。

图3 分割过程Fig.3 Segmentation process

2.2.1 单色通道提取

彩色图像的每个像素是由R、G、B分量构成的图像,其中R、G、B是由不同的灰度级来描述的。因此,本文中将各个分量的灰度级提取出来,存储在一张二维表中,将这张表分别命名为 Red、Green、Blue,如图 3(b)所示。计算公式如式(1)所示:

其中:Original为输入的原始图像;R、G、B分别为各个颜色通道的值;i、j为在图像中的横纵坐标值。

2.2.2 二值化分类

在医学图像分析、前景检测、字符识别、形状识别等领域二值图像都有着重要的应用。二值图像即图像中只有前景1和背景0两种状态,这样的图像首先在程序处理过程中可以极大地节省存储空间,其次可以较强地表现出前景与背景的轮廓,同时还在目标提取的问题上有着重要应用[24]。

本文采用了最大类间方差法来分类。最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出,是一种自适应的阈值确定方法[25-26]。设阈值T将灰度级分为二组,分别对应于0、1两个状态,此二组灰度级应满足组内方差最小,而组间方差最大。这个方法在目标像素数量与背景像素数量占一定比例时,可以有效地把目标从背景中区分出来。

以下是OTSU算法实现的4个步骤及计算公式的详细介绍。

1)遍历整幅图像,i表示0~255这256个灰度值,统计各个灰度级的点的个数用ni表示,N表示整幅图像中像素点个数,Pi表示灰度值为i的点占整幅图像中总像素点数概率,可由古典概型计算得出,计算公式如式(2)所示:

2)该算法目的是在所有灰度级选一个合理的灰度级k,将整幅图像的灰度值分为两类C0、C1,其中0~k属于C0类,k到最大灰度级L为C1类,w0、w1分别为两类点中各个点占总体点数的概率再求和,其中w0也记为wk,计算公式如式(3)所示:

3)以μ0、μ1分别表示C0、C1的灰度平均值,则有如式(4)所示的计算公式来计算μ0和μ1:

在式(4)中μ(k)的计算方法如式(5)所示:

4)由此可以推导出两组灰度像素对整幅图像中平均灰度的统计方差,如式(6)所示:

阈值T即为使σ2方最大时的k的值,如式(7)所示:

至此,OTSU算法实现步骤已经完成,下一步将R、G、B三个分量的色值进行二值分类,该过程计算公式如式(8)所示。本文将二值化分类后的三张图片分别命名为Red_2bit、Green_2bit、Blue_2bit。

2.2.3 融合后分割图像

经过上述二值分类处理之后,可以得到Red_2bit、Green_2bit、Blue_2bit三张二值图像,如图 3(c)所示。将三张二值图像采用图4所示的方法融合到一张图像上,融合后的图像记为F,该过程如图4所示。

图4 融合过程示意图Fig.4 Schematic diagramof fusion process

如图4所示,经过二值化分类以后,单个通道就被分成了两类,在图4中以“0”“1”表示。将同一个像素点的三个通道的分类结果组合到一起,便有了从“000”到“111”的8种组合结果。遍历每一个像素点,便得到一张跟原图大小相等的八分类图。

为了便于观察分类结果,在实验过程中将这张分类图的每一类渲染一种颜色,这8种分类结果对应颜色及代码中的编写如表1所示,将分类图按照融合后的标号采用对应颜色进行渲染,即可得到图3(d)分割模板,记为Mask。

3 视差计算

视差计算流程如图5所示。

图5 视差计算流程Fig.5 Flowchart of parallax calculation

算法描述如下:

1)取一对左右视图,设左图为参考图,右图为匹配图。

2)对这一对左右视图进行第2章的相关操作得到左右图的灰度图、边缘特征图、Mask模板图。

3)取出左图模板图中当前点Mask值(Current Mask Value),记为CMV。

4)在右图的取出该点的Mask值(Temp Mask Value),记为TMV。

5)对比CMV与TMV,若二值相等则进行下一步:匹配计算视差值;若二值不相等则返回第4)步。

6)经过步骤5)后,左右两图匹配点的坐标均已确定,取出当前坐标8邻域或者24邻域灰度图和边缘图的灰度值。

7)对应位置做差,将做差所得的结果再求和。将所求和最小且横坐标相差最小的点记为最终匹配点,记录其横坐标差值即为视差值。

8)遍历左图所有点即可得到左图所有点所对应的视差值。

视差计算过程中以灰度图、边缘特征图,左右视图的Mask模板图作为匹配源图。在匹配过程中,如果当前点在颜色分割过程中不是同一类,则直接跳过该点的匹配过程。所有点都取得匹配结果以后,再次统计在图像分割中8个类中各个类的点的视差值,将统计结果按类别平均计算,以达到视差平滑的效果,消除匹配过程中出现的奇异点。

4 实验结果与对比分析

4.1 实验环境与实验结果

机器参数如下:操作系统为64位Windows10专业版,CPU为Intel Core i7-6700,CPU主频为3.40 GHz(3 408 MHz),内存8 GB,显卡 AMD Radeon R5 340X(2 048 MB)。测试集中Cones和Teddy的分辨率是450×383,Tsukuba的分辨率是384×288,Venus的分辨率是434×383。本文算法的实验结果如图6所示。

图6 视差结果图Fig.6 Parallax result diagram

图6中为了便于观察结果,已将模板中各个类对应点的视差值求和然后平均计算后归一化到0~255,具体值如表2所示。

表2 视差值归一化到0~255的值Tab.2 Parallax valuenormalized to 0~255

4.2 对比分析

表3和表4为详细的数据对比,其中表3为误匹配率的对比,表4为算法耗时的对比。误匹配率的计算方式是将所得的视差结果与标准视差图的各个像素点逐一比较计算可得详细的误匹配率的数据,计算公式如式(9)所示:

式中:miss表示误匹配率,width为图像宽度,height为图像高度,ret为本文算法计算得出的视差图,GroundTruth为标准视差图。将当前点的计算视差值与该点标准视差值相减的差求绝对值,相差5以上记为误匹配点,相差5以内则为匹配准确的点。按上述方法统计整幅图像中的点,将绝对值相差5以上的点的数量与总的点数相除,所求的商即为误匹配率。

由表3分析可得,本文算法在误匹配率上与文献[16]相比,平均误匹配率较高,与SAD算法相比误匹配有大幅度的下降。在Cones中误匹配率较高,究其原因是Cones中的锥形桶和人脸图像上有较多颜色差异较大的噪点,在分类过程中将同一物体的不同部分被分成了两类,所以导致了误匹配率的上升。

表3 几种算法的误匹配率对比 单位:%Tab.3 Mismatchingratiocomparison of several algorithms unit:%

由表4分析可得:本文算法在时间开销上增加较少,SAD算法在匹配过程中匹配源图只有左右视图的灰度图这两幅图像,本文算法的匹配源不仅包括原图的灰度图,还有分割模板图、边缘特征图,按此计算匹配原图达到了6张,运行时消耗的时间上按每万个像素点计算,时间开销上与时效性较强的SAD算法相比仅增加7.16 ms,所以本文算法的时效性较强。

表4 不同算法的时间消耗 单位:sTab.4 Timeconsumption of different algorithms unit:s

为了更加直观地体现本文算法的特点,将实验结果与标准视差图和也采用图像颜色特征得到视差图的文献[16]对比,如图7所示,同时与采用了图割算法的文献[27]对比如图8所示。

图7 与文献[16]算法对比Fig.7 Comparison with literature[16]algorithm

图8 与文献[27]算法对比Fig.8 Comparison with literature[27]algorithm

从图7可以看出,本文算法的优点体现在台灯、台灯杆和人头等部分,这些部分纯色和弱纹理区域较多,匹配结果较文献[16]更加平滑;缺点也在这张图上得到了体现,如在图中的黑色三脚架摄影机及台灯后边的课桌等颜色较为暗淡,与背景颜色较为相似的区域的匹配结果明显不如文献[16]。

从图8可以看出,本文算法的优点体现在图中左侧的人头及人头左下方等颜色单一的区域,在这些区域的匹配结果具有平滑无噪点的优点,同时在视差不连续区域的分界线较为整齐,无毛刺现象的出现。在图像的右下方和人头像的左侧这些较小区域但却拥有较多的颜色时,本文的匹配结果出现了较多的噪点。

图9 其他场景下的计算过程图和结果图Fig.9 Calculation processdiagrams and result diagrams for other scenarios

为进一步验证该算法在纯色以及弱纹理区域匹配的优越性,对另外一组纯色及弱纹理较多场景图进行测试,测试过程图以及最终结果如图9所示。

5 结语

为解决弱纹理区域的匹配精度低、图像分割耗时较多的问题,在预处理过程中通过边缘特征提取的方法增强纹理边缘,得到原图像的边缘特征图;然后将彩色图像的R、G、B三个通道提取出来,采用最大类间方差法进行二分类,再将分类结果利用本文的融合方法得到原图像的分割图模板Mask。在视差计算过程中,融合灰度图像、边缘特征图与分割图模板图,选用实时性较强的SAD算法计算得到视差图,最后在视差优化过程中根据每个像素点在分割模板图中的值来计算和平滑匹配结果,最终得到结果图。

实验结果表明,所提算法针对图像的弱纹理及纯色区域和视差不连续区域有着更加平滑的结果,有效地防止了毛刺现象的出现。在图像分割过程中采用最大类间方差法和所提融合方法,能够快速有效地将原图分割,且阈值是根据图像自适应调节,减少了人工干预。匹配精度上比经典的SAD算法精度上平均提升了14.23个百分点,时间开销上每万个像素点的时间消耗比SAD算法增加了7.16 ms。本文算法适用于主体颜色较为单一、时效性要求较高的场景。

所提算法也存在一些不足:1)当图像主成分存在较多同一物体含有不同的颜色和纯色区域的噪点较多时匹配结果的误匹配率较高。2)由于平滑过程直接采用平均值来替代原有的视差值导致整个视差图的层次丰富程度下降。下一步的研究将针对上述两点问题改进算法,增强算法对应用场景的普适性。

猜你喜欢
视差纯色像素点
基于归一化互相关的半透明遮挡视差估计
基于自适应窗的立体相机视差图优化方法研究
基于局部相似性的特征匹配筛选算法
视差边缘优化的SGM 密集深度估计算法∗
趣味针织
趣味针织
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密
图像采集过程中基于肤色理论的采集框自动定位
“迂腐”的新西兰人