ISP Pipeline | camera成像原理

ISP Pipeline

Introduction

ISP (Image Signal Process, 图像信号处理),即成像引擎

Sensor输出的原始数据Raw Data和人类预期的图像有巨大差异

  • 第一是镜头和CMOS Sensor的物理缺陷
  • 第二是拍摄的光线条件多样,镜头和Sensor需要根据环境做适应(就像人眼要通过瞳孔缩放,适应环境明暗一样)

ISP Pipeline

BLC(BlackLevel Correction)------黑电平校正

问题:Sensor有漏电流

由于Sensor漏电流存在,刚把镜头放入一个全黑的环境,Sensor输出的原始数据不为0;而我们希望全黑时原始数据为0。

处理原理:

我们需要找到一个矫正值,所有像素值都减去这个值,就得到一个矫正成功的结果。

一般情况下,sensor的传感器周边,还有一小部分区域是有感光器的,但是没有光透射进来。可以把这部分的传感器的信号作为矫正值,从可感光部分的信号中减去,就可获得校正后信号。

左边是未校验的,右边是矫正后的图像

LSC(Lens Shade Correction)------镜头阴影校正

问题:通过镜头到达Sensor中间的光多于到达Sensor的边缘的光,即光学系统中的渐晕。

这是由于随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少。导致Senor捕获的图像中间亮度高,周围边缘亮度低

**处理原理:**首先检测出图像中间亮度比较均匀的部分,认为这部分不需要矫正,然后以此为中心,计算出周围区域需要补偿的因子(增益)。实际项目中,可以把镜头对准白色物体,检查图像四周是否有暗角

下图左边图像是未做镜头阴影校正的,右边图像是做了镜头阴影校正的

BPC(Bad Point Correction)------坏点校正

问题:Senor上有的像素点的输出有坏点。

由于Sensor是物理器件,有坏点是难以避免的;而且使用时间长了坏点会越来越多。通过在全黑环境下观察输出的彩点和亮点,或在白色物体下观察输出的彩点和黑点,就可以看到无规律的散落在各处的坏点。

处理原理:

第一步:检测坏点。在RGB域上做5x5的评估,如果某个点和周围的点偏离度超过阈值的点为坏点。为了防止误判,还需要更复杂的逻辑,如连续评估N帧。

第二步:纠正坏点。对找到的坏点做中值滤波,替换原来的值即可。

  • 1 mean filter
  • 2 gradient-based filter

Bayer Denoise------去除噪声

Senor的感光器件包含模拟部分,所以信号中的噪声很难避免,ADC器件本身也会引入噪声。另外,当光线较暗时,整个系统需要将信号放大,这样噪声也跟着放大。

我们在看没有经过降噪处理的图片时,会感觉到图片上浮了一层彩色雪花点。

**处理原理:**对图像进行降噪处理的传统方法有均值滤波、高斯滤波,本质是低通滤波器。

普通的高斯滤波只考虑像素的空间距离关系,这样会导致滤波后图像变得模糊,为了避免图像变模糊,就需要保持图像的边缘,这时,就还要考虑相邻像素和本像素的相似程度,对于相似度高的像素给予更高的权重,我们称这种滤波为双边滤波。

下面左边是滤波前的图像,右边是滤波后的图像

双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。普通的高斯滤波会将图像的边缘模糊掉,而双边滤波器具有保边特性。双边滤波器中的一边即为上述的高斯平滑滤波,两个像素物理距离越大则权值越小,反之则权值越大。双边滤波器中另一边由像素值值域决定,两个像素,值相差越小,越不可能是边缘,那么越应该对其进行平滑处理,也就是应该提高其在滤波器中的权值。反之,像素值相差越大则越有可能是边缘,则应该尽力保留。

qitingshe.github.io/2018/06/14/...

await.fun/ImageProces... 图像参考

RGB Gamma------Gamma校正

问题:人眼对暗部细节比Sensor敏感

**处理原理:**Gamma编码后的图像相比于线性编码的图像,明显有更多的暗部色阶。Gamma编码刚好满足了人眼对暗部细节敏感的特性。即人眼是按照gamma < 1的曲线对输入图像进行处理的(公式f(I)=I^gamma,I为原图像素值)

