opencv笔记(7):直方图均衡化

生活就像大海,我就像一条咸鱼,在浩瀚的海洋中边浪边学,这是opencv笔记系列中的「直方图均衡化」。

世间万图,皆可均衡化。小编边浪边学,顺带以很咸鱼的方式把它们记录下来。

直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。它的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围从而可达到增强图像整体对比度的效果。

1)对单通道图像进行均衡化

输入原图像并且显示

import cv2
import numpy as np

img = cv2.imread('test1.jpg',1)
cv2.imshow('src',img)
cv2.waitKey(0)
复制代码

原图换成了一个妹纸o_o

转换成单通道灰度图像

gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow('gray',gray)
cv2.waitKey(0)
复制代码

然后对灰度图像进行均衡化

dst = cv2.equalizeHist(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)
复制代码

貌似看得出来输出图像比原本好看了

2)对多通道图像进行均衡化

导入图像后,对每个通道进行均衡化,然后把三个通道合并

# 2
b,g,r = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
dst = cv2.merge((bH,gH,rH))
cv2.imshow('dst',dst)
cv2.waitKey(0)
复制代码

均衡化前后图像的对比

3)对YUV图像进行均衡化

导入图像后,把图像转换成YUV格式

# 3
imgYUV = cv2.cvtColor(img, cv2.COLOR_RGB2YCrCb)
cv2.imshow('imgYUV',imgYUV)
cv2.waitKey(0)
复制代码

输出YUV格式图像如下

然后均衡化操作

channelYUV = cv2.split(imgYUV)
channelYUV[0] = cv2.equalizeHist(channelYUV[0])
channels = cv2.merge(channelYUV)
dst = cv2.cvtColor(channels, cv2.COLOR_YCrCb2RGB)
cv2.imshow('dst',dst)
cv2.waitKey(0)
复制代码

图片显示如下

笑看风起云落啊。

更多欢迎来我的公众号一起学习~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值