opencv —— equalizeHist 直方图均衡化实现对比度增强
直方图均匀化简介

从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内。这就导致了图片的强弱对比不强烈。
直方图均衡化的目的,就是把原始的直方图变换为在整个灰度范围(0~255)内均匀分布的形式,从而增加像素灰度值的动态范围,达到增强图像整体对比度的效果。

直方图均衡化的列表计算
|
序号 |
运算 |
步骤和结果 | |||||||
|
1 |
列出原始图灰度值 f(0 ≤ f ≤ L-1) |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 2 | 列出原始直方图(概率表达) | 0.02 | 0.05 | 0.09 | 0.12 | 0.14 | 0.2 | 0.22 | 0.16 |
| 3 | 计算原始累计直方图 gf(灰度值 ≤ f 的概率和) | 0.02 | 0.07 | 0.16 | 0.28 | 0.42 | 0.62 | 0.84 | 1.00 |
| 4 | 取整 g=(int) [(L-1)·gf + 0.5] | 0 | 0 | 1 | 2 | 3 | 4 | 6 | 7 |
| 5 | 确定对应关系(原灰度值 -> 新灰度值) | 0->0 | 1->0 | 2->1 | 3->2 | 4->3 | 5->4 | 6->6 | 7->7 |
| 6 | 更新直方图 | 0.07 | 0.09 | 0.12 | 0.14 | 0.2 | 0 | 0.22 | 0.16 |
实现直方图均衡化:equalizeHist 函数
equalize 函数实现的灰度直方图均衡化算法,就是把直方图的每个灰度值进行归一化处理,求每种灰度的累积分布,接着得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。
void equalize(InputArray src, OutputArray dst);
- src,输入图像,即源图像,填 Mat 类的对象即可,但需要为 8 位单通道的图像。
- dst,输出结果,需要和源图像有一样的尺寸和类型。
代码示例:
#include<opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("C:/Users/齐明洋/Desktop/1.jpg");
imshow("src", src); Mat gray, dst;
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("gray", gray);
equalizeHist(gray, dst);
imshow("dst", dst); waitKey(); }
效果展示:

opencv —— equalizeHist 直方图均衡化实现对比度增强的更多相关文章
- opencv图像直方图均衡化及其原理
直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均 ...
- openCV中直方图均衡化算法的理解
直方图均衡化就是调整灰度直方图的分布,即将原图中的灰度值映射为一个新的值.映射的结果直观表现是灰度图的分布变得均匀,从0到255都有分布,不像原图那样集中.图像上的表现就是对比度变大,亮的更亮,暗的更 ...
- OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
http://blog.csdn.net/dcrmg/article/details/53677739 1. 基于直方图均衡化的图像增强 直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶 ...
- OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...
- 灰度图像--图像增强 直方图均衡化(Histogram equalization)
灰度图像--图像增强 直方图均衡化(Histogram equalization) 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些 ...
- OpenCV-Python教程(10、直方图均衡化)
相比C++而言,Python适合做原型.本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处.这篇文章介绍在Python中使用OpenCV和NumP ...
- OpenCV-跟我一起学数字图像处理之直方图均衡化
从这篇博文开始,小生正式从一个毫不相干专业转投数字图像处理.废话不多说了,talk is cheap. show me the code. 直方图均衡化目的 由于一些图像灰度的分布过于集中,这样会导致 ...
- 图像增强 | CLAHE 限制对比度自适应直方图均衡化
1 基本概述 CLAHE是一个比较有意思的图像增强的方法,主要用在医学图像上面.之前的比赛中,用到了这个,但是对其算法原理不甚了解.在这里做一个复盘. CLAHE起到的作用简单来说就是增强图像的对比度 ...
- 实现直方图均衡化(java+opencv)
什么是直方图均衡化? 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度.原始图像由于其灰度分布可能集中在较窄的区间,造成图 ...
随机推荐
- ubuntu 16.10 shu rufa meiy ou l e geng xi zhi hou
- selenium-第一个自动化脚本
经过上一篇的环境搭建,这一篇我们开始编写第一个自动化脚本. 一个简单的测试百度的demo #coding=utf-8 from selenium import webdriver driver = w ...
- Python的条件控制及循环
一.条件控制: 1.If语句的使用: Python中if语句的一般形式如下所示: 上图中: 如果 "score>=90" 为 True 将执行 "print(‘优秀 ...
- Java基础知识之设计模式--单例模式
Java设计模式--单例模式 声明:本文根据慕课网汤小洋老师的精品课程整理来的:慕课网 什么是设计模式(Design Pattern)? 设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设 ...
- 看片微信号+薇myy9199买片微信号+myy9199绝对靠谱号
最新看片卖片微信号+myy9199,2020最新有效靠谱号,诚信有效,死链包换,2019年11月,我决定学习计算机编程,以java语言为主.我就读于传统工科专业,没怎么接触过计算机相关概念与课程,我知 ...
- C++ 类模板详解(一):概念和基本使用方式
与函数模板类似地(C++函数模板详解(一):概念和特性) ,类也可以被一种或多种类型参数化.例如,容器类就是一个具有这种特性的典型例子,它通常被用于管理某种特定类型的元素.只要使用类模板,我们就可以实 ...
- ubuntu18.04系统下无外部显示问题解决
记录一下自己作死过程. 由于学习的需要,在windows10下装了ubuntu18.04系统,第一次装这个系统时,也出现了无外部显示,那时候是老师帮忙搞好的,当时没太在意,只是走马关花的看了老师操作了 ...
- 百度MP3音乐API接口及应用
当你在百度去搜索一首歌时,你会发现有种更简单的方法. http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$作者$$$$ 例如 ...
- ARTS Week 3
Nov 11,2019 ~ Nov 17,2019 Algorithm 本周来介绍快速求一个数字n次方的余数. 理论基础 我们先定义运算$ x \bmod p = r \(与\) x \equiv r ...
- Windows系统-cmd中的tracert命令
大部分同学都是用的Linux系统来测试网络命令相关工具,我用Windows10系统来测试tracert. tracert:也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中 ...