图像处理算法三 图像模糊处理 (平滑处理)
英文叫做blur, 也叫做smootiing, 中文中叫做模糊或者平滑。
用过photoshop的人都应该知道,滤镜里面就有模糊这个选项,我们现在看看它是怎么实现的。
一含义模糊(平滑)是一种常用的图片处理方式,它的作用可以用来降低噪声,还有其他用途
看一下opencv 里面的公式
g(i,j)是目标坐标的像素值, f(i+k,j+l)是k,l这些地方的像素值, h(k,l)是 kernel, 我不知道怎么去准确翻译它的意义,它是过滤器的系数。
简单的按照我的思路去理解,就是一个权值,模糊的含义是将所有的像素按照一定的权值进行运算,得到一个比较均衡的结果。
二 类型类型有很多种:均值模糊(box blur) 高斯模糊(gaussian blur) 中值模糊(media blur) 二值模糊(bilateral blur)本文只讲均值模糊和高斯模糊三 算法1 均值模糊 均值模糊很简单就是周边所有的影响都是1,求平均值即可2 高斯模糊关于高斯模糊的算法,推荐这个文章http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html根据这个公式计算出系数即可。上篇文章写得很详细,我就不班门弄斧了。四均值模糊的代码和效果 先放上均值模糊的代码
下图是用指针的相差了20倍。。。可见指针虽然万恶,但是确实是个好东西。
由于size(4,4)图太小看不清, 实际用的是8
原始opencv本文
五高斯模糊的代码和效果代码如下:
效果图如下:本文没有考虑边界的情况,所以都是灰色的,可以考虑一下如何处理边界。
上面代码有两处问题:第一是在size比较小的时候,这些点的概率之和不等于1,会导致图片出问题。修正如下:sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8 .
修改程序之后发现和原始的高斯函数基本一致,希望广大朋友们多多评论,本人水平有限,很多地方有纰漏,希望能够共同提高。