数字图像的空间域滤波和频域滤波备课讲稿

  • 格式:doc
  • 大小:3.74 MB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像的空间域滤波和频域滤波

精品资料

数字图像的空间域滤波和频域滤波

2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,

要求在同一窗口中显示。

加入椒盐噪声后图像的滤波:

img1 =cv2.imread("D:\\mote.jpg",0)

img=img1[100:300]

src =salt_pepperNoise(img)

cv2.imshow("origin",src)

dst = cv2.blur(src,(3,3)) #均值滤波模板

cv2.imshow("blur",dst)

dst1 = cv2.medianBlur(src,5) #中值滤波

cv2.imshow("medianBlur",dst1)

dst2 = cv2.GaussianBlur(src,(3,3),0) #高斯滤波

cv2.imshow("GaussianBlur",dst2)

cv2.waitKey(0)

cv2.destroyAllWindows()

3) 进行低通滤波,显示处理后的图像。

import cv2

import numpy as np

def function(img):

h,w=img.shape

newimg=np.zeros((h,w),np.uint8)

img2=np.fft.fft2(img)

fshift = np.fft.fftshift(img2)

st=fshift.copy()

h,w=fshift.shape

sh=h/2

sw=w/2

r=40

for i in range(h):

for j in range(w):

if ((sh - i) * (sh - i) + (sw - j) * (sw - j)) <= r * r: newimg[i, j] = 255

tmp = 1

else:

tmp = 0

st[i, j] = tmp * fshift[i, j]

sl=np.fft.ifftshift(st)

x2=np.fft.ifft2(sl)

x3=np.uint8(np.real(x2))

return newimg,x3

img=cv2.imread('D:\\mote.jpg',0)

img1,img2=function(img)

cv2.imshow("image",img)

cv2.imshow("low pass filtering",img2)

cv2.waitKey(0)

4) 显示均值处理后的图像。

代码:

import cv2

import matplotlib.pyplot as plt

img = cv2.imread('D:\\mote.jpg',0) #直接读为灰度图像

blur = cv2.blur(img,(3,5))#模板大小3*5

plt.subplot(1,2,1),plt.imshow(img,'gray')#默认彩色,另一种彩色bgr plt.title('img')

plt.xticks([]), plt.yticks([])

plt.subplot(1,2,2),plt.imshow(blur,'gray')

plt.title('blur')

plt.xticks([]), plt.yticks([])

plt.show()

5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处

理,要求在同一窗口中显示结果。

代码:

import cv2

import matplotlib.pyplot as plt

img = cv2.imread('D:/img/salt.jpg',0) #直接读为灰度图像

blur = cv2.blur(img,(3,5))#模板大小3*5

mid =cv2.medianBlur(img,5)

plt.subplot(1,2,1),plt.imshow(mid,'gray')

plt.title('medianBlur')

plt.xticks([]), plt.yticks([])

plt.subplot(1,2,2),plt.imshow(blur,'gray')

plt.title('blur')

plt.xticks([]), plt.yticks([])

plt.show()

2. 锐化空间滤波

1) 读出一幅图像,采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波。

# 定义函数,实现拉普拉斯算子

def Laplace(src):

template = np.ones((3, 3), dtype=np.float32) # 模板

template[1, 1] = -8.0

addBorder = cv2.copyMakeBorder(src, 1, 1, 1, 1, cv2.BORDER_REFLECT_101) row, col = src.shape

dst = np.zeros((row, col), dtype=np.int16)

for i in range(row):

for j in range(col):

temp = addBorder [i:i+3, j:j+3]

dst[i, j] = np.sum(template*temp)

return dst