当前位置: 首页 > news >正文

一种简单的3dnr去噪算法介绍

        一段未经过插补的视频图像可以分解为若干帧,为了能正确地找到并去除图像帧中的噪声污染,由于视频图像各帧的连续性,在去噪的过程中就必须考虑帧图像的空间性和时间性,一个简单的例子,在去噪算法中就必须考虑,当视频中有物体运动时,就要加强帧图像的空间比重(即相邻像素的比重)而相对的减少相邻帧的影响。

        在含有运动物体的帧图像中,没有任何相邻的帧信息是相同的,即使在一段静止的无运动视频中由于噪声的干扰,各帧的数据也不尽相同,在去噪的过程中,如果简单的将各帧各自独立的考虑,各帧的图像残留的噪声容易使视频图像产生抖动现象,而如果没有考虑到视频中物体的运动,就会使视频画面出现叠影现象,为了避免这两种情况,考虑帧中的两帧图像,其中一帧即当前还未处理的帧,另外一帧是已经处理过的上一帧图像(如图所示)

        在处理当前帧的时候,往往想找到与待处理点相匹配的上一帧图像中的对应点,但是由于运动存在的可能性,对应点可能与待处理的不在相同的位置,如图所示,可以找到与待处理像素点ww2相对应的先前帧对应位置像素点wwl,如果没有物体的运动,两个像素点上的值应该是一致的,但是,由于运动存在的可能性,ww1或许已经移动到物体的边沿或背景上,虽然可以利用矢量运算可以将画面中运动的部分分割出来,再经过多次迭代的运算可以得到比较准确的数据,但是运算量大,不符合视频获取的实时性原则,这里利用一种较简单的方法来设计本文的算法,利Angelo Bosco等人在2004年提出的一种方法并加以改进,以图达到更好的效果。

        首先,引入一个变量SAD(sum of Absolute Differences)的概念,在待处理的帧图像中,以待处理像素点为中心取一个5*5的方阵,设当前矩阵中个像素点的值为P_{Cij},上一帧中对应矩阵中的像素值为P_{pij},首先计算:

D_{sad}=\sum_{i=1}^{m}\sum_{j=1}^{n}(\left |P_{Cij}-P_{pij} | \right)

称之为绝对差值,描述了当前待处理像素点所在的矩阵范围内与上一帧已处理所对应区域的绝对差,可以这样认为,当绝对差值大于某一事先设定好的阈值D时,就认为两帧在此区域内差别较大,有明显的物体运动,反之,就认为两帧之间无明显差别,或者可以认为物体运动不明显。

        在这个过程中,还考虑一个明显的问题,由于不同光强的不同,也会引起D_{sad}的数值较大,为了避免这种情况,以达到使人满意的视觉效果,令\Delta P_{ij}=\left | P_{Cij}-P_{pij} \right |的绝对值,计算
\Delta P_{ij}方差\Delta P,还是当\Delta P大于某设定值的时候,认为光强的影响较大,比较前后两帧数值大小,使当前帧待处理窗口减去或加上D_{sad}/25,然后再重复计算D_{sad}的大小,以确定是否有明显的物体运动,反之,可以认为无光强的影响或者影响较小,不予考虑。

        当D_{sad}大于预先设定的阈值的时候,可以认为在视频的前后两帧中有明显的物体运动,在处理过程中,忽略帧图像的时间性,以所在处理帧的空间特性为主要依据进行去噪,假设待处理像素点为S,S可以是R,G,B中的任何一个,分别取S周围的四个像素进行计算,分别取距离S在水平方向和垂直方向的两个元素。

        并对相应的四个像素点取均值Sav,令\Delta S=\left | S-S_{av} \right |,在这里,还要引入一个变量
\delta _{x}来表示噪声的离散程度,定义在待处理的矩阵区域R内,f(x,y)是属于R中的像素点值,有以下定义:

