文档章节

python实现图像的直方图均衡

FromNowOn
 FromNowOn
发布于 2015/07/25 11:00
字数 435
阅读 369
收藏 1

        上学期学校开了两门和图像处理相关的选修课,结果我都没选,现在暑假没事做,就找来一本《数字图像处理》自学,直方图均衡是第三章的内容。

        直方图均衡的目的在于让图像中的所有像素的灰度值服从均匀分布,在离散的情况下处理的结果是近似服从均匀分布,直方图均衡通常用于增强对比度。

        直方图均衡的原理是对图像的灰度值进行变换,s=T(r),0<= r <= L-1,其中r是一个像素点原始的灰度值,s是该像素点变换后的灰度值,L是整幅图像的灰度值的范围,直方图均衡根据原始图像的直方图计算出变换函数T,T在离散的情况下是没有表达式,但可以是一系列<a,b>(元组)的集合,当输入为a时,T(a)=b。

        T的计算公式为:          

                            

M,N是图像的分辨率,nj是灰度值为j的像素点的个数,具体代码如下:

from PIL import Image

def histogram_t(tb):
    totalpixel=0    #用于统计像素总数,即MN
    maptb=[]        #存储映射关系
    count=len(tb)
    for i in range(count):
        totalpixel+=tb[i]
        maptb.append(totalpixel)

    for i in range(count):
        maptb[i]=int(round((maptb[i]*(count-1))/totalpixel))
   
    def histogram(light):
        return maptb[light]
    return histogram

        

im=Image.open('test.jpg') 
im.show()
his=im.histogram()       #获得im的直方图

hisfunc=histogram_t(his) #实例化一个闭包
out=im.point(hisfunc)    #对im应用直方图均衡
out.show()               #显示图像

以下是一些结果截图:

这张是原始图片:

这张是处理的结果:



© 著作权归作者所有

共有 人打赏支持
FromNowOn
粉丝 0
博文 4
码字总数 1016
作品 0
朝阳
私信 提问
OpenCV使用python实现限制对比度的自适应直方图均衡化

前面讲到的自适应直方图均衡化的实现方法首先是将图像划分成不重叠的区域块,让后对每个块分别进行直方图均衡化处理。如果在图像有噪声的情况下这样处理,在每个被分割的小区域块中的噪声就会...

异步社区
2018/06/28
0
0
[Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/83758402 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
2018/11/06
0
0
python 计算机视觉 1.3.4直方图均衡化

图像灰度变换中一个非常有用的例子就是直方图均衡化。直方图均衡化是指将一幅 图像的灰度直方图变平,使变换后的图像中每个灰度值的分布概率都相同。在对图 像做进一步处理之前,直方图均衡化...

vino6520
2018/04/19
0
0
[Python图像处理] 十六.图像的灰度非线性变换之对数变换、伽马变换

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/88929290 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
03/31
0
0
[Python图像处理] 十五.图像的灰度线性变换

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/88858696 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AWS自动部署工具codedeploy的部署概述

1)在AWS lambda平台上部署: 三大部分:要部署的内容 --> 部署的配置 --> 更新的lambda函数版本 部署的流程:上传修订的应用程序-->创建一个应用程序-->指定部署组-->指定部署的配置-->指定...

守护-创造
32分钟前
2
0
好程序员教程分享Javascript设计模式

好程序员教程分享Javascript设计模式 方法一 对象字面量表示法   在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 name/value 对。对象内的名称可以是字符串或标...

好程序员IT
38分钟前
3
0
fail-fast和fail-safe的介绍和区别

fail-fast和fail-safe 前言 前段时间公司招的实习生在使用迭代器遍历的时候,对集合内容进行了修改,从而抛出ConcurrentModificationException. 然后给他讲解之余也整理了这一篇文章. fail-fa...

群星纪元
40分钟前
3
0
控制反转 IOC

控制反转(Inversion of Control,缩写为IoC)面向对象设计原则,降低代码耦合度 依赖注入(Dependency Injection,简称DI) 依赖查找(Dependency Lookup):容器提供回调接口和上下文条件给...

SibylY
51分钟前
2
0
网络介绍:Kubernetes设计文档

模型和动机 Kubernetes从Docker默认的网络模型中独立出来形成一套自己的网络模型。该网络模型的目标是:每一个pod都拥有一个扁平化共享网络命名空间的IP,通过该IP,pod就能够跨网络与其它物...

xiangyunyan
52分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部