转载请注明出处。

Histogram Equalization 也就是直方图均衡化, 是一种常用的通过直方图处理来增强图像的方法。

对于一副灰度图像,其像素范围一般在0~255之间,我们记nk(0<=k<=255)为灰度级为k的像素出现的频率,M,N分别为图像的行与列,则P(rk)=nk/MN我们得到归一化的灰度直方图。对于归一化的概率直方图ΣP(rk) =1

下面左边几幅图像分别为暗图像,亮图像,低对比图像已经高度比图像 右边为其所对应的归一化灰度分布直方图

可以看出对于强对比的图像,其灰度直方图分布比较均匀,因此我们想通过一种传递函数实现其他三种情况下直方图的均匀分布。

所以给出一个任意分布的直方图如下左,我们怎样才能得到它的均衡分布如下右图呢

这里我们就需要找到一种从左到右的transform表达式把一副图像中的每个像素通过表达式得到其均衡化的值

为了实现这种映射,我们这里规定T(r) 必须为增函数,所以说映射后的像素值一定不小于原值。采用增函数映射的原因是为了防止灰度反变换是出现人为缺陷。如下为单调递增函数,左图为非严格增函数,所以会出现多个值映射到一个值的现象,右图为严格单增函数,其映射为一一对应关系。

下面推导如何通过单增函数映射实现均衡分布

一副灰度图像的灰度级可以看成是0~255区间内的随机变量,用Pr(r)和Ps(s)分别表示其映射前后的概率密度函数,T(r)为映射函数,那么在P(r),T(r)已知的条件下,且T(r)连续可微,那么其对应关系可以用下式表示:

所以输出灰度的PDF就又输入灰度的PDF以及传递函数决定,我们又有

其中T(r) 我们用下式表示也就是输入灰度的CDF(累积分布函数)

根据CDF性质我们知道其一定为单增函数并且积分上限为L-1时积分为1,所以符合变换函数的要求。对其求导得到如下

据此dr/ds我们也可以轻易得到,然后带人前式我们有

到此我们可以证明输出灰度的PDF是均匀分布!

下面是MATLAB实现

function [I2,H] = histeq(I,bin)
I2 = zeros(size(I));
[row,col] = size(I);
cdf = zeros(bin,1);
h = zeros(bin,1);
hist = imhist(I,bin);
% calculate cdf
for g = 1:bin
cdf(g) = 0;
for i=1:1:g
cdf(g) = cdf(g) + hist(i);
end
end
%nomorlize
for k = 1:bin
h(k) = (cdf(k)-1)/((row*col)-1) * 255;
end
for k = 1:bin
h(k) = round(h(k)) + 1;
end
% remap to the new image
for r = 1:row
for c = 1:col
idx = (I(r,c)/(256/bin)) + 1;
I2(r,c) = h(idx);
end
end I2 = uint8(I2);
H = imhist(I2);

效果如下图

Histogram Equalization的更多相关文章

  1. 灰度图像--图像增强 直方图均衡化(Histogram equalization)

    灰度图像--图像增强 直方图均衡化(Histogram equalization) 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些 ...

  2. Paper | Contrast Limited Adaptive Histogram Equalization

    目录 1. 背景 1.1. 对比度和直方图均衡HE 1.2. HE的问题 1.3. AHE 1.4. 底噪问题 2. CLAHE 2.1. 效果展示 2.2. 算法格式和细节 论文:Contrast ...

  3. 灰度图的直方图均衡化(Histogram Equalization)原理与 Python 实现

    原理 直方图均衡化是一种通过使用图像直方图,调整对比度的图像处理方法:通过对图像的强度(intensity)进行某种非线性变换,使得变换后的图像直方图为近似均匀分布,从而,达到提高图像对比度和增强图片 ...

  4. 彩色图像直方图均衡(Histogram Equalization)

    直方图均衡(Histogram Equalization) 一般步骤: 1.统计直方图每个灰度级出现的次数(概率) 2.累计归一化的直方图 3.计算新的像素值 重要:彩色直方图均衡不能对RGB分别做再 ...

  5. 限制对比度自适应直方图均衡(Contrast Limited Adaptive histgram equalization/CLAHE)

    转自:http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html 一.自适应直方图均衡化(Adaptive histgram eq ...

  6. [OpenCV] Image Processing - Grayscale Transform & Histogram

    颜色直方图 首先,先介绍一些Hist的基本使用. Ref:[OpenCV]数字图像灰度直方图 官方文档:https://docs.opencv.org/trunk/d8/dbc/tutorial_hi ...

  7. 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing 标签: 图像处理MATLAB 2017

    实验要求: Objective: To know how to implement image enhancement for color images by histogram processing ...

  8. 直方图均衡算法(Histogram Equalized)

    Lab1: Histogram Equalization 1. 实验环境(C++) 操作系统版本 MacOS Catalina 10.15 OpenCV4.0 (imgcodecs | core | ...

  9. Histogram Processing

    目录 HISTOGRAM EQUALIZATION 代码示例 HISTOGRAM MATCHING (SPECIFICATION) 其它 Gonzalez R. C. and Woods R. E. ...

随机推荐

  1. Yii数据库

    http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar http://zhengdl126.iteye.com/blog/1460779 ...

  2. orientationchange的兼容性

    移动webapp监测屏幕旋转时常用onorientationchange事件,用此事件获取改变后的屏幕尺寸时需要注意: 1. iphone中,可立即获取改变后的屏幕尺寸. 2. android中,获取 ...

  3. BIND9源码学习笔记1---gdb调试篇

    学习bind9源码之前,首先要知道如何用gdb来调试bind.BIND9的源码我是先看代码弄懂它的架构,像什么event-drive,epoll等, 再去看它的业务流程.看业务流程的时候要追踪它的数据 ...

  4. 为什么选择Premium Fabric Shanghai

    展商首页 为什么选择Premium Fabric Shanghai

  5. Spring MVC中各个filter的用法

    转载:http://blog.csdn.net/qyp1314/article/details/42023725 Spring MVC中各个filter的用法 2014-12-19 09:08 105 ...

  6. IP地址分类及特殊IP地址

    A类:0xxx xxxx.x.x.x/8,即1~127,共126个可用. 因0.x.x.x表示所有网络:127.x.x.x/8用作回环地址,作为测试TCP/IP协议的地址. =>其中10.x.x ...

  7. linux命令-查看当前目录下所有文件的大小:“ll -h”

    //ll -h 命令只会显示文件的大小,而文件夹及其子目录或文件的大小不会显示.[root@hadoop01 soft]# ll -h total 2.1G -rw-r--r--. 1 root ro ...

  8. linux下解压压缩rar文件

    http://download.csdn.net/detail/hnust_xiehonghao/6679893   下载地址 1. 下载软件 以rarlinux-3.8.0 for linux为例, ...

  9. OC基础:block.字面量

    block 块语法,能够用block去保存一段代码,或者封装一段代码. block 实际是由c语言实现的,运行效率非常高. block 实际借鉴了函数指针的语法. block (^)(參数类型1 參数 ...

  10. [置顶] .net技术类面试、笔试题汇总1

    1.简述 private. protected. public. internal 修饰符的访问权限. private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内 ...