Python+CV
2021/03/05
直方图
使用PIL绘制图像的直方图:
-
原理:图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该(灰度)图像的直方图可以使用 hist() 函数绘制;其中,hist() 函数的第二个参数指定小区间的数目,需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理,使用flatten() 方法将任意数组按照行优先准则转换成一维数组。
-
代码:
-
结果:
直方图均衡化
使用PIL绘制图像的直方图:
-
原理:直方图均衡化指将一幅图像的灰度直方图变平,使得变换后的图像中每个灰度值的分布概率都相同,该方法是对灰度值归一化,可以增强图像的对比度。
在这种情况下,直方图均衡化的变换函数是图像中像素值的累积分布函数(cumulative
distribution function,简写为 cdf,将像素值的范围映射到目标范围的归一化操作)
定义一个histeq()函数来实现直方图均衡化的功能。该函数有两个参数:im-灰度图像,nbr_bins-直方图中使用的bin的数目。bin:指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目. -
代码:
-
结果:
直方图均衡化
使用PIL绘制图像的直方图:
-
原理:图像模糊的本质就是将(灰度)图像 I 和一个高斯核进行卷积操作:
Iσ = I*Gσ
其中 * 表示卷积操作;Gσ 是标准差为 σ 的二维高斯核,高斯模糊通常是其他图像处理操作的一部分,比如图像插值操作、兴趣点计算以及很多其他应用。SciPy 有用来做滤波操作的scipy.ndimage.filters 模块。该模块使用快速一维分离的方式来计算卷积。
随着 σ 的增加,一幅图像被模糊的程度。σ 越大,处理后的图像细节丢失越多。 -
代码:
-
结果: