视频降噪算法 Meshflow 介绍

news2024/10/6 0:38:03

介绍

Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。

该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (mesh vertexes) 处定义,它可被视为一个下采样的dense flow。具体来说,我们在视频帧上放置一个2D网格,然后跟踪连续帧之间的图像角点 (image corners),从而在每个特征位置生成运动矢量,然后将这些运动矢量转移到其对应的附近网格顶点,以使每个顶点从其周围特征中累积几个运动。MeshFlow是一个稀疏的运动矢量2D数组,其包含所有网格顶点处的运动。

该模型具有轻量级、非参数化、空间变形体等内在特征,能够有效地实现多帧图像的去噪。具体来说,meshflow是在相邻帧之间进行估计的,这些帧用于在一个滑动时间窗口内对齐帧。一个去噪的帧是由几帧在空间和时间的方式与离群拒绝融合产生的。各种具有挑战性的例子证明了该方法的有效性和实用性。

  • 项目地址:http://www.liushuaicheng.org/ICIP/2017/index.html
  • 论文下载地址:https://download.csdn.net/download/yanceyxin/89273166
  • git 地址:https://github.com/AlbusPeter/MeshFlow_Video_Denoising

关于Meshflow

Meshflow 算法是一种用于视频稳定和去噪的先进算法,它利用了一种新颖的运动模型来补偿相机运动。以下是关于 Meshflow 算法的一些关键点:

  • 在线视频稳定:Meshflow 算法提出了一种只有一帧延迟的在线视频稳定技术。

  • 运动模型:Meshflow 是一个空间平滑的稀疏运动场,其中运动向量仅定义在网格顶点上。

  • 特征点跟踪:通过在连续帧之间的图像特征角点跟踪,产生运动向量,这些向量随后被转移到相应的网格顶点。

  • 运动向量分配:网格顶点通过两个中值滤波器被分配唯一的运动矢量,以实现平滑效果。

  • 路径平滑:Meshflow 通过平滑技术,即预测的自适应路径平滑(Predicted Adaptive Path Smoothing,简称 PAPS),来平滑轨迹。

  • 实时工作:所提出的方法可以实时在线工作,适用于多种智能应用程序,如安全系统、机器人、无人机等。

  • 效率和效果:Meshflow 算法在计算效率和视频稳定效果上与现有的离线方法相比具有优势。

  • 视频去噪:Meshflow 还被用于视频去噪,通过利用 Meshflow 运动模型对相机运动进行补偿,产生干净的视频。

  • 非参数形式:Meshflow 的非参数形式和空间变化的运动表示使其在多帧去噪中非常有效和高效。

  • 资源:有开源实现和研究论文提供了 Meshflow 算法的更多细节和应用示例。

Meshflow 算法因其高效和实用性,在视频处理领域得到了广泛的关注和应用。它特别适用于需要实时视频稳定的场景,如无人机拍摄、手持摄像机录制等。同时,Meshflow 算法也可以用于视频去噪,提高视频质量。

原理

  1. 算法系统 pipeline
    在这里插入图片描述

  2. Meshflow运动模型
    Meshflow是一种稀疏运动场。它经常被用来估计相邻帧之间的运动。Meshflow 的运动模型建立过程如下:
    (1)Rich Features:检测快速图像特征,并通过KLT跟踪到相邻帧。
    (2)Motion Propagation:每个匹配的特征对产生一个运动矢量。
    (3)Median Filters:每个网格顶点应该只有一个唯一的运动矢量,它是由中值滤波器从每个顶点的运动候选数据中提取的。
    (4)Notations:运动符号标记。
    在这里插入图片描述

  3. Motions Accumulation 运动积累
    (1)运动追踪
    (2)运动积累
    在这里插入图片描述
    在这里插入图片描述

  4. Fusing 融合
    就是对齐后不同帧之间像素灰度值差小于一定阈值的像素进行平均作为当前帧的灰度值,这种简单的融合在灰度变化明显的区域容易造成“坏点”,会带来“鬼影”现象。

结果

  1. 性能
    在Intel i7 4.0GHz CPU和16G RAM上运行未优化c++实现平均可以处理260ms分辨率为1920×1080的帧;具体Meshflow方法分别需要27ms、21ms、38ms、25ms和149ms来跟踪特征估计网格流累积运动检查一致性融合像素。该方法还可以通过GPU进一步加速,特别是对于具有高度并行性的融合。
  2. 效果
    在这里插入图片描述
    在这里插入图片描述

代码示例

