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 del()函数用法
Mar 24 Python
pycharm 使用心得(九)解决No Python interpreter selected的问题
Jun 06 Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
python编写爬虫小程序
May 14 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
Python JSON编解码方式原理详解
Jan 20 Python
python requests.get带header
May 05 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
python两个list[]相加的实现方法
Sep 23 Python
python基础之文件处理知识总结
May 23 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
php.ini 配置文件的深入解析
2013/06/17 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
js href的用法
2010/05/13 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
树结构之JavaScript
2017/01/24 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
Python中用Spark模块的使用教程
2015/04/13 Python
Python生成密码库功能示例
2017/05/23 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
基层工作经历证明
2014/01/13 职场文书
便利店的创业计划书
2014/01/15 职场文书
工作求职信
2014/07/04 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书