一、实验目的
通过python 语言编程设计不同的滤波器(中值滤波和均值滤波),对图像进行滤波处理。促进学生理解滤波器的原理,培养学生的编程能力。
二、实验硬、软件环境
笔记本电脑、windows10系统,Visual Studio Code编辑器,opencv视觉库,numpy库, matplolib库。
三、实验内容及步骤
(一)实验内容
使用python编程,设计滤波器对图像进行平滑处理。
(二)步骤
1. 首先给图像加一点噪声。
给图像加噪声保存本地(核心代码):
img = cv2.imread("xiao.jpg")
rows, cols, chn =img.shape
img=cv2.resize(img,(int(cols/2),int(rows/2)))
img_noise=img
rows, cols, chn = img.shape
for i in range(5000):
x = np.random.randint(0, rows)
y = np.random.randint(0, cols)
img_noise[x, y, :] = 255
cv2.imshow("noise", img_noise)
cv2.imwrite("D:/XiaoStudy/JiSuanJiShiJue/jisuanjishijue/xiao_noise.jpg", img_noise)
噪声后图像:
2.设计中值滤波器实现对图像的平滑处理,滤波器大小分别为3*3,5*5,7*7.
中值滤波器3*3:result = cv2.medianBlur(img, 3)
中值滤波器5*5:result = cv2.medianBlur(img, 5)
中值滤波器7*7:result = cv2.medianBlur(img, 7)
3. 设计均值滤波器实现图像的平滑处理,3*3,5*5,7*7.
均值滤波器3*3:result = cv2.blur(img,(3, 3))
均值滤波器5*5:result = cv2.blur(img,(5, 5))
均值滤波器7*7:result = cv2.blur(img,(7, 7))
4. 保存平滑后的图像到文件夹中。
附代码test.py:
import cv2
import numpy as np
import matplotlib.pyplot as plt
###读取图片
img = cv2.imread("xiao_noise.jpg")
source = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img= source
# 均值滤波
#result = cv2.blur(img,(7, 7)) #可以更改核的大小
#中值滤波
result = cv2.medianBlur(img, 3) #可以更改核的大小
# 显示图片
titles = ['Source Image', 'medianBlur Image (3, 3)']
images = [img, result]
for i in range(2):
plt.subplot(1,2, i + 1), plt.imshow(images[i], 'gray')
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()