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命令行参数解析模块getopt使用实例
Apr 13 Python
Python中zfill()方法的使用教程
May 20 Python
pycharm远程调试openstack代码
Nov 21 Python
破解安装Pycharm的方法
Oct 19 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
React实现轮播效果
2020/08/25 Javascript
Python群发邮件实例代码
2014/01/03 Python
python实现kNN算法
2017/12/20 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
什么是python的函数体
2020/06/19 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
《骆驼和羊》教学反思
2014/02/27 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
离婚起诉状范本
2015/05/19 职场文书
2016秋季运动会前导词
2015/11/25 职场文书