数字图像处理之图像模糊

图像模糊是数字图像处理过程中经常用到的,主要包括以下几个方面:
数字图像处理之图像模糊_第1张图片
导入库

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:
        plt.imshow(cv.cvtColor(img,cv.COLOR_RGB2BGR))
    plt.show()

卷积

卷积在神经网络里面是最基本的概念,这里我们简单演示一下。
数字图像处理之图像模糊_第2张图片

#卷积
K = np.ones((3,3))/9.0
img2 = cv.filter2D(img,-1,kernel=K)
show(np.hstack([img,img2]))

经过卷积之后的结果(貌似卷积之后的结果比卷积之前“柔滑”了一些):
数字图像处理之图像模糊_第3张图片

均值模糊

数字图像处理之图像模糊_第4张图片

#均值模糊两个函数
img2 = cv.blur(img,(3,3))
show(np.hstack([img,img2]))
img2 = cv.boxFilter(img,-1,(3,3))
show(np.hstack([img,img2]))

中值滤波

#中值滤波
img4 = cv.medianBlur(img,3)#3代表滤波模板的大小,必须是大于1的奇数,例如3,5,7等
show(np.hstack([img,img4]))

数字图像处理之图像模糊_第5张图片

高斯模糊

高斯模糊之所以叫高斯模糊,是因为它运用了高斯的正态分布的密度函数。在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。
计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。把它运用于图像算法中,就会使图像出现模糊的效果。
数字图像处理之图像模糊_第6张图片

#高斯滤波
sigma = 1
img2 = cv.GaussianBlur(img,(5,5),sigmaX=sigma)
show(np.hstack([img,img2]))

数字图像处理之图像模糊_第7张图片

双边滤波

双边滤波的目的:保留边缘等高频信息,平滑颜色(灰度)相近的地方。
不断计算卷积核,使得颜色差异越大、加权值越小;距离越远,加权值越小。

#双边滤波
img3 = cv.bilateralFilter(img,-1,sigmaColor=50,sigmaSpace=3)
show(np.hstack([img,img3]))

数字图像处理之图像模糊_第8张图片
sigmaSpace和sigmaColor越大,时间越久,但是模糊的效果越好。

你可能感兴趣的:(机器学习,数字图像处理,图像模糊,opencv)