APP下载

基于聚类分析的空洞填充的视图合成算法

2021-07-09杨坤

现代计算机 2021年14期
关键词:视点空洞视图

杨坤

(四川大学计算机学院,成都 610065)

0 前言

目前3D 视觉体验面临严厉挑战:既具有优越的交互性,又能自由切换任意视点。面临这种挑战,自由视点视屏频(Free-Viewpoint Video,FVV)可以作为重要的突破点,激发出蕴含的生机和活力。但又出现一个问题:不可能对任意视点进行数据采样。解决该问题的思路是利用已知视点信息获取未知视点信息。

现存的绘制虚拟视点技术以两大方式为主:基于模型的绘制方法(Model Based erringring,MBR)[4]和基于图像的绘制方法(Image Based Rendering,IBR)[5]。其中,IBR 中的DIBR 被广泛用于解决视图合成问题,即利用参考视点的纹理和深度信息来合成目标视点信息。然而合成的视图又普遍存在空洞问题,这主要源于遮挡形成的像素不可见性。

因此,本文提出一种空洞填充的视点绘制算法流程。首先,根据每个参考视点视图,分别生成对应的中间结果视图。然后,合并中间结果视图,得到带有空洞的结果视图。最后,利用高斯混合模型(GMM)[6]聚类算法寻找该空洞点周围最远的视差平面,并以该平面上的有效像素对该空洞点进行填充。

1 研究现状

目前,DIBR 包含单参考视点方法和多参考视点方法。两种方法都面临着裂纹问题、重叠问题、伪影问题、空洞问题。裂纹问题是由于参考视点处的整数像素点映射到虚拟视点处的非整数位置时,对非整数像素取整运算,导致目标视图出现很多细小的裂纹,主流的解决方案包含逆向映射法和临近像素赋值法。重叠问题是多点像素映射到同一目标位置,由于选取不当的像素点,导致前景点被背景点所覆盖,主流解决方案包含z-buffer 算法和极线排序算法。伪影问题由于绘制虚拟视点时,遇到深度值突变的边缘区域,无法通过深度信息正确的划分前景和背景像素,造成背景含有明显的前景轮廓,从而降低绘制的目标图像质量,常见处理方法包含形态学处理和深度图修正,空洞问题是由于在参考视点的存在遮挡现象,导致部分场景信息不可见性,该信息以空洞的形式存在目标图像上。可以利用深度信息,亦或者利用通过纹理、极线、颜色等特征,来作为辅助空洞修复过程。

2 算法介绍

2.1 单视点合成

视差图以视差值为像素点,反映的是同一场景在两个不同视点的成像像素的位置差异。

假如视差图上某一像素点,对应视差值为d,那么左、右摄像机之间的视点,视差值取值范围是0~d。

下文将左右参考视点分别归一化到基线位置0 和1 处。位于α(0<α<1)处的虚拟视点视图,根据公式(1),将左参考视图像素位置按照α或者右参考视图像素位置按照1-α缩放比例进行水平移动即可。

图1(a)和图1(b)是利用单视点合成视点RGB 视图和视差图,黄色方框标记的区域是典型的裂纹问题,黑色方框标记的区域是典型的重叠性问题,紫色方框标记的区域是典型的伪影问题,红色方框标记的区域是典型空洞问题。

图1

2.2 双路视点合成

图2(a)是单参考视点合成视图,图2(b)是双参考视点方法效果更好,显然双参考视点方法更好,在一定程度上抑制了裂纹问题、重叠性问题和伪影问题,以及空洞问题。

图2

2.3 解决裂纹

对于非整数列映射点V(r,y),这里采用临近像素填充法的思想[8],将V(r,y)分别映射到两个位置,以便降低裂纹效应。

在图3 中,显然利用(4)式,裂纹问题得到妥善的解决。

图3

2.4 解决重叠性

当多个出现d1,d1,…,dn多个像素点映射到同一目标像素位置V 时,参考z-buffer 算法[4,7],保存视差值最大的那个像素值:

图4 中,利用(5)式,重叠性问题得到妥善解决。

