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 相关文章推荐
python3 与python2 异常处理的区别与联系
Jun 19 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
numpy基础教程之np.linalg
Feb 12 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
python导入pandas具体步骤方法
Jun 23 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Python Gitlab Api 使用方法
Aug 28 Python
pycharm修改file type方式
Nov 19 Python
Python计算信息熵实例
Jun 18 Python
python 如何实现遗传算法
Sep 22 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
angular2实现统一的http请求头方法
2018/08/13 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
C语言面试题
2015/10/30 面试题
销售类个人求职信范文
2013/09/25 职场文书
文明倡议书范文
2014/04/15 职场文书
骨干教师申报材料
2014/12/17 职场文书
党内外群众意见范文
2015/06/02 职场文书
初中信息技术教学反思
2016/02/16 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
导游词之太原天龙山
2020/01/02 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python