如果你认为 AR 只是扫扫图片的小把戏的话,你就 out 了!
本文由 ARinChina(www.arinchina.com)原创,转载请联系 ARinChina(微信 ID:arinchinaservice)。
如果有人问,上图中的物体是什么?是个人都会毫不犹豫地回答:“苹果!” 问下图,也会得到同样的答案。
明明图不一样,为什么答案却相同?这是由于人的视觉细胞对物体边缘特别敏感,先看到物体的轮廓,然后才判断这到底是什么东西。
人之所以对物体边缘特别敏感,是因为边缘包含信息更为丰富。物体的边界与 3D 中的遮挡事件对应,一旦知道了边界,就可以了解物体间的遮挡关系。下图中,通过边缘检测可以得出,贴纸挡在了小女孩的前面,因为小女孩的轮廓缺失了一段信息。
如何找到图像中显著的边缘呢?
如果有人让你指出一幅图像最 “显著” 的物体边缘,你会追踪哪些边缘?下图右侧为计算机检测出的边缘,你的感知与它有多接近?
边缘出现在那些颜色、亮度或纹理不同的区域之间,因此大多数人的感知和上图右侧所示相差无几。如果按这些因素将图像分割成相同区域块会非常困难。因此,有人提出将边缘定义为亮度变化剧烈的位置。
图像边缘检测大幅度地减少了数据量,并且剔除了不相关的信息,保留了图像重要的结构属性。边缘检测方法有很多,它们大都需要经过以下几个步骤:
- 图像滤波:对图像进行预处理;
- 图形增强:锐化图像,使图形更明显;
- 图像检测:寻找哪些点为边缘点。
1. 图像滤波
边缘检测算法主要是基于图像亮度的一阶或二阶导数。
函数的导数值就是切线的斜率,绿色代表其值为正,红色代表其值为负,黑色代表值为零。
导数运算可以找出亮度变化明显的边界。但成像过程中会产生噪声(妨碍人们接受信息因素),在图像高频部分所占比重较大,但导数却又强调了高频率部分,因此求导的过程同时放大了噪声。
这就像收音机里的噪声一样,在我们调大声音的同时,噪声也跟着变大。下图为图像噪声示意图,该图为噪声的模拟图,并非采集图像时所导致。
那如何处理收音机里的噪音呢?将频道调至合适位置,便能获得清晰的声音。因为每个频道发出的频率不一样,接收时必须调整到相应频道才可以收听。每个频道就像一个 “过滤网”,仅允许一个范围内的波频通过。
解决图像噪声问题也一样,引入低通滤波器,允许低频率的信号通过,阻止高频率信号通过。但是,这里的低通滤波器并不是阻止高频信息通过,而是减弱高频信息。
下图分别是图像经过滤波前后的对比。
2. 图形增强
经低通滤波器过滤后的图片变得非常平滑,但是边缘部分并没有被突出出来。这时就需要对边缘进行锐化,使图像的边缘变得清晰。
平滑处理是将每个像素和周围的像素进行平均,要使边缘再变得清晰,则要对图像再做逆运算。
图像模糊是因为采用低通滤波器将图像高频信号减弱。相反,图像锐化就可以用高通滤波器来减弱低频信息,以此来突出高频信息,使图像看起来清晰。
3.图像检测
图像的边缘有幅度和方向属性,沿边缘方向像素变化缓慢,垂直边缘方向像素变化剧烈。因此,边缘上的变化能通过梯度计算出来。在图像中有许多点的梯度幅值(与周围点的差值)较大,而这些点有时并不都是我们需要的边缘,所以需要用某些方法来确定哪些是边缘的点。
最简单的边缘检测是给定一个阈值。
首先使用一个阈值上限去寻找边线开始的地方。一旦找到了一个开始点,便可以 “顺藤摸瓜”。在图像上逐点跟踪边缘路径也一样,当大于门槛下限时,一直记录边缘位置,直到数值小于下限后才停止记录。
检测效果不理想,彩色边缘来帮忙
下图是一张色盲检测图,它在正常人眼中是这样的:
但是在色盲患者眼中,它则如下图所示:
色盲患者无法感知到色彩信息,他们只能看到图像的亮度信息。
大多数边缘检测都是针对灰度图像进行的,但对于上述色盲检测图中的数字来说,它们的亮度与周围点相同。因此使用灰度边缘检测器的话,检测结果就如同色盲患者所见结果一样无法检测出数字边缘。此时,可以利用彩色图像信息来辅助完成边缘识别。
彩色图像边缘检测算法都是基于一定的颜色空间的,比较常用的有如上图所示的 RGB,还有 HSI、YUV 等。颜色空间是对色彩的一种描述方式,定义有很多种,区别在于面向不同的应用背景。
例如显示器中采用的 RGB 颜色空间,是基于物体发光定义的(RGB 正好对应光的三原色:Red,Green,Blue);工业印刷中常用的 CMY 颜色空间,是基于光反射定义的(CMY 对应了绘画中的三原色:Cyan,Magenta,Yellow);HSV、HSI 两个颜色空间,都是从人视觉的直观反映而提出来的(H 是色调,S 是饱和度,I 是强度)。
由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感强度,为了便于色彩处理和识别,人的视觉系统经常采用 HSI(H 是色彩,S 是深浅,I 是明暗)色彩空间。
HSI 色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation)和亮度(Intensity)来描述色彩,它比 RGB 色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法,都可在 HSI 色彩空间中方便地使用,它们可以分开处理而且相互独立。
因此,HSI 色彩空间可以大大简化图像分析和处理的工作量。
基于彩色边缘检测的一个简单方法,是在每个颜色空间独立地检测边缘,然后将它们联合起来。就像下图的贺卡,每个颜色制作一个字母,然后把这些字母叠加在一起便形成一个单词。
目前的图像采集设备都是基于 RGB 彩色空间的,所以要进行颜色格式的转换。我们以 HSI 颜色空间为例,可以将转换后的图像视为有三层——H、S、I。分别在这三层上进行边缘检测,然后将这三层的检测结果叠加在一起形成最后的边缘信息。
上图是彩色图像边缘检测的结果,虽然它已经可以较好地识别物体轮廓,但是如果想要达到人眼识别的效果,就必须结合更多的视觉线索,如亮度、颜色和纹理等,才能构建出更好的检测器。
题图来源:Active Trade