2.5 解决伪影

由于视差图经过精确校正,利用视差的差值或者梯度进行边缘检测便可以达到Canny 边缘检测[9]的效果。考虑时间性能,以及视差图边缘突变特征,这里利用梯度值进行边缘检测,然后膨胀该边缘,然后区分膨胀区域的前后背景,对膨胀区域对应的映射像素,采用带有权重的中值滤波[9]。在图4 显示,采伪影问题得到一定的抑制作用。

图4

图5

3 空洞填补

合成的RGB 视图VI和视差图VD中出现的空洞问题,一方面由于参考视图的采样率不足的缘故,在新视点中,物体占据的像素比参考视点中的物体占据的像素多得多,这时空洞是平面的一部分。另一方面是由可见性引起的遮挡问题,参考视图中被前景遮挡的区域在新视图中是可见的,这时,空洞可能是背景的一部分,这时当然可以考虑相邻视差平面上的像素作为空洞填补的候选,也就是寻找该空洞点周围最远的视差平面上的像素。

对于空洞S,分析S 周围的相邻像素的视差分布,首先,根据(6)式,对S 的4 阶相邻像素采用凝聚式层次聚类[10],获取聚类类别数k,然后根据k 值,利用Kmeans 聚类方法重新对空洞S 聚类,接着依据K-means聚类得到的各个簇,计算出高斯混合模型的初始值,其中质心作为均值向量,每个簇中样本的协方差矩阵作为协方差矩阵,每个簇中样本占总体样本的比例作为混合系数,最后,运用高斯混合模型聚类方法重新聚类[6]。

其中P,Q为集群,每个簇视为一个视差平面,簇之间的相互距离都大于τd,停止合并流程。

3.1 视差图的空洞填充

对空洞Si周围像素聚类后,选定最远的剩余集群C(Si),利用C(Si)中像素,从边界开始逐步恢复Si。最后,根据(7)式,对于Si中的像素进行中值滤波。

其中y∈N4(x)∩C(Si),N4为4 阶领域,每次填充完成后,C(Si)会增加对应x。

图6(a)是没有进行空洞填补的视差图,图6(b)是采用空洞填补的视差,显然空洞问题得到妥善的解决。

图6

3.2 彩色图的空洞填充

为了更好地保持边边缘信息,这里用双边滤波[11]的变体取代中值滤波,根据公式(8),完成填补空洞的工作。

其中,ws(y),wi(y),wd是被标准化过。

ws(y)用来衡量y 和x 空间相近性的权重,取值公式为:

wi(y)用来衡量像素值域中辐射差异,取值公式为:

wd用来衡量深度或者视差相近性的权重,能够防止被表示其他深度平面像素污染,取值公式为:

对于填充后的彩色图像和空洞图片,可能会出现平滑锯齿伪影,这里可以采用中值滤波进行平滑处理。图7(a)是没有进行空洞填补的视图,图7(b)是进行空洞填补视图,显然效果不错。

图7

4 实验结果

为了与三种最新算法做对比,选取6 个共同的测数据,该测试集均来自Middlebury stereo 数据集(2005、2006)上被校正过的图像,对应归一化位置依次为:0.25,0.75,选取0.5 作为虚拟视点位置,选用PSNR 和SSIM 的得分作为客观的评价标准。在表1 中,与其他三种算法相比提出算法的PSNR 平均值为36.02,SSIM平均值为0.99,取得了一定的效果。

表1 提出的算法和其他三种方法的评估对比表

5 结语

本文提出一种聚类的视点合成算法流程,运用双路参考视点合成虚拟视点。针对视图中的空洞问题,利用高斯混合模型(GMM)的聚类算法,寻找空洞点周围最远视差平面,并以此平面上的有效像素对空洞进行填充和修复。评估结果表明算法取得了较好的效果。

猜你喜欢

视点空洞视图
微视点
北极上空出现罕见臭氧层空洞
利用瑞利波法探测地下空洞
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
《投影与视图》单元测试题
空洞的眼神
Django 框架中通用类视图的用法
环境视点
寻找新的视点