《数字视频和高清:算法和接口》一1.8数字图像的表示方法

简介: 本节书摘来华章计算机《数字视频和高清:算法和接口》一书中的第1章 ,第1.8节, [加]查尔斯·波因顿(Charles Poynton)著 刘开华 褚晶辉 马永涛 吕卫 宫霄霖 等译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.8数字图像的表示方法

静态数码图像和动态序列可用许多不同的文件、内存和流媒体格式用来传输。大多数情况下每个像素的格式都有3个分量值(来描绘附加的红、绿和蓝三种颜色分量)。在消费级别的电子和商品计算中,大多数格式每个分量会有8位。在专业应用,如在视频工作室和数字影院的应用中,每个分量上有10位、12位,乃至更多位数也是正常的。
成像系统通常用于优化人类感知的其他方面,举例来说:JPEG和MPEG压缩系统利用视觉的空间频率特性进行压缩。这样的优化通常称为感知编码。
实际中,几乎全部商业成像系统都使用感知编码,即像素值按照接近人视觉的灰度级辨别能力水平排列。在色彩学中,大写字母R、G、B用来表示三色值,其值的大小和三个波段上光的能量成比例。三色值的感知是不均匀的。不管是显式的还是隐式的,在所有商业数字图像处理系统中,当需要显示的RGB三色值的幂次上升到大约1/2.2(也就是大约0.45)和1/2.6(也就是大约0.38)之间时,像素分量值就会进行编码。 这样构造出来的像素值用加上撇号的字母表示:R′G′B′(尽管上撇号经常省略,以免引起混乱)。
为了对图像数据进行合理可靠地交换和解释,数字图像标准定义了参考黑色和参考白色像素值。数字图像标准通常为参考白色指定一个目标照度,大多数数字图像标准没有为参考黑色提供特定的反射系数或者相对照度,这暗示我们的显示系统将参考黑色设置成尽可能的黑。
在计算过程中,8位的数字图像数据的范围是从编码为0的参考黑色到编码为255的参考白色。sRGB标准要求在显示时指数(γ,gamma)要达到2.2。参考白色显示时亮度则应该达到80cd·m-2,但实际中的值达到320cd·m-2 都是正常的。
在消费级的数码视频中,图像数据都将参考黑色设置为16,将参考白色设置为235的8位分量进行编码(在图像工作室中,一般是10位编码)。图像工作室要求显示时的指数要达到2.4。通常的做法是在黑暗的观测环境(约1lx)和黑暗的周围环境(约1%)下将参考白色的亮度设置成100cd·m-2,当满足这些条件时,就能在消费者所处的环境中可靠地显示。消费类显示器比100cd·m-2 更明亮是正常的;消费者的观看环境经常是相当明亮的(大约100lx),周围的环境往往只不过是昏暗的(5%)。由于消费类显示器和观看条件不同于图像工作室,保持画面的外观就需要进行显示调整。
交互式数字视频显示(DVI)系统,定义为能承载R′G′B′数值范围为0~255的计算机显示系统。高清晰度多媒体接口(HDMI)和显示端口接口也同时兼容以上编码,不过这里的R′G′B′值范围是16~235,能够容纳比8位更宽的位宽,而且也同时兼容YCBCR编码。串行数字接口(SDI)和高清串行数字接口(HDSDI)都能够容纳10位位宽的R′G′B′或者YCBCR编码,它们的范围为64~940(即16×4,219×4)。

平版印刷的图像数据通常定义为8位的编码,编码值代表每个像素位置的青色,品红,黄色和黑色(CMYK)的数量,如(0,0,0,0)代表没有显示(显示基板的颜色,通常是白色),(0,0,0,255)则代表黑色。感知均匀性问题通常使用打印机中网点扩大的概念来表示。用户接口通常以0~100来表示0~255的范围,换而言之,这时的接口值表示的是百分比。

相关文章
|
21天前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
38 3
|
5月前
|
数据采集 机器学习/深度学习 算法
机器学习方法之决策树算法
决策树算法是一种常用的机器学习方法,可以应用于分类和回归任务。通过递归地将数据集划分为更小的子集,从而形成一棵树状的结构模型。每个内部节点代表一个特征的判断,每个分支代表这个特征的某个取值或范围,每个叶节点则表示预测结果。
169 1
|
22天前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
31 4
|
26天前
|
算法 索引
HashMap扩容时的rehash方法中(e.hash & oldCap) == 0算法推导
HashMap在扩容时,会创建一个新数组,并将旧数组中的数据迁移过去。通过(e.hash & oldCap)是否等于0,数据被巧妙地分为两类:一类保持原有索引位置,另一类索引位置增加旧数组长度。此过程确保了数据均匀分布,提高了查询效率。
36 2
|
27天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
50 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
47 9
|
29天前
|
存储 算法 Java
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
前缀(波兰)表达式、中缀表达式和后缀(逆波兰)表达式的基本概念、计算机求值方法,以及如何将中缀表达式转换为后缀表达式,并提供了相应的Java代码实现和测试结果。
30 0
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
|
3月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法
|
3月前
|
JavaScript 算法 前端开发
JS算法必备之Array常用操作方法
这篇文章详细介绍了JavaScript中数组的创建、检测、转换、排序、操作方法以及迭代方法等,提供了数组操作的全面指南。
JS算法必备之Array常用操作方法
|
3月前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
32 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
下一篇
无影云桌面