数字图像的空间域滤波和频域滤波
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
w=[1111
1111
11-241
1111
1111
3)分别采用5D5, 9D9, 15
D 15和
1
1
1
1
1]
25大小的拉普拉斯算子对blurry_moon.tif进
数字图像的空间域滤波和频域滤波
一、实验环境
二、实验内容与要求
1.平滑空间滤波:
1)
读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图像窗口中。
2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,
要求在同一窗口中显示。
3)进行低通滤波,显示处理后的图像。
4)显示均值处理后的图像。
5)对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要求在同一窗口中显示结果。
2.锐化空间滤波
1)读出blurry_moon.tif DODO,采用3D3的拉普拉斯算子w=[1,1,1;1—81;1,1,
1]对其进行滤波。
2)编写函数w=genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5D5
的拉普拉斯算子
行锐化滤波,并利用式g(x,y)€f(x,y)-,2f(x,y)完成图像的锐化增强,观察其有
何不同,要求在同一窗口中显示。
4)采用不同的梯度算子对blurry_moon.tif进行锐化滤波,并比较其效果。
3.傅立叶变换
1)读出woman.tif这幅图像,对其进行快速傅立叶变换,分别显示其幅度图像和相位图像。
仅对相位部分进行傅立叶反变换后查看结果图像。
2)仅对幅度部分进行傅立叶反变换后查看结果图像。
3)将图像的傅立叶变换F置为其共轭后进行反变换,比较新生成图像与原始图像的差
异。
三、实验过程
平滑空间滤波:
读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一图
像窗口中。椒盐噪声:
def salt_pepperNoise(src):dst二src.copyOnum=1000#1000个噪声点
ndim=np.ndim(src)
row,col=np.shape(src)[0:2]for i inrange(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]=0else:
dst[x,y]=255
#彩色图像
elif ndim==3:
if indicator==0:
dst[x,y,:]=0else:
dst[x,y,:]=255
return dst0000:
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)
Q saftPepper—口X■IGaussian—□X
对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
加入椒盐噪声后图像的滤波:
imgl二cv2.imread(\,0)
img=img1[100:300]
src=salt_pepperNoise(img)cv2.imshow(,src)
dst=cv2.blur(src,(3,3))#□□□□□□
cv2.imshow(,dst)
dstl二cv2.medianBlur(src,5)#中值滤波
cv2.imshow(,dstl)
dst2=cv2.GaussianBlur(src,(3,3),0)#□□□□cv2.imshow(,dst2)
cv2.waitKey(0)
cv2.destroyAllWindows()
X □ X A
■origin !n^edlanBlur F Gau&sianBlLir sl=np.fft.ifftshift(st)x2=np.ff
t.ifft2(sl)x3=np.uint8(np.real(
x2))return newimg,x3
img 二cv2.imread('D:\mote.jpg',0)
进行低通滤波,显示处理后的图像。 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 inrange (h):
for j inrange (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]