现在常用的伽马校正是利用查表法来实现的,即首先根据一个伽马值,将不同亮度范围的理想输出值在查找表中设定好,在处理图像的时候,只需要根据输入的亮度,既可以得到其理想的输出值

左图为原图,中图为gamma = 1/2.2在校正结果,右图为gamma = 2.2的校正结果

如果图像原样显示在显示器等上,画面就会显得很暗。伽马校正通过预先增大 RGB 的值来排除影响,达到对图像校正的目的。

非线性变换是由下式引起的,其中I_in和I_out 被归一化,限定在 [0,1] 范围内,c是常数,g为伽马变量,通常取 2.2

python 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plt

# gamma correction
def gamma_correction(img, c=1, g=2.2):
    out = img.copy()
    out /= 255.
    out = (1/c * out) ** (1/g)

    out *= 255
    out = out.astype(np.uint8)

    return out

# Read image
img = cv2.imread("../paojie.jpg").astype(np.float)
# Gammma correction
out = gamma_correction(img)
# Save result
cv2.imshow("result", out)
cv2.imwrite("out.jpg", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图 矫正后

照相机等电子设备传感器在成像时会使得图像变暗,变得不真实,我们采用伽马校正来校正图像,使得图像明亮真实。

通过输入和输出像素值之间的幂律关系为:

  • 指数系数小于1时会使图像变亮,
  • 指数系数大于1时会使图像变暗。

AWB(Automatic White Balance)------自动白平衡

问题:Senor获取的图像容易受到光源颜色的影响。

人类的视觉系统有一定的颜色恒常性特点,不会受到光源颜色的影响。实际生活中,不论是晴天、阴天、室内白炽灯或日光灯下,人们所看到的白色物体总是是白色的,这就是视觉修正的结果。人脑对物体的颜色有一定先验知识,可识别物体并且更正这种色差。

但是Sensor不具备这样的特点,比如一张白纸,在不同光线下,Sensor输出的是不同颜色,在低色温下偏黄,在高色温下偏蓝。如白炽灯照明下拍出的照片易偏黄;而在户外日光充足则拍摄出来景物也会偏蓝。

我们就需要,让不同色温光线条件下白色物体,Sensor的输出都转换为更接近白色。

**处理原理:**比较常用的WEB算法有灰度世界、完美反射法等。

灰度世界(Gray World)算法基于一个假设:平均来讲,世界是灰色的。所以,白平衡就是调整R/B增益,达到R、G、B 相等。

白平衡有3个步骤:

(1)检测色温,如果手工调节,就知道图像中什么位置是白色物体了,色温容易检测;如果是自动调节,就需要估计出(猜出)图像中的白色位置,这是最重要的一环;

实际计算中为了实时操作,减少计算量,通常选取某个特定区域(如图像中央)像素进行计算。但若图像颜色较为单一或选定区域正好落入大的色块(红光下的白墙),以上算法求得的色温会非常不准确。为此,必须根据一定的约束条件,挑选出白色像素来计算色差。

(2)计算增益,计算R和B要调整的增益;调整增益将Cb和Cr调整到0 (或接近0)的两个系数,即R=G=B。

(2)色温矫正,根据增益调整整幅图片的色温。

Demosaic------颜色插值

问题:Cmos的Sensor采用了Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)。

按道理sensor输出的是RGB的raw data,每个像素点都感知RGB 3个分量的数字这样最准确。但是这样需要3套感光板,而且RGB的3套数据还需要时间同步和对齐,这样成本高,难度大。

所以,我们通常采用一个叫**Bayer色彩滤波阵列(Bayer Color Filter Array,CFA)**的滤光板,放在一个感光板上。

如下图是一个8x8的分辨率的感光面板,图(a)中彩色部分是Bayer色彩滤波阵列,RGB三种颜色间隔排列。这样一次拍照就产生图(b)的RGB三幅图片,图片中彩色的是有感光数值的,白色空白是没有感光数值的点。我们需要通过Demosaic(颜色插值)的方法,把白色的像素点的值给补上。

图(b)绿色的像素点数目是红色或蓝色的2倍,是因为人类对绿色更敏感

