《数字视频和高清:算法和接口》一3.4“编码100”难题和非线性图像编码

简介: 本文讲的是数字视频和高清:算法和接口一3.4“编码100”难题和非线性图像编码,本节书摘来华章计算机《数字视频和高清:算法和接口》一书中的第3章,第3.4节, George T.Heineman Gary Pollice StanleySelkow 著杨晨 曹如进 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4“编码100”难题和非线性图像编码

本文讲的是数字视频和高清:算法和接口一3.4“编码100”难题和非线性图像编码,考虑8位像素值正比于照度,零值代表黑色,最大编码值255代表白色,如图3-3所示。编码100位于某个尺度的点上,这个尺度是,相邻的照度值比率是1%。由于视力的对比度阈值是1%,编码100和101的采样的区域的边界是可以看得到的。
像素值降低到小于100时,相邻代码的不同亮度的差别越来越容易感觉到:在编码20中,相邻的照度值的比率达到5%。在灰色阴影平滑变化的大区域中,这些照度的差异很可能是可见的甚至是令人讨厌的,可见的照度跳跃会产生轮廓或者带状伪影。
高于100的线性光编码,没有带状伪影,然而随着码值的增加逐渐接近白色,编码减小了感官的效应;编码200时,相邻码值之间的照度比值仅为0.5%,低于视觉阈值。编码200到201在视觉上没有什么区别,编码201在不被察觉的情况下可以被丢弃。
高品质的图像显示要求白色到黑色照度的对比度至少为30比1。在8位线性光编码中,最亮照度(编码255)与最暗照度的比率在没有光带(编码100)的情况下仅是2.55比1。因此8位的线性光编码不适用于要求30比1比率的高质量图像。
缓解“编码100”问题的方法是将尺度上端点放在码值远远高于100的地方,如图3-4所示。如果亮度由12位的数据所表示,白色编码为4095,编码100和白色之间的照度比达到40.95∶1。然而4096中大量的亮度值不能被视觉区分;比如码值4000到4039在视觉上不能区分。这样我们可以用少得多的代码值,并且根据光功率非线性将他们放在一个感官的尺度上,而不是使用大量的位值对照度线性编码。这种非线性光——或者感知均匀性——在数码影像中的编码是很普遍的;它运作的这样完美,许多从业人士甚至不知道它已经发生了。

screenshot
图3-3“编码100”线性光编码的问题


screenshot
图34“编码100”问题的缓解

