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创建线程示例
May 06 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
Python计算三角函数之asin()方法的使用
May 15 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
Python微信库:itchat的用法详解
Aug 14 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
python批量生成条形码的示例
Oct 10 Python
浅谈Python类的单继承相关知识
May 12 Python
利用python进行数据加载
Jun 20 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
浅谈Python中的数据类型
2015/05/05 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
学习演讲稿范文
2014/05/10 职场文书
小区文明倡议书
2014/05/16 职场文书
积极向上的团队口号
2014/06/06 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
物理学专业自荐信
2014/06/11 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
同意报考公务员证明
2015/06/17 职场文书
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python