基于时空滤波和运动自适应的视频的去隔行算法

这篇具有很好参考价值的文章主要介绍了基于时空滤波和运动自适应的视频的去隔行算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💡 本工程由贾天保、陈璐、魏群弢与2023年12月共同开发并于Dec 22, 2023首次发布

GitHub链接

EddieTyrael/Interlaced-to-Progressive (github.com)

CSDN链接

基于时空滤波和运动自适应的视频的去隔行算法

问题背景

在模拟电视时期,由于人眼视觉特性、带宽限制以及CRT显示器的特性,电视系统全部采用隔行扫描的方式进行传输和显示。而在LCD显示器推出和电视系统数字化之后,由于隔行扫描仍让能够大大节约带宽,因此隔行扫描的方式在当时仍然被很多标准采纳。但隔行扫描有其明显的缺点:

  1. 闪烁(flicker)。行间闪烁主要和细小的水平边缘有关,即图像中一条沿着水平方向的边,如门窗的上下边。因为隔行信号的特性,一个精细的水平边缘只能在相邻的两场中的一场显示,而在另一场中就消失了,这样这个精细的水平边缘就相当于以帧频(30Hz或者25Hz)在进行显示。观察者可以明显的觉察到这种异常的显示而如果这种边缘有垂直运动的话,这种闪烁也会随着垂直运动而移动,严重影响了观看体验。
  2. 锯齿(jaggies)。锯齿现象是隔行信号显示的一个普遍的现象,主要出现在静止或运动物体的对角线斜边处。对于静止或运动较少的图像,较低的垂直分辨率会引起台阶效应。当图像包含运动时,情况就变得更糟糕了。隔行图像的边缘每场只有一半的行数进行更新,这
    样就导致损失了边缘的细节。进一步,当边缘运动起来之后,下一场的边缘就会出现相对的位移,锯齿装的边缘就这样从一场运动到下一场,产生连续的锯齿现象。
  3. 爬行(crawling)。爬行是一种隔行信号产生的虚像,它主要出现在没有运动和较少细节的图像中。当观察者离显示设备比较近的时候,这种现象更为明显。因为每条隔行扫描线每帧只更新一次,人眼有时会盯住一组扫描线。在下一场,新的扫描线会出现在旧的扫描线之间,看起来好像原来的那组扫描线向上或向下移动到了一个新的位置上。再下一场,这一组扫描线又出现在原来的位置。最终的观看效果就是一组扫描线快速的向上或向下移动,从而引起爬行现象。
  4. 羽化(feather)。通常会出现在运动物体的轮廓处,主要是由于运动检测失误导致的。当运动的物体被误判断为静止,为了复原静止图像就会采用场间插值处理,那么在运动物体的轮廓边缘处,两个存在相对位移图像直接拼合,将导致图像出现虚影。

为了克服隔行扫描的诸多缺点,电视系统在带宽和处理能力允许之后就逐渐走向了逐行扫描的方式。但在这段过渡期,有诸多素材仍是隔行扫描的方式,因此在逐行扫描的系统中使用这些隔行扫描的素材便成为必须,也就催生出了本工程的基本应用场景。

功能概述

本工程使用滤波的方法实现了隔行视频的逐行化。输入以及输出均采用不带有辅助信息的纯YUV数据描述的视频(图像序列),可以使用附带的YUVViewerPlus打开并查看相应文件。

算法理论

去隔行插值技术的主要思想是利用时域和空域中的临近像素点对待处理像素点进行估算。本工程中采用了线性插值和运动自适应两种方法,具体如下。

  1. 线性方法
    1. 空间插值
    2. 时间插值
    3. 时空混合插值
  2. 运动自适应方法

空间插值(场内插值):

采用行平均法,根据上下行采样点数据的平均计算该未知采样点。

等效滤波器:

