直方图
原理
直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊首先引入。它是一种条形图。
图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该(灰度)图像的直方图可以使用 hist() 函数绘制:基本的图像操作和处理 hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理。flatten() 方法将任意数组按照行优先准则转换成一维数组。
代码实现
from PIL import Image
from matplotlib.font_manager import FontProperties
from pylab import *
from numpy import array
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
# 中文乱码
im = array(Image.open('1.jpg').convert('L'))
figure()
subplot(121)
gray() #不使用颜色信息
contour(im, origin='image') #显示轮廓图像
axis('equal')
axis('off') #坐标轴不显示
title('原图轮廓',fontproperties=font)
subplot(122)
hist(im.flatte