直方图及其均衡化

1,什么是直方图?

图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(BIN)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该图像的直方图可以使用hist()函数绘制。

2,什么是直方图均衡化?

直方图均衡化是将一幅图像的灰度直方图变平,使变平后的图像中每个灰度值的分布概率都相同。直方图均衡化可以用来对图像灰度值进行归一化处理,并且可以增强图像的对比度。

3,直方图及其均衡化实现及其效果


import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from PCV.tools import imtools #abc


image = Image.open("2.jpg").convert("L")#转化为灰度图像
image_array = np.array(image)
plt.subplot(2,2,1)
plt.hist(image_array.flatten(),256)#将数组转化为一维数组
plt.subplot(2,2,2)
plt.imshow(image,cmap=cm.gray)
plt.axis("off")

a = imtools.histeq(image_array)  # 利用刚定义的直方图均衡化函数对图像进行均衡化处理
plt.subplot(2,2,3)
plt.hist(a[0].flatten(),256)
plt.subplot(2,2,4)
plt.imshow(Image.fromarray(a[0]),cmap=cm.gray)
plt.axis("off")

plt.show()

4,遇到的问题

(1)由于hist()只接受一维数组作为输入,所以在绘制图像直方图之前,必须先对图像进行压平处理。fatten()方法可以将任意数组按照行优先准则转成一维数组。 

(2)出现pycharm Unresolved reference 'xxx' 问题;这是由于python库里没有这个文件因此我用Anaconda 安装了第三方库,安装路径为pcv文件路径。

pip install C:\Users\pcv-book-code-master\PCV

(3)出现NameError: name 'imtool' is not defined 问题,原因:在import时把名字写错了

(4)DeprecationWarning 类型错误,原因:我用的python版本是3.7版本的与PCV库中python的版本为2.7的不同

PCV:

imhist,bins=histogram(im.flatten(),nbr_bins,normed=True)

更改后:

hist,bin=np.histogram(im.flatten(),256,[0,256])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值