好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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

一、实验环境 Pycharm2018.2,Anaconda3-5.3 二、实验内容与要求 .

1. 平滑空间滤波: 1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图 显示在同一图像窗口中。 2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果, 要求在同一窗口中显示。 3) 进行低通滤波,显示处理后的图像。 4) 显示均值处理后的图像。 5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处 理,要求在同一窗口中显示结果。 2. 锐化空间滤波 1) 读出blurry_moon.tif这幅图像,采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1]对其进行滤波。 2) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5 的拉普拉斯算子 w = [ 1 1 1 1 1 1 1 1 1 1 1 1 -24 1 1 1 1 1 1 1 1 1 1 1 1] 3) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对blurry_moon.tif进 行锐化滤波,并利用式g(x,y)?f(x,y)??2f(x,y)完成图像的锐化增强,观察其有何不同,要求在同一窗口中显示。 4) 采用不同的梯度算子对blurry_moon.tif进行锐化滤波,并比较其效果。 3. 傅立叶变换 1) 读出woman.tif这幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位 图像。 仅对相位部分进行傅立叶反变换后查看结果图像。 2) 仅对幅度部分进行傅立叶反变换后查看结果图像。 3) 将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差 异。 '.

.

三、实验过程

1. 平滑空间滤波: 1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。 椒盐噪声:

def salt_pepperNoise(src): dst = src.copy()

num = 1000 # 1000个噪声点 ndim = np.ndim(src)

row, col = np.shape(src)[0:2] for i in range(num):

x = np.random.randint(0, row) # 随机生成噪声点位置 y = np.random.randint(0, col)

indicator = np.random.randint(0, 2) # 灰度图像 if ndim == 2:

if indicator == 0: dst[x, y] = 0 else:

dst[x, y] = 255 # 彩色图像 elif ndim == 3:

if indicator == 0: dst[x, y, :] = 0 else:

dst[x, y, :] = 255 return dst 高斯噪声:

def addGaussianNoise(image,sigma): mean = 0.0

row, col ,ch= image.shape

gauss = np.random.normal(mean, sigma, (row, col,ch)) gauss = gauss.reshape(row, col,ch) noisy = image + gauss

return noisy.astype(np.uint8)

'.

.

2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果, 要求在同一窗口中显示。 加入椒盐噪声后图像的滤波: img1 =cv2.imread(\\\\\mote.jpg\,0) img=img1[100:300] src =salt_pepperNoise(img) cv2.imshow(\,src) dst = cv2.blur(src,(3,3)) #均值滤波模板 cv2.imshow(\,dst) dst1 = cv2.medianBlur(src,5) #中值滤波 cv2.imshow(\,dst1) dst2 = cv2.GaussianBlur(src,(3,3),0) #高斯滤波 cv2.imshow(\,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(\,img) cv2.imshow(\,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() '.

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

数字图像的空间域滤波和频域滤波一、实验环境Pycharm2018.2,Anaconda3-5.3二、实验内容与要求.1.平滑空间滤波:1)读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。3)进行低通
推荐度:
点击下载文档文档为doc格式
9grlf3ibei5ap1c1kzfj507xn0uyj200qhv
领取福利

微信扫码领取福利

微信扫码分享