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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)相关的知识,希望对你有一定的参考价值。

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

技术分享

技术分享 是图像中全部的灰度数,技术分享 是图像中全部的像素数, 技术分享 实际上是图像的直方图,归一化到 技术分享

把 技术分享 作为相应于 技术分享 的累计概率函数, 定义为:

技术分享

技术分享 是图像的累计归一化直方图。

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

技术分享

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

技术分享

上面描写叙述了灰度图像上使用直方图均衡化的方法。可是通过将这样的方法分别用于图像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 技术分享 for src .

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

  3. Compute the integral of the histogram:

    技术分享

  4. Transform the image using 技术分享 as a look-up table: 技术分享

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

# -*- coding: utf-8 -*-   
#code:[email protected]
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/

以下右图是经过增强化的图

技术分享

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

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

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

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

以下部分代码验证实现了算法
# -*- coding: utf-8 -*-   
#code:[email protected]
#直方图均衡化
import cv2
import numpy as np
fn="test5.jpg"
myimg=cv2.imread(fn)
img=cv2.cvtColor(myimg,cv2.COLOR_BGR2GRAY)
h=img.shape[0]
w=img.shape[1]
newimg=np.zeros((h,w),np.uint8)
scount=0.0
#原始图像灰度级
scol={}
#目标图像灰度级
dcol={}
#原始图像频度
Ps={}
#累计概率
Cs={}

#统计原始图像灰度级
for m in xrange(h):
    for n in xrange(w):
        scol[img[m,n]]=scol.setdefault(img[m,n],0)+1
        scount+=1


下图左为源图。右图为进行直方图均衡化后的图


技术分享

以上是关于数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)的主要内容,如果未能解决你的问题,请参考以下文章

数学之路-python计算实战(16)-机器视觉-滤波去噪(邻域平均法滤波)

数学之路-python计算实战-机器视觉-图像产生加性零均值高斯噪声

数学之路-python计算实战-Lempel-Ziv压缩

数学之路-python计算实战-ubuntu安装pypy

pygame入门之环境配置

pygame入门之环境配置