基于图像边缘特征检测的单目立体视觉算法
2021-10-28宋根龙
陈 轩,宋根龙,田 彤,李 毅
(温州大学 计算机与人工智能学院,浙江 温州 325000)
0 引 言
近年来虚拟现实和图像处理技术飞速发展,再加上虚拟现实[1-2]沉浸感和交互性的特点,使它逐渐广泛应用于各行各业,在教育、军事、娱乐、游戏等领域虚拟现实技术正发挥着越来越重要的作用。立体视觉技术[3]是模拟人类视觉处理物体的方式,因此被逐渐应用于虚拟现实、增强现实、三维重建、人机交互等领域[3-4],尤其是在娱乐方面发挥着重要作用,通过移动摄像头、头盔式显示器等硬件设备,用户能够体验真实的沉浸感,融入虚拟场景,增加体验感。结合深度摄像头Kinect的动作捕捉、Leap motion手势识别等硬件设备,用户能够实时地与视频图像对象进行交互,立体图像的引入能够对交互体验增强沉浸感的效果。因此,图像立体视觉受到了研究人员的广泛关注,成为当下的研究热点。
但立体视觉技术存在精度低、效率低、建模成本高、应用受硬件条件的限制等各种问题。针对这些问题,虚拟现实增强技术[5-6]将虚拟环境与现实环境进行匹配合成以实现虚拟物体与实际场景的有效融合,其中将三维虚拟对象叠加到真实世界显示的技术称为增强现实,将真实对象的信息叠加到虚拟环境绘制的技术称为增强虚拟环境。研究人员利用基于GAN的深度神经网络,对于人脸关键特征区域的卡通风格话生成,能够有效地应用于娱乐短视频等实时卡通贴图中[7]。
文献[8]提出利用深度摄像机进行三维建模,在特征检测环节,可对物体的特征等实现几何构建,通过像素特点进行重组,可以有效提升三维重建的速度。针对精度低的问题,文献[9]通过利用双目立体视觉测距技术根据立体匹配的约束关系,通过借鉴黑白棋盘的模式进行标定,利用OpenCV图像处理得到实验相机的内外角点坐标参数,根据计算目标物体和相机之间的实际距离、目标物体的三维坐标以及两点之间的实际距离,提高了目标物体的识别率。
文中提出了一种基于图像边缘特征检测的边缘建影算法,利用单张图像的边缘轮廓提取生成阴影的方法来构建单目立体视觉的仿真效果。通过图像矫正,使该算法可以广泛应用于各类复杂场景,利用图像分割技术对矫正后的图像进行分割,得到图像边缘特征信息,结合仿射变换技术将得到的图像边缘特征经过处理,得到物体的阴影,最后和原图像进行融合得到目标图像,使图像产生立体化的效果。
1 相关工作
1.1 Grabcut图像分割算法
Grabcut图像分割算法[10-11]是一种通用性强、效果好、可以从复杂背景中提取分割目标的交互式分割算法。是当前比较实用的图像分割算法之一,主要功能是从分割图像中分离出前后景。该算法需要用户的交互操作来完善分割效果,使用高斯混合模型对图像建模,并引入迭代估计法实现能量最小化得到分割结果。
算法基本思想:首先通过用户简单交互得到前景和背景样本,然后对前景、背景区域建立GMM(高斯混合模型),并利用无监督聚类算法初始化GMM,然后分别计算节点到前景或背景的距离和相邻节点之间的距离,获得分割能量权重,对未知区域构造s-t网络图,采用最大流最小割算法对其进行切分。Grabcut[12]算法的分割过程是通过不断迭代更新、修正GMM参数,使算法趋于收敛。由于迭代过程中优化了参数,使得分割能量E逐渐减少,能够保证E收敛于最小值,最终实现图像分割。
1.2 仿射变换
二维图像控件中,仿射变换[13]是二维坐标到二维坐标之间的线性变换,可以保持图像的“平直性”和“平行性”。仿射变换可以通过一系列的原子变换的复合来实现,包括平移、缩放、翻转、旋转和剪切等。
1.3 图像矫正
1.3.1 傅里叶变换
对一张图像使用傅里叶变换[14]是将它分解成正弦和余弦部分,将图像从空间域转换到频域。在频域里面,对于一幅图像,高频部分代表了图像的细节、纹理信息;低频部分代表了图像的轮廓信息。如果对一幅精细的图像使用低通滤波器,那么滤波后的结果就只剩下轮廓了。傅里叶变换在图像处理中可以做到图像増强与图像去噪、图像分割之边缘检测、图像特征提取、图像压缩等。
1.3.2 Hough(霍夫)变换
Hough变换[15-16]是一种利用图像的全局特征将特定形状的边缘连接起来,形成连续平滑边缘的方法。它通过将源图像上的点映射到用于累加的参数空间,实现对已知解析式曲线的识别。图像上任意直线区域都可以一一对应参数空间中的一个点,而图像上的任意像素都同时存在于很多直线区域之上,当图像上的某个直线区域包含的特定像素足够多时,就可以认为这个直线区域表示的直线存在。
2 算法流程
2.1 整体流程
基于图像边缘特征检测的单目立体视觉算法的基本步骤包括图像矫正、图像分割、仿射变换、图像融合,流程如图1所示。
图1 基于图像边缘特征检测单目立体视觉算法流程
2.2 图像矫正流程
图像矫正的作用是可以将算法更广泛地应用于各类图像,将有些发生偏移畸变的图像进行矫正,使产生的效果更加真实。
图像矫正主要分为三个步骤,第一步为对图像进行灰度化,然后将图像延展到合适的尺寸,可以提高运行速度,然后对图像执行傅里叶变换得到频域图像。在频域里面,对于一幅图像,高频部分代表了图像的细节、纹理信息;低频部分代表了图像的轮廓信息。二维图像的傅里叶变换如公式(1)表示:
eix=cosx+isinx
(1)
式中,f是空间域(spatial domain)值,F是频域(frequency domain)值。转换之后的频域值是复数。因此,显示傅里叶变换之后的结果需要使用实数图像(real image)加虚数图像(complex image),或者幅度图像(magnitude image)加相位图像(phase image)的形式。第二步是将频域图像二值化,然后对二值化后的图像进行霍夫直线变换得到预期的直线;第三步通过计算得到偏移的角度,然后将原图像按照偏移角度对图像进行仿射变换,效果如图2所示。
图2 图像矫正效果
2.3 目标物体图像分割流程
图像分割的作用是将图像的前景和背景分离,能直接对图像的轮廓进行处理。
图像分割包括两个步骤,第一步首先要先加载图片,通过鼠标点击确定初始位置,松开鼠标确定最终位置,形成矩形的两个对角点,矩形区域为截取需要分割的区域,然后使用文中算法通过交互界面对矩形区域进行处理,得到需要分割的区域。
文中算法把图像像素分为{B,F,PF,PB},其中B表示确定的背景像素点,F表示确定的前景点,PF、PB表示可能的前景点和后景点。在使用文中算法的过程中,用户需要先通过矩形框选择要分割的区域,区域外的为确定的背景像素点,矩形可能为前景点,也可能为背景的像素点,需要对矩形区域的图像进行操作,对于分割效果不好的区域使用交互系统标记,然后再次分割,直到达到理想的效果,如图3所示。
图3 图像局部区域分割效果
2.4 图像二值化处理
该步骤的目的是为生成阴影提供图像,将处理好的二值图像作为仿射变换的输入图像。对于得到的分割区域图像,需要进行相应的操作,转化为二值化图像,才能通过后面的操作将分割区域转化为物体阴影。首先对得到的图像灰度化,然后对图像进行去噪,然后对图像使用自适应阈值变换,得到二值化图像后可能边缘不是很清楚,需要进行图像形态学处理。由于图像在处理的过程中,图片的细节会发生丢失,会干扰后面图像生成阴影的效果,因此分别执行1次形态学腐蚀和膨胀,使图像细节更清晰。然后使用函数获取图像轮廓信息,并在原图像上画出分割图像的轮廓,效果如图4所示。
图4 图像局部特征二值化和轮廓图
2.5 仿射变换阴影生成
此处使用仿射变换的目的为通过选择的点的变换,进而使图像上的点都按相同的偏移方式进行变换。仿射变换[17]代表的是两幅图之间的一种映射。通常使用2×3的矩阵来表示仿射变换。
(2)
T=M·[XY1]T
或
(3)
通常仿射变换基本标识的是两幅图片之间的联系。这种联系可以通过已知M和X,应用算式T=M·X得到T。对于这种联系的信息可以用矩阵M表示(即给出明确的2×3矩阵)或者也可以用两幅图片点之间的几何关系来表示。因为矩阵M联系着两幅图片,以其表示两图中各三点直接的联系,能通过这样两组点求出仿射变换(可以任选点),然后就能把仿射变换应用到图像中所有点。
具体操作为在初始输入的图像中选取2组点,如图5所示,首先在物体的底部选取两个点,然后在物体的顶部选取一个点,这是第一组点;然后再选取一个点作为仿射变换后形成阴影顶部的点所在位置,然后和首次物体底部两个点作为第二组点,作为参数,得到变换的矩阵,通过这个矩阵应用到得到的二值图像上,得到物体近似阴影。通过这些操作,可以将仿射变换得到的阴影的底部与原物体底部位置保持一致,效果如图5所示。
图5 局部区域分割的仿射变换效果
2.6 图片融合优化
这一步的目的是将得到的阴影与原图像相融合,最终实现图像阴影的效果。具体操作为首先将得到的二值图像进行反色操作,将图像中的黑色区域和白色区域互换,然后和通过仿射变换得到的阴影按照w1:w2的权重进行融合,其中w1,w2取1,以此去掉相融的部分。然后将得到的图像和原图像按照w3:w4的权重进行融合,w3取0.85,w4取0.15使阴影出现在原图像上,最终达到图像带有阴影使之产生视觉上立体化的效果,如图6所示。
3 实验结果
为了测试文中算法的普适性与有效性,采用文中算法对不同的图像进行处理,得到物体近似的阴影。实验环境:Windows10 64位操作系统,Intel(R) Core(TM) I7-5500U CPU @ 2.40 GHz,8G内存,编程语言为Python 3.7,编译环境为Pycharm。实验结果如图7所示。
图6 处理后阴影图像和生成图
图7 实验结果
由图8的直方图分布可以看出,图7(1)和图7(2)的初始图像类似,都属于简单背景下的图像。从这两幅图的实验结果可以看出,该算法在简单背景下对单个物体的成影与多个物体的成影都能实现理想的阴影生成效果。
图8 图7(1)(a)和图7(2)(a)的直方图对比
从图9的直方图分布可以看出,图7(1)和图7(3)的初始图像不属于同一种类型,图7(1)的初始图像为简单背景下的图像,图7(3)的初始图像则为复杂背景下的图像。从图7(1)和图7(3)的目标图像可以看出,无论是简单背景图像还是复杂背景图像,该算法都能实现良好的成影效果。
图9 图7(1)(a)和图7(3)(a)的直方图对比
图10的直方图分布可以看出,图7(3)和图7(4)的初始图像都属于复杂背景下的图像,它们的区别为图7(3)是动物的图像,图7(4)是人的图像,并且一张图像为侧面图,另一张为正面图,同时图像中物体与地面接触区域大小不同。从图7(3)和7(4)的结果图像可以看出,该算法对于一些侧面图像也有很好的效果,对于触地区域的增加,该算法产生的阴影能很好地呈现物体的细节。
图10 图7(3)(a)和图7(4)(a)的直方图对比
实验结果可以说明,文中算法具有较强的鲁棒性和适用性,针对不同的目标分割图像,都能对应生成该物体的简易阴影,使图像产生立体化的效果。
4 结束语
针对当前虚拟现实技术和立体视觉技术存在建模成本高、效率低、受硬件条件限制等问题,提出了一种基于图像边缘特征检测的边缘建影算法,它通过图像矫正、图像分割、仿射变换等图像处理方法实现了通过简单的操作可以使图像产生立体化的效果。实验结果表明,该算法能适用于简单背景和复杂背景下简单物体的图像,能产生良好的效果。但由于对图像的阴影生成,是由交互选点生成,具体的效果取决于图像中物体的位置和相关点的选择;对于一些物体正面的图像效果会很明显,对于一些不是正面的图像效果就不是很明显,且由于成影是阴影图片和原图片相融合,由于融合算法选择的不同最终效果也会不同。为解决这些问题,需要根据图像的不同和相对位置不同的图像自动选择合适的点,且需要对于融合算法根据成像的需要进行相关改进,使成像效果更好,立体化效果更明显。由于文中采用了交互式特征区域提取的Grabcut方法获取目标分割区域,在后续研究中,将通过探索基于神经网络的图像特征检测与语义分割的算法,使图像分割建影算法更具通用性,并且克服复杂环境因素所带来的图像分割影像。