《数字视频和高清:算法和接口》一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”难题和非线性图像编码

相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
72 0
|
2月前
|
机器学习/深度学习 算法 数据库
KNN和SVM实现对LFW人像图像数据集的分类应用
KNN和SVM实现对LFW人像图像数据集的分类应用
36 0
|
9天前
|
编解码 监控 算法
图像和视频处理中DSP算法的研究与发展
图像和视频处理中DSP算法的研究与发展
18 2
|
3月前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
73 0
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于DCT变换的彩色图像双重水印嵌入和提取算法matlab仿真
**算法摘要:** - 图形展示:展示灰度与彩色图像水印应用,主辅水印嵌入。 - 软件环境:MATLAB 2022a。 - 算法原理:双重水印,转换至YCbCr/YIQ,仅影响亮度;图像分割为M×N块,DCT变换后嵌入水印。 - 流程概览:两步水印嵌入,每步对应不同图示表示。 - 核心代码未提供。
|
5天前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
7天前
|
算法 数据安全/隐私保护 数据格式
基于混沌序列的图像加解密算法matlab仿真,并输出加解密之后的直方图
该内容是一个关于混沌系统理论及其在图像加解密算法中的应用摘要。介绍了使用matlab2022a运行的算法,重点阐述了混沌系统的特性,如确定性、非线性、初值敏感性等,并以Logistic映射为例展示混沌序列生成。图像加解密流程包括预处理、混沌序列生成、数据混淆和扩散,以及密钥管理。提供了部分核心程序,涉及混沌序列用于图像像素的混淆和扩散过程,通过位操作实现加密。
|
16天前
|
机器学习/深度学习 文字识别 算法
MATLAB图像倾斜校正算法实现:图像倾斜角检测及校正
MATLAB图像倾斜校正算法实现:图像倾斜角检测及校正
11 0
|
18天前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
22 0
|
2月前
|
存储 算法 算法框架/工具
基于HSV色度空间的图像深度信息提取算法FPGA实现,包含testbench和MATLAB辅助验证程序
该文档介绍了在一个FPGA项目中使用HSV色彩模型提取图像深度信息的过程。通过将RGB图像转换为HSV,然后利用明度与深度的非线性映射估计深度。软件版本为Vivado 2019.2和MATLAB 2022a。算法在MATLAB中进行了对比测试,并在FPGA上实现了优化,包括流水线并行处理和查找表技术。提供的Verilog代码段展示了RGB到灰度的转换。实验结果和核心程序的图片未显示。