Bayer色彩滤波阵列的结构:(a)在Sensor表面的CFA; (b)颜色分量的光分离和导致的传感器的不同像素点

注:Bayer色彩滤波阵列并不是唯一选择,它只是方案之一,由柯达公司科学家Bayer发明。华为P30pro夜间拍摄牛逼,用到了RYYB的滤镜阵列设计,RYYB就是将两个绿色像素(G)换成黄色像素(Y)替代, Y(红色和绿色组合)

**处理原理:**在补充图(b)中白色像素点的数值时,我们可以认为每个白色像素点的值,和他附近的同色点的值相近。所以,最简单的方法是内插法

  • R取左右2个平均值
  • GB取相邻的4个平均值

**处理效果:**较成熟。下图左侧是Demosaic前的,右图是Demosaic后的

CCM(Color Correction Matrix)------颜色校正

问题:Senor滤光板处各颜色块之间的颜色渗透带来的颜色误差。

所以,Sensor图像传感器获取的图像,与人们期望的颜色有距离,必须矫正。

AWB已经将白色校准了,CCM就是用来校准除白色以外其他颜色的准确度的,

**处理原理:**首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵,一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。

用一个3X3的CCM矩阵来校准, 其中每一列系数r1+g1+b1等于一个恒定值1。CCM矫正最终结果可以通过拍摄24色卡图片然后用imatest(一款专业的图像分析软件,具有强大的图像分析和处理功能)分析来做分析参考

**处理效果:**大家可以看到,右侧的24色卡图片是经过颜色校正的,色彩艳丽了很多

RGBToYUV------色彩空间转换

问题:Senor的输出的Raw data是RGB,但是有的处理在YUV上更方便,且YUV存储和传输时更省带宽。

在YUV 色彩空间上进行彩色噪声去除、 边缘增强等更方便。

**处理原理:**YUV 是一种基本色彩空间, 人眼对亮度Y改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。所以,只有YUV444格式的YUV数据的比例是1:1:1,其他各种格式,如YUV422,YUV420等格式,UV的数据量都小于Y,达到节省存储空间和传输带宽的目的。YUV数据的概念就是这样简单。(在编程时查一下文档,再搞清楚内存排布即可)

第二,RGB和YUV转换有固定的公式。

另外, 在YUV 家族中, YCbCr 是在计算机系统中应用最多的成员, 其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr

**处理效果:**人眼看不出图像质量变化

Color denoise / sharpness ------降噪和锐化

问题:YUV色彩空间需要进一步降噪和锐化。

主要是对YUV降噪处理,同时为了消除降噪过程中对图像细节的损失,需要对图像进行锐化处理,还原图像的相关细节。

因为在YUV色彩空间,这些处理更方便。

**处理模块名称:**Color denoise / sharpness

**处理原理:**为了抑制图像的彩色噪声, 一般采用低通滤波器进行处理。例如使用M×N的高斯低通滤波器在色度通道上进行处理。

在YUV 色彩空间上彩噪去除与边缘加强、色彩与对比度加强,中间还要进行自动曝光控制等, 然后输出YUV(或者RGB) 格式的数据, 再通过I/O 接口传输到CPU 中处理

**处理流程:**实时计算,且需要提前调校。

**处理效果:**降噪的要求和效果总是不断提高的,而且降噪和锐化是互相矛盾的,所以会有各种不同算法。如下图所示,从左到右为sharpen , 从右到左为blur

python 复制代码
def sharpen_Laplacian(in_img):
    I = in_img.copy()
    kernel = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
    # L = cv2.filter2D(I, -1, kernel)
    L = cv2.Laplacian(I, -1, kernel)
    a = 0.5
    O = cv2.addWeighted(I, 1, L, a, 0)
    O[O > 255] = 255
    O[O < 0] = 0
    return O

拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。这种方法应该是比较经典的了,简单地说就是利用拉普拉斯算子对原图做卷积,获得一张处理后的图像再和原图叠加。

AEC(Automatic Exposure Control)------自动曝光

问题:图像传感器和镜头需要ISP模块根据光强度自动调节曝光时间。

