基于先验知识的单幅图像天空检测算法

2021-05-25 05:27孟祥环罗素云
软件导刊 2021年5期
关键词:像素点灰度像素

孟祥环,罗素云

(上海工程技术大学机械与汽车工程学院,上海 201620)

0 引言

地面机器人自主导航系统中最重要的问题是对周围环境的感知与理解[1]。图像中的天空区域为地面机器人提供了水平和背景信息,对于基于视觉的地面机器人导航具有重要意义。自主地面机器人中最常用的传感器大致可分为两类:主动式传感器和被动式传感器。主动式传感器,如雷达、激光雷达和声纳等都已得到了大规模应用[1-2]。随着电子技术的发展,摄像机等无源传感器具有更小的体积、更低的价格及功耗,并且可以提供丰富的环境信息[3],目前摄像机等视觉传感器在自主地面机器人中也已实现普及[4-5]。天空区域是室外图像的重要组成部分,对于室外机器人导航系统而言,对天空区域的检测是非常必要的[6-9],利用检测到的天空区域可以在图像中估计出地平线。由斯坦福大学开发的一种天空区域检测算法,不仅可以改善道路检测结果,还可以粗略估计机器人倾斜角度,搭载该算法的斯坦利无人驾驶车辆荣获2005 年DARPA 挑战赛冠军。

Shen 等[10]对天空部分进行了研究,提出地面区域平均亮度比天空平均亮度暗,天空区域在图像上侧、地面区域在图像下侧,且天空区域比较平滑的假设。在此前提下对图像的像素进行遍历,通过不断调整梯度阈值得到不同边界,然后通过计算所有边界的能量函数得到最优边界,并进行优化,最终得到了天空区域。

目前天空识别方法主要分为基于阈值的分割方法、基于区域的分割方法和基于边缘的分割方法[11-12]:

(1)基于阈值的分割方法。基本思想是根据图像灰度直方图的像素分布设定阈值,通过合理的阈值设置分割图像中的物体和背景。该类算法在物体和背景灰度差异明显的情况下分割结果准确,但对噪声比较敏感,使用场景较为受限。

(2)基于区域的分割方法[13]。该方法通过使用区域生长和合并分裂两类算法进行天空识别,将区域像素的一致性作为分割依据,满足区域一致性的像素被认为是同一区域。该算法克服了阈值分割方法未考虑像素空间特征的缺点,但是计算成本太高。

(3)基于边缘的分割方法。该方法考虑到图像中景物边界处灰度值变化较大的特点,利用Robert 算子、Canny 算子与Sobel 算子提取图像梯度信息,通过设置阈值判断区域是否属于天空。但由于使用的边缘检测算子对噪声比较敏感,识别出的结果常常包含大量噪声。此外,对于一些浓雾场景和远景物体,由于灰度图不清晰,导致边缘检测结果不完整。

通过本文提出的天空区域检测算法,可以准确识别图像中的天空区域。相比传统算法,本文通过分析天空区域的像素点特点,将天空先验与像素偏转模型相结合,不仅降低了计算量,而且能够得到更加精确的天空边缘,但也存在对一些非天空区域的白色物体错误识别的现象。

1 像素偏转模型

计算机储存图像时以像素为基本单位,为了更好地描述BRG 三通道图像像素灰度值特点,本文提出了像素偏转模型(见图1)。通过像素偏转角可以简单、快速地找到亮度值差异较大的像素点,这些像素点多代表天空、雪、河流等白色场景物体。

Fig.1 Pixel deflection model图1 像素偏转模型

BRG 三通道图像单个通道的最大灰度值为255,图1 将3 个通道的灰度值放在三维坐标系中表示,即x轴正方向代表B通道的像素值,y轴正方向代表G通道的像素值,z轴正方向代表R通道的像素值,则像素点三维坐标可表示为b(xb,0,0),g(0,yg,0),r(0,0,zr)。

3 个通道的最大灰度值点在三维空间构成了一个三角形,该三角形所在平面的法向量为=(1,1,1),定义该向量为三通道像素平面的标准法向量,所有其它像素点构成的三角形都应该在空间体o-bgr 内部,其构成的平面法向量为=(yg xb,zr xb,zr yg)。

该三角形所在平面法向量为N,此向量即为三通道像素平面的标准法向量,所有其它像素点构成的三角形都应该在空间体o 内部,其构成的平面法向量为M。

设空间中有三点的坐标为:p1(x1,y1,z1)、p2(x2,y2,z2)、p3(x3,y3,z3),则该平面内有向量=(x2-x1,y2-y1,z2-z1)=(x3-x1,y3-y1,z3-z1)。平面的法向量为:

将点b、g、r代入平面的法向量方程,得到像素平面的法向量为:

像素平面法向量与标准像素法向量的夹角为:

式中,θ 为像素偏转角,atan2 为反正切函数。像素偏转角可以反映某一像素在3 个通道的分布规律。当像素偏转角较大时,3 个通道的像素值偏差较大。当像素偏转角较小且接近于0 时,说明该像素点3 个通道的灰度值十分接近。

2 天空先验理论

天空先验理论是基于对大量无雾图像统计后得到的结果。本文制作了一个包含3 231 幅天空区域的图片样本集,其中包含自然景观、城市景观等多种类型图片。为了清晰、直观地表现天空区域具有的统计特征,本文将样本集中的图片人工切割成天空和非天空部分,各得到3 231幅图片,并用图表统计了像素点概率分布情况。其中,图2、图3 统计的是图像中非天空区域的像素特征。通过图2非天空区域像素偏转角分布直方图可以发现,在图像中的非天空区域部分,像素偏转角数值分布范围较广,在5~55之间均有分布,5~20 区间像素偏转角的占比远小于区间20~54,绝大部分分布在20~54 区间。结合图3 非天空区域像素最小灰度值分布直方图可以看出,在非天空区域,像素点灰度的最小值主要分布在0~120 区间,并集中分布在0~50 区间;图4、图5 统计的是图像中天空区域的像素点特点。通过图4 天空区域像素偏转角分布直方图可以发现,在图像中的天空区域部分,像素偏转角数值分布范围较窄,集中分布在0~20 区间。从图5 天空区域像素最小灰度值分布直方图可以看出,天空区域像素点灰度最小值主要分布在105~255 区间,其中集中分布在180~230 区间。

王维是盛唐时期的山水田园派诗人,也是一个做过官、会作画的全能“佛系”大师。因为他的诗句非常富有禅意,所以后世也叫他“诗佛”。从他早期浑厚气派的《汉江临眺》《使至塞上》,到后期恬静闲适的《辛夷坞》《鸟鸣涧》,我们会感到他在人生不同阶段的经历对艺术创作的影响。王维的另一个重要身份便是画家,被称为“南宗画之祖”。无论写诗还是作画,王维都有着自己一以贯之的“佛系审美”:用简单的语句和笔墨,去构造悠远、辽阔的世界。

Fig.2 Histogram of pixel deflection angle distribution in non-sky region图2 非天空区域像素偏转角分布直方图

Fig.3 Histogram of the distribution of the minimum gray value of pixels in the non-sky region图3 非天空区域像素最小灰度值分布直方图

Fig.4 Histogram of pixel deflection angle distribution in sky region图4 天空区域像素偏转角分布直方图

Fig.5 Histogram of the distribution of the minimum gray value of pixels in the sky region图5 天空区域像素最小灰度值分布直方图

通过图像天空区域与非天空区域像素特点的对比可以发现,天空区域相比非天空区域,像素的偏离程度较低,最小灰度值较大。低像素偏转角和高像素灰度最小值将作为本文分割天空的基本依据,可总结公式如下:

其中,θ(x)为x像素点的像素偏转角,S为天空区域像素偏转角的最大值,Vmin为天空区域像素点灰度最小值,V(x)为x像素点处的灰度值。

3 基于先验知识的天空区域识别

3.1 数据集制作

为了更好地验证本文算法的可行性,使用合适的基准数据集评估天空区域的分割精度,本文制作了自己的数据集。该数据集由3 个子部分组成(数据集里的图片来源于Corel1k 数据集、SVT 谷歌数据集、CityStreet 城市街景数据集与实景拍摄)。数据集每个子部分详细信息如下:

(1)原始数据集。MSRC 图像集来自微软研究院,其中包含一个Sky 类。考虑到本文算法的使用场景,本文删除了包含室内场景、特定交通标志和非常大面积水体的图像。在此基础上,增加了Corel1k 数据集中的部分图片,并结合实景拍照,制作了一个包含3 231 个图像的数据集。它们都是分辨率为320×213 的彩色图像。

(2)天空数据集。本文在原始数据集基础上,通过手动分割得到了一个只包含天空区域的数据集,数据集中有1 000 张图片,可用来分析天空区域像素灰度值的特点。

(3)非天空数据集。本文在原始数据集基础上,通过手动分割得到了一个不包含天空区域的数据集,数据集中有1 500张图片,可用来分析非天空区域像素灰度值的特点。

3.2 算法对比

本文算法代码是在ubuntu 系统上利用C++语言实现的,将本文算法与文献[7]中提出的算法进行比较。选择该算法作为本文的对比算法,是因为其在一次主流会议上发表,并具有较好的识别结果,且该算法所需参数是通过最大化测试数据集的性能进行设置的。

式中,p为天空检测偏差,sky检测为算法检测到的天空区域像素点数量,sky图像为检测图片中实际天空部分的像素点数量。

该公式将检测到的天空部分像素点与标准图像天空部分像素点进行除法运算,得到检测精度,但该公式的检测结果可能超过100%,这是因为检测出的天空区域面积可能大于标准图像的天空面积,因此本文对式(6)进行了修改。首先,对算法检测到的天空区域与标准图像的天空区域两部分面积作差(这里将区域中的像素数量等效为区域面积),然后,对上一步结果取绝对值(定义为天空检测偏差)。通过表1 可看出式(6)中分子与分母的数量级差别很大,天空检测偏差的数值将会很小,不利于进行定量对比分析。

Table 1 Algorithm test results表1 算法测试结果

于是本文引入了指数函数,从而将天空检测偏差集中在较小范围内。天空区域精度公式如式(7)所示。

算法识别结果如图6 所示。结合表1 和图6,可看到本文算法表现良好,6 张图片的识别精度均达到96%以上。横向对比每张图片的天空识别效果,本文算法均明显优于文献[7]的算法。

Fig.6 Algorithm recognition results图6 算法识别结果

在图片1 中,原图中的天空部分颜色比较单一,两种算法识别效果均较好,但是文献[7]的算法对图片中左侧路灯区域的天空并未识别成功。而本文算法不仅对天空部分识别比较精细,在天空的整体观感上也明显好于文献[7]的算法。其他图片中天空部分的云层比较复杂,但没有对两种算法的天空识别造成太大干扰,证明了算法的有效性。在图6 的所有图片中,本文算法都能可靠地检测到天空区域。在图片2-图片4 中,由于建筑物和树木的影响,天空区域边界十分复杂,文献[7]的算法在这些区域存在较大的检测误差,而本文算法在这些天空边界复杂的区域可以准确地检测出天空。通过表1 可看出本文算法对图片2-图片4 的识别精度明显高于文献[7]的算法。在图片6中,图片右下角的天空区域与地面的边界不明显,而且天空区域的亮度跨度相当大。这些困难对本文算法的检测结果没有任何影响,但对文献[7]的算法造成了较大影响。

另一方面,本文算法也有不足之处,本文算法依赖于对每个像素的数值进行分析,所以图片中的明亮区域很容易被误分类为天空区域。如在图片1 中,右侧窗户上方白色墙壁附近的明亮区域被错误分类为天空区域;在图片1-图片3 中,可看到部分道路车道线被误检测为天空;在图片4 和图片5 中,汽车白色车顶的一部分被误分类为天空区域。

3.3 参数选择

以下将讨论如何选择本文算法中的参数:天空区域像素偏转角的最大值S,以及天空区域像素点灰度的最小值Vmin。S 和Vmin的物理意义非常清楚,本文在保证其中一个变量不变的前提下,通过改变另一变量的值研究识别结果的变化。

为此,本文收集了不同于第3.1 节所述数据集的额外图片进行测试,该图片均为索尼XZP 相机(IMX400,底=1/2.3,像素1 900W,单位像素1.22,G 镜头,光圈2.0)拍摄的彩色图片,且裁剪为640×480 像素大小。

从图7(彩图扫OSID 码可见)中可以得出结论,当S=25,Vmin=180 时可以得到令人满意的结果,天空检测精度能够达到98%。保持S=20,观察Vmin的变化可以发现,天空检测精度随着Vmin的增大逐渐提高,当Vmin=180 时达到最高,然后逐渐降低;保持Vmin=180,观察S的变化,天空检测精度首先逐渐提高,直到S=20 后开始减小。在天空先验中发现天空区域像素偏转角集中在0~20 之间,天空像素最小值集中在105~255 之间。通过图7 的实验结果发现,实验结果基本与本文提出的天空先验理论吻合。

4 结语

本文提出一种基于先验知识的单幅图像天空检测算法,该算法主要利用天空先验知识和像素偏转模型对天空像素进行识别,并提出一种可以定量分析天空检测实验结果的标准。与现有算法相比,该算法具有较强的鲁棒性,不仅能够识别边界清楚的天空区域,而且对于边界复杂的天空区域也有较好的识别效果。算法识别结果也证明了天空先验和像素偏转模型的正确性,但是依靠单一的天空特征对图片进行识别,算法的适用性很难满足要求,导致模型和算法的应用范围受到很大限制。因此,将像素偏转角和其它天空像素特征作为神经网络的学习特征进行训练,利用多种特征综合识别天空将弥补单一特征带来的算法适用性差的问题,将是下一步的研究方向。

Fig.7 Relationship of sky area detection accuracy with Vminand S图7 天空区域检测精度与Vmin和S 的关系

猜你喜欢
像素点灰度像素
赵运哲作品
采用改进导重法的拓扑结构灰度单元过滤技术
像素前线之“幻影”2000
基于灰度拉伸的图像水位识别方法研究
“像素”仙人掌
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
基于灰度线性建模的亚像素图像抖动量计算