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结合opencv实现人脸检测与跟踪
Jun 08 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
基于Python打造账号共享浏览器功能
May 30 Python
python多线程并发及测试框架案例
Oct 15 Python
Python笔记之代理模式
Nov 20 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
Apr 17 Python
Python叠加矩形框图层2种方法及效果
Jun 18 Python
Django中和时区相关的安全问题详解
Oct 12 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python playwrigh框架入门安装使用
Jul 23 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
VFP与其他应用程序的集成
2006/10/09 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JavaScript实现的背景自动变色代码
2015/10/17 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python常用知识点汇总
2016/05/08 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
Python内建模块struct实例详解
2018/02/02 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
如何写自我鉴定
2014/03/19 职场文书
进口业务员岗位职责
2014/04/06 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
生日宴会策划方案
2014/06/03 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
2014年督导工作总结
2014/11/19 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python