高通滤波可以找到图像的边缘。低通滤波可以去除噪音,模糊图像。

自定义滤波器 cv2.filter2D()

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
kernel = np.ones((5, 5), np.float32) / 25
dst = cv2.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()

 图像模糊(图像平滑)

使用低通滤波器可以达到图像模糊的目的(就是去除图像中的高频成分(比如:噪音,边界)

cv2.blur() 

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
blur = cv2.blur(img, (5, 5))
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

高斯模糊 cv2.GaussianBlur()

高斯核可以有效去除高斯噪音

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
# 0 是指根据窗口大小 (5,5) 来计算高斯函数标准差
blur = cv2.GaussianBlur(img, (5, 5), 0)  # 高斯模糊
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

 中值模糊 cv2.medianBlur(img,5)

使用像素的中值替代像素的值。这个可以去除椒盐噪声。

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('img1.png')
blur = cv2.medianBlur(img, 5)  # 中值模糊
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)

plt.subplot(121), plt.imshow(img), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