显示器手调对比度算法介绍

本文介绍了图像处理中的对比度调整原理,包括对比度提升和降低的数学公式及曲线变化,并通过Python代码展示了如何实现对比度增减的效果。文中提到,对比度提升可能导致过曝,而降低对比度则会使图像变暗。实际应用中,显示器通常设定对比度调整范围,以保持图像质量。
摘要由CSDN通过智能技术生成

       

目录

       

        基本原理

        对比度提升曲线

        对比度降低曲线        

        代码实现

        效果对比

        实际使用情况及特殊说明


        基本原理

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

        当gain值大于1时,对比度增加,当gain值小于1时,对比度降低。

        我们在使用PS时,调整图像对比度往往是拉一条我们想要的曲线,只是那个曲线的形状是多样化的,比如S型,甚至波浪型都有可能。因为人在判断拉的曲线好不好,如果不好,可能会重新调整曲线,直到得到自己满意的结果。这样就是基于内容的对比度调整了,但显示器上,没有这么复杂的操作,不会根据内容来调整对比度,而且,还不好判断对比度增加或减少的幅度,所以,基本上就弄的简单些,直接是直线,且固定点就在原点。

        对比度提升曲线

        根据公式得到对比度提升的曲线大概如下:

        对比度降低曲线        

        对比度降低的曲线大概如下:

        当然,遇到了超出数值范围的就会进行截断处理,如果图像内容有很多亮区,增加对比度后,必然会导致过曝的情况,系统默认是对比度为1的,也就是保持45°直线。降低对比度时,亮的像素被降低了,所有像素都有挤压,所以对比度就低了。

        代码实现

        简单的写了个Python代码来实现这个过程。

import cv2
import numpy as np

def DoContrast(img, k):
    img = img.astype(np.float)
    imgOut = img * k
    imgOut = np.clip(imgOut, 0, 255)
    imgOut = imgOut.astype(np.uint8)
    return imgOut

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值