计算机视觉-python进行基本图像处理

语言环境

本学期开设了计算机视觉的课程,采用了python语言进行处理。先介绍一下采用到的软件和编译环境。

1、python环境的下载

推荐大家下载Anaconda,Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。这里采用的是Anaconda2-5.0.0进行下载,为了配合课本的学习,采用了python2.7的版本。Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。在这里插入图片描述
环境配置好之后打开cmd输入:conda --version
输出版本号之后说明安装成功了
在这里插入图片描述

2、编辑器下载

我采用了pycharm软件Windows系统的专业版,具体下载地址:http://www.jetbrains.com/pycharm/download/#section=windows
在这里插入图片描述
为了方便后续的使用,可以使用补丁注册服务器永久激活。
最新补丁下载:https://pan.baidu.com/s/1S4lYdN19BqmPFTKHUdGK5g
提取码:ss4c

1、绘制图像基本轮廓以及直方图

采用的库:
1、PIL:Python图像处理类库
PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。由于pycharm中已经包含了该库,我们就不用进行另外的下载,直接引用就可以了。
2、Matplotlib
我们处理数学运算、绘制图表,或者在图像上绘制点、直线和曲线时,Matplotlib是个很好的类库,具有比 PIL 更强大的绘图功能。Matplotlib 可以绘制出高质量的图表,就像本书中的许多插图一样。Matplotlib 中的 PyLab 接口包含很多方便用户创建图像的函数。Matplotlib 是开源工具,可以从 http://matplotlib.sourceforge.net/免费下载。该链接中包含非常详尽的使用说明和教程。同样pycharm也包含了该库,我们也直接进行引用。
3、NumPy
NumPy(http://www.scipy.org/NumPy/)是非常有名的 Python 科学计算工具包,其中包含了大量有用的思想,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数函数。数组对象可以帮助你实现数组中重要的操作,比如矩阵乘积、转置、解方程系统、向量乘积和归一化,这为图像变形、对变化进行建模、图像分类、图像聚类等提供了基础。

1.1基本原理

绘制轮廓需要对每个坐标 [x, y] 的像素值施加同一个阈值,所以首先需要将图像灰度化,这里用 PIL 的 convert() 方法将图像转换成灰度图像。在使用axis()函数进行操作。
图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该(灰度)图像的直方图可以使用 hist() 函数绘制。hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理。flatten() 方法将任意数组按照行优先准则转换成一维数组。

1.2代码设计

# encoding:utf-8
from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']


im = array(Image.open('D:\Python\u.jpg').convert('L'))

figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')
title(u'图像轮廓')

subplot(122)
hist(im.flatten(), 128)
title(u'图像直方 ')
plt.xlim([0, 260])
plt.ylim([0, 11000])

1.3结果展示

这是需要进行操作的图像
在这里插入图片描述
展示处理后的等轮廓线和直方图图像:
在这里插入图片描述

2、图像去燥

2.1基本原理

现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。减少数字图像中噪声的过程称为图像降噪,有时候又称为图像去噪。
图像的高斯模糊是非常经典的图像卷积例子。本质上,图像模糊就是将(灰度)图像 I 和一个高斯核进行卷积操作
在这里插入图片描述
其中 * 表示卷积操作;Gσ 是标准差为 σ 的二维高斯核,定义为 :
在这里插入图片描述
高斯模糊通常是其他图像处理操作的一部分,比如图像插值操作、兴趣点计算以及很多其他应用。
SciPy 有用来做滤波操作的 scipy.ndimage.filters 模块。

2.2 代码设计

# -- coding: utf-8 --
from PIL import Image
from pylab import *
from numpy import *
from numpy import random
from scipy.ndimage import filters
from scipy.misc import imsave
from PCV.tools import rof

" This is the de-noising example using ROF in Section 1.5. “”"
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

im = array(Image.open('D:/HYL.jpg').convert('L'))

U,T = rof.denoise(im,im)
G = filters.gaussian_filter(im,10) # save the result
#imsave(‘synth_original.pdf’,im)
#imsave(‘synth_rof.pdf’,U)
#imsave(‘synth_gaussian.pdf’,G) # plot
figure()
gray()

subplot(1,3,1)
imshow(im)
#axis(‘equal’)
axis('off')
title(u'原噪声图像', fontproperties=font)

subplot(1,3,2)
imshow(G)
#axis(‘equal’)
axis('off')
title(u'高斯模糊后的图像', fontproperties=font)

subplot(1,3,3)
imshow(U)
#axis(‘equal’)
axis('off')
title(u'ROF降噪后的图像', fontproperties=font)

show()

2.3 结果展示

在这里插入图片描述

3、图像均衡化

3.1基本原理

直方图均衡化是指将一幅图像的灰度直方图变平,使变换后的图像中每个灰度值的分布概率都相同。在对图像做进一步处理之前,直方图均衡化通常是对图像灰度值进行归一化的一个非常好的方法,并且可以增强图像的对比度。在这种情况下,直方图均衡化的变换函数是图像中像素值的累积分布函数(cumulative distribution function,简写为 cdf,将像素值的范围映射到目标范围的归一化操作)

3.2代码设计

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
from PCV.tools import imtools

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

im = array(Image.open('D:\Python\u.jpg').convert('L'))  # 打开图像,并转成灰度图像

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

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

subplot(2, 2, 3)
axis('off')
title(u'原始直方图', fontproperties=font)
#hist(im.flatten(), 128, cumulative=True, normed=True)
hist(im.flatten(), 128, normed=True)

subplot(2, 2, 4)
axis('off')
title(u'均衡化后的直方图', fontproperties=font)
#hist(im2.flatten(), 128, cumulative=True, normed=True)
hist(im2.flatten(), 128, normed=True)

show()

3.3结果展示

在这里插入图片描述

4、总结

1、采用高斯模糊进行去燥处理,标准差越大,图像模糊度也就越大。
2、未进行均衡化的图片,直方图灰度较大的地方比较集中,图片也不太清晰;进行均衡化的直方图灰度分布比较均匀,图像也更加清晰。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值