灰度

在摄影,计算和比色测量中,灰度或灰度图像是其中每个像素的值是仅表示一定量光的单个样本,即它仅携带强度信息的图像。 这种类型的图像,也被称为黑白或单色,仅由灰色阴影组成,从最弱的黑色变为最强的白色。

灰度图像不同于一位双色调黑白图像,在计算机成像环境下,图像只有黑色和白色(也称为双层或二值图像)两种颜色。 灰度图像之间有许多灰色阴影。

灰度图像可以是根据频率(或波长)的特定加权组合来测量每个像素处的光强度的结果,并且在这种情况下,当仅有单个频率时(实际上,窄频带)被捕获。 原则上,频率可以来自电磁频谱中的任何地方(例如红外线,可见光,紫外线等)。

比色(或更具体地为光度学)灰度图像是具有定义的灰度色彩空间的图像,其将存储的数字样本值映射到标准色彩空间的消色差信道,其本身基于人类视觉的测量属性。

如果原始彩色图像没有定义的彩色空间,或者如果灰度图像不打算具有与彩色图像相同的人类感知的消色差强度,则没有从这样的彩色图像到灰度图像的唯一映射。

数字表示
像素的强度在最小值和最大值之间的给定范围内表达,包括端值。 这个范围以抽象的方式表示为从0(或0%)(总缺失,黑色)和1(或100%)(总存在,白色)的范围,其间具有任何小数值。 这种符号在学术论文中使用,但这并没有定义比色法的“黑色”或“白色”。 有时刻度会反转,如在打印中数字强度表示在半色调中使用了多少墨水,其中0%表示纸张白色(无墨水),100%表示纯黑色(全部墨水)。

在计算中,虽然可以通过有理数计算灰度,但通常会对图像像素进行量化以将它们存储为无符号整数,以减少所需的存储和计算。一些早期的灰度显示器最多只能显示十六种不同的色调,这些色调将以4位的二进制形式存储。 但是,今天用于视觉显示(在屏幕上和印刷上)的灰度图像(例如照片)通常以每个采样像素8位存储。 该像素深度允许记录256种不同的强度(即,灰度阴影),并且还可以简化计算,因为每个像素采样可以作为一个完整字节单独访问。 然而,如果这些强度与它们在该像素处表示的物理光量成比例(称为线性编码或缩放),则相邻黑色阴影之间的差异可能是非常明显的带状伪影,而许多较亮的阴影将通过编码大量感知上难以区分的增量而被“浪费”。 因此,阴影通常会均匀分布在伽玛压缩的非线性比例上,这更好地近似于黑暗和浅色阴影的均匀感知增量,通常使这256个阴影足够(仅仅几乎不)以避免明显的增量。

技术用途(例如在医学成像或遥感应用中)通常需要更多级别,以充分利用传感器精度(通常为每个样本10或12位)并减少计算中的舍入误差。 由于计算机有效地管理16位字,因此每个样本16个位(65,536个级别)通常是此类用途的便利选择。 虽然浏览器和许多成像程序倾向于忽略每个像素的低8位,但TIFF和PNG(以及其他)图像文件格式原生支持16位灰度。 内部用于计算和工作存储,图像处理软件通常使用16位或32位的整数或浮点数。

将颜色转换为灰度
一般来说,将任意彩色图像转换为灰度并不是唯一的; 色彩通道的不同加权有效地代表了在相机上使用不同颜色的照相滤光片拍摄黑白胶片的效果。

比色(感知亮度保持)转换为灰度

一种常见的策略是使用测光原理或更广泛的比色法来计算灰度值(在目标灰度色彩空间中),以便与原始彩色图像(根据其色彩空间)具有相同的亮度(技术上的相对亮度) 。 除了相同的(相对)亮度之外,该方法还确保两幅图像在显示时具有相同的绝对亮度,可以通过仪器在每平方米坎德拉的SI单位中测量,在给定的图像区域中给出相等的白点。 亮度本身是使用人类视觉的标准模型定义的,因此保留灰度图像中的亮度也保持其他感知亮度度量,例如由线性亮度Y确定的L * (如在1976 CIE L ab颜色空间中)本身(如在CIE 1931 XYZ色彩空间中),我们在这里将其称为Y 线性以避免任何模糊性。

比色(感知亮度保持)转换为灰度
一种常见的策略是使用测光原理或者更广泛的比色法来计算灰度值(在目标灰度色彩空间中),以便具有与原始彩色图像相同的亮度(技术上相对亮度)(根据其色彩空间)。 除了相同的(相对)亮度之外,该方法还确保两个图像在显示时具有相同的绝对亮度,这可以通过仪器以其每平方米坎德拉的SI单位,在图像的任何给定区域中测量,给予相等的白点。 亮度本身是使用人类视觉的标准模型定义的,因此保留灰度图像中的亮度也保留了其他感知亮度度量,例如由线性亮度Y本身确定的L *(如在1976 CIE Lab颜色空间中) (如在CIE 1931 XYZ色彩空间中),我们在这里将其称为Ylinear以避免任何含糊不清。

