图像实验报告2

  • 格式:docx
  • 大小:602.86 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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):