数学之路-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;点击下一步 点击下一步 点自定义安装 我在这里分两个盘并格式化 接下来就是等待安装完成即可

Ubuntu下在Apache中运行Keystone

最近一次从Github上更新Keystone的代码后,发现原来bin/keystone-all和bin/keystone-manage都不见了,取而代之的是keystone/cmd/目录下的all.py和manage.py两个python脚本.虽然在测试的virtualenv环境下仍然可以执行原来的命令,但是想试着在Apache中运行Keystone,毕竟这已经是社…

redhat linux7.0的安装

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

鸟哥

bc计算器 scale4 小数是4位 whatis ls make what is ls --helpman lsman -k passinfo pass [rootcentos01 ~]# ls /etc/init.d/ #服务所在的文件夹 [rootcentos01 ~]# runlevel #查找自己在哪个级别 n 表示上一个没有N 5-bash-4.1# init 3 #切换到3级别的服务 级别0 关机模式级…

[奇葩 bug]视图在 ipad5 上正常显示,在 iPad3上超出了边界

一,问题分析 1.理论上 iPad 是按像素点排列的,可 iPad5为什么和 iPad3差别那么大??? 2.iPad3超出边界的视图,都有一个 leading 是superview 的 leading 加上-20.感觉是这个地方有问题. 3.重新添加一下约束,去掉了那个默认的 constraint 选项,就没有那个-20的差值了.运行后发…

VMware虚拟机安装

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

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

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

福昕熊雨前:PDFium开源项目的背后

今天编译android的时候&#xff0c;无意中看到命令行提示出输出编译external/pdfium这个目录&#xff0c;于是乎上百度搜索了一下&#xff0c;找到了如下关于PDF文件解析的开源代码的文章&#xff1a; http://www.csdn.net/article/2014-06-23/2820351-Why-Foxit-Open-Sourced-…

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;感觉…

ubuntu的网络配置

1&#xff0c;检查网络是否通畅 ping www.baidu.com 2&#xff0c;检查网线是否插好 3&#xff0c;使用ifconfig查看当前活跃网络接口 ifconfig 4&#xff0c;配置IP地址、子网掩码、网关地址 sudo vi /etc/network/interfaces 确保此文件中有以下信息&#xff1a;&#xff08;…

pstree 命令详解

作用&#xff1a; 以命令树状图的方式展现进程之间的派生关系&#xff0c; 显示效果比较直观。 选项&#xff1a;-a 显示每个程序的完整指令&#xff0c; 包含路径&#xff0c; 参数或者是常驻服务的标志-c 不使用精简标示法-h 列出树状图&#xff0c;特别标明现在执行的程序-l…

ubuntu 开发板ping通虚拟机挂载nfs服务器

先.nfs服务配置1.设置开发板ip &#xff0c;同一网段2.开发板上操作&#xff1a;ifconfig eth0 192.168.1.203.测试是否能够ping通&#xff1a;ping 192.168.1.194.测试开发板ip是否被占用&#xff1a; 在主机上&#xff1a;sudo ifconfig eth0 down,看开发板上的ip是否断开。重…

靶场练习第二天~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…

hdu 1754 块状链表 单点修改+单点查询

经典的线段树题目&#xff0c;也可以用块状链表做。 1 #include <iostream>2 #include <cstring>3 #include <cstdio>4 #include <cmath>5 using namespace std;6 7 const int N 200000;8 const int M 800;9 int n, m, tot;10 11 int max( int a, in…