显示器手调对比度算法介绍
目录
基本原理
对比度提升曲线
对比度降低曲线
代码实现
效果对比
实际使用情况及特殊说明
基本原理
显示器上,一般都是可以进行手动调整对比度的,会有一个进度条,可以增加对比度或者降低对比度。实际上呢,背后的算法就是对图像在进行处理,对输入的图像根据用户的选择进行了对比度的增加或者降低。其算法原理是非常的简单,大概可以总结为如下公式:
当gain值大于1时,对比度增加,当gain值小于1时,对比度降低。
我们在使用PS时,调整图像对比度往往是拉一条我们想要的曲线,只是那个曲线的形状是多样化的,比如S型,甚至波浪型都有可能。因为人在判断拉的曲线好不好,如果不好,可能会重新调整曲线,直到得到自己满意的结果。这样就是基于内容的对比度调整了,但显示器上,没有这么复杂的操作,不会根据内容来调整对比度,而且,还不好判断对比度增加或减少的幅度,所以,基本上就弄的简单些,直接是直线,且固定点就在原点。
对比度提升曲线
根据公式得到对比度提升的曲线大概如下:
对比度降低曲线
对比度降低的曲线大概如下:
当然,遇到了超出数值范围的就会进行截断处理,如果图像内容有很多亮区,增加对比度后,必然会导致过曝的情况,系统默认是对比度为1的,也就是保持45°直线。降低对比度时,亮的像素被降低了,所有像素都有挤压,所以对比度就低了。
代码实现
简单的写了个Python代码来实现这个过程。
import cv2
import numpy as npdef DoContrast(img, k):img = img.astype(np.float)imgOut = img * kimgOut = np.clip(imgOut, 0, 255)imgOut = imgOut.astype(np.uint8)return imgOutif __name__ == '__main__':img = cv2.imread('test2.jpg', 1)imgEnhance = DoContrast(img, 1.25)imgDec = DoContrast(img, 0.8)cv2.imwrite('test_1.25.jpg', imgEnhance)cv2.imwrite('test_0.8.jpg', imgDec)
效果对比
原图
对比度增加,k=1.25
对比度降低,k=0.8
可以看到,增加对比度后,图像整体亮些,通透点,不过也有些过曝,如果程度不是很大,基本上还是可以接受的,降低对比度后,图像都暗沉一些了,没那么通透了。
实际使用情况及特殊说明
当然,实际在显示器上,产商一定会设定一个范围,比如最大提升多少,最大降低多少,然后把中间划分成N等分。不过,等分的时候,可能不是在非线性域等分的,可能是在线性域等分的,这个具体就要看产商怎么定了。比如最大增加对比度50%,应该不是让系数为1.5,可能是pow(1.5,1/2.2),就是将1.5转到了线性域了,这样实现的是把屏幕亮度大概提升了50%。如果直接乘1.5,那么提升的亮度不是50%。降低对比度时也是类似的。
还有一点,这个过程中,理论上是只改变亮度,不改变颜色,但是当发生了clip时,是会改变颜色的,亮色还是做不到完全分离的。特别是,RGB三通道中,只有某一个通道发生了clip,那么颜色必然是被改变了的,主要是对比度提升时会有这种情况,降低对比度时,不会有该问题。
显示器手调对比度算法介绍相关推荐
- 清华大一Python作业太难上热榜!只上3节课,手撸AI算法,网友:离本科毕设只差一篇万字论文...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 太难了! ...
- 服务高可用利器——限流算法介绍与示例
文章目录 0.前言 1.计数器 1.1 简介 1.2 示例 2.滑动窗口 2.1 简介 2.2 示例 3.漏桶 3.1 简介 3.2 示例 4.令牌桶 4.1 简介 4.2 示例 5.小结 参考文献 ...
- Kylin高级主题-Cube构建算法介绍(逐层算法和快速算法)
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.它能在亚秒内查询巨大的Hive表.本文将详细介绍Apache Ky ...
- 深度学习【使用pytorch实现基础模型、优化算法介绍、数据集的加载】
文章目录 一 Pytorch完成基础模型 1. Pytorch完成模型常用API 1.1 `nn.Module` 1.2 优化器类 1.3 损失函数 1.4 线性回归完整代码 2. 在GPU上运行代码 ...
- 计算机的显示器颜色怎么调,电脑显示器怎样调色差
你们知道怎么调整电脑显示器的色差吗,下面是学习啦小编带来的关于电脑显示器怎样调色差的内容,欢迎阅读! 电脑显示器调色差的方法步骤 第一步 在在电脑桌面的任意空白处,单击鼠标右键.在弹出的选项框中选择& ...
- [ 数据结构 -- 手撕排序算法第四篇 ] 选择排序
手撕排序算法系列之第四篇:选择排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算 ...
- 深度强化学习主流算法介绍(二):DPG系列
之前的文章可以看这里 深度强化学习主流算法介绍(一):DQN系列 相关论文在这里 开始介绍DPG之前,先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值,使用时选择Q值 ...
- 机器学习前沿算法介绍
上一篇推文介绍了机器学习领域比较常见的几种算法,除此之外,随着人工智能深度学习技术的飞速发展,也涌现了不少前沿研究和新的算法,本文会对上一篇推文进行简要回顾,并扩展介绍一些前沿算法 机器学习算法回顾 ...
- Python手写线性回归算法
作者 | 苏南下 来源 | 机器会学习ML(ID:AI_Learning007) 摘要:通俗易懂介绍线性回归算法,并 Python 手写实现. 之前我们介绍了:kNN 算法,主要用于解决分类问题,也可 ...
最新文章
- 【Python】keras卷积神经网络识别mnist
- $sanitize和$sce服务的使用方法
- 分治算法-01连续子序列的最大和问题
- ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
- 互联网晚报 | 12月27日 星期一 | 蚂蚁消费金融增资220亿;小米MIUI13正式官宣;《蜘蛛侠3》登顶全球年度票房冠军...
- ES6入门笔记(一)
- nginx关闭websocket
- tf卡测试软件_真正的白菜价?1G不到1元,铠侠(原东芝存储)microSD卡评测
- python全栈_010_Python3基本数据类型--元组
- 这可能是程序员写的最暖的一首歌了
- VB程序设计算机,VB编程:编写一个过程,用来计算并输出 S=1+1/2+1/3+……+1/100 的值。...
- python读取hive方案分析
- matlab简支梁有限元分析,1.3 简支梁的有限元分析
- 软件工程毕业设计要求
- linux 添加udp端口映射,iptables下udp端口转发
- GateWay新一代网关
- 中考考试的指令广播_2016中招考试广播指导语
- yolo原理与实现(训练和测试)
- iOS 屏幕录制功能
- seo php 寄生虫繁殖,seo寄生虫(蜘蛛池程序)
热门文章
- C# 克隆(Clone)中的深拷贝和浅拷贝
- 动态规划的递归写法和递推写法
- 网站TDK的设置方法-怎么合理的设置网站的TDK
- 怎样用AIDL Service 传递复杂数据
- PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)
- java 四舍六入五成双_EXCEL实现四舍六入五成双修约规则的方法
- Excel中杂乱的图片,一键就可以让它们对齐行
- 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战
- 计算机 语言学 交叉,计算机和语言学
- 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。