图像增强:灰度变换(Python实现)

图像增强能够有目的地强调图像地整体或是局部特征,将不清晰地图像变得更为清晰,或是强调某些感兴趣的特征,使其改善图像质量,加强图像判别和识别的效果。

现有的图像增强的方法非常多,今天我们主要介绍空间域中的灰度变换方法,并用Python将其一一实现。灰度变换也被称为图像的点运算(只针对图像的某一像素点),是所有图像处理技术中最简单的技术。

我们首先对所有原始图像都进行如下的读取,转换为灰度图像,并且读取图像的长宽。

image=Image.open(img_path)
image=image.convert('L')
x=image.size[0]
y=image.size[1]

Image negatives

图像像素反转变化,用互补灰度代替原灰度。若是8位的灰度图,则原来像素值为0的转为255,如下面公式所示。

s=255−r

此操作能够有效地增强黑色区域中的一些白色或是灰色细节,比如下图,

在此图中,我们可能重点关注的是这些黑色中的白色部分,因而采用反转变换。

我们根据定义,逐像素进行反转操作。

for i in range(x):
    for j in range(y):
        pixel=image.getpixel((i,j))
        image.putpixel((i,j),255-pixel)

Brightness normalization

做一个简单的归一化,K是尺度因子,增强对比度,使黑的更黑,亮的更亮,公式如下,

s=K∗((r−rmin)/(rmax−rmin))

先计算出像素点的最大值和最小值,再按公式进行归一化,进而把像素值进行更新。

table=[]
for i in range(256):
    table.append(200*(i-pixel_min)/(pixel_max-pixel_min))
image=image.point(table,'L')

Power-law transformation

指数变换可以做到扩展或者压缩灰度的作用。指数小于1时,作用与对数变换相似,将低亮度区域拉伸,变得更亮。

table=[]
for i in range(256):
    table.append(100*i**0.5)

image=image.point(table,'L')

Log transformation

对数变换将低亮度区拉伸,将其余部分进行压缩,使得整体亮度增加,公式如下,

s=K∗log(1+r)

比如下图原图,其黑色部分其实有一些‘隐藏’的亮度,使用对数变换使其更加明显。

table=[]
for i in range(256):
    table.append(40*math.log1p(i))
image=image.point(table,'L')
——END——

推荐阅读

我用Python写了一个论文降重工具

十分钟掌握数据可视化基本操作(上)

十分钟掌握数据可视化基本操作(下)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值