图像平滑上的东西

一、2D卷积(图像过滤)
OpenCV提供了一个函数cv.filter2D来将内核与图像进行卷积
操作如下:保持这个内核在一个像素上,将所有低于这个内核的25个像素相加,取其平均值,然后用新的平均值替换中心像素。它将对图像中的所有像素继续此操作。
二、图像模糊(图像平滑)
通过将图像与低通滤波器内核进行卷积来实现图像模糊。这对于消除噪音很有用。它实际上从图像中消除了高频部分(例如噪声,边缘)。因此,在此操作中边缘有些模糊。(有一些模糊技术也可以不模糊边缘)。OpenCV主要提供四种类型的模糊技术。
1.平均
这是通过将图像与归一化框滤镜进行卷积来完成的。它仅获取内核区域下所有像素的平均值,并替换中心元素。这是通过功能cv.blur()或cv.boxFilter()完成的。
2.高斯模糊
在这种情况下,代替盒式滤波器,使用了高斯核。这是通过功能cv.GaussianBlur() 完成的
3.中位模糊
在这里,函数cv.medianBlur() 提取内核区域下所有像素的中值,并将中心元素替换为该中值。这对于消除图像中的椒盐噪声非常有效。
4.双边滤波
cv.bilateralFilter()在去除噪声的同时保持边缘清晰锐利非常有效。但是,与其他过滤器相比,该操作速度较慢。
blur=cv.bilateralFilter(img,9,75,75)

#图像过滤cv.filter2D()
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread("E:\\python opencv\\demo2\\output.png")
kernel = np.ones((5, 5), np.float32)/25
dst = cv.filter2D(img, -1, kernel)
plt.subplot(421), plt.imshow(img), plt.title('Original 0')
plt.xticks([]), plt.yticks([])
plt.subplot(422), plt.imshow(dst), plt.title('Averaging 0')
plt.xticks([]), plt.yticks([])


#平均,用cv.blur()或cv.boxFilter()完成
blur = cv.blur(img, (5, 5))
plt.subplot(423), plt.imshow(img), plt.title('Original 1')
plt.xticks([]), plt.yticks([])
plt.subplot(424), plt.imshow(blur), plt.title('Averaging 1')
plt.xticks([]), plt.yticks([])


#高斯模糊 cv.GaussianBlur()
blur1 = cv.GaussianBlur(img, (5, 5), 0)
plt.subplot(425), plt.imshow(img), plt.title('Original 2')
plt.xticks([]), plt.yticks([])
plt.subplot(426), plt.imshow(blur1), plt.title('Averaging 2')
plt.xticks([]), plt.yticks([])


#中位模糊
median = cv.medianBlur(img,5)
plt.subplot(427), plt.imshow(img), plt.title('Original 3')
plt.xticks([]), plt.yticks([])
plt.subplot(428), plt.imshow(median), plt.title('Averaging 3')
plt.xticks([]), plt.yticks([])
plt.show()

cv.waitKey(0)
cv.destroyAllWindows()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值