Python+OpenCV图像处理之模糊操作

摘要:
模糊操作是图像处理中最简单和最常用的操作之一。此操作的原因之一是减少图像预处理期间的噪声。基于数学的卷积运算的平均值是模糊的,而函数cv2.blur是平滑图像的函数。它将区域中所有点的平均灰度值作为该点的灰度值。例如,此函数将域点的灰度值的权重相加,然后设置灰度值。此操作也称为卷积,此滤波器称为线性滤波器。

 模糊操作是图像处理中最简单和常用的操作之一,该使用的操作之一原因就为了给图像预处理时减低噪声,基于数学的卷积操作

均值模糊,函数 cv2.blur(image,(5,5)),这是一个平滑图片的函数,它将一个区域内所有点的灰度值的平均值作为这个点的灰度值。像该函数对领域点的灰度值进行权重相加最后设置灰度值,这样的操作又叫卷积,这样的滤波器叫线性滤波器。

中值模糊,函数cv2.medianBlur(image,5),该函数不同于上一个函数,它是非线性滤波器,它是取领域的中值作为当前点的灰度值。,上面函数就是选取了5*5大小的矩阵,必须为奇数,处理有椒盐噪声(就像烧烤撒很多孜然,图片上有很多点)有很好的效果

自定义模糊(锐化),函数filter2D():定义为cv2.filter2D(src,ddepth,kernel)

锐化就是突出图像细节或者增强图像被模糊的地方,锐化原理就是细节增强,图像的导数就是图像的细节,随着导数阶数升高,能代表的东西也不同。 

均值模糊、中值模糊、自定义模糊的python代码

import cv2
import numpy as np


__author__ = "boboa"


# 均值模糊 去随机噪声有很好的去燥效果
def blur_demo(image):
    dst = cv2.blur(image, (5, 5))
    cv2.imshow("blur_demo", dst)


# 中值模糊去除椒盐噪声
def median_blur_demo(image):
    dst = cv2.medianBlur(image, 5)
    cv2.imshow("median_blur_demo", dst)


# 自定义模糊
def custom_blur_demo(image):
    # kernels = np.ones([5, 5], np.float32)/25
    kernels = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
    dst = cv2.filter2D(image, -1, kernel=kernels)
    cv2.imshow("custom_blur_demo", dst)


if __name__ == "__main__":
    img = cv2.imread("img3.jpg")
    cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
    cv2.imshow("input image", img)
    blur_demo(img)
    median_blur_demo(img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

均值模糊运行效果

Python+OpenCV图像处理之模糊操作第1张

中值模糊运行结果

Python+OpenCV图像处理之模糊操作第2张

自定义运行结果

Python+OpenCV图像处理之模糊操作第3张

高斯模糊本质上是低通滤波器,输出图像的每个像素点是原图像上对应像素点与周围像素点的加权和,原理并不复杂,就是用高斯分布权值矩阵与原始图像矩阵做卷积运算而已。

高斯模糊的python代码

import cv2
import numpy as np

"""
高斯模糊/噪声
轮廓还在,保留图像的主要特征
高斯模糊比均值模糊去噪效果好
"""


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])
    cv2.imshow("noise image",   image)


if __name__ == "__main__":
    img = cv2.imread("img5.jpg")
    cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
    cv2.imshow("input image", img)
    # gaussian_noise(img)

    # 高斯模糊抑制高斯噪声
    dst = cv2.GaussianBlur(img, (5, 5), 0)
    cv2.imshow("Gaussian Blur", dst)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

运行结果

Python+OpenCV图像处理之模糊操作第4张

免责声明:文章转载自《Python+OpenCV图像处理之模糊操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇转:openwrt 框架分析c#使用Confluent.Kafka实现生产者发送消息至kafka(远程连接kafka发送消息超时的解决 Local:Message timed out)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【试题汇总】图像处理职位面试题汇总(1)

Matlab编程部分 1. Matlab 中读、写及显示一幅图像的命令各是什么? 解:第一、Matlab中读图像函数是imread( )。imread 函数用于读入各种图像文件,其一般的用法为:[X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的...

图像处理之基础---滤波器 高斯滤波

引用 keendawn 的 高斯(核)函数简介1函数的基本概念 所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。最常用的径向基函数是高斯核...

使用pytorch完成kaggle猫狗图像识别

 kaggle是一个为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台,在这上面有非常多的好项目、好资源可供机器学习、深度学习爱好者学习之用。碰巧最近入门了一门非常的深度学习框架:pytorch(如果你对pytorch不甚了解,请点击这里),所以今天我和大家一起用pytorch实现一个图像识别领域的入门项目:猫狗图像识别。 深度学习...

18、【opencv入门】形态学图像处理(一):开运算、闭运算、形态学梯度、顶帽、黑帽合辑

一、理论与概念讲解 1、开运算(Opening Operation)   开运算(Opening Operation),其实就是先腐蚀后膨胀的过程。其数学表达式如下:   开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。 2、闭运算(Closing Operation)   先膨胀后腐蚀的过程称为闭运算(Clos...

Matlab图像处理系列4———傅立叶变换和反变换的图像

注意:这一系列实验的图像处理程序,使用Matlab实现最重要的图像处理算法 1.Fourier兑换 (1)频域增强 除了在空间域内能够加工处理图像以外,我们还能够将图像变换到其它空间后进行处理。这些方法称为变换域方法,最常见的变换域是频域。 使用Fourier变换把图像从空间域变换到频域。在频域内做对应增强处理,再从频域变换到空间域得到处理后的图像。...

图像处理常用边缘检测算子总结(转)

  不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分...