Python实现直方图均衡基本原理解析-创新互联

1. 基本原理

创新互联是一家专业从事成都网站设计、做网站、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

通过一个变换,将输入图像的灰度级转换为`均匀分布`,变换后的灰度级的概率密度函数为


$$P_s(s) = \frac{1}{L-1}$$


直方图均衡的变换为


$$s = T(r) = (L-1)\int_0^r {P_r(c)} \,{\rm d}c $$

$s$为变换后的灰度级,$r$为变换前的灰度级$P_r(r)$为变换前的概率密度函数2. 测试结果

图源自skimage

3.代码

import numpy as np
def hist_equalization(input_image):
  '''
  直方图均衡(适用于灰度图)
  :param input_image: 原图像
  :return: 均衡后的图像
  '''
  output_imgae = np.copy(input_image) # 输出图像,初始化为输入
  input_image_cp = np.copy(input_image) # 输入图像的副本
  m, n = input_image_cp.shape # 输入图像的尺寸(行、列)
  pixels_total_num = m * n # 输入图像的像素点总数
  input_image_grayscale_P = [] # 输入图像中各灰度级出现的概率,亦即输入图像直方图
  # 求输入图像中各灰度级出现的概率,亦即输入图像直方图
  for i in range(256):
    input_image_grayscale_P.append(np.sum(input_image_cp == i) / pixels_total_num)
  # 求解输出图像
  t = 0        # 输入图像的灰度级分布函数F
  for i in range(256):
    t = t + input_image_grayscale_P[i]
    output_imgae[np.where(input_image_cp == i)] = 255 * t
  return output_imgae

文章名称:Python实现直方图均衡基本原理解析-创新互联
文章分享:http://pwwzsj.com/article/dghiep.html