不同场景下,光照的强度有着很大的差别。人眼有着自适应的能力因此可以很快的调整,使自己可以感应到合适的亮度。而图像传感器却不具有这种自适应能力,因此必须使用自动曝光功能来确保拍摄的照片获得准确的曝光从而具有合适的亮度

处理原理:

自动曝光的实现一般包括三个步骤:

1)光强测量。光强测量的过程是利用图像的曝光信息来获得当前光照信息的过程。可以统计图像的全部像素,也可以统计图像中间部分、也可以将图像分成不同部分且每部分赋予不同权重。

2)场景分析。场景分析是指为了获得当前光照的特殊情况而进行的处理,比如有没有背光照射 或者正面强光 等场景下。对这些信息的分析,可以提升图像传感器的易用性,并且能大幅度提高图像的质量,这是自动曝光中最为关键的技术 。目前常用的场景分析的技术主要有模糊逻辑和人工神经网络算法。这些算法比起固定分区测光算法具有更高的可靠性,主要是因为在模糊规则制定或者神经网络的训练过程中已经考虑了各种不同光照条件。

3)曝光补偿。在完成了光强测量和场景分析之后,就要控制相应的参数使得曝光调节生效。主要是通过设定曝光时间和曝光增益来实现的

AF (Auto Focus) ------自动对焦

问题:镜头需要调节焦距才能避免光学成像模糊。

处理原理:

AF算法的基本步骤是先判断图像的模糊程度,通过合适的模糊度评价函数求得采集的每一副图像的评价值, 然后通过搜索算法得到一系列评价值的峰值, 最后通过电机驱动将采集设备调节到峰值所在的位置, 得到最清晰的图像。

对焦评价函数

评价函数有很多种, 主要考虑的图像因素有图像频率(清晰的图像纹理多, 高频分布较多), 还有图像的灰度分量的分布(图像对应的灰度图的分量分布范围越大,说明图像的细节较多, 反应的图像的清晰程度)

常用的搜索算法有爬山算法, 搜索窗口有黄金分割点对焦嵌套窗口等.

HDR(High-Dynamic Range)------高动态范围

问题:Senor一定曝光量下较暗部分或较亮部分的细节显示不充分。

自然界的中光强度很宽,而人眼对高亮,极暗环境的细节分辨能力相对较窄,而摄像头记录的范围更窄,真正的HDR技术就是记录视觉范围内高亮、极暗环境的中的细节分辨率。

为保证人眼看到的世界和显示器或者摄像头采集的图像的亮度范围相差无几,甚至更好,需要通过tone mapping,将暗处和亮出细节再现。这是一种纯粹为了视觉感受而进行的处理,并非真正的HDR。也有人称为WDR(Wide Dynamic Range)

宽动态技术可以使场景中特别亮的区域和特别暗的区域在最终成像中同时看清楚

处理原理:

主要是通过tone mapping的方法,将像素值在特别暗的区域拉高,在特别亮的区域拉低。

Tone mapping有以下几种:

  1. global tone mapping

(a) 单一tone mapping曲线。对整幅图低拉高,高拉低。(缺点,蒙上一层雾感觉,因为数值压缩后往中间靠拢,局部对比度下降)

(b) 双边滤波tone mapping。在图像中局部边缘处不会进行tone mapping,以保持局部细节

  1. local tone mapping

(a) 虚拟曝光。通过多帧相加确定哪些区域是高亮区,哪些区域是低亮区。然后分区进行local tone mapping

(b) local gamma。图片分成多块,对每块进行gamma矫正。主要根据每块的亮度直方图进行动态调整gamma曲线

HDR Demo

iPhone 是如何拍摄 HDR 图像的呢? 它实际上采用三种不同的曝光度拍摄了 3 张图像,3 张图像拍摄非常迅速,在 3 张图像之间几乎没有产生位移。

www.51cto.com/article/576...

www.learnopencv.com/wp-content/...

第 1 步:捕获不同曝光度的多张图像

第 2 步:对齐图像

​ 合成 HDR 图像时使用的图像如果未对齐可能会导致严重的伪影

第 3 步:提取相机响应函数

第 4 步:合并图像

