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

2023-11-12

一、认识图像

当我们面对图像的时候,我们面对的是抽象的矩阵,如下图,下面是0-255的灰度图像的表示,密密麻麻的

       那么我们做的直方图,其实就是对这些像素值的统计,如下图所示,其中Bin表示条数,数据和范围是对图的解释。

 

 

二、为什么要做直方图均衡化与直方图规定化?

在现实的拍摄过程中,很多视频都不清晰。从灰度级的角度看,这是由于其图像的灰度分布集中在较窄的范围内,导致了图像的细节不够清晰。为什么细节不清晰呢?因为灰度分布较窄时,在计算对比度的时候,对比度就很小,所以就不清晰。

为了使得图像变得清晰,那么就需要使得灰度值的差别变大,为了使得灰度值的差别变大,就意味着灰度分布就变的较宽,使得灰度值分布变得均匀,即在某个灰度级区间内,像素的个数分布大致相同,这样才能使得图像的对比度增强,细节变得清晰可见。
 

三、直方图均衡化(Histogram equalization)的原理

直方图是对图像像素的统计分布,它统计了每个像素(0到L-1)的数量。直方图均衡化就是将原始的直方图拉伸,使之均匀分布在全部灰度范围内,从而增强图像的对比度。直方图均衡化的中心思想是对图像进行非线性拉伸,把原始图像的的灰度直方图从比较集中的某个区域变成在全部灰度范围内的均匀分布。在一幅图像中,明亮图像的直方图倾向于灰度级高的一侧,灰暗图像的直方图倾向于灰度级低的一侧,如果一副图像占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调。直方图均衡化这种方法通常用来增加图像的局部对比度。所以这种方法对于图像前景和背景都太亮或者太暗的情况非常有用,使目标区域从背景脱离出来。
那么怎样才能使得新图像的直方图分布均匀呢?

