【图像处理】基本的全局图像灰度变换

二维图像可以看做坐标点(x,y)的函数,f(x,y),因变量为像素值。设r是当前点,s是灰度变换后的点,那么有s=T(r),T是一个函数,r和s都属于一定范围内的自然数集合。因此我们可以根据函数T建立一个数组,下标是r,元素是s,遍历每个待变换的像素点,用查表的方法替换r为s,快速完成灰度变换。

常用的灰度变换有:

1、  对数变换,s=cLog(1+r),其中c是归一化参数,对数的底是可以变化的,但是要保证s>0。由于Log函数是凸函数,因此图像直方图向亮处移动,图像整体变亮。

2、  幂次变换,s=c r^t,其中c是归一化参数,t是大于0的实数。当t大于1,变换函数是凹函数,因此图像直方图向暗处移动,图像整体变暗;反之变亮。

3、  反相。s=M-r,M是r和s能取得的最大值。

4、  位图切割,设图像是8bit图像,即像素范围为0~255,由8位二进制数表示,位图切割对每个位进行处理。

5、  直方图处理。包括直方图均衡和直方图规定化。直方图均衡的结果是直方图曲线变成平直线,直方图规定化的结果是原始直方图曲线变成目标的直方图曲线,类似于Photoshop中的曲线调整。

 

直方图均衡可以将图像亮度分布均衡。直方图的x轴是像素,y轴是该像素值对应的点的个数。如果我们将y轴归一化,那么直方图变成了像素的概率密度函数。

已知s=T(r),概率密度函数(原始直方图)为pr(r),概率密度为pr(r)dr,灰度变换后有

pr(r)dr=ptr(T(r))dT(r)=ps(s)ds

这里用到了微积分的换元法,对于初等函数都是适用的,但是换元之后的ps(s)不一定符合概率密度函数的定义。为了让ps(s)也是概率密度函数,要求(1)T函数在r处于[0,1]区间中单值且单调递增,也就是严格递增,如果不是单值那么rk可能对应多个sk,ps(s)就不是函数了(2)当r属于[0,1],T(r)属于[0,1]。

图像处理科学家找到了一个符合要求的变换,能想到这个变换的用途确实很厉害:

 

我们将这个变换带入pr(r)dr=ps(s)ds:

 

这说明变换之后的像素出现的概率都是一样的,也就是各种像素的点的数量相同。这样s可以用r求得:

 

N是总像素个数,nk是第k个像素出现的点的数量。

我们可以根据直方图建立一个rk->sk的映射,将其制作成一个数组,下标是rk,元素是sk。

直方图规定化将一种直方图曲线变换到任意一种直方图曲线。我们可以用直方图均衡化来过渡。设目标直方图曲线表示的像素概率密度函数为pz(z),那么我们可以将直方图z均衡化,求得zk->sk的映射

 

间接地我们就得到了rk->sk->zk的映射,可以简化做成rk->zk的映射数组。我们用这种方法实现了直方图曲线的任意变化。必须注意,T(r)和G(z)都要求有反函数,因此必须是严格递增函数。


原图


均衡


用直方图规定划方法,从均衡图还原原图

github:https://github.com/artzers/NGImageProcessor.git  由类BasePixelTransfer.py实现


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值