美文网首页
直方图均衡数学证明及Python实现

直方图均衡数学证明及Python实现

作者: iwuqing | 来源:发表于2019-05-24 23:31 被阅读0次

前言

直方图均衡的核心思想是将图像中每个灰度级的概率均匀化。从直方图上,可以明显观察到均衡化后的图像直方图较处理器的更加平坦,亦即分布均匀。下面给出数学证明及Python实现。


1 数学证明

目标变换

S = T(r) = (L-1)\int_0^rp_r(w)dw

  • T(r)为严格单调函数,可保证反映射时,消除二义性
  • p_r(w)为源图像归一化后的直方图

1.1 假定

  • 图像灰度级为:[0, L-1]
  • 源图像中,k灰度级的像素个数:n_k
  • 源图像像素总数:n
  • 原图像直方图h(r_k) = n

1.2 归一化后的直方图

p(r_k) = n_k / n
p(r_k)即为灰度级r_k在源图像中出现的概率估计

1.3 证明

概率密度函数的积分为分布函数,即对分布函数的导数为概率密度函数。

因为p_r(r)T(r)已知,则由
\frac{{\rm d}r}{{\rm d}S} = \frac{p_s(s)}{p_r(r)}
又因为
S = T(r)

\frac{{\rm d}S}{{\rm d}r} = \frac{T(r)}{r}
联立上三式及目标变换
S = T(r) = (L-1)\int_0^rp_r(w)dw
可得
p_s(s) = \frac{1}{L-1}
故,这意味着变换之后的图像的灰度级为均匀分布,证毕。


2 Python实现

import numpy as np


def hist_equalization(intput_signal):
    '''
    直方图均衡(适用于灰度图)
    :param intput_signal:   输入图像
    :return:    直方图均衡化后的输出图像
    '''

    output_signal = np.copy(intput_signal)   # 输出图像,初始化为输入

    intput_signal_cp = np.copy(intput_signal) # 输入图像的副本

    m, n = intput_signal_cp.shape # 输入图像的尺寸(行、列)

    pixel_total_num = m * n  # 输入图像的像素点总数

    p_r = []   # 输入图像的概率密度
    p_s = []   # 输出图像的概率密度

    # 求输入图像的概率密度函数
    for i in range(256):
        p_r.append(np.sum(intput_signal_cp == i) / pixel_total_num)

    # 求输出图像的概率密度函数
    single_pixel_class_probobility_t = 0  # 临时存储某一灰度级的概率
    for i in range(256):
        single_pixel_class_probobility_t = single_pixel_class_probobility_t + p_r[i]
        p_s.append(single_pixel_class_probobility_t)

    # 求解变换后的输出图像
    for i in range(256):
        output_signal[np.where(intput_signal_cp == i)] = 255 * p_s[i]

    return output_signal

3 对比

我这里使用的是Python第三方库skimage中内置的图片

  • moon
moon moon的直方图对比
  • camera
camera camera的直方图对比

4 GitHub

click me

相关文章

  • 直方图均衡数学证明及Python实现

    前言 直方图均衡的核心思想是将图像中每个灰度级的概率均匀化。从直方图上,可以明显观察到均衡化后的图像直方图较处理器...

  • 直方图均衡化—理论篇

    直方图均衡化--理论篇 直方图均衡化是数字图像处理中,最基本的一种处理。直方图均衡计算简单,并且适合快速的硬件实现...

  • 9.4直方图均衡化

    原图 原图直方图 灰度图 灰度直方图 均衡灰度图 均衡灰度直方图 均衡彩色图 均衡彩色直方图

  • 47. 直方图均衡化

    本文解释灰度直方图均衡化、彩色直方图均衡化和YUV均衡化效果 灰度直方图均衡化 效果如下: 彩色直方图均衡化 效果...

  • 直方图匹配

    之前我们介绍过直方图均衡化。直方图匹配的核心思想就是在应用直方图的均衡化。 和之前直方图均衡化一样,直方图的匹配本...

  • Metal图像处理——直方图均衡化

    Metal图像处理——直方图均衡化 Metal图像处理——直方图均衡化

  • 四、OpenCV+TensorFlow 入门人工智能图像美化处理

    彩色图片直方图 灰度直方图源码 彩色直方图源码 直方图均衡化 1.灰度 1.1灰度直方图均衡化源码 2.彩色 2....

  • 图像均衡化及直方图匹配的详细实现,python

    最近在学习图像处理方面的基础知识,在这里简单总结和分享。 一.直方图均衡化 图像的灰度直方图是一种概率直方图,表示...

  • 直方图均衡的一些变体算法

    上上上上周,数字图片处理课程布置了一个作业,需要看论文实现并比较各种直方图均衡的算法: 基本的直方图均衡算法已经在...

  • OpenCV-Python学习(十一):直方图

    目录: 1.绘制直方图1)一维直方图2)2D直方图 2.直方图均衡化1)全局直方图均衡化2)CLAHE(限制对比度...

网友评论

      本文标题:直方图均衡数学证明及Python实现

      本文链接:https://www.haomeiwen.com/subject/squozqtx.html