视频算法分类概述江召伟

视频处理算法基本上可以分为两个大类:空域算法和时域算法。要想了解在每种情况下如何有效的处理数据,就必须熟悉各种不同的视频处理方法。许多算法将空域处理技术和时域处理技术结合起来(称为“时空处理”),以实现算法要求的结果。

空域处理可以按像素顺序进行,也可以基于宏块进行。每一个像素的处理都是在空域局部进行的。按照顺序对每一个像素做处理然后产生一个输出,从前一个或下一个像素产生输出不会有结果累计效应。一个按像素顺序处理的例子是从RGB到YCbCr的颜色空间转换。通常,这种类型的计算可以在运行过程中数据到来时执行,而不必将源图像数据存储到外部存储器中。

到目前为止,我们仅仅考虑了空域局部处理。而另一类算法则涉及空域全局处理。这些方法每次针对整个图像或视频帧进行处理,通常需要在L3帧缓存和L1源图像数据存储器和中间结果之间进行数据传输。空域全局算法的例子包括离散余弦变换DCT、搜索图像内线段的Hough变换,以及直方图均衡化算法(该算法依赖于在根据分析结构修改图像之前对整幅图像的分析)。

另一个例子也说明了时域处理的重要性,那就是视频监控系统。在这样的系统中,每一帧都要和前一帧进行比较,以确定两者是否有足够的差异达到“警报条件”。换句话说,这是一种算法,用来确定是否有物体在非预期的情况下发生跨越多个帧的移动、消失或者出现。

绝大多数视频压缩算法都将空域处理和时域处理结合起来,形成一个新的类别,称为“时空处理”。在空域中,每个图像帧被分解为若干个宏块,也就是说16*16个像素的一个区域。然后再对这些宏块进行跟踪、逐帧比较,从中提取出运动估计和补偿的近似值。

带宽计算

首先,我们来看逐行扫描VGA(640*480)CMOS传感器,该传感器连接到处理器的视频接口,以每秒30帧的速率发送8比特4:2:2的YCbCr数据。

(640*480像素/帧)(2字节/像素)(30帧/秒)=18.4MB/秒

这就是进入处理器的原始数据的吞吐量。通常。每一行中还会有一些空白数据需要传输,这样算来,实际的像素时钟频率大约为24MHz。通过使用每次输出16比特(亮度和色度数据在同一时钟周期输出)的传感器模式,需要的时钟周期将变为原来的一半,但是总的数据吞吐量保持不变,因为视频接口每个时钟周期传输的数据是原来的两倍。

现在,我们要转向显示这一方面,看一个可以显示“RGB565”图像的VGALCD显示器。也就是说,每一个RGB像素值被封包为两个字节,然后在LCD显示屏上显示出来。这里有一个细微的差别,LCD通常需要一个刷新率,一般在50-80Hz。因此除非我们使用单独的具有片内帧存储器的LCD控制器芯片,否则就需要以这个刷新率不断的刷新显示器,即使传感器的数据变化率仅有30帧/秒。所以有下面的例子:

(640*480像素/帧)(2字节/像素)(75帧/秒)=46.08MB/秒

由于通常在每个时钟周期内传输一个并行的RGB565数据,所以像素时钟大约是25MHz。

视频应用

下图系统所示,在嵌入式视频应用中,某些基本的视频处理步骤是如何以各种组合形式存在的。在图中,一个隔行扫描CMOS传感器通过处理器的视频接口发送一路4:2:2YCbCr格式的视频流,然后经过去隔行处理和扫描速率转换,再传递给某些处理算法,为输出到LCD面板做好准备。这些准备包括色度重采样、伽马校正、颜色转换、缩放、图像混合,然后封包为适当的输出格式以便在LCD面板上显示。需要注意的是,这个系统仅仅是一个例子,在实际的系统中并不是所有的元件都是必需的。另外,图中这些处理步骤也可能以不同的顺序出现。

视频流输入到LCD输出的流程实例,包括了各个处理阶段

去隔行处理