在视频(包括motion—JPEG,MPEG和H.264/AVC标准)中,数字摄影领域(包括 JPEG/JFIF/Exif标准),R′G′B′分量采用均匀感知的方式编码。一个视频显示含有从码值到照度值的非线性转换函数,这个函数可以媲美绘制在图1-7上的功能,并且接近人类视觉明度感知的倒数。感知均匀性是通过采用对每一个场景估计感知的三刺激值的非线性转换函数来实现——伽马修正,伽马修正参数的选择——在默认情况下,采用手动或者自动的方式。因此预期的图像是在基准视觉环境的参考显示器上获得的。因此伽马修正是整合了感知均匀性和图像渲染应该考虑的因素。
在计算中真彩色图像由每一个8位的R′G′B′分量表示,我将会在后面章节做进一步的介绍。每一个分量是从0(黑色)到255(白色)。灰度和真彩色数据在计算中通常会被编码,以表现出接近于感知的均匀性。这个步骤与光强度不成正比,而是按照感知的间隔均匀隔开。所需步骤的数量依赖于显示系统、观看环境,以及感知的整体特性。
参考显示屏以及视频工作室的观看参数在发展史上不太规范或者是根本就不规范。在第37章,作者总结了一套切合实际的参数。
视频标准比如BT.709 和SMPTE ST 274之前上建立了标准的光电转换函数(OECF),犹如视频拥有的场景被称为图像状态,或者就好像照相机没有(校准)。实际上,视频是有效输出(显示)的,最重要的不是OECF而是EOCF!非线性编码是第27章的中心话题,其中,也会介绍伽马修正,那一章将会讨论OECF和EOCF。
如果视觉阈值严格按照跨越全音阶的1%关系表现,那么亮度编码可以按照对数编码,对于一个100∶1的对比度,需要462个编码值,对应于9位编码值。
第24章将会展开关于明度和亮度建模的原因,在大多数数字成像系统里我们把视觉对明度的灵敏度建模为一个幂函数,而不是将其建模为一个对数函数。由显示器产生的红色、绿色或者蓝色原色光的照度是与编码值成正比上升到接近于2.4次幂函数的。screenshot1.01计算了线性光在最高的8位编码值(255)和下一个最低值(254)的比率,由此可知人类视觉的1.01比率要求得到满足。随着码值的减小,该比率变大。但是随着照度的减小,满足视觉的“JND”照度比率变大。2.4次幂函数被证明对于感官要求匹配得非常好。
8位成像系统通常被声明拥有的动态范围为255∶1或者256∶1。这个声明源自于假设图像数据的编码值与光线线性相关。然而,假设一个2.2幂函数或者2.4幂函数的显示器:对于一个理想的显示器,与编码1相关联的动态范围接近一百万比一,大部分的8位图像数据是根据感知来编码的,例如sRGB标准。在实际中,显示器和它的环境的物理参数是限制在这个动态范围里的。
几十年里,阴极射线管(CRT)是用于电视接收机和台式计算机的主要显示装置。令人惊讶的是,CRT所表现出的EOCF非常接近视觉的明度灵敏度的倒数!视觉的非线性光照响应与CRT固有的幂函数相结合使得显示编值(从历史上看,电压值)表现出感知的均匀性,如图3-5和图3-6(相反)所示。对于电子成像技术的前半个世纪,CRT的特点是感知均匀性的基础。大多数现代电子设备(比如LCD、PDP,以及DLP)不具有像CRT固有的物理幂函数。然而,信号处理电路施加任何传递函数是必要的,以至于该装置的表现就好像是它有一个从信号值到显示三刺激值的2.2幂函数或 2.4幂函数。
screenshot
灰度渐变在CRT显示器所显示的灰度坡道是通过把从0到255的连续整数写入帧的缓冲列生成的,经过了数/模转换器(DAC),呈递给CRT显示器,一个感知均匀性的明度扫描结果就出现了。一个天真的实验者可能会错误地得到一个结论——编码值正比于光强度
screenshot
由CIE相对照度增强(Y,正比于光强度,在量程的中间位置)以及CIE明度(L*,在量程的底部位置)。在屏幕上中间点位置的明度值是位于黑色和白色中间,编码值和明度之间接近线性关系,然而中间点的照度值大约是白色的18%,由CRT产生的照度大约正比于码值的2.4幂函数。明度接近于视频信号照度值的0.42幂函数。令人惊讶的是这两者之间的关系近似互逆。这种近乎完美的消除,导致许多在视频,计算机图形,数字图像处理的工作人员误解了强度的含义,低估或者完全忽视非线性转换函数的重要性

在视频中,视觉上的感知均匀性被融入到每一个摄像机中的伽马修正电路使用。由伽马修正所得到的R′G′B′值(这些值被处理),记录,并且发布到视频中——大概接近目标显示照度的0.42幂函数:R′G′B′近似是感知均匀的。感知均匀性允许用户用少到8位的值来代表每一个R′G′B′分量。没有感知均匀性,每一个分量至少需要11位或者更多的数据来表示。数字静态相机图像编码标准,例如,JPEG/Exif标准采用一个类似的方法。

原文标题:数字视频和高清:算法和接口一3.4“编码100”难题和非线性图像编码

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
2月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
45 4
|
1月前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
77 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
机器学习/深度学习 人工智能 算法
【MM2024】面向 StableDiffusion 的多目标图像编辑算法 VICTORIA
阿里云人工智能平台 PAI 团队与华南理工大学合作在国际多媒体顶级会议 ACM MM2024 上发表 VICTORIA 算法,这是一种面向 StableDiffusion 的多目标图像编辑算法。VICTORIA 通过文本依存关系来修正图像编辑过程中的交叉注意力图,从而确保关系对象的一致性,支持用户通过修改描述性提示一次性编辑多个目标。
|
3月前
|
机器学习/深度学习 算法 Java
[算法与数据结构] 谈谈线性查找法~
该文章详细介绍了线性查找法的基本概念与实现方法,通过Java代码示例解释了如何在一个数组中查找特定元素,并分析了该算法的时间复杂度。
|
2月前
|
人工智能 算法 BI
【算法】 线性DP(C/C++)
【算法】 线性DP(C/C++)
|
2月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
|
4月前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
55 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法