目录

基本原理

对比度提升曲线

对比度降低曲线

代码实现

效果对比

实际使用情况及特殊说明


基本原理

显示器上,一般都是可以进行手动调整对比度的,会有一个进度条,可以增加对比度或者降低对比度。实际上呢,背后的算法就是对图像在进行处理,对输入的图像根据用户的选择进行了对比度的增加或者降低。其算法原理是非常的简单,大概可以总结为如下公式:

当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,那么颜色必然是被改变了的,主要是对比度提升时会有这种情况,降低对比度时,不会有该问题。

显示器手调对比度算法介绍相关推荐

  1. 清华大一Python作业太难上热榜!只上3节课,手撸AI算法,网友:离本科毕设只差一篇万字论文...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 太难了! ...

  2. 服务高可用利器——限流算法介绍与示例

    文章目录 0.前言 1.计数器 1.1 简介 1.2 示例 2.滑动窗口 2.1 简介 2.2 示例 3.漏桶 3.1 简介 3.2 示例 4.令牌桶 4.1 简介 4.2 示例 5.小结 参考文献 ...

  3. Kylin高级主题-Cube构建算法介绍(逐层算法和快速算法)

    Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.它能在亚秒内查询巨大的Hive表.本文将详细介绍Apache Ky ...

  4. 深度学习【使用pytorch实现基础模型、优化算法介绍、数据集的加载】

    文章目录 一 Pytorch完成基础模型 1. Pytorch完成模型常用API 1.1 `nn.Module` 1.2 优化器类 1.3 损失函数 1.4 线性回归完整代码 2. 在GPU上运行代码 ...

  5. 计算机的显示器颜色怎么调,电脑显示器怎样调色差

    你们知道怎么调整电脑显示器的色差吗,下面是学习啦小编带来的关于电脑显示器怎样调色差的内容,欢迎阅读! 电脑显示器调色差的方法步骤 第一步 在在电脑桌面的任意空白处,单击鼠标右键.在弹出的选项框中选择& ...

  6. [ 数据结构 -- 手撕排序算法第四篇 ] 选择排序

    手撕排序算法系列之第四篇:选择排序. 从本篇文章开始,我会介绍并分析常见的几种排序,大致包括直接插入排序,冒泡排序,希尔排序,选择排序,堆排序,快速排序,归并排序等. 大家可以点击此链接阅读其他排序算 ...

  7. 深度强化学习主流算法介绍(二):DPG系列

    之前的文章可以看这里 深度强化学习主流算法介绍(一):DQN系列 相关论文在这里 开始介绍DPG之前,先回顾下DQN系列 DQN直接训练一个Q Network 去估计每个离散动作的Q值,使用时选择Q值 ...

  8. 机器学习前沿算法介绍

    上一篇推文介绍了机器学习领域比较常见的几种算法,除此之外,随着人工智能深度学习技术的飞速发展,也涌现了不少前沿研究和新的算法,本文会对上一篇推文进行简要回顾,并扩展介绍一些前沿算法 机器学习算法回顾 ...

  9. Python手写线性回归算法

    作者 | 苏南下 来源 | 机器会学习ML(ID:AI_Learning007) 摘要:通俗易懂介绍线性回归算法,并 Python 手写实现. 之前我们介绍了:kNN 算法,主要用于解决分类问题,也可 ...

最新文章

  1. 【Python】keras卷积神经网络识别mnist
  2. $sanitize和$sce服务的使用方法
  3. 分治算法-01连续子序列的最大和问题
  4. ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能
  5. 互联网晚报 | 12月27日 星期一 | 蚂蚁消费金融增资220亿;小米MIUI13正式官宣;《蜘蛛侠3》登顶全球年度票房冠军...
  6. ES6入门笔记(一)
  7. nginx关闭websocket
  8. tf卡测试软件_真正的白菜价?1G不到1元,铠侠(原东芝存储)microSD卡评测
  9. python全栈_010_Python3基本数据类型--元组
  10. 这可能是程序员写的最暖的一首歌了
  11. VB程序设计算机,VB编程:编写一个过程,用来计算并输出 S=1+1/2+1/3+……+1/100 的值。...
  12. python读取hive方案分析
  13. matlab简支梁有限元分析,1.3 简支梁的有限元分析
  14. 软件工程毕业设计要求
  15. linux 添加udp端口映射,iptables下udp端口转发
  16. GateWay新一代网关
  17. 中考考试的指令广播_2016中招考试广播指导语
  18. yolo原理与实现(训练和测试)
  19. iOS 屏幕录制功能
  20. seo php 寄生虫繁殖,seo寄生虫(蜘蛛池程序)

热门文章

  1. C# 克隆(Clone)中的深拷贝和浅拷贝
  2. 动态规划的递归写法和递推写法
  3. 网站TDK的设置方法-怎么合理的设置网站的TDK
  4. 怎样用AIDL Service 传递复杂数据
  5. PYTHON实现自动发送邮件(QQ,163,139三种邮箱演示)
  6. java 四舍六入五成双_EXCEL实现四舍六入五成双修约规则的方法
  7. Excel中杂乱的图片,一键就可以让它们对齐行
  8. 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战
  9. 计算机 语言学 交叉,计算机和语言学
  10. 已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。