\delta _{x}=\sqrt{\frac{1}{N-1}\sum_{((x,y)\in R)}^{}(f(x,y)-average)^{^{2}}}(3—4)

        其中N为区域内的像素点的个数,averge为所在区域内各像素点的平均值,,当\Delta S大于等于\delta _{x}时,则可以认为S所在点为噪声点,令:S=Sav。否则不做处理。

        当D_{sad}小于固定阈值时,可以认为没有明显的运动发生,就可以计算待处理像素所在帧区域与先前帧所对应区域综合考虑。如果\Delta P_{ij}=\left | P_{Cij}-P_{pij} \right |的绝对值大于等于\delta _{x},可以认定当前点是被噪声污染的噪音点,用上面介绍的方法分别求出前后两帧处理区域像素点平均值Pca和Ppa,则S= (Pca+Ppa)/2。当\Delta P_{ij}=\left | P_{Cij}-P_{pij} \right |的绝对值小于\delta _{x},认为没有噪音污染,或者认为噪声点污染不足以引起人视觉上的反应,不作任何处理。

        下面着重考虑判断物体是否移动的阈值的选择,由于视频采集的图像15帧/秒,在进行的噪音点处理的时候,在一个5木5的小矩形区域内,因此对于存在物体移动的情况,在这个小区域内,存在两种不同的区域,背景域和移动物体域,假设在这两个存在完全不同的小区域均是平滑的,由此可见可以将这种情况抽象成边界移动模型,假设Dmax表示前后两帧图像对应点差值中的最大值,不妨假设Threshold=5*Dmax(在待处理区域内物体的边界为5个像素)当绝对差值大于Thresho1d时,认为有明显的物体移动,否则,认为没有明显的运动迹象。

        在关于怎样确定Thresho1d阈值的时候,还有人提出,通过计算上一帧处理过图像的噪声干扰的程度,通过步步迭代来确定阈值,由于设定阈值的目的是确定在感兴趣的区域内有无明显的运动,完全可以通过一种更简单的方式来确定,实验表明,本文的算法同样取得良好的效果,下图中的两幅帧图像分别是去噪前进行插补算法和去噪以后进行的插补算法,前一幅图像的噪声影响下,图像显得很粗糙,经过去噪算法以后,效果有明显的改善.

http://www.dtcms.com/a/318028.html

相关文章:

  • 北京-4年功能测试2年空窗-报培训班学测开-第六十九天-投简历第一天-从兴奋到害怕
  • Unity工具—Inspector面板增加Rect Transform组件上下左右移动的工具
  • linux IO介绍
  • Android系统性能分析利器:深入解析Tracing框架
  • Dify+Nginx反向代理:80端口冲突的优雅解决方案
  • ICCV 2025 | 视频生成迈入“多段一致”新时代!TokensGen用“压缩Token”玩转长视频生成
  • Mysql如何迁移数据库数据
  • mysql数据库基础操作
  • 每日任务day0806:小小勇者成长记之收获日
  • 在 Visual Studio Code 中免费使用 Gemini 2.5 Pro API
  • 滴滴招java开发
  • 利用DeepSeek改写并增强测试Duckdb和sqlite的不同插入方法性能
  • 虚幻GAS底层原理解剖四 (TAG)
  • Boosting 知识点整理:调参技巧、可解释性工具与实战案例
  • [Oracle] NVL()函数
  • 【概念学习】深度学习有何不同
  • 220降5V,30mA电流,墙壁开关和调光器应用场景WD5201
  • 【秋招笔试】2025.08.02-OPPO秋招第二套-第一题
  • Win10还未停更,对标iPad的教育版Win11也宣布停更了
  • Python爬虫 urllib 模块详细教程:零基础小白的入门指南
  • Pytest项目_day05(requests加入headers)
  • 项目中MySQL遇到的索引失效的问题
  • Conditional Modeling Based Automatic Video Summarization
  • Ubuntu20.04 离线安装 FFmpeg 静态编译包
  • 深度学习G5周:Pix2Pix理论与实战
  • Transformer模型及深度学习技术应用
  • 什么是 Kafka 中的消息?它由哪些部分组成
  • 高频面试点:深入理解 TCP 三次握手与四次挥手
  • mysql优化策略
  • qt qml实现电话簿 通讯录