一、实验目的
通过python语言编程设计不同的滤波器(中值滤波和均值滤波),并对图像进行滤波处理。促进学生理解滤波器的原理,提高学生的编程能力。
二、实验硬、软件环境
笔记本电脑、windows10系统、Visual Studio Code编辑器、opencv视觉库、numpy库、 matplolib库等。
三、实验内容及步骤
(一)实验内容
编程,实现对图片平滑处理。
(二)实验过程
1.读取图像
主要代码如下:
qingshui = cv2.imread('F:/Three/CV/xiaoxin.jpg')
cv2.imshow('tow1',qingshui) #读取图像
cv2.imwrite('F:/Three/CV/2-1.jpg',qingshui)
图1原始图像
2.对图片增加随机噪声 主要代码如下:
rows,cols,chn=qingshui.shape
qingshui=cv2.resize(qingshui,(int(cols),int(rows)))
qingshui_noise=qingshui
rows,cols,chn=qingshui.shape
for i in range(5000):
x = np.random.randint(0, rows)
y = np.random.randint(0, cols)
qingshui_noise[x, y, :] = 255
cv2.imshow("tow2", qingshui_noise)
cv2.imwrite('F:/Three/CV/2-2.jpg', qingshui_noise)
图2加噪声后的图像
3.使用中值滤波实现对图像的去噪
主要代码如下:
qingshui3=cv2.medianBlur(qingshui,3) #滤波核为3*3
cv2.imshow('tow3_3*3',qingshui3)
cv2.imwrite('F:/Three/CV/2-3.jpg', qingshui3) #保存
qingshui3=cv2.medianBlur(qingshui,5) #滤波核为5*5
cv2.imshow('tow3_5*5',qingshui3)
cv2.imwrite('F:/Three/CV/2-4.jpg', qingshui3)
qingshui3=cv2.medianBlur(qingshui,7) #滤波核为7*7
cv2.imshow('tow3_7*7',qingshui3)
cv2.imwrite('F:/Three/CV/2-5.jpg', qingshui3)
图3中值滤波后的图像
4.使用均值滤波实现对图像的去噪
主要代码如下:
qingshui4=cv2.blur(qingshui,(3,3)) #滤波核为3*3
cv2.imshow('tow4-3*3',qingshui4)
cv2.imwrite('F:/Three/CV/2-6.jpg', qingshui4)
qingshui4_1= cv2.blur(qingshui,(5,5)) #滤波核为5*5
cv2.imshow('tow4_5*5',qingshui4)
cv2.imwrite('F:/Three/CV/2-7.jpg', qingshui4)
qingshui4_2=cv2.blur(qingshui,(7,7)) #滤波核为7*7
cv2.imshow('tow4_7*7',qingshui4)
cv2.imwrite('F:/Three/CV/2-8.jpg', qingshui4)
图4均值滤波后的图
5.记录过程图片
图5文件夹图片