python 模糊图像处理_python处理图像边缘模糊 - CSDN
  • 模糊操作基本原理: 1、基于离散卷积 2、定义好每个卷积核 3、不同卷积核得到不同的卷积效果 4、模糊是卷积的一种表象 分别有:均值模糊、中值模糊、自定义模糊 from cv2 import cv2 as cv import numpy as np # ...

    模糊操作基本原理:
    1、基于离散卷积
    2、定义好每个卷积核
    3、不同卷积核得到不同的卷积效果
    4、模糊是卷积的一种表象
    分别有:均值模糊、中值模糊、自定义模糊

    from cv2 import cv2 as cv
    import numpy as np 
    
    # 均值模糊 可以去噪
    def blur_demo(image):
        dst = cv.blur(image,(5,5))  # 水平和垂直方向进行操作 常用(5,,5)
        cv.imshow("blur_demo",dst)
    
    # 中值模糊 可以去噪  对于椒盐去噪效果比均值模糊好
    def median_blur_demo(image):
        dst = cv.medianBlur(image,5)
        cv.imshow("median_blur_demo",dst)
    
    # 自定义模糊
    def custom_blur_demo(image):
        # kernel = np.ones([5,5],np.float32)/25
        # 根据前面知识进行修改
        # 可修改数组中的值  # 锐化
        kernel = np.array([[1,1,1],[1,1,1],[1,1,1]],np.float32)/9  # 这是3*3的数组,故为9
        dst = cv.filter2D(image,-1,kernel=kernel)
        cv.imshow('custom_demo',dst)
    
    if __name__ == "__main__":
        filepath = "C:\\pictures\\person.jpg"
        img = cv.imread(filepath)       # blue green red
        cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
        cv.imshow("input image",img)
    
        blur_demo(img)
        median_blur_demo(img)
        custom_blur_demo(img)
    
        cv.waitKey(0)
        cv.destroyAllWindows()
    

    各个模糊后的结果以及原图
    左:中值模糊
    右:自定义模糊

    在这里插入图片描述
    左:均值模糊
    右:原图
    在这里插入图片描述

    展开全文
  • 高斯模糊实质上就是一种均值模糊,只是高斯模糊是按照加权平均的,距离越近的点权重越大,距离越远的点权重越小。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他...

    高斯模糊实质上就是一种均值模糊,只是高斯模糊是按照加权平均的,距离越近的点权重越大,距离越远的点权重越小。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。

    高斯分布的一维和二维原理如下:

    技术分享图片

       补:高斯分布的标准差σ。标准差代表着数据的离散程度,如果σ较小,那么生成的模板的中心系数较大,而周围的系数较小,这样对图像的平滑效果就不是很明显;反之,σ较大,则生成的模板的各个系数相差就不是很大,比较类似均值模板,对图像的平滑效果比较明显。

    import cv2 as cv
    import numpy as np
    def clamp(pv):
        if pv>255:
            return 255
        if pv<0:
            return 0
        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("niose image",image)
    src =cv.imread("C:\\Users\\william\\Pictures\\go.jpg")
    cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
    cv.imshow("input image",src)
    gaussian_noise(src)
    dst =cv.GaussianBlur(src,(5,5),0)
    cv.imshow("gaussian",dst)
    cv.waitKey(0)
    cv.destroyAllWindows()

    高斯模糊GaussianBlur函数原型:

    GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) -> dst

    src参数表示待处理的输入图像。

    ksize参数表示高斯滤波器模板大小。 ksize.width和ksize.height可以不同,但它们都必须是正数和奇数。或者,它们可以是零,即(0, 0),然后从σ计算出来。

    sigmaX参数表示 X方向上的高斯内核标准差。

    sigmaY参数表示 Y方向上的高斯内核标准差。 如果sigmaY为零,则设置为等于sigmaX,如果两个sigma均为零,则分别从ksize.width和ksize.height计算得到。

      补:若ksize不为(0, 0),则按照ksize计算,后面的sigmaX没有意义。若ksize为(0, 0),则根据后面的sigmaX计算ksize

    4.numpy包里的random模块用于生成随机数,random模块里的normal函数表示的是生成高斯随机数。

    normal函数默认原型:normal(loc=0.0, scale=1.0, size=None)。

    loc参数表示高斯分布的中心点。

    scale参数表示高斯分布的标准差σ。

    size参数表示产生随机数的个数。size取值可以为(m,n,k),表示绘制m*n*k个样本。

    实验图像:

    高斯过滤可以很好的过滤掉高斯噪声,他保留了图像的原本轮廓,可以实现毛玻璃效果

    毛玻璃效果:

    展开全文
  • from cv2 import cv2 as cv import numpy as np def clamp(pv): # 确保这个随机数在0-255之间 if pv > 255: return 255 elif pv < 0: return 0 else: return pv ...def gaussian_n...

    高斯模糊(Gaussian Blur)也叫高斯平滑,通常用它来减少图像噪声以及降低细节层次;
    图像的高斯模糊i过程就是图像与正态分布做卷积;
    高斯模糊对图像来说就是一个低通滤波器;

    from cv2 import cv2 as cv
    import numpy as np 
    
    def clamp(pv):  # 确保这个随机数在0-255之间
        if pv > 255:
            return 255
        elif pv < 0:
            return 0
        else:
            return pv
    
    def gaussian_noise(image):
        h,w,c = image.shape      # 未使用的变量c 但具体化了
        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('gaussian_noise',image)
    
    
    if __name__ == "__main__":
    	filepath = "C:\\pictures\\10.jpg"
    	img = cv.imread(filepath)       # blue green red
    	cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
    	cv.imshow("input image",img)
    	# 测时间
    	t1 = cv.getTickCount()
    	gaussian_noise(img)
    	t2 = cv.getTickCount()
    	time = (t2-t1)/cv.getTickFrequency()
    	print('time consume : %s ms'%(time*1000))
    	dst = cv.GaussianBlur(img,(5,5),0)   # 了解这个函数的用法
    	'''
    	    GaussianBlur()函数用高斯滤波(GaussianFilter)对图像进行平滑处理,
    	    该函数将源图像与指定的高斯内核进行卷积,同时也支持in-place滤波
    	    dst = GaussianBlur(src,ksize,sigmaX[, dst[, sigmaY[, borderType]]])
    	    关于参数ksize:
    	    ksize.width和ksize.height可以不同
    	    取值有2种情况: 
    	    可以是正的奇数
    	    也可以是0,此时它们的值会自动由sigma进行计算
    	    关于参数sigmaX和sigmaY:
    	    sigmaY=0时,其值自动由sigmaX确定(sigmaY=sigmaX);
    	    sigmaY=sigmaX=0时,它们的值将由ksize.width和ksize.height自动确定;
    	'''
    	cv.imshow("gaussian demo",dst)
    	
    	cv.waitKey(0)
    	cv.destroyAllWindows()
    

    左边的图是加了高斯噪声,中间的是对原图进行高斯模糊的结果,右边是原图。
    在这里插入图片描述

    展开全文
  • 过滤是信号和图像处理中基本的任务。其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息。过滤可以移除图像中的噪音、提取感兴趣的可视特征、允许图像重采样等等。频域分析将图像分成从低频到高频...

     过滤是信号和图像处理中基本的任务。其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息。过滤可以移除图像中的噪音、提取感兴趣的可视特征、允许图像重采样等等。频域分析将图像分成从低频到高频的不同部分。低频对应图像强度变化小的区域,而高频是图像强度变化非常大的区域。在频率分析领域的框架中,滤波器是一个用来增强图像中某个波段或频率并阻塞(或降低)其他频率波段的操作。低通滤波器是消除图像中高频部分,但保留低频部分。高通滤波器消除低频部分。
    模糊操作基本原理
    1.基于离散卷积
    2.定义好每个卷积核
    3.不同卷积核得到不同的卷积效果
    4.模糊是卷积的一种表象

    去除随机噪声 :

    均值过滤: 

    图片中一个方块区域(一般为3*3)内,中心点的像素为全部点像素值的平均值。均值滤波就是对于整张图片进行以上操作。

    我们可以看下图的矩阵进行理解

    这个就相当于选取3X3的矩阵求中心像素的均值

    import cv2 as cv
    import numpy as np
    #均值模糊
    def blur_demo(image):
        dst =cv.blur(image,(5,5))
        cv.imshow("blur_demo",dst)

    1.均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

    低通滤波(均值模糊)函数原型:blur(src, ksize[, dst[, anchor[, borderType]]]) -> dst

    src参数表示待处理的输入图像。

    ksize参数表示模糊内核大小。比如(1,15)表示生成的模糊内核是一个1*15的矩阵。

    dst参数表示输出与src相同大小和类型的图像。

    anchor参数、borderType参数可忽略

    去掉椒盐噪声效果好:中值过滤

    #去掉椒盐噪声效果好
    def median_blur_demo(image):
        dst =cv.medianBlur(image,5)
        cv.imshow("median_demo",dst)

    2.中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。具体原理参见博客:https://blog.csdn.net/weixin_37720172/article/details/72627543

    中值滤波(中值模糊)函数原型:medianBlur(src, ksize[, dst]) -> dst

    src参数表示待处理的输入图像。

    ksize参数表示滤波窗口尺寸,必须是奇数并且大于1。比如这里是5,中值滤波器就会使用5×5的范围来计算,即对像素的中心值及其5×5邻域组成了一个数值集,对其进行处理计算,当前像素被其中值替换掉。

    dst参数表示输出与src相同大小和类型的图像。

    自定义模糊处理:

    #自定义模糊 (卷积可以处理模糊和锐化)
    def custom_blur_demo(image):
        kernel =np.ones([5,5],np.float32)/25
        dst =cv.filter2D(image,-1,kernel=kernel)
        cv.imshow("custom_blur_demo",dst)
    
        kernel1 =np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
        dst1 =cv.filter2D(image,-1,kernel=kernel1)
        cv.imshow("custom_blur_demo",dst1)

    3.用户自定义模糊

    所用函数:filter2D()

    函数原型: filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) -> dst

    src参数表示待处理的输入图像。

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

     kernel: 卷积核(或者是相关核),一个单通道浮点型矩阵。修改kernel矩阵即可实现不同的模糊

     

    测试:

    src =cv.imread("C:\\Users\\william\\Pictures\\go.jpg")
    cv.imshow("input image",src)
    blur_demo(src)
    custom_blur_demo(src)
    median_blur_demo(src)
    cv.waitKey(0)
    cv.destroyAllWindows()
    


     

    展开全文
  • 最近在做人脸识别清洗样本的工作,发现经过人脸对齐后存在部分图片...图片越模糊,imageVar的值越小,图像模糊。 #-*-coding:utf-8-*- import sys #reload(sys) #sys.setdefaultencoding('utf-8') import os i...
  • Python图像处理

    2008-01-18 12:11:00
    Python图像处理 最近在做一件比较 evil 的事情——验证码识别,以此来学习一些新的技能。因为我是初学,对图像处理方面就不太了解了,欲要利吾事,必先利吾器,既然只是做一下实验,那用 Python 来作原型开发再...
  • 提到图像处理第一个想到的库就是PIL,全称Python Imaging Library Python图像处理类库,它提供了大量的图像操作,比如图像缩放,裁剪,贴图,模糊等等,很多时候它需要配合numpy库一起使用 1.open() 你可以使用...
  • 第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图...
  • 在本文中,我将带您了解图像处理的一些基本功能。特征提取。但是这里我们需要更深入的数据清理。但是数据清理是在数据集,表格,文本等上完成的。如何在图像上完成? 导入图像 用python导入图像很容易。以下代码将...
  • Python中的图像处理

    2018-03-03 22:27:15
    第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图...
  • python数字图像处理-图像噪声与去噪算法图像噪声椒盐噪声概述: 椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。...
  • python 图像处理

    2018-06-19 14:51:01
    转自:点击打开链接第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量...1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python图像处理类库)提供了通用的图像处理功能,以...
  • Python 图像简单处理的几个常用的库 #Python 图像简单处理的几个常用的库 你好! 这是博主今日简单学习的Python图像简单处理的几个常用库,第一次发的博客,有些简陋,以后会精进 Image(PIL) Image.open()返回一...
  • 该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。...
  • 这些Python库提供了一种简单直观的方法来转换图像并理解底层数据。 今天的世界充满了数据,图像是这些数据的重要组成部分。但是,在使用它们之前,必须...Python是这些图像处理任务的绝佳选择,因为它作为一种科学...
  • Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用...
  • Python-Opencv中的模糊处理 模糊处理原理 基于离散卷积、定义好每个卷积核、不同卷积核得到不同的卷积效果、模糊是卷积的一种表象 模糊方式: 均值模糊:一般用来处理图像的随机噪声 中值模糊:一般用来处理图像的...
1 2 3 4 5 ... 20
收藏数 12,405
精华内容 4,962
关键字:

python 模糊图像处理