计算机视觉作业1

计算机视觉作业1

实验要求:
做完图像处理基础章节内容,显示直方图,高斯滤波,直方图均衡化的图像。
在这里插入图片描述

直方图

直方图就是用来展现连续性数据分布特征的统计图形,通过绘制直方图,就可以很直观的观测出数据集中的各组成数据的特征、趋势和波动等情况。

在Python数据可视化中,直方图的绘制其实是通过调用hist()函数来进行绘制和生成的!

from PIL import Image
from pylab import *
#读取图像到数组
im=array(Image.open('C:/Users/16004/Pictures/p1.JPG').convert('L'))
#新建一个图像
figure()
#不使用颜色信息
gray()
#在原点的左上角显示轮廓图像
contour(im,origin='image')
axis('equal')
axis('off')
figure()
hist(im.flatten(),128)
show()

以上代码运行后的结果如图:

在这里插入图片描述

在这里插入图片描述

错误:**SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
问题原因:
在文件夹中复制地址时,文件夹中的地址是用 \ 来分隔不同文件夹的,而Python识别地址时只能识别用 / 分隔的地址。

高斯滤波
高斯滤波中,会将中心点的权重值加大,原理中心点的权重值减小,在此基础上计算邻域内各个像素值不同权重的和。 在高斯滤波中,核的宽度和高度可以不相同,但是它们都必须是奇数。 在实际应用中,卷积核都会经过归一化,归一化后可以表示为小数形式或分数形式。高斯滤波利用一个掩膜和图像进行卷积求解。模板系数随着距离模板中心的增大而系数减小(服从二维高斯分布),高斯滤波器更能够保持图像的整体细节。

from PIL import Image
from numpy import array, zeros
from pylab import *
from scipy.ndimage import filters

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

#im = array(Image.open('board.jpeg'))
im = array(Image.open('C:/Users/16004/Pictures/p1.JPG').convert('L'))

figure()
gray()
axis('off')
subplot(1, 2, 1)
axis('off')
title(u'原图', fontproperties=font)
imshow(im)

for bi, blur in enumerate([2, 5, 10]):
#enumerate 函数用于遍历序列中的元素以及它们的下标:

  im2 = zeros(im.shape)
  im2 = filters.gaussian_filter(im, blur)
  im2 = np.uint8(im2)
  imNum=str(blur)
  subplot(1, 2, 2 + bi)
  axis('off')
  title('高斯滤波', fontproperties=font)
  imshow(im2)
  show()

以上代码运行后的结果如图:
在这里插入图片描述

直方图均衡化
直方图均衡化是一种能仅靠输入图像直方图信息自动达到这种效果的变换函数。它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像原取值的动态范围,提高了对比度和灰度色调的变化,使图像更加清晰。
下面展示一些 内联代码片

from PIL import Image
from numpy import array
from pylab import *
from PCV.tools import imtools

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=10)

im = array(Image.open('C:/Users/16004/Pictures/p1.JPG').convert('L'))  # 打开图像,并转成灰度图像
im2, cdf = imtools.histeq(im)

figure()
subplot(2, 2, 1)
gray()
imshow(im)
title(u'原图像', fontproperties="kaiti")

subplot(2, 2, 2)
imshow(im2)
title(u'直方图均衡化后的图像', fontproperties="kaiti")

subplot(2, 2, 3)
title(u'原直方图', fontproperties="kaiti")
hist(im.flatten(), 128)

subplot(2, 2, 4)
title(u'均衡化后的直方图', fontproperties="kaiti")
hist(im2.flatten(), 128)

show()

以上代码运行后的结果如图:

在这里插入图片描述
总结
这次的实验,虽然都是基本的操作,但是还是遇到了很多问题,环境配置,导包,各种安装等等,都是在不断查找资料和询问别人来解决的,希望自己能学的越来越好,能够独立完成作业。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值