本文对OpenCV中高斯双边模糊以及均值迁移的API及原理做浅析
文章目录
引言
我们可以在各种美颜软件中找到类似于磨皮,蜡像等效果,他们具体是怎么实现的呢,就要从文章要说的两个方法说起了。。。。
之前的文章已经详解过了高斯模糊的原理,利用高斯模糊可以对图像实现一定的模糊效果,如下。
但是也可以发现,该操作仅仅是做到了对图像的模糊,保留了图像的部分特征,但是它的边缘特征却变得很差,因此它是无法实现对人脸的磨皮等效果的。今天我们来看高斯双边模糊及均值迁移。
一. 高斯双边模糊(高斯双边滤波)
1. 高斯双边模糊是什么,怎么实现的。
首先,既然牵扯上高斯了,那么这必然和数学脱不开关系,但是本篇文章不讲驳杂的数学公式,(主要是我也没那底子。😂)
高斯双边模糊与高斯模糊最明显的差别就是保留了边缘特征,什么叫保留了边缘特征,也就是
对于如下图片,可以将其鼻子的边缘保留下来,在使用高斯模糊的时候,是这样的。↓
右图显然让图片变得更模糊了,没有起到美颜的效果反而丢失了整体的美感。
在看高斯双边模糊
可以看到它不仅去除了雀斑还保留了整体的美感。这就是高斯双边滤波实现的功能接下来我们从原理角度浅析高斯双边滤波。
它名为高斯滤波自然是脱离不开高斯模糊的原理的,但是它为什么能保留边缘特征呢,这说明高斯双边滤波还考虑了在图像的空间的颜色差异范围或者说考虑了空间的高斯函数,高斯核在图像上移动时,如果遇到很大的颜色落差(或者说对比度很大)的范围图像域时,会截断一部分高斯核的操作,一般来说如下图:
高斯核路过该区域时会保留落差很大的那部分,避免对其操作,但是高斯模糊又是在不断进行的,因此经个人分析来看,高斯双边模糊应该是进行了两个操作,一个是高斯模糊,一个是边缘保留,其边缘保留必然有其自己的算法,这里应该涉及到后面的内容了,那就后面细讲了。
这是官方文章的内容,与我的猜测一致,嘿嘿。
2. 代码层面
接下来我们看代码的层间,以及参数的解析。
<