图像处理中的局部运算与滤波

在图像处理中,对图像的滤波是非常常见的一种运算,我们耳熟能详的高斯滤波,双边滤波,导向滤波,而所有的这些滤波其实都是基于局部的一种线性运算。

我们知道,几乎所有的滤波或者局部运算都可以表示成如下的这种形式:

y i = 1 z j Ω i w j y j y_{i} = \frac{1}{z} \sum_{j \in \Omega_{i}} w_{j} y_{j}

其中, z = w j z = \sum w_{j} ,是一个归一化系数,上面这个表达式,也就意味着图像中,像素 i i 的值 y i y_i 等于其邻域 y j y_j 的一个线性组合, w j w_{j} 表示的就是邻域像素 y j y_{j} 的权重,这个表达式是一系列滤波器的基础。

对于高斯滤波来说,其 w j w_{j} 就是相对位置的一个关系:

w j = 1 2 π σ e ( x i x j ) 2 2 σ 2 w_{j} = -\frac{1}{\sqrt{2 \pi} \sigma} e^{-\frac{(x_{i} - x_{j})^2}{2\sigma^{2}}}

为了简化,一般可以假设 σ = 1 \sigma = 1 , x i , x j x_{i}, x_{j} 可以看成是像素 i , j i, j 在图像中的坐标,因为高速滤波其实考虑的是像素的相对位置,所以告诉滤波器的权重一般都是固定的,设置好滤波器的尺度,以及 σ \sigma ,滤波器可以很快的得到,利用卷积运算,就可以得到一个高斯模糊的运算。除了高斯滤波,还有一个平均滤波,

w j = 1 N w_{j} = \frac{1}{N}

这种滤波器,表示邻域像素的权重是一样的。

除了高斯滤波,还有一个双边滤波器,双边滤波器,在高斯滤波器的基础上,引入了像素值的考量,

w j = e x p ( ( x i x j ) 2 2 σ d 2 ) e x p ( ( y i y j ) 2 2 σ r 2 ) w_{j} = exp \left({-\frac{(x_{i} - x_{j})^2}{2\sigma_{d}^{2}}} \right) exp \left({-\frac{(y_{i} - y_{j})^2}{2\sigma_{r}^{2}}} \right)

双边滤波,既考虑了像素的位置关系,也考虑像素值的关系,所以在每个邻域上,其权重值 w j w_{j} 是不一样的。

除了高斯滤波,双边滤波之外,还有一种 non-local mean 的滤波,与前面两种滤波方式相比,non-local mean 的滤波器的权重计算,考虑的不是像素与像素之间的相似度,而是像素 i i 的邻域 V i V_{i} 和像素 j j 的邻域 V j V_{j} 之间的相似度,利用像素的邻域来计算权重:

w j = e x p ( ( V i V j ) 2 2 σ 2 ) w_{j} = exp \left({-\frac{(V_{i} - V_{j})^2}{2\sigma^{2}}} \right)

( V i V j ) 2 = 1 d 2 l [ d , d ] ( y i + l y j + l ) 2 (V_{i} - V_{j})^2 = \frac{1}{d^{2}} \sum_{l \in [-d, d]} (y_{i+l} - y_{j+l})^2

d d 表示邻域 V V 的半径, d 2 d^2 也就是邻域的像素个数,邻域 V i V_{i} V j V_{j} 的相似度,也就是邻域里对应像素的欧式距离,这里我们看到,理论上来说, j j 可以是全图范围内的任何一个像素点,不过在实际计算的时候,一般会设置一个搜索范围,也就是在像素 i i 的附近,搜索半径为 D D , 所以一般来说,这个 non-local mean 的计算量是比较大的。

最后介绍一下表面模糊,这个在磨皮算法中经常会遇到,表面模糊也是要利用邻域的像素值,根据如下的表达式,计算每个邻域像素的权重:

w j = 1 y i y j 2.5 T w_{j} = 1 - \frac{|y_{i} - y_j{}|}{2.5T}

上面的 T T 表示一个经验阈值。 T T 越大,模糊的程度越高。

从上面的表达式可以看出,除了高斯模糊的权重与像素值无关之外,其他几种模糊形式的权重都和像素值有关,所以高斯模糊可以利用卷积快速地运算得到,而其他几种模糊形式都相对来说要慢很多,比较耗时。

发布了219 篇原创文章 · 获赞 211 · 访问量 113万+

猜你喜欢

转载自blog.csdn.net/shinian1987/article/details/89891827
今日推荐