首页 > 其他分享 > 26 直方图均衡化

26 直方图均衡化

时间:2023-01-15 10:55:59浏览次数:62  
标签:26 均衡化 dst equalizeHist 直方图 灰度 图像

26 直方图均衡化

opencv知识点:

  • 均衡灰度图像的直方图 - equalizeHist

本课所解决的问题:

  • 什么是图像直方图均衡化?
  • 如何均衡化灰度图像的直方图?
  • 如何均衡化彩色图像的直方图?

1.图像直方图均衡化

在opemcv中,实现图像直方图均衡化并不难,但如何理解却要花点时间。
所以在本课的开始,我们来先来了解一下图像直方图均衡化相关的知识

直方图均衡化引入

作者:云时之间
链接:数字图像处理:直方图均衡化

话说回直方图,我们引入直方图,很大程度上是为了让我们可以根据直方图的形态,判断图像的质量,比如根据下图所示,会很快发现一张图片是过亮还是过暗

在这里插入图片描述

如果直方图偏暗,偏亮或者亮度过于集中,我们就要对直方图进行修整

数字图像处理中关于直方图的修整,有两种方法:

  • 直方图均衡化
  • 直方图规定化

我们本课涉及的直方图均衡化,就是比较常用的那一种

直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。

其基本思想是

  • 对在图像中像素个数多的灰度级进行展宽
  • 对像素个数少的灰度级进行缩减。

从而达到清晰图像的目的。

31380876bf8e445386aff8a5ac46968b

直方图均衡化原理

现在我们举一个例子说明它的原理

假设有一幅图像64*64大小,共有4096个像素,8个灰度级各灰度级概率分布见下表 ,试将其直方图均匀化。

k 灰度级rk 像素数nk 概率Pk(rk)
0 0 790 0.19
1 1/7 1023 0.25
2 2/7 850 0.21
3 3/7 656 0.16
4 4/7 329 0.08
5 5/7 245 0.06
6 6/7 122 0.03
7 7/7 81 0.02

推导如下:

  • 首先计算直方图概率的累加值S(i),直到最后一个灰度级,总和为1
d964e4d62b6b4a96a0af5742da567c8a
  • 然后根据公式求取像素映射关系.
25641aefc5d6484ebdbdea0d5051fe78
  • 得到如下的映射关系
c8fa2b73032244ab8f9f59bb8fff31ee

这样就找到了原图像和均衡化图像灰度的对应关系。
如果再对原图进行操作,将每个像素映射成新的像素,就完成了图像均衡化。

直方图均衡化用途

图像直方图均衡化可以用于图像增强、对输入图像进行直方图均衡化处理,提升后续对象检测的准确率等。
它在OpenCV人脸检测的代码演示中已经很常见。
此外对医学影像图像与卫星遥感图像也经常通过直方图均衡化来提升图像质量。

引用文章:

直方图均衡化
数字图像处理:直方图均衡化

2.灰度图像直方图均衡化

opencv中,如果要实现灰度图像直方图的均衡化,只要用到一个API

  • equalizeHist

具体介绍如下

equalizeHist
	均衡灰度图像的直方图
		共2个参数
			第1个参数 输入
			第2个参数 输出

演示如下

//函数定义
void histogram_eq_demo(Mat& image);
//函数实现
void QuickDemo::histogram_eq_demo(Mat& image) {

	Mat gray;
	cvtColor(image, gray, COLOR_BGR2GRAY);
	imshow("灰度图像", gray);

	Mat dst;
	equalizeHist(gray, dst);
	imshow("直方图均衡化演示",dst);

}

9a11fced787b46748e67f0ae820d0b8e

3.彩色图像直方图均衡化

从上文我们可以知道,直方图均衡化就是对亮度的一个调整,使之分布均匀
而在HSV色彩空间中,V通道关于亮度的,所以我们实现彩色图像的均衡化可以从V通道着手。

步骤如下:

  • 先把图像色彩空间转为HSV,并把HSV三个通道分离
  • 然后V通道进行均衡化,再把三个通道合并
  • 最后转回BGR色彩空间

这样就实现了彩色图像直方图的均衡化

void QuickDemo::histogram_eq_demo(Mat& image) {

	Mat hsv,dst[3],src;
	cvtColor(image,hsv, COLOR_BGR2HSV);
	split(hsv, dst);

	equalizeHist(dst[2], dst[2]);
	merge(dst,3,src);

	cvtColor(src, src,COLOR_HSV2BGR);

	imshow("00",src);

}
83a10433007d430fa13b93dc8f858d0d

本课所查阅API

equalizeHist

merge

标签:26,均衡化,dst,equalizeHist,直方图,灰度,图像
From: https://www.cnblogs.com/L707/p/17053200.html

相关文章

  • 25 二维直方图
    25二维直方图opencv知识点:计算直方图数据-calcHist四舍五入浮点数-cvRound寻找最小/最大值-minMaxLoc本课所解决的问题:如何绘制HSV图像的二维直方图?1.二......
  • 24 [图像直方图
    24图像直方图opencv知识点:计算直方图数据-calcHist四舍五入浮点数-cvRound本课所解决的问题:什么是图像直方图?如何绘制彩色图像的一维直方图?1.图像直方图......
  • 20220626|金黄色的夕阳
    夏天似乎真正的到来了,天空愈发干净云彩愈加洁白,上午阿彬就被漂亮的晴空深深吸引住了,拿上相机跑上顶楼,用相机留住了眼前的美景下午五点余,计划去深圳机场码头那边看看,不知......
  • 20220626|金黄色的夕阳
    夏天似乎真正的到来了,天空愈发干净云彩愈加洁白,上午阿彬就被漂亮的晴空深深吸引住了,拿上相机跑上顶楼,用相机留住了眼前的美景下午五点余,计划去深圳机场码头那边看看,不知......
  • unable to find local peer: 172.16.26.250:8848
    unabletofindlocalpeer:172.16.26.250:8848☞​​博客导航​​,​​带你有序的阅读和学习!​​文章目录​​问题描述​​​​解决方案​​​​停节点​​问题描述当我......
  • NCS8823替代方案|NCS8823芯片替代方案|CS5260替代NCS8823方案电路
    NCS8823替代方案|NCS8823芯片替代方案|CS5260替代NCS8823方案电路NCS8823是一款DisplayPort信号至VGA转换器,通过USBType-C连接器。它是适用于USBType-C至VGA转换器,适配......
  • CS5260最新版规格书|CS5260设计方案|TYPEC转VGA转换芯片
    CS5260最新版规格书|CS5260设计方案|TYPEC转VGA转换芯片CS5260是一款低功耗、DisplayPort信号转VGA转换器芯片,通过USBType-C连接器。它是适用于USBType-C至VGA转换器,适......
  • QTTabBar v1026
    下载:(2015-7-19新鲜出炉!)​​​http://qttabbar.wdfiles.com/local--files/qttabbar/QTTabBar_1026.zip​​​ChangeLog:(New)-Viewborderc......
  • VMware 7.1.0.261024 安装 Win7 后的2个问题
    今天安装Win7后碰到了这2个问题,做个记录在这先。(1)安装完Win7后administrator用户登录(默认)输入密码后提示“您的账户已被停用。请向系统管理员咨询”   解决办法:......
  • 【题解】P4126 [AHOI2009]最小割
    题意求最小割和可行边和必须边。思路清真,清真,还是**的清真。考虑可行边的充要条件:满流不存在另一条\(u,v\)间的最短路,即在残量网络上不存在包含\(u,v\)......