h ( m , n ) = { 7 16 , ( m , n ) = ( 1 , 0 ) , ( − 1 , 0 ) 1 16 , ( m , n ) = ( 3 , 0 ) , ( − 3 , 0 ) 0 , o t h e r w i s e h(m,n)=\left\{ \begin{array}{lr} \frac{7}{16}, & (m,n)=(1,0),(-1,0)\\\\ \frac{1}{16}, & (m,n)=(3,0),(-3,0)\\\\ 0, & otherwise\end{array} \right. h(m,n)= 167,161,0,(m,n)=(1,0),(1,0)(m,n)=(3,0),(3,0)otherwise

时间插值(场间插值):

采用场平均法,使用对称结构的滤波器,这种方法利用前后两场对应行的平均值来计算当前场
的数据。

等效滤波器:

h ( m , n ) = { 1 2 , ( m , n ) = ( 0 , 1 ) , ( 0 , − 1 ) 0 , o t h e r w i s e h(m,n)=\left\{ \begin{array}{lr} \frac{1}{2}, & (m,n)=(0,1),(0,-1)\\\\ 0, & otherwise\end{array} \right. h(m,n)= 21,0,(m,n)=(0,1),(0,1)otherwise

时空混合插值:

结合时间域和空间域(垂直)插值两者的优点,同时使用垂直滤波器和时间滤波器。本工程采用十字滤波法,使用上、下行和前、后场数据的平均值进行计算。

等效滤波器:

h ( m , n ) = { 1 4 , ( m , n ) = ( 0 , 1 ) , ( 0 , − 1 ) , ( 1 , 0 ) , ( − 1 , 0 ) 0 , o t h e r w i s e h(m,n)=\left\{ \begin{array}{lr} \frac{1}{4}, & (m,n)=(0,1),(0,-1),(1,0),(-1,0)\\\\ 0, & otherwise\end{array} \right. h(m,n)= 41,0,(m,n)=(0,1),(0,1),(1,0),(1,0)otherwise

运动自适应方法:

运动自适应方法的基本思想是将图像的去隔行处理分为针对运动图像针对静止图像的处理。 对于静止的图像采用时间域插值可以较好的还原逐行图像。对于运动的图像,前、后场的信息就不足以
用于估计当前场的数据,应该只采用当前场数据本身的数据在空间域内进行计算以避免出现严重的羽化现象。

启动示例

💡 工具链:Cmake → MSVC++

C++ Version 11

项目名称:final

项目文件编码:utf-8

  1. 安装MSVC++或GNU C++(MinGW)编译器。
  2. 使用CLion, Visual Stuio或Xcode加载CMake工程并运行即可。目录中将会生成四种算法对应的输出图像,无需额外配置。

💡 函数说明及参数说明详见代码

定制化运行:

在main.hpp中修改以下参数:

  • Height:待处理视频画幅高度(单位:像素)
  • Width:待处理视频画幅宽度(单位:像素)
  • filePath:待处理视频文件路径(格式:字符串)

重新运行CMake应用即可。

开发总结

本次开发涉及了多人合作的程序开发,是对三人协作能力的一次考验。在任务中需要灵活而精准地分配任务、核对任务进度,才能尽可能地提高效率。同时需要对代码有充分的重构和补充描述,以提高代码的可读性和规范性。文章来源地址https://www.toymoban.com/news/detail-764339.html

到了这里,关于基于时空滤波和运动自适应的视频的去隔行算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 传统语音增强——最小均方(LMS)自适应滤波算法

    一、语音降噪的意义 语音降噪主要研究如何利用信号处理技术消除信号中的强噪声干扰,从而提高输出信噪比以提取出有用信号的技术。消除信号中噪声污染的通常方法是让受污染的信号通过一个能抑制噪声而让信号相对不变的滤波器,此滤波器从信号不可检测的噪声场中取

    2024年02月03日
    浏览(55)
  • Matlab自适应滤波算法 LMS小白通俗易懂版

    在学习自适应算法的过程中,入门阶段,学习了LMS算法、NLMS算法,并用Matlab对算法进行了复现。 最小均方(LMS)是一种搜索算法,它通过对目标函数进行适当修改,以便简化梯度向量的计算,由于其计算简单,LMS算法及与之相关的其他算法,已经广泛应用于自适应滤波的各种的

    2024年02月02日
    浏览(49)
  • 基于变分贝叶斯的自适应卡尔曼滤波(matlab)

        参考文献《Recursive Noise Adaptive Kalman Filtering by Variational Bayesian Approximations》中的算法,用matlab编写了一个小程序测试了一下(demo版本)。程序是按照文章中的内容实现的。     下面是主程序:     下面是调用到的几个函数:     函数一(cholesky分解,

    2024年02月11日
    浏览(45)
  • OpenCV-AMF算法(自适应中值滤波Adaptive Median Filtering)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处        AMF(Adaptive Median Filter,自适应中值滤波)是一种用于图像处理和信号处理的滤波算法,其目的是在保持图像细节的同时去除噪声。它是基于中值滤波的一种改进

    2024年04月25日
    浏览(31)
  • 如何评价滤波器的去噪效果?

    假如使用两种滤波器,那么滤波效果如何去评价 1 ? 为了能够得到高质量的去噪后信号,需要对滤波器的滤波效果进行评价,选取去噪效果最好的滤波器对原始信号进行去噪处理。 一般使用 信噪比和峰值信噪比 对滤波器进行量化评价, 信噪比和峰值信噪比的值越大,说明

    2024年02月03日
    浏览(118)
  • Python环境下基于自适应滤波器的音频信号(wav格式)降噪方法

    Python的集成环境我一般使用的是 Winpython , Winpytho 脱胎于pythonxy,面向 科学计算 , 兼顾数据分析与挖掘 ;Anaconda 主要面向数据分析与挖掘方面 ,在大数据处理方面有自己特色的一些包; Winpytho 强调 便携性 ,被做成绿色软件,不写入注册表,安装其实就是解压到某个文件夹

    2024年01月18日
    浏览(41)
  • 【如何跑通基于AOD-NET的去雾算法】

    论文来源: 如果想要了解算法原理请看这篇文章https://blog.csdn.net/Flag_ing/article/details/108923617 window10或window11系统 python3.7 ; pytorch0.4 ;使用Anaconda来管理编程环境; python语言编程软件为pycharm 论文地址:https://arxiv.org/pdf/1707.06543.pdf 相关代码:https://github.com/MayankSingal/PyTorch-Image-De

    2024年02月02日
    浏览(34)
  • 含源码|基于MATLAB的去雾系统(5种去雾算法+1种本文的改进算法)

    去雾系统V2包括作者新加入的 多尺度Retinex去雾算法以及改进去雾算法 ,以及 4种 评价去雾效果的 客观指标 。 引言 去雾系统新增功能 结果分析 源码获取 展望 参考文献 在作者前面写过的文章中,已经介绍过图像去雾算法的应用价值及研究现状,并且也介绍了4种去雾算法的

    2024年01月23日
    浏览(79)
  • 自适应迭代扩展卡尔曼滤波算法AIEKF估计SOC VS 扩展卡尔曼估计SOC

    自适应迭代扩展卡尔曼滤波算法(AIEK)是一种滤波算法,其目的是通过迭代过程来逐渐适应不同的状态和环境,从而优化滤波效果。 该算法的基本思路是在每一步迭代过程中,根据所观测的数据和状态方程,对滤波器的参数进行自适应调整,以便更好地拟合实际数据的分布

    2024年02月09日
    浏览(46)
  • 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应行高、动态导出指定列、动态更改表头

    最近在学go操作excel,毕竟在web开发里,操作excel是非常非常常见的。这里我选择用 excelize 库来实现操作excel。 为了方便和通用,我们需要把导入导出进行封装,这样以后就可以很方便的拿来用,或者进行扩展。 我参考的是这篇文章:【GO】excelize导入导出封装 这个导入导出封

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包