当我们从一台输出隔行NTSC数据的相机中得到视频源数据时,通常需要对数据进行去隔行处理。这样,奇数行和偶数行就交织排列在存储器中,而不是分别在两个独立的视频场缓存中。不仅高效的基于宏块的视频处理需要去隔行,而且以逐行扫描格式显示隔行视频时也是需要的。有许多种方法可以完成去隔行处理,每一种都有自身的优缺点。在这里介绍其中的一些方法。

为了减弱这种人为的瑕疵,并降低系统带宽,有时候只读入场1,然后将其复制到场2所在的位置,并存储到输出缓存中,这往往也是可以接受的。这种“行复制”方法显然降低了图像分辨率,并会引起输出图像出现的放块效应,所以通常会使用一些具有更多处理的方法。这些方法包括线性插值法、中值滤波法以及运动补偿法等。

平均行,也称为bob,就是对邻近的奇数行上相同水平位置的像素取平均值,作为偶数行上对应位置的像素。这种方法还可以推广到线性插值上,也就是对邻近行上的像素取加权平均值(最高的权重分配给最近的像素),从而产生缺失的一行像素。这与垂直方向上的FIR滤波器是相似的。

除了FIR滤波器之外,利用中值滤波器也可以产生更好的去隔行结果。中值滤波是值用周围相邻的像素中处于中间的一个灰度级来代替每一个像素的亮度值,以此来消除图像中的高频噪声。还有一种备选的去隔行方法是运动检测和补偿,利用这种方法可以基于一系列帧中运动的物体来改造去隔行技术。以上这些都是现在通常使用的最高级的一些去隔行技术。

扫描转换速率

完成了视频的去隔行处理后,就需要进行扫描率的转换,这样做的目的是为了保证输入帧速率与输出显示的刷新速率相匹配。为了实现两者的均衡化,某些场可能被丢弃,也可能被复制。当然,和去隔行处理一样,为了消除突发帧传输产生的高频人为噪声,最好使用一些滤波器。

下面是一个具体的帧速率转换的例子,也就是讲一个24帧/秒的视频流转换为30帧/秒的视频流,这是NTSC制式所要求的,属于3:2下拉(pulldown)。例如,如果电影中每一帧在NTSC视频系统中仅使用一次,那么一24帧/秒的速度录制的电影在NTSC视频系统放映时的速度将提高25%(即30/24)。因此,3:2下拉被认为是一个将24帧/秒视频流转换为30帧/秒视频流的过程。实现方式是以一定的周期模式重复某些帧,如下图:

3:2下拉帧重复模式

像素处理

正如上面讨论的那样,通常使用的视频算法有许多种,基本可以分为空域和时域两大类。一种特别常见的视频算子是二维(2D)卷积内核,该算子常被应用于多种不同的图像滤波中。

二维卷积

由于视频流实际上是以特定速率运动的图像序列,因此,图像滤波器必须以足够快的速度运算以便跟上输入图像的速度。这样,就必须对图像滤波器内核进行优化,以使其以最少的处理器周期执行图像滤波。下面用一个基于二维卷积的简单图像滤波器为例进行详细说明。

卷积是图像处理中基本的运算之一。在二维卷积运算中,某个像素值是通过对其周围最接近的像素亮度值加权和得到的。由于模板(mask)的周围都是特定的像素,因此模板一般是奇数维数。模板的大小通常要比图像小很多,常用的是3*3模板,因为该木板的计算量相对比较合理,但对检测图像的边缘也足够大了。不过,也应该注意到,5*5、7*7以及更大的模板也被广泛应用。例如,相机的图像处理中就用了11*11的内核来执行极其复杂的滤波运算。

3*3内核的基本结构如下图a,下面举例说明,图像中第20行,第10列的像素卷积计算输出结果如下:

Out(20,10)=A*(19,9)+B*(19,10)+C*(19,11)+D*(20,9)+E*(20,10)+F*(20,11)+G*(21,9)+H*(21,10)+I*(21,11)

重要的是如何选择有利于计算的系数,例如,选择系数为2的幂(包括小数)时是非常有利的,因为这时的乘法可以用简单的以为操作来代替。

下图b~e中是几个有用的3*3内核。

b中的Delta函数是最简单的图像处理算法之一,直接保留当前像素而不做任何改动。