为了将基于典型伽马压缩(非线性)RGB颜色模型的颜色空间中的颜色转换为其亮度的灰度表示,必须首先通过伽玛扩展(线性化)去除伽马压缩函数以将图像转换为线性RGB色彩空间,以便可以将适当的加权和应用于线性色彩分量  )来计算线性亮度Y 线性 ,如果灰度结果也要被编码并存储在典型的非线性颜色空间中,则线性亮度可以再次被伽马压缩。

对于常见的sRGB色彩空间,gamma扩展被定义为


其中C srgb表示三个伽马压缩的sRGB原色( R srgb , G srgbB srgb ,每个在[0,1]范围内)中的任何一个, C linear是相应的线性强度值( R 线性 , G 线性 ,和B 线性 ,范围[0,1])。 然后,线性亮度被计算为三个线性强度值的加权和。 sRGB色彩空间是根据CIE 1931 线性亮度Y 线性定义的 ,它由下式给出


这三个特定系数表示典型三色人类对精确记录的光线的强度(亮度)感知。 709添加剂原色(色度),用于定义sRGB。 人类视觉对绿色最为敏感,因此这个系数值最大(0.7152),对蓝色最不敏感,所以这个系数最小(0.0722)。 为了以线性RGB编码灰度强度,可以将三个颜色分量中的每一个设置为等于计算的线性亮度  (取代  由价值观  得到这个线性灰度),然后通常需要进行伽马压缩以恢复到传统的非线性表示。 对于sRGB,它的三个原色中的每一个然后被设置为相同的伽玛压缩Y srgb


因为三个sRGB组件是相同的,表明它实际上是一个灰色图像(不是颜色),所以只需要存储这些值一次,我们称之为生成的灰度图像。 这就是它通常以sRGB兼容图像格式存储的方式,支持单通道灰度表示,如JPEG或PNG。 识别sRGB图像的Web浏览器和其他软件应该为这样的灰度图像生成与在所有三个颜色通道中具有相同值的“颜色”sRGB图像相同的渲染。

视频系统中的亮度编码
对于在诸如PAL,SECAM和NTSC的标准彩色电视和视频系统中使用的诸如Y’UV及其亲属之类的色彩空间中的图像,非线性亮度分量(Y’)直接从伽玛压缩的主强度作为加权总和,尽管不是比色亮度的完美表示,但是可以在没有用于光度/比色计算的伽马膨胀和压缩的情况下更快速地计算。 在PAL和NTSC使用的Y’UV和Y’IQ模型中,rec601亮度(Y’)分量计算为


在这里我们使用素数来区分这些非线性值与sRGB非线性值(上面讨论过的),它们使用了不同的伽马压缩公式,以及线性RGB分量。 由ATSC开发的用于HDTV的ITU-R BT.709标准使用不同的颜色系数,计算亮度分量

 。
虽然这些数值与上面sRGB中使用的系数相同,但效果不同,因为它们在这里直接应用于伽马压缩值而不是线性化值。 用于HDR电视的ITU-R BT.2100标准使用不同的系数,计算亮度分量

 。
通常,这些颜色空间在渲染以供查看之前被转换回非线性R’G’B’。 只要有足够的精度,他们就可以被准确渲染。

但是,如果直接将亮度分量Y’本身用作彩色图像的灰度表示,则不保留亮度:两种颜色可以具有相同的亮度Y’,但是具有不同的CIE线性亮度Y (并且因此定义为不同的非线性Y srgb以上),因此对于典型的人来说比原始颜色更暗或更亮。 类似地,具有相同亮度Y(并且因此相同的Y srgb )的两种颜色通常将通过上面的Y’亮度定义中的任一个具有不同的亮度。

彩色图像通常由多个堆叠的彩色通道构成,每个彩色通道代表给定通道的值级别。 例如,RGB图像由三个独立的红色,绿色和蓝色原色分量通道组成; CMYK图像具有青色,品红色,黄色和黑色墨板等四个通道。

以下是完整的RGB彩色图像的颜色通道分割示例。 左边的列显示了自然颜色的孤立的颜色通道,而右边则显示了它们的灰度等效值:

反过来也是可能的:从他们单独的灰度通道构建一个全彩色图像。 通过改变频道,使用偏移,旋转和其他操作,可以实现艺术效果,而不是准确地再现原始图像。