该作者在git提供了完整的c++代码实现,具体使用可参考README.md。

# MeshFlow_Video_Denoising
Source Code for MeshFlow Video Denoising <br> <br>

![showcase](https://github.com/AlbusPeter/AlbusPeter.github.io/blob/master/projects/Meshflow-video-denoising/denoise.gif)

OpenCV Version:2.4.11<br><br>

This source code may not have the same processing speed as the paper illustrated. Because I replace the original matching algorithm into a simple one. This may also influence the quality of the denoising result a little. For more project detail, including the academic paper, project abstract and test data, please visiting the project page at http://www.liushuaicheng.org/ICIP/2017/index.html. <br><br>

Usage
1. Create a new folder `build`<br>
2. Inside the folder, using the code below for cmake to build the project files:<br>

cmake DCMAKE_BUILD_TYPE=Release ..

3. Move the test video into this new folder and run this project.<br><br>

For `Visual Studio` users, when run the project file, you should change the `single startup project` option in the solution property into the correct one (not the `ALLBUILD.EXE`).<br>

For Windows users, using `Cmakelists.txt` as the cmakelist. (Remember to change the path for the OpenCV build folder.)<br>
For Linux users, using `Cmakelists_Linux.txt` as the cmakelist.<br><br>

For further questions, feel free to contact me at `albuspeter.rzh@gmail.com`.<br>
Thanks [Guo Heng](https://github.com/GH_HOME) who helped me on the Cmake lists.

Citation

If you find this useful in your research, please cite our paper "Meshflow Video Denoising" ([PDF](https://ieeexplore.ieee.org/document/8296826)):

@inproceedings{ren2017meshflow,
  title={Meshflow video denoising},
  author={Ren, Zhihang and Li, Jiajia and Liu, Shuaicheng and Zeng, Bing},
  booktitle={2017 IEEE International Conference on Image Processing (ICIP)},
  pages={2966--2970},
  year={2017},
  organization={IEEE}
}

参考

  • https://cloud.tencent.com/developer/article/1089304

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1646462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创造未来知识管理新篇章:Ollama与AnythingLLM联手打造个人与企业的安全知识库!

一 Ollama 1.1 简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程,使得用户能够快速地在本地运行大…

(论文阅读-多目标优化器)Multi-Objective Parametric Query Optimization

目录 摘要 一、简介 1.1 State-of-the-Art 1.2 贡献和大纲 二、定义 三、相关工作 四、问题分析 4.1 分析 4.2 算法设计影响 五、通用算法 5.1 算法概述 5.2 完备性证明 六、分段线性代价函数算法 6.1 数据结构 6.2 基本运算实现 6.3 复杂度分析 七、实验评估 …

02 Activiti 7:环境

02 Activiti 7&#xff1a;环境 1. 开发环境2. 流程设计器2.1. 在线安装2.2. 离线安装2.3. 中文乱码 3. 数据库 1. 开发环境 这是我本地开发环境 软件版本Jdk17Mysql8.0.36tomcat10.1.23IDEA2024.1Activiti7.0 2. 流程设计器 2.1. 在线安装 在 Plugins 搜索 activiti &…

【stm32笔记】DSP库调用

参考&#xff1a;DSP库调用 , __CC_ARM,__TARGET_FPU_VFP, __FPU_PRESENT1U, ARM_MATH_CM4把需要的库复制出来单独用&#xff0c;方便移植

基于java的CRM客户关系管理系统的设计与实现(论文 + 源码 )

【免费】基于Java的CRM客户关系管理系统的设计和实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89273409 基于Java的CRM客户关系管理系统的设计与实现 摘 要 随着互联网的高速发展&#xff0c;市场经济的信息化&#xff0c;让企业之间的竞争变得&#xff0…

ssh远程免密登录

ssh远程连接分为五个阶段 版本号协商阶段密钥和算法协商阶段认证阶段会话请求阶段交互会话阶段而上图的SessionKey即是在阶段2:密钥和算法协商阶段,服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成的会话密钥 远程免密登录需要在客户端生…

VTK —— 二、教程七 - 对点云进行操作(按下r键切换选取或观察模式)(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功&#xff0c;若无VTK库则请先参考如下链接编译vtk源码&#xff1a; VTK —— 一、Windows10下编译VTK源码&#xff0c;并用Vs2017代码测试&#xff08;附编译流程、附编译好的库、vtk测试源码&#xff09; 教程描述 本…

数组练习题

1.打印X图案 if ((i j) ||( i j n - 1)) 循环打印了一个行和列相同的数组 当ij的时候 打印正斜线 ijn-1的时候打印反斜线 int main() {int n 0;while (scanf("%d", &n) ! EOF){for (int i 0; i < n; i) //外循环为行{for (int j 0; j < n; j) …

ROS机器人入门:机器人系统仿真【学习记录】——2

承接上一篇博客&#xff1a; ROS机器人入门&#xff1a;机器人系统仿真【学习记录】——1-CSDN博客 我们先前结束了&#xff08;上一篇博客中&#xff09;&#xff1a; 1. 概述 2. URDF集成Rviz基本流程 3. URDF语法详解 4. URDF优化_xacro 下面让我们继续学习ROS机器人…

Sentinel流量防卫兵

1、分布式服务遇到的问题 服务可用性问题 服务可用性场景 服务雪崩效应 因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程&#xff0c;就叫服务雪崩效应导致服务不可用的原因&#xff1a; 在服务提供者不可用的时候&#xff0c;会出现大量重试的情况&…

LeetCode 226.翻转二叉树(全网最多的解法)

LeetCode 226.翻转二叉树 1、题目 题目链接&#xff1a;226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#…

有什么好用的思维导图软件?6个软件教你快速进行思维导图的制作

有什么好用的思维导图软件&#xff1f;6个软件教你快速进行思维导图的制作 以下是六款常用且功能强大的思维导图软件&#xff0c;它们可以帮助您快速制作思维导图&#xff1a; 迅捷画图: 迅捷画图是一款在线思维导图工具&#xff0c;具有直观易用的界面和丰富的功能。用户可…

无人机反制:雷达探测+信号干扰器技术详解

固定翼无人机、旋翼无人机等&#xff0c;可折叠式无机、DIY无人机等。黑飞&#xff0c;监管困难给航空业带来了诸多隐患&#xff1b;给恐怖袭击及间谍侦察带来新的方式、引发了各国地区政府的忧虑&#xff0c;在中国存在的问题更加严峻。 反无人飞行器防御系统(AUDS)&#xff0…

ElasticSearch 与 OpenSearch:拉开性能差距

Elasticsearch 与 OpenSearch&#xff1a;扩大性能差距 对于任何依赖快速、准确搜索数据的组织来说&#xff0c;强大、快速且高效的搜索引擎是至关重要的元素。对于开发人员和架构师来说&#xff0c;选择正确的搜索平台可以极大地影响您的组织提供快速且相关结果的能力。在我们…

小红书图片文案编辑生成图文工具

在小红书上&#xff0c;种草图文的变现通常涉及以下几个步骤&#xff1a; 1. **建立影响力**&#xff1a;首先&#xff0c;你需要通过持续发布高质量的内容&#xff0c;积累粉丝和影响力。你的内容应该围绕特定的领域或主题&#xff0c;比如时尚、美妆、美食或旅行&#xff0c…

JavaScript中的事件模型

JavaScript中的事件模型分为&#xff1a;事件和事件流、原始事件、标准事件和IE事件。 事件与事件流 JavaScript中的事件&#xff0c;可以理解为HTML文档或者浏览器中发生的一种交互操作&#xff0c;让网页有互动的功能。常见的事件就是加载事件、鼠标事件和自定义事件。 因…

一键安装Halo DB

说明 这里说的一键其实分了好几步&#xff0c;是我将安装步骤分解。你可以把它们放在一个shell中或者串起来就是一键了。 易景科技的数据库 羲和 &#xff08;Halo DB&#xff09; 我之前的一位朋友&#xff08;章晨曦&#xff09;创立的数据库公司。以前看他朋友圈说他做数…

【C语言刷题系列】移除元素

目录 一、问题描述 二、解题思路 三、源代码 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 C语言刷题系列 一、问题描述 二、解题思路 在C语言中&#xff0c;原地移除数组中所有等于特定值的元素并返回新长度的问题可以通过双指针法…

pytest教程-36-钩子函数-pytest_collection_start

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_unconfigure钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_collection_start钩子函数的使用方法。 pytest_collection_start(session) 是一个 pytest 钩子函数&#xff0c;…

25 JavaScript学习:var let const

JavaScript全局变量 JavaScript中全局变量存在多种情况和定义方式&#xff0c;下面详细解释并提供相应的举例&#xff1a; 使用var关键字声明的全局变量&#xff1a; var globalVar "我是全局变量";未使用var关键字声明的变量会成为全局变量&#xff08;不推荐使用&…