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 抓取动态网页内容方案详解
Dec 25 Python
详解django中自定义标签和过滤器
Jul 03 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 Python
Python上下文管理器全实例详解
Nov 12 Python
解决Python安装cryptography报错问题
Sep 03 Python
python爬取音频下载的示例代码
Oct 19 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 Python
python+flask编写一个简单的登录接口
Nov 13 Python
next在python中返回迭代器的实例方法
Dec 15 Python
Python如何使用logging为Flask增加logid
Mar 30 Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
如何利用python实现Simhash算法
Jun 28 #Python
python数字图像处理:图像的绘制
python数字图像处理数据类型及颜色空间转换
python数据分析之单因素分析线性拟合及地理编码
You might like
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
jquery ajax请求实例深入解析
2012/11/26 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
python使用Matplotlib画条形图
2020/03/25 Python
python实现杨氏矩阵查找
2019/03/02 Python
通过python检测字符串的字母
2020/02/18 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Django中FilePathField字段的用法
2020/05/21 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
Java基础知识面试要点
2016/07/29 面试题
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
个人考核材料
2014/05/15 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
八年级作文之友谊
2019/12/02 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL