1.1python环境的下载
下载了Anaconda,Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。这里采用的是Anaconda2-5.0.0进行下载,为了配合课本的学习,采用了python2.7的版本。Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等。
环境配置好之后打开cmd输入:conda --version
输出版本号之后说明安装成功了
1.2编辑器下载
我下载的是pycharm编辑器
处理原图
2.1直方图处理
from PIL import Image
from pylab import *
img = array(Image.open(r'C:UsersTZP888Pictures实验用图P2.jpg').convert('L'))
# 新建一个图像
figure()
hist(img.flatten(), 128)
show()
if __name__ == '__main__':
Histogram()
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
2.2高斯滤波
from PIL import Image
from pylab import *
from scipy.ndimage import filters
"""
函数说明:高斯滤波
Parameters:
无
Returns:
无
"""
def Gaussian():
img = array(Image.open(r'C:UsersTZP888Pictures实验用图P2.jpg').convert('L'))
figure()
gray()
axis('off')
subplot(1, 4, 1)
axis('off')
title('原图')
imshow(img)
for bi, blur in enumerate([2, 5, 10]):
img2 = zeros(img.shape)
img2 = filters.gaussian_filter(img, blur)
img2 = np.uint8(img2)
imNum=str(blur)
subplot(1, 4, 2 + bi)
axis('off')
title('标准差为'+imNum)
imshow(img2)
show()
if __name__ == '__main__':
#高斯滤波
mpl.rcParams['font.sans-serif'] = ['SimHei']
Gaussian()
2.3直方图均衡化
from PIL import Image
from pylab import *
from numpy import *
"""
函数说明:直方图均衡化
Parameters:
img:灰度图像
nbr_bins=256:直方图使用小区间的数目
Returns:
img2.reshape(img.shape):直方图均衡化后的图像
cdf:用来做像素值映射的累积分布函数
"""
def Histeq(img,nbr_bins=256):
#计算图像的直方图
imhist,bins=histogram(img.flatten(),nbr_bins)
#累计分布函数
cdf = imhist.cumsum()
#归一化
cdf = 255*cdf/cdf[-1]
#使用累积分布函数的线性插值,计算新的像素值
img2 = interp(img.flatten(),bins[:-1],cdf)
return img2.reshape(img.shape),cdf
if __name__ == '__main__':
#直方图均衡化
#解决title是方框的问题
mpl.rcParams['font.sans-serif'] = ['SimHei']
img = array(Image.open(r'C:UsersTZP888Pictures实验用图P2.jpg').convert('L'))
img2,cdf = Histeq(img)
figure()
subplot(2, 2, 1)
#关闭所有坐标轴线、刻度标记和标签
axis('off')
gray()
title('原始图像')
imshow(img)
subplot(2, 2, 2)
axis('off')
title('直方图均衡化后的图像')
imshow(img2)
subplot(2, 2, 3)
axis('off')
title('原始直方图')
# hist(im.flatten(), 128, cumulative=True, normed=True)
hist(img.flatten(), 128)
subplot(2, 2, 4)
axis('off')
title('均衡化后的直方图')
# hist(im2.flatten(), 128, cumulative=True, normed=True)
hist(img2.flatten(), 128)
show()



