赞
踩
从统计的角度讲,直方图是图像内灰度值的统计特性与图像灰度值之间的函数,直方图统计图像内各个灰度级出现的次数。从直方图的图形上观察,横坐标是图像中各像素点的灰度级,纵坐标是具有该灰度级(像素值)的像素个数。
1.DIMS:表示在绘制直方图时,收集的参数的数量。一般情况下,直方图中收集的数据只有种,就是灰度级。因此,该值为 1。
2.RANGE:表示要统计的灰度级范围,一般为[0, 255]。0 对应的是黑色,255 对应的是白色。
3.BINS:参数子集的数目。就是指将要统计的指标数据划分为多少个组
2. 绘制直方图
2.1 用cv2.calcHist()函数统计图像直方图信息
hist = cv2.calcHist( images, channels, mask, histSize, ranges, accumulate )
hist:返回的统计直方图,是一个一维数组,数组内的元素是各个灰度级的像素个数。
images:原始图像,该图像需要使用“[ ]”括起来。
channels:指定通道编号。通道编号需要用“[ ]”括起来,如果输入图像是单通道灰度图像,该参数的值就是[0]。对于彩色图像,它的值可以是[0]、[1]、[2],分别对应通道B、G、R。
mask:掩模图像。当统计整幅图像的直方图时,将这个值设为None。当统计图像某一部分的直方图时,需要用到掩模图像。
histSize:BINS 的值,该值需要用“[ ]”括起来。例如,BINS 的值是256,需要使用“[256]”
作为此参数值。
ranges:即像素值范围。例如,8位灰度图像的像素值范围是[0, 255]。
accumulate:累计(累积、叠加)标识,默认值为False。如果被设置为True,则直方图在开始计算时不会被清零,计算的是多个直方图的累积结果,用于对一组图像计算直方图。该参数允许从多个对象中计算单个直方图,或者实时更新直方图。该参数是可选的,一般情况下不需要设置。
2.2 plot()函数的使用
使用 matplotlib.pyplot 模块内的plot()函数,可以将函数cv2.calcHist()的返回值绘制为图像直方图。下面通过三个例子来学习plot()函数的基本使用方法。
如果一幅图像拥有全部可能的灰度级,并且像素值的灰度均匀分布,那么这幅图像就具有高对比度和多变的灰度色调,灰度级丰富且覆盖范围较大。在外观上,这样的图像具有更丰富的色彩,不会过暗或过亮
matplotlib.pyplot模块提供了一个类似于MATLAB绘图方式的框架,可以使用其中的函数方便地绘制图形。
模块 matplotlib.pyplot 提供了函数matplotlib.pyplot.subplot()用来向当前窗口内添加一个子窗口对象。该函数的语法格式为:
matplotlib.pyplot.subplot(nrows, ncols, index)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。