前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图像增强:灰度变换(Python实现)

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

作者头像
老肥码码码
发布2020-05-16 13:32:29
2.2K0
发布2020-05-16 13:32:29
举报

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

现有的图像增强的方法非常多,今天我们主要介绍空间域中的灰度变换方法,并用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∗((rrmin)/(rmaxrmin))

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

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=Klog(1+r)

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

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

推荐阅读

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Image negatives
  • Brightness normalization
  • Power-law transformation
  • Log transformation
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档