OpenCV 入门从0开始第十天笔记 直方图均衡化

直方图均衡化有什么用呢?

答:

先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化.

图像直方图均衡化作用:用来增强对比度.

这种方法通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度

首先需要导入一个包 scikit-image

不知道有没有的同学可以使用 pip list 查询

         1.7.2
anaconda-navigator                 1.9.12
anaconda-project                   0.8.3
argh                               0.26.2
asn1crypto                         1.3.0
astroid                            2.4.2
 

使用 pip install scikit-image导入

导入成功之后

import numpy as np
import cv2
import matplotlib.pyplot as plt
from skimage import data

moon=data.moon()
# print(moon.shape)
plt.hist(moon.ravel(),bins=256)
plt.show()
#
moon2=cv2.equalizeHist(moon)#直方图均衡化
plt.hist(moon2.reshape(-1),bins=256)
plt.show()

hist=cv2.calcHist([moon],[0],None,[256],[0,256])
plt.plot(hist)
plt.show()
print(hist)
print(hist.shape)
cv2.imshow('moon',moon)
cv2.imshow('moon2',moon2)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

 

 

 导入显示月球图片

moon=data.moon()
# print(moon.shape)
plt.hist(moon.ravel(),bins=256)
plt.show()

月球图片直方图化

moon2=cv2.equalizeHist(moon)#直方图均衡化
plt.hist(moon2.reshape(-1),bins=256)
plt.show()
hist=cv2.calcHist([moon],[0],None,[256],[0,256])
第一个参数,图片,第二个参数[0],第三个参数mask 第四个参数 histsize(分成多少份),第五个参数范围从0到256, 左闭右开,256取不到,返回hist
plt.plot(hist)
plt.show()

print(hist)

 print(hist.shape)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值