OpenCV学习笔记6

OpenCV学习笔记6

模糊操作

  1. 均值滤波

均值滤波是一种线性滤波器,处理思路也很简单,就是将一个窗口区域中的像素计算平均值,然后将窗口中计算得到的均值设置为锚点上的像素值。

该算法有优点在于效率高,思路简单。同样,缺点也很明显,计算均值会将图像中的边缘信息以及特征信息“模糊”掉,会丢失很多特征。

均值滤波使用简单的卷积方案来实现,既然是计算窗口区域中的像素和,即使用如下卷积核即可。图像的边界部分采用padding操作处理。另外,得到的锚点像素值要进行归一化,即除以窗口尺寸大小。在OpenCV中,我们使用cv.blur()这个函数即可实现。

def blur_demo(image):
    dst = cv.blur(image, (5, 5))
    cv.imshow("blur_demo", dst)

在这里插入图片描述
在这里插入图片描述

  1. 中值滤波

函数cv.medianBlur(image,5)

该函数不同于上一个函数,它是非线性滤波器,它是取领域的中值作为当前点的灰度值。

上面函数就是选取了5*5大小的矩阵,必须为奇数

处理有椒盐噪声(就像烧烤撒很多孜然,图片上有很多点)有很好的效果

实际应用较多

该方法在去除脉冲噪声、斑点噪声(speckle noise)、椒盐噪声(salt-and-pepper noise)、图像扫描噪声,的同时又能保留凸图像边缘细节。
  中值滤波与均值滤波比较:
    优势是,在均值滤波器中,由于噪声成分被放入平均计算中,所以输出受到了噪声的影响;而在中值滤波其中,噪声成分很难选上,所以几乎不会影响到输出。
    劣势是,中值滤波花费的时间是均值滤波的5倍以上。
  注意:中值滤波虽然可以克服线性滤波器所带来的图像细节模糊,但是在线、尖顶等细节多的图像不宜用中值滤波。

def median_blur_demo(image):
    dst = cv.medianBlur(image, 5)
    cv.imshow("median_blur_demo", dst)

在这里插入图片描述

  1. 自定义模糊(锐化)

锐化就是突出图像细节或者增强图像被模糊的地方,锐化原理就是细节增强,图像的导数就是图像的细节,随着导数阶数升高,能代表的东西也不同。 (这里好像只到了二阶导数)
​​​​​​​

filter2D():定义为filter2D(src,ddepth,kernel)

ddepth:深度,输入值为-1时,目标图像和原图像深度保持一致

kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵

修改kernel矩阵即可实现不同的模糊

def custom_blur_demo(image):
    #kernel = np.ones([5, 5], np.float32)/25
    kernel = np.array([[0, -1, 0],[-1, 5, -1],[0, -1, 0]], np.float32)#矩阵可以自己定义,下面给出了常见的滤波器。
    dst = cv.filter2D(image, -1, kernel=kernel)
    cv.imshow("custom_blur_demo", dst)

在这里插入图片描述
在这里插入图片描述

  1. 高斯滤波

高斯噪声:

def clamp(pv):
    if pv > 255:
        return 255
    if pv < 0:
        return 0
    else:
        return pv


def gaussian_noise(image):
    h, w, c = image.shape
    for row in range(h):
        for col in range(w):
            s = np.random.normal(0, 20, 3)
            b = image[row, col, 0]  # blue
            g = image[row, col, 1]  # green
            r = image[row, col, 2]  # red
            image[row, col, 0] = clamp(b + s[0])
            image[row, col, 1] = clamp(g + s[1])
            image[row, col, 2] = clamp(r + s[2])
    cv.imshow("noise image", image)

噪声图如下:
在这里插入图片描述
添加高斯滤波后:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值