c是两种流行的边缘检测模板,第一个用来检测垂直边缘,第二个用来检测水平边缘。输出值越大,则代表着图像中边缘的梯度越大。

d中的内核是一个平滑滤波器,对周围8个像素取平均值,然后将平均值放在当前像素位置上。这种操作会产生一种“平滑”的效果,或者说是对图像进行低通滤波。

e中的滤波器被称为“锐化模板”算子,该模板可以产生一种边缘增强的图像,主要方法是用当前像素减去该像素的平滑版本(通过计算周围8个像素的平均值得到)。

3*3卷积模板及其具体方法

处理图像边界

当类似于二维卷积运算的处理发生在图像边界区域时,会出现什么情况?为了正确的进行像素的滤波,就需要一些处于边界之外的像素信息。对于这种情况,有一些校正的措施,最简单的就是忽略这些边缘区域。也就是说,一个5*5卷积内核需要当前像素上下左右各2行(或列)像素才能正确的计算。因此,为什么不忽略每个方向的两行图像数据,以保证内核总是对真是的数据执行运算呢?当然这也不总是理想的方法,因为它忽略了一些真是的图像数据。另外,当几种滤波器串联在一起使用以产生更复杂的像素处理算法时,这种策略就会不断的缩窄输入到下一级滤波器的输入图像。

处理图像边界的其他一些较为流行的方法是复制几行或几列像素,或者从左边界(上边界)绕回到前面的右边界(下边界)。这些方法在实践中是比较容易实现的,但他们会产生原来不存在的数据,因而在一定程度上破坏了滤波的结果。

或许最直接、破坏性最小的处理图像边界的方法是将位于实际图像外部的所有像素看作全0值,即黑色。尽管这种方法也会使滤波结果产生一定的失真,但是却不会像产生一些随机的非零值像素那样带来侵害性的结果。

色度重采样、伽马校正和颜色转换

前面已经讨论过如何在4:4:4YCbCr和RGB颜色空间之间进行转换,转换方式是3*3的矩阵乘法。但是,到目前为止,像素的格式仍然是在4:2:2YCbCr颜色空间。因此需要对色度信号进行重采样,以得到4:4:4格式。然后就可以直接转换到RGB空间了,就和前面已经看到的一样。

一般情况下,从4:1:1空间转换到4:2:2或4:4:4格式只需要使用一个一维滤波器。而从4:2:0格式重采样转换到4:2:2或4:4:4格式则涉及垂直采样,因此必须使用一个二维卷积滤波内核。

由于色度重采样和YCbCr到RGB空间转换都是线性操作,所以有可能将多个步骤组合在一起构成一个数学处理步骤,这样就可以更加有效的完成4:2:2YCbCr到RGB的转换。

在这个阶段,伽马校正通常也是必须的。因为伽马校正的非线性特性,所以最有效的实现方法是利用查找表,在颜色空间转换之前进行伽马校正。随后,转换过程的结果就会产生伽马校正过的RGB分量,这是适合于输出显示的格式。

缩放与剪切

所谓缩放,就是输出视频流的分辨率与输入视频流不一致。在理想情况下,为了避免输入视频流和输出视频流之间任意的缩放操作,固定的缩放比例(输入视频分辨率和输出面板分辨率)是事先定好的。

根据应用的不同,缩放可以是缩小,也可以是放大。很重要的一点是要理解要缩放的图像的内容(例如,是否存在文本和细线)。不适合的缩放可能会导致文本无法识别,或者引起缩放后的图像中原来的水平线消失了。

将输入帧大小调整为更小的输出帧,最容易的方法是剪切图像。例如,如果输入帧的大小是720*480像素,而输出是VGA帧(640*480像素),你就可以剪切掉每一行中的前40个像素和后40个像素。这样做的好处是,不管剪切还是复制图像,都不会引入人为的干扰。当然,这样也有缺点,就是每帧的内容会丢失80个像素(约11%)。有时候,这也不是什么严重的问题,因为屏幕的最左边和最右边包括最上边和最下边通常受显示器边框的影响而显得很模糊。

