2021-07-22

图像模糊

cv.filter2D

cv.filter2D可以将内核与图像进行卷积,进而产生不同效果的图像。

dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])

src 原图像
dst 目标图像,与原图像尺寸和通过数相同
ddepth 目标图像的所需深度
kernel 卷积核(或相当于相关核),单通道浮点矩阵(也是该函数的关键)
anchor 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心。
detal 在将它们存储在dst中之前,将可选值添加到已过滤的像素中。类似于偏置。
borderType 像素外推法
不同的卷积核对于图像处理的效果不同

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('C:\\Users\\Administrator\\Desktop\\pic\\opencv.png')
kernel = np.array((
 [0, 1, 0],
 [1, -3, 1],
 [0, 1, 0]), dtype="float32")
dst = cv.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()
print(kernel)

blur()函数

blur()函数,平均模糊可以用标准化的盒式过滤器来平滑图像。(模糊图像)

cv2.blur(src, ksize[, dst[, anchor[, borderType]]])

src: 输入的图像
ksize: 表示模糊核大小的元组。
dst: 输出图像
anchor: 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心。
borderType: 像素外推法
返回值是处理过的图片

import cv2 as cv
img = cv.imread('C:\\Users\\Administrator\\Desktop\\pic\\opencv.png')
blur = cv.blur(img,(5,5))
cv.imshow('asda',blur)
cv.waitKey(100000)
cv.destroyAllWindows()

boxFilter()

可以使用非标准化的框式过滤器,来进行过滤和噪音的去除

cv.boxFilter( InputArray src, OutputArray dst, int ddepth,Size ksize, Point anchor 

src:输入图像
dst:输出图像
ddepth:输出图像深度(-1使用src.depth())。
ksize:模糊核的大小。
anchor :锚点;默认值点(-1,-1)表示锚点在内核中心。
normalize :指定内核是否按其区域标准化。如果输入True等价于 均值滤波cv2.blur,输入=False 时 卷积结果>255时,置为255
borderType :边界模式
返回值是输出图片

import cv2 as cv
img = cv.imread('C:\\Users\\Administrator\\Desktop\\pic\\opencv.png')
blur=cv.boxFilter(img,-1, (3, 3), normalize=False)
cv.imshow('asda',blur)
cv.waitKey(100000)
cv.destroyAllWindows()

cv.GaussianBlur()

高斯模糊,可以模糊图像,去除高斯噪声

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

src输入图像,图像可以具有任意数量的通道,这些通道可以独立处理,但深度应为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。
dst输出图像
ksize高斯内核大小。 ksize.width和ksize.height可以不同,但​​它们都必须为正数和奇数,也可以为零,然后根据sigma计算得出。
sigmaX X方向上的高斯核标准偏差。
sigmaY Y方向上的高斯核标准差;如果sigmaY为零,则将其设置为等于sigmaX;如果两个sigmas为零,则分别从ksize.width和ksize.height计算得出;为了完全控制结果,而不管将来可能对所有这些语义进行的修改,建议指定所有ksize,sigmaX和sigmaY。

import cv2 as cv
img = cv.imread('C:\\Users\\Administrator\\Desktop\\pic\\opencv.png')
blur = cv.GaussianBlur(img,(5,5),0)
cv.imshow('asda',blur)
cv.waitKey(100000)
cv.destroyAllWindows()

cv.medianBlur()

中位模糊,这对于消除图像中的椒盐噪声非常有效

cv2.medianBlur(src, ksize[, dst]) -> dst

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

import cv2 as cv
img = cv.imread('C:\\Users\\Administrator\\Desktop\\pic\\opencv.png')
median = cv.medianBlur(img,5)
cv.imshow('asda',median)
cv.waitKey(100000)
cv.destroyAllWindows()

cv.bilateralFilter()

双边滤波,在去除噪声的同时保持边缘清晰锐利非常有效。但是,与其他过滤器相比,该
操作速度较慢。

cv2.bilateralFilter(src, d,sigmaColor,sigmaSpace) -> dst

src:输入图像
d:过滤时周围每个像素领域的直径
sigmaColor:在color space中过滤sigma。参数越大,临近像素将会在越远的地方mix。
sigmaSpace:在coordinate space中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大。

import cv2 as cv
img = cv.imread('C:\\Users\\Administrator\\Desktop\\pic\\opencv.png')
blur = cv.bilateralFilter(img,9,75,75)
cv.imshow('asda',blur)
cv.waitKey(100000)
cv.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值