图像实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
甘肃政法学院
本科生实验报告
( 一)
姓名:周红
学院:信息工程学院
专业:信息管理与信息系统
班级:2014级信管班
实验课程名称:图形图像处理实验
实验日期: 2017年4月27日
开课时间: 2016-2017学年第二学期
甘肃政法学院实验管理中心印制
结果如下:
图1_1_1椒盐噪声图
高斯噪声代码如下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('D:\\man.jpg',0)
param=30
grayscale=256
w=img.shape[1]
h=img.shape[0]
newimg=np.zeros((h,w),np.uint8)
for x in xrange(0,h):
for y in xrange(0,w,2):
r1=np.random.random_sample()
r2=np.random.random_sample()
z1=param*np.cos(2*np.pi*r2)*np.sqrt((-2)*np.log(r1))
z2=param*np.sin(2*np.pi*r2)*np.sqrt((-2)*np.log(r1)) fxy=int(img[x,y]+z1)
fxy1=int(img[x,y+1]+z2)
if fxy<0:
fxy_val=0
eliffxy>grayscale-1:
fxy_val=grayscale-1
else:
fxy_val=fxy
if fxy1<0:
fxy1_val=0
elif fxy1>grayscale-1:
fxy1_val=grayscale-1
else:
fxy1_val=fxy1
newimg[x,y]=fxy_val
newimg[x,y+1]=fxy1_val
plt.subplot(1,2,1),plt.imshow(img,'gray')
plt.subplot(1,2,2),plt.imshow(newimg,'gray')
结果如图:
图1_1_2 高斯噪声结果图
2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要求在同一窗口中显示。
采用3×3的椒盐噪声的低通滤波代码如下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('G:\\lena.jpg',0)
param=20
w=img.shape[1]
h=img.shape[0]
newimg=np.array(img)
noisecount=5000
for i in xrange(0,noisecount):
xi=int(np.random.uniform(0,newimg.shape[1]))
xj=int(np.random.uniform(0,newimg.shape[0]))
newimg[xj][xi]=255
res=cv2.blur(newimg,(3,3))
plt.subplot(1,2,1),plt.imshow(newimg,'gray')
plt.subplot(1,2,2),plt.imshow(res,'gray')
结果如图:
图1_2椒盐噪声的低通滤波处理结果图
3) 使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像。
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('d:\\man.jpg',0)
img1=np.float32(img)
kernel=np.ones((5,5),np.float32)/25
dst=cv2.filter2D(img1,-1,kernel)
plt.subplot(1,2,1),plt.imshow(img1,'gray')
plt.subplot(1,2,2),plt.imshow(dst,'gray')
结果如图:
图1_3 低通滤波处理结果图
4) 运用for循环,将加有椒盐噪声的图像进行10次,20次均值滤波,查看其特点。
10次均值滤波代码如下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('d:\\man.jpg',0)
param=20
w=img.shape[1]
h=img.shape[0]
newimg=np.array(img)
noisecount=5000
for i in xrange(0,noisecount):
xi=int(np.random.uniform(0,newimg.shape[1])) xj=int(np.random.uniform(0,newimg.shape[0]))
newimg[xj][xi]=255
for k in range(1,10):
res=cv2.blur(newimg,(3,3))
plt.subplot(1,2,1),plt.imshow(newimg,'gray')
plt.subplot(1,2,2),plt.imshow(res,'gray')
结果如图:
图1_4 10次均值滤波处理结果图20次均值滤波代码如下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('D:\\man.jpg',0)
param=20
w=img.shape[1]
h=img.shape[0]
newimg=np.array(img)
noisecount=5000
for i in xrange(0,noisecount):