第一章 基本的图像操作和处理

一、图像灰度图

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下载,需要下载压缩包。

c(I)=\frac{1}{N}\sum_{i=0}^{I}h(i)=c(I-1)+\frac{1}{N}h(I)

f(I)=\alpha c(I)+(1-\alpha )I

可以把原始的直方图h(I)看成一个班级在某次考试后的成绩分布。在一个特定的成绩和其学生所占百分比之间,怎样建立映射才可以使分数为总分75%的学生得分优于班里\frac{3}{4}的同学?答案是通过h(I)的分布得到的累积分布函数c(I),其中N是图像中像素的总个数或班级中学生总人数。对于任意给定的成绩或亮度,我们可以查出它对应的百分比c(I),此时可以决定此像素所对应的最终的值。对8位的像素的值进行操作时,坐标轴Ic要缩放到(0,255)。

 

 

四、图像模糊与高斯滤波

高斯模糊通常是其它图像处理操作的一部分,比如图像插值操作、兴趣点计算以及很多其它应用。这个实验需要安装SciPy库。

你可能感兴趣的:(图像处理,计算机视觉,opencv)