数字图像处理_04_(图像模糊(滤波)——均值滤波,中值滤波,高斯模糊)

1.卷积

卷积在图像处理中的应用是输入一幅图像 f ( x , y ) f(x,y) f(x,y),经过特定设计的卷积核 g ( x , y ) g(x,y) g(x,y)进行卷积处理以后,输出图像将会得到模糊,边缘强化等各种效果。图像处理的卷积的原理如图:
在这里插入图片描述
由一个 卷积核 与一个 图像 进行 元素对应相乘再累和
当图片较大时:
在这里插入图片描述
可见卷积之后原图像尺寸发生变化,由原来的5 * 5变为了3 * 3,而在图像处理的多数情况下是要保持图像尺寸的,为此要对原图像进行边缘扩展后(OpenCV中会自行完成边缘扩展)再进行卷积,例如先将5 * 5扩展为7 * 7,则更改后就可以保持原尺寸5 * 5。
在这里插入图片描述

先给出图像添加噪声的模拟算法

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
#读取图片
img=cv.imread('../pic/cat200x192.jpg')
#获取图片长宽
w,h,c=img.shape
#随机产生500个白色的像素噪声点
for i in range(500):
    x=np.random.randint(0,w)
    y=np.random.randint(0,h)
    img[x,y,:]=255
#保存图片
cv.imwrite('../pic/cat_noise.png',img)
plt.imshow(img)
plt.show()

输出结果如下图:
在这里插入图片描述

这里将提到在图像处理中常用到的图像模糊方法,有均值滤波,中值滤波,高斯模糊。

2.均值模糊(滤波)

1)原理:均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即包括目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
均值滤波的卷积核模板一般为:
K = 1 9 [ 1 1 1 1 1 1 1 1 1 ] K=\frac{1}{9} \left[ \begin{array}{ccc} 1&1&1\\ 1&1&1\\ 1&1&1\\ \end{array} \right] K=91111111111
代码如下:

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
#自定义一个读取图像函数
def show(img):
    if img.ndim==2:
        plt.imshow(img,cmap='gray')
    else:
        img2=cv.cvtColor(img,cv.COLOR_BGR2RGB)
        plt.imshow(img2)
    plt.show()
#读取图片
img=cv.imread('../pic/cat_noise.png')
#分别3*3和7*7的卷积核进行均值模糊
img2=cv.blur(img,(3,3))
img3=cv.blur(img,(7,7))
#显示图片
show(np.hstack([img,img2,img3]))

输出结果如下图(原图,卷积核为3 * 3,卷积核为7 * 7):
在这里插入图片描述

PS:
1.均值滤波卷积核尺寸n越大,图像越模糊。
2.卷积核一般为n为奇数的矩阵,这里给出3*3的模板: K = 1 9 [ 1 1 1 1 1 1 1 1 1 ] K=\frac{1}{9} \left[ \begin{array}{ccc} 1&1&1\\ 1&1&1\\ 1&1&1\\ \end{array} \right] K=91111111111
3 cv.blur(原图像,卷积核尺寸)卷积核尺寸表示为(3,3),(5,5)。

3.中值模糊(滤波)

原理:中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.在这里插入图片描述

代码如下:

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
#自定义一个读取图像函数
def show(img):
    if img.ndim==2:
        plt.imshow(img,cmap='gray')
    else:
        img2=cv.cvtColor(img,cv.COLOR_BGR2RGB)
        plt.imshow(img2)
    plt.show()
#读取图片
img=cv.imread('../pic/cat_noise.png')
#分别3*3和5*5的卷积核进行中值模糊
img2=cv.medianBlur(img,3)
img3=cv.medianBlur(img,5)
show(np.hstack([img,img2,img3]))

输出结果如下图:
在这里插入图片描述

PS:
1.中值滤波卷积核尺寸n越大,图像越模糊。
2.卷积核一般为n为奇数的矩阵,卷积核无固定模板,
3 .img_medianBlur=cv.medianBlur(原图像,卷积核阶数)卷积核尺寸表示为3,5。

4.高斯模糊(滤波)

原理:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值
高斯滤波卷积核模板
K = 1 16 [ 1 2 1 2 4 2 1 2 1 ] K=\frac{1}{16} \left[ \begin{array}{ccc} 1&2&1\\ 2&4&2\\ 1&2&1\\ \end{array} \right] K=161121242121
代码如下:

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
#自定义一个读取图像函数
def show(img):
    if img.ndim==2:
        plt.imshow(img,cmap='gray')
    else:
        img2=cv.cvtColor(img,cv.COLOR_BGR2RGB)
        plt.imshow(img2)
    plt.show()
#读取图片
img=cv.imread('../pic/cat_noise.png')
#分别3*3和5*5的卷积核进行高斯模糊
img2=cv.GaussianBlur(img,(3,3),sigmaX=100)
img3=cv.GaussianBlur(img,(5,5),sigmaX=100)
show(np.hstack([img,img2,img3]))

输出结果如下:在这里插入图片描述
同时在相同尺寸不同 σ \sigma σ的情况下有如下结果(原图,sigma为0.1,100):在这里插入图片描述

PS:
1.cv.GaussianBlur(原图像,卷积核尺寸,X方向方差)
卷积核尺寸表示为(3,3)
只写sigmaX,sigmaY缺省相同
2.高斯滤波卷积核尺寸n越大,越模糊。
3.高斯滤波sigma越小越接近原图,越大越模糊。
4.常用的卷积核模板为: K = 1 16 [ 1 2 1 2 4 2 1 2 1 ] K=\frac{1}{16} \left[ \begin{array}{ccc} 1&2&1\\ 2&4&2\\ 1&2&1\\ \end{array} \right] K=161121242121

  • 3
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像处理中的均值滤波、高斯滤波高斯模糊)、中值滤波和双边滤波都是常见的图像滤波算法。 均值滤波是一种简单的滤波方法,它将图像中的每个像素点替换为该像素点周围邻域内像素值的均值。这种滤波方法适用于去除图像中的高频噪声,但会导致图像边缘模糊。 高斯滤波高斯模糊)是一种常用的图像滤波方法,它通过对图像中的每个像素点周围邻域内的像素值进行加权平均来实现。这种滤波方法利用了高斯函数的特性,使得离中心点距离越远的像素权重越小,从而改善了均值滤波导致的边缘模糊问题。 中值滤波是一种非线性滤波方法,它将图像中的每个像素点替换为该像素点周围邻域内像素值的中值。这种滤波方法适用于去除图像中的脉冲噪声,相比于线性滤波方法,中值滤波在去除噪声的同时能够保持图像的边缘信息。 双边滤波是一种基于像素差异和空间距离的滤波方法,它通过对图像中的每个像素点周围邻域内的像素值进行加权平均来实现。与高斯滤波不同的是,双边滤波在求加权平均值时引入了一个关于像素差异的权重项,从而保留了图像的边缘信息。这种滤波方法适用于去除图像中的噪声,并且在保持图像细节的同时能够有效消除噪声。 综上所述,不同的图像滤波方法适用于不同的噪声类型和处理要求。在实际应用中,需要根据具体的图像和噪声情况选择合适的滤波算法来进行图像处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值