第 5 步:色调映射 tone mapping

python 复制代码
import cv2
import numpy as np


def readImagesAndTimes():
  
  times = np.array([ 1/30.0, 0.25, 2.5, 15.0 ], dtype=np.float32)
  
  filenames = ["img_0.033.jpg", "img_0.25.jpg", "img_2.5.jpg", "img_15.jpg"]

  images = []
  for filename in filenames:
    im = cv2.imread(filename)
    images.append(im)
  
  return images, times

if __name__ == '__main__':
  # Read images and exposure times
  print("Reading images ... ")

  images, times = readImagesAndTimes()
  
  
  # Align input images
  print("Aligning images ... ")
  alignMTB = cv2.createAlignMTB()
  alignMTB.process(images, images)
  
  # Obtain Camera Response Function (CRF)
  print("Calculating Camera Response Function (CRF) ... ")
  calibrateDebevec = cv2.createCalibrateDebevec()
  responseDebevec = calibrateDebevec.process(images, times)
  
  # Merge images into an HDR linear image
  print("Merging images into one HDR image ... ")
  mergeDebevec = cv2.createMergeDebevec()
  hdrDebevec = mergeDebevec.process(images, times, responseDebevec)
  # Save HDR image.
  cv2.imwrite("hdrDebevec.hdr", hdrDebevec)
  print("saved hdrDebevec.hdr ")
  
  # Tonemap using Drago's method to obtain 24-bit color image
  print("Tonemaping using Drago's method ... ")
  tonemapDrago = cv2.createTonemapDrago(1.0, 0.7)
  ldrDrago = tonemapDrago.process(hdrDebevec)
  ldrDrago = 3 * ldrDrago
  cv2.imwrite("ldr-Drago.jpg", ldrDrago * 255)
  print("saved ldr-Drago.jpg")
  
  # Tonemap using Durand's method obtain 24-bit color image
  print("Tonemaping using Durand's method ... ")
  tonemapDurand = cv2.createTonemapDurand(1.5,4,1.0,1,1)
  ldrDurand = tonemapDurand.process(hdrDebevec)
  ldrDurand = 3 * ldrDurand
  cv2.imwrite("ldr-Durand.jpg", ldrDurand * 255)
  print("saved ldr-Durand.jpg")
  
  # Tonemap using Reinhard's method to obtain 24-bit color image
  print("Tonemaping using Reinhard's method ... ")
  tonemapReinhard = cv2.createTonemapReinhard(1.5, 0,0,0)
  ldrReinhard = tonemapReinhard.process(hdrDebevec)
  cv2.imwrite("ldr-Reinhard.jpg", ldrReinhard * 255)
  print("saved ldr-Reinhard.jpg")
  
  # Tonemap using Mantiuk's method to obtain 24-bit color image
  print("Tonemaping using Mantiuk's method ... ")
  tonemapMantiuk = cv2.createTonemapMantiuk(2.2,0.85, 1.2)
  ldrMantiuk = tonemapMantiuk.process(hdrDebevec)
  ldrMantiuk = 3 * ldrMantiuk
  cv2.imwrite("ldr-Mantiuk.jpg", ldrMantiuk * 255)
  print("saved ldr-Mantiuk.jpg")

YUV Domain Processing

Y: 表示明亮度(Luminance或Luma) U和V: 色度(Chrominance或者Chroma), 作用是描述影像色彩及饱和度,用于指定像素的颜色。

YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。

YCbCr 则是在世界数字组织视频标准研制过程中作为ITU - R BT.601 建议的一部分,其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致,Cb,Cr 同样都指色彩,只是在表示方法上不同而已。

在YUV 家族中,YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。一般人们所讲的YUV大多是指YCbCr。YCbCr 有许多取样格式,如4∶4∶4,4∶2∶2,4∶1∶1 和4∶2∶0。

YUV 采样 色度通道的采样率可以低于亮度通道,而不会显著降低感知质量。

4:4:4 表示完全取样。 4:2:2 表示2:1的水平取样,垂直完全采样。 4:2:0 表示2:1的水平取样,垂直2:1采样。 4:1:1 表示4:1的水平取样,垂直完全采样。

