
生活就像海洋opencv直方图均衡化,我就像咸鱼,在广阔的海洋中冲浪时学习. 这是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)均衡多通道图像
导入图像后opencv直方图均衡化,均衡每个通道,然后合并三个通道
# 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)
图片如下所示
笑着看着风起伏.
欢迎来到我的官方帐户一起学习〜
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-288931-1.html
哈哈哈哈哈哈哈哈哈
因为真货里本来就有质检合格证嘛~对不对