浅谈Python Opencv中gamma变换的使用详解


Posted in Python onApril 02, 2018

伽马变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。

伽马变换的基本形式如下:

大于1时,对图像的灰度分布直方图具有拉伸作用(使灰度向高灰度值延展),而小于1时,对图像的灰度分布直方图具有收缩作用(是使灰度向低灰度值方向靠拢)。

#分道计算每个通道的直方图
img0 = cv2.imread('12.jpg')
hist_b = cv2.calcHist([img0],[0],None,[256],[0,256])
hist_g = cv2.calcHist([img0],[1],None,[256],[0,256])
hist_r = cv2.calcHist([img0],[2],None,[256],[0,256])
def gamma_trans(img,gamma):
 #具体做法先归一化到1,然后gamma作为指数值求出新的像素值再还原
 gamma_table = [np.power(x/255.0,gamma)*255.0 for x in range(256)]
 gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)
 #实现映射用的是Opencv的查表函数
 return cv2.LUT(img0,gamma_table)
img0_corrted = gamma_trans(img0, 0.5)
cv2.imshow('img0',img0)
cv2.imshow('gamma_image',img0_corrted)
cv2.imwrite('gamma_image.png',img0_corrted)
#分通道计算Gamma校正后的直方图
hist_b_c =cv2.calcHist([img0_corrted],[0],None,[256],[0,256])
hist_g_c =cv2.calcHist([img0_corrted],[1],None,[256],[0,256])
hist_r_c =cv2.calcHist([img0_corrted],[2],None,[256],[0,256])
fig = plt.figure('gamma')
pix_hists = [[hist_b, hist_g, hist_r],
    [hist_b_c, hist_g_c, hist_r_c]]
pix_vals = range(256)
for sub_plt, pix_hist in zip([121, 122], pix_hists):
 ax = fig.add_subplot(sub_plt, projection='3d')
 for c, z, channel_hist in zip(['b', 'g', 'r'], [20, 10, 0], pix_hist):
  cs = [c] * 256
  ax.bar(pix_vals, channel_hist, zs=z, zdir='y', color=cs, alpha=0.618, edgecolor='none', lw=0)
 ax.set_xlabel('Pixel Values')
 ax.set_xlim([0, 256])
 ax.set_ylabel('Count')
 ax.set_zlabel('Channels')
plt.show()
cv2.waitKey()

以上这篇浅谈Python Opencv中gamma变换的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python切片用法实例教程
Sep 08 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
Python中的heapq模块源码详析
Jan 08 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
Python-jenkins 获取job构建信息方式
May 12 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
python用opencv 图像傅里叶变换
Jan 04 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 #Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 #Python
python opencv 图像尺寸变换方法
Apr 02 #Python
Python聊天室程序(基础版)
Apr 01 #Python
Python socket实现简单聊天室
Apr 01 #Python
简单实现python聊天程序
Apr 01 #Python
简单实现Python爬取网络图片
Apr 01 #Python
You might like
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP内置加密函数详解
2016/11/20 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Django在Model保存前记录日志实例
2020/05/14 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
三个Unix的命令面试题
2015/04/12 面试题
优秀求职自荐信怎样写
2013/12/18 职场文书
机械个人求职信范文
2014/01/24 职场文书
小学少先队活动方案
2014/02/18 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
介绍长城的导游词
2015/01/30 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL