数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)

我们来看一个灰度图像,让n_i表示灰度i出现的次数,这样图像中灰度为i 的像素的出现概率是

p_x(i) = \frac{n_i}{n}, i\in {0,..., L - 1}

L 是图像中全部的灰度数,n 是图像中全部的像素数, p 实际上是图像的直方图,归一化到 0..1

把 c 作为相应于 p 的累计概率函数, 定义为:

c(i) = \sum_{j=0}^i p_x(j)

c 是图像的累计归一化直方图。

我们创建一个形式为 y = T(x) 的变化,对于原始图像中的每一个值它就产生一个 y,这样 y 的累计概率函数就能够在全部值范围内进行线性化,转换公式定义为:

y_i = T(x_i) = c(i)

注意 T 将不同的等级映射到 {0..1} 域。为了将这些值映射回它们最初的域,须要在结果上应用以下的简单变换:

y_i' = y_i \cdot(max - min) + min

上面描写叙述了灰度图像上使用直方图均衡化的方法。可是通过将这样的方法分别用于图像RGB颜色值的红色、绿色和蓝色分量,从而也能够对彩色图像进行处理。


Python: cv2.equalizeHist(src[, dst]) → dst
C: void cvEqualizeHist(const CvArr* src, CvArr* dst)
Parameters:
  • src – Source 8-bit single channel image.
  • dst – Destination image of the same size and type as src .

The function equalizes the histogram of the input image using the following algorithm:

  1. Calculate the histogram H for src .

  2. Normalize the histogram so that the sum of histogram bins is 255.

  3. Compute the integral of the histogram:

    H'_i =  \sum _{0  \le j < i} H(j)

  4. Transform the image using H' as a look-up table: \texttt{dst}(x,y) = H'(\texttt{src}(x,y))

The algorithm normalizes the brightness and increases the contrast of the image. 

# -*- coding: utf-8 -*-   
#code:myhaspl@myhaspl.com
import cv2
fn="test1.jpg"
myimg=cv2.imread(fn)
img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)
newimg=cv2.equalizeHist(img)
cv2.imshow('src',img)
cv2.imshow('dst',newimg)
cv2.waitKey()
cv2.destroyAllWindows()


本博客全部内容是原创,假设转载请注明来源

http://blog.csdn.net/myhaspl/



直方图均衡化通经常使用来添加很多图像的全局对照度,尤其是当图像的实用数据的对照度相当接近的时候。

通过这样的方法,

亮度能够更好地在直方图上分布。这样就能够用于增强局部的对照度而不影响总体的对照度

转载于:https://www.cnblogs.com/yxwkf/p/5169103.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows2008的安装

点击下一步 点击安装 选择第三个&#xff0c;点击下一步 点击下一步 点自定义安装 我在这里分两个盘并格式化 接下来就是等待安装完成即可

redhat linux7.0的安装

选择第一个 我选择中文 点击开始安装 设置root用户密码 完成如上图所示 我在网上找了一个redhat7.0镜像供大家使用 链接&#xff1a;https://pan.baidu.com/s/1WhG8BGZTZawDKTNlaAvzRg 提取码&#xff1a;uzpd

VMware虚拟机安装

创建新的虚拟机&#xff1a;在 VMWare 中创建虚拟机&#xff0c;要求设置内存大小为 1G&#xff0c;CPU 为 2&#xff0c;硬盘大小自行选择&#xff0c;网络连接采用 NAT 模式&#xff0c;其他保持默认即可 上面是安装啥系统就选啥系统 下一步 下一步 磁盘大小按自己需求来

二叉树算法:中序、后序推导先序(数组递归实现 【*模板】)

中根序列和后根序列重建二叉树 描述我们知道如何按照三种深度优先次序来周游一棵二叉树&#xff0c;来得到中根序列、前根序列和后根序列。反过来&#xff0c;如果给定二叉树的中根序列和后根序 列&#xff0c;或者给定中根序列和前根序列&#xff0c;可以重建一二叉树。本题输…

Windows主机安全加固

Windows主机安全加固 账户安全 更名administrator本地用户并禁用guest账户步骤: 点击“开始”,找到“管理工具”,点击里面的“计算机管理”,找到“本地用户和组”

JS笔记 入门第四

小测试:注意:取消所有的设定可以直接使用document.getElementById("txt").removeAttribute("style");这个是个神奇的东西.<!DOCTYPE HTML><html><head><meta http-equiv"Content-Type" Content"text/html; charsetutf…

数论神题——进击的羊角兽

数论神题 进击的羊角兽 题目描述&#xff1a; 求满足 \(ab|ab(a,b \leq n,a \neq b)\)的有序数对\((a,b)\)的个数。 solution 设\((a,b)d , (a < b \leq n)\),则$ axd , byd , ( x < y )$ \(ab|ab\) \((xy)d|xyd^2\) \(\because (xy, x)1,(xy, y)1\) \(\therefore (xy)|d…

靶场练习第一天~vulnhub靶场之Me-and-My-Girlfriend-1

兄弟们第一天打vulnhub靶场&#xff0c;我kali连靶场ip都扫不到&#xff0c;泪奔了&#xff0c;不说了开整 注意&#xff1a; vm虚拟机里面的编辑下面的虚拟机网络编辑器&#xff0c;把除了NAT模式外的模式&#xff0c;其他模式不启动。 至于为什么要这样操作&#xff0c;感觉…

靶场练习第二天~vulnhub靶场之 THE PLANETS: EARTH

前期准备&#xff1a; 靶机下载链接: https://pan.baidu.com/s/1_w8OZOPVsQaojq2rnKcdRA 提取码: gguw kali攻击机ip&#xff1a;192.168.101.10 靶机地址&#xff1a;192.168.101.101 一、信息收集 1.nmap扫描 因为kali与靶机在同一个网段下&#xff0c;使用nmap 192.168…

测试与封装5.1

我的队友是52吴舒婷&#xff0c;博客内容主要是白盒黑盒的测试数据分析 我们通过简单的四则运算来进行程序的测试与封装 我们主要完成的是事情 &#xff08;1&#xff09;封装&#xff1a;将运算要运用的方法进行封装 文件主要有三个&#xff1a;Calculate&#xff08;存放运算…

springmvc学习笔记--mybatis--使用插件自动生成实体和mapper

由于表对象在开发过程中会增删字段&#xff0c;有时候需要重新生成实体和对应的mapper&#xff0c;这时候可以通过mybatis的插件的生成。 优点是快速简洁&#xff0c;缺点同样很明显&#xff1a;覆盖。因此&#xff0c;通常是在第一次搭建框架的时候使用&#xff0c;因为开发过…

靶场练习第三天~vulnhub靶场之narak

靶机下载链接: https://pan.baidu.com/s/1GxcSL6efwd0GcbY45WsD0A 提取码: dhr5 一、信息收集 1.使用namp 192.168.101.0/24扫描该网段的地址&#xff0c;寻找靶机IP 2.直接访问192.168.101.102 3.进行目录扫描&#xff0c;dirb目录扫描工具&#xff08;kali自带的&#xff…

靶场练习第四天~vulnhub靶场之Lazysysadmin

靶机下载链接: https://pan.baidu.com/s/1MMkgaYLRc78YX4s6nvqdjQ 提取码: djpm 信息收集 查看kali的IP 使用nmap 192.168.101.0/24 探测靶机IP 发现开放445端口&#xff0c;并且开放的服务microsoft-ds。可以用enum4linux工具来扫描共享文件&#xff0c;使用方法: enum4linux…

关于代码手写UI,xib和StoryBoard

代码手写UI 这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用。Geek们喜欢用代码构建UI&#xff0c;是因为代码是键盘敲出来的&#xff0c;这样可以做到不开IB&#xff0c;手不离开键盘就完成工作&#xff0c;可以专注于编码环境&#xff0c;看起来很cool很高效…

靶场练习第五天~vulnhub靶场之basic_pentesting_1

一、信息收集 1.主机发现 靶机下载链接: https://pan.baidu.com/s/143q3cbZG6-8y8kMk51Lc_Q 提取码: i8hv &#xff08;1&#xff09;Netdiscover&#xff1a;专用的二层发现工具&#xff0c;拥有主动和被动发现两种方式 具体操作如下&#xff0c;查看一下kali的ip 然后使用…

计算机网络学习笔记(二) 计算机网络结构

什么是网络结构&#xff1f; n 网络边缘: 主机网络应用 n 接入网络&#xff0c;物理介质:有线或无线通信链路 n 网络核心&#xff08; 核心网络&#xff09; :互联的路由器&#xff08;或分组转发设备&#xff09;网络之网…

Javascript常用的设计模式详解

Javascript常用的设计模式详解 阅读目录 一&#xff1a;理解工厂模式二&#xff1a;理解单体模式三&#xff1a;理解模块模式四&#xff1a;理解代理模式五&#xff1a;理解职责链模式六&#xff1a;命令模式的理解&#xff1a;七&#xff1a;模板方法模式八&#xff1a;理解ja…

靶场练习第六天~vulnhub靶场之Lampiao

靶机下载链接: https://pan.baidu.com/s/1h0uiwvBkX8iXFyMAO23e1A 提取码: 2kjp 一、信息收集 1.靶机发现 &#xff08;1&#xff09;靶机lampiao与kali均为NAT模式 ,Kali的 IP为192.168.101.10, 扫描网段用命令nmap -sp192.168.101.0/24&#xff0c;发现靶机ip为192.168.10…

内存泄露从入门到精通三部曲之排查方法篇

最原始的内存泄露测试 重复多次操作关键的可疑的路径&#xff0c;从内存监控工具中观察内存曲线&#xff0c;是否存在不断上升的趋势且不会在程序返回时明显回落。这种方式可以发现最基本&#xff0c;也是最明显的内存泄露问题&#xff0c;对用户价值最大&#xff0c;操作难度小…

靶场练习第七天~vulnhub靶场之mrRobot

靶机下载链接: 百度网盘 请输入提取码 提取码: sqv3 一、主机发现 1.用ifconfig查看kali的ip&#xff0c;因为kali和靶机都开启了NAT模式&#xff0c;使用namp -sP 192.168.101.0/24探测靶机ip 二、信息收集 1.使用nmap扫描靶机 使用nmap -A 192.168.101.108 &#xff0c;查…