最常用Y:UV记录的比重通常1:1或2:1,Video是以YUV4:2:0的方式记录,也就是我们俗称的I420,YUV4:2:0并不是说只有U(即Cb),V(即Cr)一定为0,而是指U:V互相援引,时见时隐,也就是说对于每一个行,只有一个U或者V分量,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。至于其他常见的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。

1 Noise Filter for Luma/Chroma

2 False Color Suppression

在去马赛克阶段可能会出现假色(斑点),因为在这一阶段,非常精细的细节得到解决。伪色抑制与色彩平滑类似。亮度通道不受到影响。在没有抗锯齿滤镜的相机拍摄的图像中,假色通常更为明显。如今,尽管去马赛克处理引入了假色,但其他如镜头、光学滤镜、动态压缩等。假色抑制是用来减少或消除在传感器成像或等值线管道时引入的假色。假色抑制的另一个功能是在进行锐化和色度处理时控制色度饱和度。在不同的光线条件下,如弱光或暗光条件下,在进行锐化和色度噪点处理时控制色度饱和度。

3 Edge Enhancement

  • 滤波增强边缘细节

4 Hue/Saturation Control

Hue 色调是可见光光谱中光源能量输出最大的波长。在强度与波长的关系曲线图中,色调显示为曲线的峰值。

Saturation 饱和度由光强度和光在光谱中的分布程度共同决定。不同波长的光谱中的分布程度。饱和度 用曲线斜率的陡度来表示。

在这里,红色曲线代表饱和度较低,绿色曲线代表饱和度较高的颜色,而蓝色曲线代表饱和度相当高的颜色。随着饱和度的增加,颜色会显得更加纯"。随着饱和度的降低,颜色会显得更加 "冲淡"。饱和度是色彩的纯度或鲜艳度,用没有白色来表示。饱和度为 100% 的颜色不含白色。饱和度为 0% 的颜色相当于灰色。

5 Brightness/Contrast Control

Contrast 对比度:是画面黑与白的比值,也就是从黑到白的渐变层次。比值越大,从黑到白的渐变层次就越多,从而色彩表现越丰富。 对比度对视觉效果的影响非常关键,一般来说对比度越大,图像越清晰醒目,色彩也越鲜明艳丽;而对比度小,则会让整个画面都灰蒙蒙的。高对比度对于图像的清晰度、细节表现、灰度层次表现都有很大帮助。在一些黑白反差较大的文本显示、CAD显示和黑白照片显示等方面,高对比度产品在黑白反差、清晰度、完整性等方面都具有优势。相对而言,在色彩层次方面,高对比度对图像的影响并不明显。对比度对于动态视频显示效果影响要更大一些,由于动态图像中明暗转换比较快,对比度越高,人的眼睛越容易分辨出这样的转换过程。对比度高的产品在一些暗部场景中的细节表现、清晰度和高速运动物体表现上优势更加明显。

Brightness 亮度是指画面的明亮程度,单位是堪德拉每平米(cd/m2)或称nits,也就是"烛光/每平方米"。 需要注意的是,较亮的产品不见得就是较好的产品,显示器画面过亮常常会令人感觉不适,一方面容易引起视觉疲劳,同时也使纯黑与纯白的对比降低,影响色阶和灰阶的表现。因此提高显示器亮度的同时,也要提高其对比度,否则就会出现整个显示屏发白的现象。电视机亮度不要开得太大。亮度过大,一是会加速电视机荧光物质的老化,促使荧光物质过早消耗,缩短电视机的寿命;二是增加耗电量,造成浪费;三是刺激眼睛,致使人们的视力减弱。

亮度和对比度都应用于 luma 通道 Y

3 A

References

相关推荐
幸运超级加倍~38 分钟前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
yannan201903131 小时前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法1 小时前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR1 小时前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer1 小时前
快乐数算法
算法·leetcode·职场和发展
小芒果_011 小时前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
qq_434085901 小时前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法
Beau_Will1 小时前
ZISUOJ 2024算法基础公选课练习一(2)
算法
XuanRanDev1 小时前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
gkdpjj1 小时前
C++优选算法十 哈希表
c++·算法·散列表