如果不做剪切,还有其他几种方法可以下采样(减少像素或者行数)或者上采样(增加像素或者行数)一副图像,这样允许在处理的复杂度和最终图像质量之间进行权衡。

增加或减少每行的像素

一种直接的缩放方法是剪切像素(下采样)或者复制现有像素(上采样)。也就是说,当向下缩小到一个更低的分辨率时,每一行中有些像素(或某一帧中某些行)就被抛弃掉了。这确实降低了处理的负荷,但结果也会有一定的损失。

再复杂一点,使用线性插值可以改善图像的质量。例如,缩小图像时,对水平方向或者垂直方向进行滤波将得到一个新的输出像素,然后用这个像素代替插值处理时用到的那些像素。与前面提到的技术一样,这种方法也会损失一定的信息,并且图像失真也是存在的。

如果图像质量是最关键的因素,那么也有些其他的方法可以完成缩放,而不会降低图像质量。这些方法将会根据水平和垂直缩放比例相应的保留图像中的高频成分,同时减弱了锯齿效应。例如,假定一副图像的缩放因子是Y:X,为了完成这个缩放,图像将被上采样(插值)Y倍,并过滤以便消除锯齿,然后再下采样(抽取)X倍,在实际应用中,这两个采样过程可以合并为一个多速率滤波器。

增加或减少每帧中的行数

增加或减少每行中的像素数量用到的方法一般也可以扩展到修改图像中每帧的行数上。例如,丢弃相隔的行(或者说丢弃一个隔行扫描场)就是一种快速的降低垂直分辨率的方法。但是,正如在上面提到的,不管是移除还是复制行,可能需要某些形式的垂直滤波操作,因为这些处理过程在图像中引入了人为的干扰。这里需要用到同样的滤波器策略:简单的垂直平均滤波、高阶FIR滤波,或者用于垂直缩放到一个精确比例的多速率滤波器。

显示处理

阿尔法混合

当叠加两个视频流的时候,需要知道哪个流的内容要在上面显示。这就是阿尔法混合的用武之地。阿尔法混合定义可一个alpha,用来表示叠加流和背景流之间的“透明度因子”,公式如下:

输出值=alpha*(前景像素值)+(1-alpha)*(背景像素值)

从上面的公式中可以看出,alpha为0表示完全透明的叠加,alpha为1表示完全部透明的叠加,即忽略背景图像。

有时候,alpha以单独的通道随着亮度和色度信息按像素顺序一起发送。这就产生了一个新的表示法“4:2:2:4”,其中最后一个数字表示伴随每一个4:2:2像素整体的alpha值。Alpha的编码方式和亮度分量完全相同,但是对于绝大多数应用来说,一般只需要少量的离散透明度等级。有时候,视频叠加缓存会预先与alpha相乘,或者通过查找表预先映射好,这种情况下,该视频缓存称为“成型”(shaded)视频缓存。

混合

混合操作是将叠加缓存放置在更大的图像缓存中。常见的例子是视频显示中的“画中画”模式,以及背景图或者背景视频中的图标。一般来讲,在输出图像完成之前,混合功能可以执行多次循环。换句话说,可能有许多“层”图像和视频结合在一起产生了一个混合的图像。

二维DMA的传输能力对于混合操作而言是非常有用的,因为二维DMA可以将任意大小的矩形区域缓存放置到一个更大的缓存中。需要牢记的一点是,任何图像剪切应该在混合操作之后进行,因为叠加的位置可能违反了新的剪切边界。当然,一种替换方案是保证叠加一开始就不违反边界,但是有时候这很难做到。

色度键控

旋转

许多情况下,在显示之前还需要将输出缓存中的内容进行旋转。最常见的情况是,旋转90度的整数倍。这是体现二维DMA非常有用的另外一个例子。

输出格式

针对消费类应用的大多数彩色LCD显示屏(TFT-LCD)具有数字RGB接口。显示中的每一个像素实际上有3个子像素——红绿蓝,但人眼看到的是单个的彩色像素。例如,一个320*240像素的显示屏实际具有960*240个像素分量,分别是R、G、和B子像素。每个子像素的位宽为8比特,这样就构成了常用的24比特彩色LCD显示屏的基础。

