python+opencv图像处理(十五)

直方图均衡

直方图均衡化是通过对图像的直方图进行修正来获得图像增强效果的方法,主要是进行对比度增强,就是让亮的更亮,暗的更亮。
1、灰度图像的直方图均衡
先上图看效果。
如图上标题所示,第一张是原图,底下是其直方图。从直方图可以看到,其灰度分布是极为不均匀的,集中在80到170灰度级之间。通过直方图均衡化后,右图为均衡化后的图及其直方图,均衡化后的图明显比原图看起来舒服得多。

(实验原图来源于网络)

完整代码如下:

import cv2

import numpy as np

from matplotlib import pyplot as plt

import matplotlib as mpl

mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体

img = cv2.imread('E:\\image\\lena1.jpg',0)#读入灰度图像

equ = cv2.equalizeHist(img)#直方图均衡,返回值为均衡化后的图

plt.subplot(221),plt.imshow(img,'gray'),plt.title("原图")

plt.subplot(222),plt.imshow(equ,'gray'),plt.title("均衡化后的图")

plt.subplot(223),plt.hist(img.ravel(),256,[0,256]),plt.title("原图直方图")

plt.subplot(224),plt.hist(equ.ravel(),256,[0,256]),plt.title("均衡化后的直方图")

plt.show()

由代码可知,做直方图均衡时,可直接用opencv自带的函数equalizeHist()来进行直方图均衡。

---------------------------------我是广告的分界线

---------------------------------我是广告的分界线

2、彩色图像直方图均衡
对于彩色图像的直方图均衡化,可以考虑使用R,G,B三个通道分别均衡化,然后将三个通道合在一起。但要注意的是,这样有可能会改变色调。
如下图所示:

其完整代码如下:

import cv2

import numpy as np

from matplotlib import pyplot as plt

import matplotlib as mpl

mpl.rcParams['font.sans-serif']=['SimHei']

img = cv2.imread('E:\\image\\lena.jpg')

(b,g,r)=cv2.split(img)#拆分图像

bH = cv2.equalizeHist(b)#合通道进行直方图均衡

gH = cv2.equalizeHist(g)

rH = cv2.equalizeHist(r)

result = cv2.merge((bH, gH, rH))#融合回原图像

plt.subplot(221),plt.imshow(img[:,:,[2,1,0]])

plt.title("原图")

plt.subplot(222),plt.imshow(result[:,:,[2,1,0]])

plt.title("均衡化后的图")

plt.subplot(223)

color = ('b', 'g', 'r')

for i , color in enumerate(color):

hist = cv2.calcHist([img], [i], None, [256], [0, 256])

plt.plot(hist, color)

plt.title("原图直方图")

plt.subplot(224)

color = ('b', 'g', 'r')

for i , color in enumerate(color):

hist = cv2.calcHist([result], [i], None, [256], [0, 256])

plt.plot(hist, color)

plt.title("均衡化后的直方图")

plt.show()

也可以将其颜色空间转换至YUV空间,仅对其亮度空间进行直方图均衡即可。
上图看效果:

(实验原图来源于网络)

(图像不好找啊!!!)

其完整代码如下:

import cv2

import numpy as np

from matplotlib import pyplot as plt

import matplotlib as mpl

mpl.rcParams['font.sans-serif']=['SimHei']

img = cv2.imread('E:\\image\\car.jpg')

img_yuv=cv2.cvtColor(img,cv2.COLOR_BGR2YUV)#转换至YUV颜色空间

img_yuv[:,:,0]=cv2.equalizeHist(img_yuv[:,:,0])#对亮度空间进行直方图均衡

result = cv2.cvtColor(img_yuv,cv2.COLOR_YUV2BGR)#转换回彩色图像

plt.subplot(221),plt.imshow(img[:,:,[2,1,0]]),plt.title("原图")

plt.subplot(222),plt.imshow(result[:,:,[2,1,0]]),plt.title("均衡化后的图")

plt.subplot(223)

color = ('b', 'g', 'r')

for i , color in enumerate(color):

hist = cv2.calcHist([img], [i], None, [256], [0, 256])

plt.plot(hist, color)

plt.title("原图直方图")

plt.subplot(224)

for i , color in enumerate(color):

hist = cv2.calcHist([result], [i], None, [256], [0, 256])

plt.plot(hist, color)

plt.title("均衡化后的直方图")

plt.show()

(0)

相关推荐

  • 【OpenCV 4开发详解】直方图应用

    直方图不仅能够表示图像像素的统计特性,应用统计的直方图结果也可以增强图像的对比度,在图像中寻找相似区域等.本节中将重点介绍如果通过调整直方图分布提高图像的对比度.利用直方图反向投影寻找相同区域以及将图 ...

  • 【从零学习OpenCV 4】直方图均衡化

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • 基于OpenCV的直方图匹配

    重磅干货,第一时间送达 如何为图像生成直方图,如何使直方图相等,最后如何将图像直方图修改为与其他直方图相似. 01. 什么是图像直方图? 在开始定义直方图之前,为简单起见我们先使用灰度图像,稍后再解释 ...

  • 基于OpenCV的图像强度操作

    重磅干货,第一时间送达 01. 什么是图像强度操作 更改任何通道中的像素值 对图像的数学运算 亮度变化 对比度变化 伽玛操纵 直方图均衡 图像预处理中的滤波等增强 使用OpenCV加载图像 impor ...

  • 【从零学习OpenCV 4】图像直方图绘制

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • Python进阶——OpenCV之Core Operations

    文章目录 图像基本操作 访问并修改像素值 访问图像的属性 设置图像区域 图像分割与合并 画图像边框 图像的数学操作 图像叠加 图像融合 图像位操作 Python OpenCV代码检测与速度优化 时隔一 ...

  • 基于OpenCV的实用图像处理操作

    重磅干货,第一时间送达 图像处理适用于图像和视频.良好的图像处理结果会为后续的进一步处理带来很大的帮助,例如提取到图像中的直线有助于对图像中物体的结构进行分析,良好的特征提取会优化深度学习的结果等.今 ...

  • 使用OpenCV实现图像增强

    重磅干货,第一时间送达 本期将介绍如何通过图像处理从低分辨率/模糊/低对比度的图像中提取有用信息. 下面让我们一起来探究这个过程: 首先我们获取了一个LPG气瓶图像,该图像取自在传送带上运行的仓库.我 ...

  • Matlab绘图高级部分

    图形是呈现数据的一种直观方式,在用Matlab进行数据处理和计算后,我们一般都会以图形的形式将结果呈现出来.尤其在论文的撰写中,优雅的图形无疑会为文章加分.本篇文章非完全原创,我的工作就是把见到的Ma ...

  • python进阶—OpenCV之图像处理(一)

    文章目录 颜色空间转换 RGB色彩空间 HSV色彩空间 YUV色彩空间 简单的物体跟踪示例 HSV空间目标阈值选取 图像几何变换 图像的缩放 图像的位移 图像的旋转 图像的仿射 图像的投射 图像阈值( ...