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脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
Linux 修改Python命令的方法示例
Dec 03 Python
python实现五子棋小程序
Jun 18 Python
Django分页功能的实现代码详解
Jul 29 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
python实现快递价格查询系统
Mar 03 Python
Python字符串格式化f-string多种功能实现
May 07 Python
python神经网络编程实现手写数字识别
May 27 Python
python读取excel进行遍历/xlrd模块操作
Jul 12 Python
Python 数据科学 Matplotlib图库详解
Jul 07 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
php数字转汉字代码(算法)
2011/10/08 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python2随机数列生成器简单实例
2017/09/04 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Python变量类型知识点总结
2019/02/18 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
Python如何重新加载模块
2020/07/29 Python
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
大学生学习计划书
2014/09/15 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
2015年父亲节寄语
2015/03/23 职场文书
地道战观后感500字
2015/06/04 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
改造DE1103三步曲
2022/04/07 无线电