图像均值模糊算法原理及c++实现
1. 什么是均值模糊
2. 算法原理
3. 基于C++结合OpenCV实现
4. API函数调用实现
-
什么是均值模糊
直观的讲,就是根据周围像素点和当前像素点的平均值计算出当前点的像素值,这个平均采用的就是最基本的算术平均值。
下面这个图从立体的角度更能直观的看出整个过程,但是有一个问题就是边缘像素点不能得到像素值,也可以采用一些常数填充、向外扩张(临近点插值、双线性插值)[本文没有涉及这部分操作,后续弄清楚会加上]的操作计算出边缘的像素值,然后得出像素值来填充中心点像素,可以直观的看出来,在整个计算中,整个图像每个像素点的差值变得很小,就会使得图像看起来像连成一块,图像模糊变得更加模糊,所以又叫均值模糊,该操作能够有效的去除噪声,等同于一个LPF(低通)滤波器。
-
算法原理
根据卷积计算公式:
g ( x ) = ∑ l = 0 n ∑ k = 0 m f ( i + k , j + l ) h ( k , l ) g(x) = \sum_{l = 0} ^n\sum_{k=0}^mf(i+k,j+l)h(k,l) g(x)=l=0∑nk=0∑mf(i+k,j+l)h(k,l)
其中 n , m n,m n,m代表窗口的大小,假如我们传入的 k s i z e = ( k s i z e h , k s i z e w ) ksize = (ksize_h,ksize_w) ksize=(ksizeh,ksizew),那么那么均值模糊的卷积核就是:
K = 1 k s i z e h ∗ k s i z e w ∣ 1 1 ⋯ 1 1 1 ⋯ 1 ⋮