3种最常用的配置分别是:每通道8比特的RGB888格式,每通道6比特的RGB666格式,R和B通道5比特、G通道6比特的RGB565格式。

RGB888在这3种格式中具有最高的色彩表现力。由于总共24比特的分辨率,这种格式可以提供1600万种速度。在高性能的应用中,例如LCD电视,这种格式提供了高分辨率和精度。

RGB666格式在便携式电子设备中应用比较普遍。这种格式可以提供262000种色度,总共有18比特分辨率。但是,由于18个引脚(6+6+6)的数据线不符合16比特处理器的数据路径,因此,一种流行的行业折中方案是分别使用5比特表示R和B分量,而用6比特表示G(5+6+5=16比特数据总线),然后连接到RGB666显示面板上。这种方式工作的很好,因为绿色是3种颜色中对视觉影响最重要的一种颜色。显示面板中红色和蓝色的最低有效位连接到了各自的最高有效位。这就保证了每一个颜色通道都具有完全的动态范围(从全亮到全黑)。

THE END
1.计算机专业中所用到的视频基础知识视频基本概念 (1)根据视觉暂留原理,连续的图像变化每秒超过24帧(Frame)画面以上时,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的图像画面构成即视频。在这里插入图片描述 (2)一个完整的视频文件主要由音频和视频两部分组成的,视频编码是为了压缩视频数据而做的一种压缩算法,是音视频https://baijiahao.baidu.com/s?id=1808949751313003336&wfr=spider&for=pc
2.“AI”科普丨Sora如何复现?《长视频生成》综述:挑战方法与前景计算机视觉和人工智能领域经历了变革性的增长,特别是在视频生成领域。最近,开发出能够产生高质量和逼真视频序列的算法激增。值得注意的是,长视频的生成,以其延长的持续时间和复杂的内容为特征,为社区提出了新的挑战并激发了新的研究方向。 尽管如此,关于长视频生成的研究仍存在差距。当前研究中的一个缺口是缺乏长视频https://www.163.com/dy/article/IUSDI6UK0511PEBT.html
3.GitHubguanfuchen/video基于视频的目标检测算法研究 对相应的视频目标检测论文整理实现综述文档。 知乎上有关该方向的讨论视频中的目标检测与图像中的目标检测具体有什么区别?。 简单来说,视频检测是比单张图片检测多了Temporal Context(时间上下文)的信息。不同方法想利用这些Context来解决的问题并不相同。一类方法是关注如何使用这部分信息来加https://github.com/guanfuchen/video_obj
4.视频算法工程师招聘网2025年视频算法工程师招聘信息猎聘2025年视频算法工程师招聘信息,海量高薪猎头职位等你来选,了解视频算法工程师岗位要求、薪资待遇等真实招聘信息,找高薪职位,上猎聘!https://www.liepin.com/zpshipinsuanfagongchengshi/
5.视频版权检测算法CompetitionsCCF大数据与计算智能大赛(CCF Big Data & Computing Intelligence Contest,简称CCF BDCI)是由中国计算机学会大数据专家委员会于2013年创办的国际化智能算法、创新应用和大数据系统大型挑战赛事,是全球大数据与人工智能领域最具影响力的活动之一。2019 CCF大数据与计算智能大赛由教育部高等学校计算机类专业教学指导委员会、国家https://www.datafountain.cn/competitions/354/
6.深度学习视频处理算法深度学习模型预测华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:深度学习视频处理算法。https://support.huaweicloud.com/topic/986960-1-S
7.短视频推荐算法java51CTO博客已为您找到关于短视频推荐算法java的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及短视频推荐算法java问答内容。更多短视频推荐算法java相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/11ec4b238f401a2.html
8.视频分析算法的原理简介csdn视频解析算法视频分析算法的原理简介 智能视频(IV,IntelligentVideo)技术源自计算机视觉(CV,ComputerVision)与人工智能(AI,ArtificialIntelligent)的研究,其发展目标在于将图像与事件描述之间建立一种映射关系,使计算机从纷繁的视频图像中分辩、识别出关键目标物体,这一研究应用于安防视频监控系统、将能借助计算机强大的数据处理能力过滤掉https://blog.csdn.net/huapeng_guo/article/details/7684987
9.公共安全视频密码算法检测工具的设计与实现检测认证GB 35114-2017《公共安全视频监控联网信息安全技术要求》的技术核心是利用国产密码算法解决视频监控联网系统信令及视频传输、存储的信息安全问题。 GB 35114-2017《公共安全视频监控联网信息安全技术要求》的技术核心是利用国产密码算法解决视频监控联网系统信令及视频传输、存储的信息安全问题。本文参照国密算法验证的相关方法http://news.21csp.com.cn/c25/202208/11416710.html
10.基于MPEG2的三种视频加密算法理论上MPEG2视频直接加密算法具有很高的安全性,DES算法具有很高的安全性。MPEG根据视频选择性加密算法MPEG2视频编码特性的加密方法是主要方向。(1)基于MPEG2视频帧结构的选择性加密算法,最早提出的加密思想只加密一帧,因为一帧包含了大量的视频信息,P帧和B帧主要用于https://www.55tools.com/news/0375.html
11.短视频内容算法:如何在算法推荐时代引爆短视频(豆瓣)什么才是掌控短视频分发“看不见的手”? 本书从传播学、心理学、信息学等多学科角度出发,结合一线操盘经验、实战案例、详尽的数据分析,揭示算法推荐的底层规律。 作者希望给想进入短视频内容行业或正在尝试转型的内容创作者,以及想通过短视频内容营销实现弯道超车的企业带来帮助。 产品、流量、用户和数据,正在形成以内https://book.douban.com/subject/35216809/
12.全面解析腾讯会议的视频前处理算法第二,桌面端是腾讯会议的核心场景之一,自研推理引擎在桌面端的异构计算和并行计算优化方向积累丰富,有力的支撑了桌面端的音视频算法。 第三,自研推理引擎可以快速定制化和响应业务的需求,特别是对于腾讯会议这种快速迭代的产品来说,快速定制化和迭代的能力非常重要。 https://www.infoq.cn/article/BRUFWUue3cgmz4YouWWt
13.一种新的近重复监控视频检测算法AET受参考文献[4]启发,本文在提取关键帧图像的特征提取之前先在镜头层次提取出一种新的特征作为镜头的时序特征,再提取全局颜色特征和更精确的SURF局部特征进行检测,最终得到与查询视频近重复的视频,算法具体框架如图1所示。 1 近重复监控视频检测算法 1.1 镜头边界检测 http://www.chinaaet.com/article/213769
14.高通CVPR神研究:视频处理计算量降低78%,教卷积层自己“挑像素因此,降低视频算法计算量,一直是国内外AI视觉算法大牛们致力研究的问题。 最近有两篇CVPR 2021的论文,就引起了视频圈的不少关注。 它们教算法模型学会了自己“省算力”,将视频处理算法的计算效率提升了几倍不止,性能也并不下降! 教AI自己省算力,计算量-78% https://m.thepaper.cn/newsDetail_forward_13149498
15.应用Camshift跟踪算法提高视频中人脸检测速度3.3 Camshift算法 Camshift算法就是对视频里的每一帧图像全部做Meanshift运算, 并且把计算出来的目标的大小及位置当做下一帧Meanshift算法中搜索框的大小起始值及它的中心位置. 利用迭代运算的形式实现对视频里的目标进行跟踪. Camshift算法流程如图5所示. 图5Camshift算法流程图 https://c-s-a.org.cn/html/2020/9/7645.html
16.用深度学习设计图像视频压缩算法:更简洁更强大雷峰网总体而言,借助于深度学习设计视频和图像压缩算法是一项非常具有前景但也非常具有挑战性的技术。目前,其已经在人脸识别等领域证明了它的强大能力,有理由相信在不久的将来,深度学习技术将为图像视频压缩领域带来更大的突破。 图6:在同等压缩率下压缩视觉效果对比。上图为图鸭所提出的算法,下图为 JPEG2000 算法。在纹理https://www.leiphone.com/category/ai/rUFVbAmPDRP1bwgP.html