我们的目的就是想找到这样的一种变换函数,使得变换后图像直方图分布均匀(这里的直方图都用灰度级的个数除以总像素个数,进行归一化。由于一幅图像是二维离散的数据,不利于使用数学的工具进行处理,在数字图像处理中,我们通常是采用连续的变量进行推导,最后在推广到离散的情况。

先推导连续的情况:

假设r和s分别是变换之前和变换之后的图像灰度级,r和s都进行了归一化的处理。假设变换函数为s=T(r),此变换公式满足0≤r≤1,0≤s≤1;当0≤r≤1时,T(r)是单调递增的。

 

 

 

离散形式的直方图均衡化

四、直方图规定化

前面介绍了直方图均衡化,但是这是一种通用的对比度提升方法,如果我们想把图像变换到指定的直方图就显得力不从心。所以就有了直方图规定化。它就是对原始图像做变换,使得变换后的图像的直方图跟我们规定的一样。

假设原始图像的像素值为r,概率密度为P(r);做直方图均衡化之后的灰度值为s,均衡化之后的概率密度为P(s);希望要的图像的概率密度为P(z),在此情况下,求得其像素值z。

实际上,规定化也是均衡化的一种,那么,就可以把均衡化的结果作为一种中间结果,建立起原始图像与固定化图像的一种桥梁。

具体步骤如下:

(1)首先对原始图像做直方图均衡化,得到每个像素s和累积分布T(s);

(2)根据需要的规定化直方图,求累积分布G(Z);

(3)显然,如果累积直方图中有0值,那么是不会分配像素值的,因为0乘以255还是零。

(4)对于每一个T(s)(假设其像素值为ss),找到在G(Z)中与其差值最小的那个G(z)值(假设对应的像素值为zz),那么规定化后就把ss变换为zz。

规定化操作的目的就是找到原始图像的像素sk到规定化后图像像素的zk之间的一个映射。有了上一步的等式后,可以得到sk=G(zk),因此要想找到sk想对应的zk只需要在z进行迭代,找到使式子G(zm)−sk的绝对值最小即可。 

参考

https://blog.csdn.net/u013066730/article/details/82969768

https://blog.csdn.net/zhangfuliang123/article/details/74170894

https://blog.csdn.net/aoulun/article/details/78816816

https://blog.csdn.net/qq_20823641/article/details/51932798

https://blog.csdn.net/guozhaokun001/article/details/81773499

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

直方图均衡化与直方图规定化 的相关文章

随机推荐

  • centos7 查看服务器配置信息

    1 linux查看版本当前操作系统发行信息 cat etc centos release cat etc centos release 2 查看内核版本uname a或者cat proc version 3 查看CPU参数 1 查看 CPU
  • uniapp 本地缓存剩余时间

    封装代码 在项目根目录项新建 utils 文件夹 再新建一个 idea js 文件 import store from store js module exports 计算剩余时间 timeRemaining val time return
  • 二叉搜索树-AVL树的实现

    首先 AVL树是一棵加了额外平衡条件的搜索树 这是因为普通的搜索树如果插入的key接近有序的话 二叉树将会退化成一个单链表 导致查找的时间复杂度为O N 而AVL树中用一个平衡因子来制约树的左右子树的高度 保证任何节点的左右子树高度之差最多
  • Android开发人员应该选择哪种语言?

    自 Google 于 2017 年宣布 Kotlin 成为 Google IO 的 Android 开发官方语言以来 想要成为Android开发人员的程序员正陷入两难境地 在讨论这个问题前 我首先要明确一点 不要陷入编程语言战争 不要进行语
  • 【亲测解决】AttributeError: module ‘tensorflow‘ has no attribute ‘__version__‘

    今天在安装使用bert as service时报错 报错信息如下 AttributeError module tensorflow has no attribute version 一看 懵逼了 啥 tensorflow么有 version
  • centos 内核升级

    首先查看centos版本 cat etc centos release 或者 rpm q centos release 查看内核版本 uname sr 查看官方内核 https www kernel org 接下来升级内核 大多数现代发行版
  • 太牛叉了!解决“卡脖子”的国产自主 IDE [狗头.jpg]

    推荐关注 综合整理 程序员的那些事 ID iProgrammer 解决 卡脖子 的自主创新 IDE 最近有一个的国产自主创新的 CEC IDE 震动了程序员圈子 在 CEC IDE 官网简介中的 安全可控 条目自称 国企品牌 自主研发 注意
  • k8s运维 pod、node、namespace、pv处于terminating的原因及处理方法

    1 概述 node pod ns pv由于一些原因在生产中处于terminating的状态 常规方法无法删除 一下总结了一些原因以及删除方法 2 node处于Terminating状态原因及处理方法 node节点不可达的情况下 kubect
  • MATLAB嵌套循环求解1到1000的素数和

    熬夜打卡 代码都跑过一遍的 没有任何问题啦 方法一 matlab的嵌套循环 重在理解 clc clear s 0 for i 2 1000 for j 2 32 if mod i j break end end if j gt i j s
  • 【华为OD机试】阿里巴巴找黄金宝箱(IV)(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱
  • 常用的BOM属性 - Kaiqisan

    终于出狱了 今天重新恢复博客的更新 大致谈谈我复习面试上面的查漏补缺的内容 首先讲讲什么是BOM BOM简单来说就是浏览器对象 只有js在浏览器环境运行时才会被赋予的对象 location对象 该对象内所有的属性都与URL有关 常常用于提取
  • 攻防世界————fileclude(内含php伪协议菜鸟讲解)

    先进去发现为一坨php代码 新手勉勉强强看得懂 接下来我们分析代码 WRONG WAY
  • Angular2-使用Augury来调试Angular2程序

    原文链接 http www jianshu com p efecaea287f2 推荐 Augury Angular专用的chrome 调试插件 如题 就在前几天的2016 12 8谷歌开发者大会上 angular2的leader来给我们演
  • idea字体主题集合

    http color themes com view index
  • 意念控制四旋翼 学习笔记

    第一部分 模块原始数据 拿到模块 在网上查了一圈 发现基本没什么有用的资料 很多都是一些相关但是没有实际价值的东西 许多论文都是再谈怎么去做 而没有实实在在的去完成这么一个过程 废话不多说 直接步入正题 昨天在网上才发现这个软件 据评论说是
  • 最近大火的「元宇宙」是什么?

    公众号后台回复 图书 了解更多号主新书内容 作者 腾讯技术工程特约撰稿人 李佳华 本文将介绍元宇宙的由来和底层技术 探讨海内外资本在这条赛道上的布局 元宇宙将会对哪些行业产生变革的影响 这些影响背后凸显了元宇宙的哪些价值 以及元宇宙逐步实现
  • openwrt reboot流程

    openwrt 系统中 当执行了 reboot 命令 系统将会发生什么事情呢 如何进行重启的呢 下面来一起看一下 reboot 应用层操作 首先 reboot 是由busybox 它是一个集成了常用Linux命令和工具的软件 提供的一个Li
  • leetcode算法面试题:串联所有单词的子串问题、单词拆分问题

    串联所有单词的子串问题 给定一个字符串 s 和一些 长度相同 的单词 words 找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置 注意子串要与 words 中的单词完全匹配 中间不能有其他字符 但不需要考虑 word
  • 数据挖掘算法基础-关联规则

    数据挖掘中 被常拿来说的啤酒尿布的例子就是一个很典型的运用关联算法来做购物来分析的例子 常被用于交易数据 关系数据的分析 发现数据集中隐藏的频繁模式 这些频繁模式可以用关联规则的形式表示 有效的关联规则对商家的商品进出货摆放都有很大的指导意
  • 直方图均衡化与直方图规定化

    一 认识图像 当我们面对图像的时候 我们面对的是抽象的矩阵 如下图 下面是0 255的灰度图像的表示 密密麻麻的 那么我们做的直方图 其实就是对这些像素值的统计 如下图所示 其中Bin表示条数 数据和范围是对图的解释 二 为什么要做直方图均