一、图像灰度图
PIL提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、剪裁、旋转、颜色转换等。利用PIL中的函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。PIL中最重要的模块为Image,要读取一幅图像,可以使用:
from PIL import Image
pil_im = image.open('empire.jpg')
图像的颜色转换可以使用convert()方法来实现。要读取一幅图像,并将其转换成灰度图像,只需要加上convert(‘L’),如以下:
pil_im = image.open('empire.jpg').convert('L')
二、图像轮廓和直方图
绘制图像的轮廓需要对每个坐标[x,y]的像素值施加同一个阈值,所以首先需要将图像灰度化,用PIL的convert()方法。
图像的直方图用来表征该图像像素值的分布情况,可以使用hist()函数绘制。
这个实验需要用到PIL和matplotlib库。
实验代码为:
from PIL import Image
from pylab import *
# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
im = array(Image.open('Liang.jpg').convert('L')) # 打开图像,并转成灰度图像
figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')
title(u'图像轮廓',fontproperties=font)
subplot(122)
hist(im.flatten(), 128)
title(u'图像直方图',fontproperties=font)
plt.xlim([0,260])
plt.ylim([0,150000])
show()
三、直方图均衡化
直方图均衡化是指将一幅图像的灰度直方图变平,是变换后的图像中每个灰度值的分布概率都相同。
这个实验要用到pcv,但不能通过pip下载,需要下载压缩包。
可以把原始的直方图看成一个班级在某次考试后的成绩分布。在一个特定的成绩和其学生所占百分比之间,怎样建立映射才可以使分数为总分75%的学生得分优于班里
的同学?答案是通过
的分布得到的累积分布函数
,其中
是图像中像素的总个数或班级中学生总人数。对于任意给定的成绩或亮度,我们可以查出它对应的百分比
,此时可以决定此像素所对应的最终的值。对8位的像素的值进行操作时,坐标轴
和
要缩放到(0,255)。
四、图像模糊与高斯滤波
高斯模糊通常是其它图像处理操作的一部分,比如图像插值操作、兴趣点计算以及很多其它应用。这个实验需要安装SciPy库。