python数字图像处理之对比度与亮度调整示例


Posted in Python onJune 28, 2022

skimage包的exposure模块

图像亮度与对比度的调整,是放在skimage包的exposure模块里面

1、gamma调整

python数字图像处理之对比度与亮度调整示例

对原图像的像素,进行幂运算,得到新的像素值。公式中的g就是gamma值。

如果gamma>1, 新图像比原图像暗

如果gamma<1,新图像比原图像亮

函数格式为:skimage.exposure.adjust_gamma(image, gamma=1)

gamma参数默认为1,原像不发生变化 。

from skimage import data, exposure, img_as_float
import matplotlib.pyplot as plt
image = img_as_float(data.moon())
gam1= exposure.adjust_gamma(image, 2)   #调暗
gam2= exposure.adjust_gamma(image, 0.5)  #调亮
plt.figure('adjust_gamma',figsize=(8,8))
plt.subplot(131)
plt.title('origin image')
plt.imshow(image,plt.cm.gray)
plt.axis('off')
plt.subplot(132)
plt.title('gamma=2')
plt.imshow(gam1,plt.cm.gray)
plt.axis('off')
plt.subplot(133)
plt.title('gamma=0.5')
plt.imshow(gam2,plt.cm.gray)
plt.axis('off')
plt.show()

python数字图像处理之对比度与亮度调整示例

2、log对数调整

这个刚好和gamma相反

原理:I=log(I)

from skimage import data, exposure, img_as_float
import matplotlib.pyplot as plt
image = img_as_float(data.moon())
gam1= exposure.adjust_log(image)   #对数调整
plt.figure('adjust_gamma',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(image,plt.cm.gray)
plt.axis('off')
plt.subplot(122)
plt.title('log')
plt.imshow(gam1,plt.cm.gray)
plt.axis('off')
plt.show()

python数字图像处理之对比度与亮度调整示例

3、判断图像对比度是否偏低

函数:is_low_contrast(img)

返回一个bool型值

from skimage import data, exposure
image =data.moon()
result=exposure.is_low_contrast(image)
print(result)

输出为False

4、调整强度

函数:

skimage.exposure.rescale_intensity(image, in_range='image', out_range='dtype')

in_range 表示输入图片的强度范围,默认为'image', 表示用图像的最大/最小像素值作为范围

out_range 表示输出图片的强度范围,默认为'dype', 表示用图像的类型的最大/最小值作为范围

默认情况下,输入图片的[min,max]范围被拉伸到[dtype.min, dtype.max],如果

dtype=uint8, 那么dtype.min=0, dtype.max=255

import numpy as np
from skimage import exposure
image = np.array([51, 102, 153], dtype=np.uint8)
mat=exposure.rescale_intensity(image)
print(mat)

输出为[  0 127 255]

即像素最小值由51变为0,最大值由153变为255,整体进行了拉伸,但是数据类型没有变,还是uint8

前面我们讲过,可以通过img_as_float()函数将unit8类型转换为float型,实际上还有更简单的方法,就是乘以1.0

import numpy as np
image = np.array([51, 102, 153], dtype=np.uint8)
print(image*1.0)

即由[51,102,153]变成了[  51.  102.  153.]

而float类型的范围是[0,1],因此对float进行rescale_intensity 调整后,范围变为[0,1],而不是[0,255]

import numpy as np
from skimage import exposure
image = np.array([51, 102, 153], dtype=np.uint8)
tmp=image*1.0
mat=exposure.rescale_intensity(tmp)
print(mat)

结果为[ 0. &nbsp; 0.5  1. ]

如果原始像素值不想被拉伸,只是等比例缩小,就使用in_range参数,如:

import numpy as np
from skimage import exposure
image = np.array([51, 102, 153], dtype=np.uint8)
tmp=image*1.0
mat=exposure.rescale_intensity(tmp,in_range=(0,255))
print(mat)

输出为:[ 0.2  0.4  0.6],即原像素值除以255

如果参数in_range的[main,max]范围要比原始像素值的范围[min,max] 大或者小,那就进行裁剪,如:

mat=exposure.rescale_intensity(tmp,in_range=(0,102))
print(mat)

输出[ 0.5  1.   1. ],即原像素值除以102,超出1的变为1

如果一个数组里面有负数,现在想调整到正数,就使用out_range参数。如:

import numpy as np
from skimage import exposure
image = np.array([-10, 0, 10], dtype=np.int8)
mat=exposure.rescale_intensity(image, out_range=(0, 127))
print(mat)

输出[  0  63 127]

以上就是python数字图像处理之对比度与亮度调整示例的详细内容,更多关于python数字图像对比度亮度调整的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python正则表达式介绍
Aug 06 Python
解决pycharm安装后代码区不能编辑的问题
Oct 28 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
pandas中的series数据类型详解
Jul 06 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
tensorflow 环境变量设置方式
Feb 06 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
pytorch 把图片数据转化成tensor的操作
Mar 04 Python
pytorch Dropout过拟合的操作
May 27 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
SONY ICF-SW7600的电路分析
2021/03/02 无线电
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
js中less常用的方法小结
2017/08/09 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
详细解读Python中解析XML数据的方法
2015/10/15 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
python操作redis数据库的三种方法
2020/09/10 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
校园活动策划书范文
2014/01/10 职场文书
《赠汪伦》教学反思
2014/04/12 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
离婚财产处理协议书
2014/09/30 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
思想品德课教学反思
2016/02/24 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python