3D降噪_运动估计块运动匹配
运动估计
运动估计是视频去噪技术的重要组成之一,计算相邻两帧视频序列各像素的相对运动偏移量,从而得到其运动轨迹。
点
(
i
,
j
)
(i,j)
(i,j)和
(
x
,
y
)
(x,y)
(x,y)分别是同一物体第t-1帧和第t帧的像素点。
运动估计的目的就是需要找到该点在这两帧中的运动向量(x-i, y-j/)。在寻找视频序列中两顿图像各像素之间的运动向量时,往往需要确定其整体、局部或者特征的对应关系,即得到图像像素之间的匹配关系,因而图像匹配是运动估计的核心内容。根据图像中匹配方式的不同,运动估计算法可分:块匹配算法、像素法、特征法和相位法等。
其中块匹配法原理简单、运算效率较高,在视频去噪领域应用比较广泛。
块运动匹配
块运动匹配是当前数字图像处理领域中应用最广泛的一种运动估计方法。
首先将当前帧图像分成若干块,然后依次对每个块在参考帧(当前帧前一帧图像)的特定搜索区域中寻找与其最匹配的像素块,得到两个匹配块之间的位移即为当前诀的运动向量。以块为单位匹配,块内部的所有像素具有统一的运动向量。
在应用块匹配运动算法时,首先需要在当前顿中选取一个n x n大小的像素块(子块),如下图中左侧所示:
然后在参考帧中选取N X N的搜索窗口,并且需要保证该搜索窗口的中也与当前侦中n x n的像素块中也在空间坐标上重合,然后按照一定的匹配规则和搜索模式在该搜索窗口中寻找最为匹配的像素块。在块匹配运动估计算法中常用的匹配规则一般可分为两类:最小均方误差(Minimum Mean Square Deviation, MMS)
匹配和最小绝对误差(Minimum Absolute Daviation, MAD)匹配。
1)最小均方误差匹配
假设
f
c
(
i
,
j
)
f_c(i,j)
fc(i,j)为当前帧中子块的中心像素,
f
p
(
i
,
j
)
f_p(i,j)
fp(i,j)表示参考帧中搜索窗口内一子块的中心像素,
$S(\delta_i,\delta_j) = \sum_{i=1}^n \sum_{j=1}n(f_c(i,j)-f_p(i+\delta_i,j+\delta_j))2 $
上式中出了参考帧中特定子块与当前帧子块的均方差值,并求出参考帧变动范围内的所有子块的均方差值,比较得到最小值。
(
δ
i
0
,
δ
j
0
)
=
a
r
g
m
i
n
δ
i
,
δ
j
S
(
δ
i
,
δ
j
)
(\delta_{i_{0}},\delta_{j_{0}}) = argmin_{\delta_{i},\delta_{j}} S(\delta_i,\delta_j)
(δi0,δj0)=argminδi,δjS(δi,δj)
上式求使
S
(
δ
i
,
δ
j
)
S(\delta_i,\delta_j)
S(δi,δj)最小的参数值
(
δ
i
0
,
δ
j
0
)
(\delta_{i_{0}},\delta_{j_{0}})
(δi0,δj0)。在参考帧中与当前帧子块匹配的像素块中。为,运动向量为最小绝对误差匹配最小绝对误差匹配与上述的最小均方误差匹配的操作步骤类似,只是所比较的值由均方差变成了差的绝对值。
2)最小绝对误差匹配
最小绝对误差匹配与上述的最小均方误差匹配的操作步骤类似,只是所比较
的值由均方差变成了差的绝对值。
$S(\delta_i,\delta_j) = \sum_{i=1}^n \sum_{j=1}^n(f_c(i,j)-f_p(i+\delta_i,j+\delta_j)) $
在运动匹配算法中.常用的匹配规则即为如上两种,相对来说最小绝对误差
匹配的复杂度更低,但是匹配的准确性不如最小均方误差匹配。
待补充
我的个人博客主页,欢迎访问
我的CSDN主页,欢迎访问
我的GitHub主页,欢迎访问
3D降噪_运动估计块运动匹配的更多相关文章
- Java面向对象理解_代码块_继承_多态_抽象_接口
面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...
- nginx中server块的匹配顺序
客户端发出一个http请求时,nginx收到后会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请 ...
- unity 3d 三、空间与运动
3D游戏编程第三次作业 简答并用程序验证[建议做] 游戏对象运动的本质是什么? 游戏对象运动的本质是游戏对象Position.Rotate.Scale属性数值的变化. 请用三种方法以上方法,实现物体的 ...
- 3D数学基础_图形与游戏开发
https://blog.csdn.net/popy007/article/list/2?t=1& //向量计算相关文章 https://www.baidu.com/link?url=48C ...
- JS基础_代码块
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Unity3D_(游戏)双人3D坦克_简易版
双人3D坦克实现 player1: WSAD控制上下左右 空格键发射炮弹 player2: IKJL可控制上下左右 B键发射炮弹 每个坦克只有100hp,子弹击中1次扣30hp,hp时时显示在坦克上 ...
- 类变量_main方法_代码块
需要解决的问题: 统计一共创建了多少个对象 类变量(静态变量) 被所有对象共享 可以通过 类名(推荐)|对象名.变量名 方式来访问 main main 方法 是虚拟机在调用 args 传值灵活 结果 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程2.2 TwinCAT常见类型使用和转换_函数块
右击POUs,添加一个FB功能块,相比于FUN,FB功能块有INPUT,OUTPUT,还有VAR,即FB可以有多个输出,但是整个FB没有返回值 实现相同的功能,FB要比FUN难看的多,FB要声明实 ...
- 【探索之路】机器人篇(5)-Gazebo物理仿真环境搭建_让机器人运动起来
如果完成了前两步,那么其实我们已经可以去连接我们的现实中的机器人了. 但是,做机器人所需要的材料还没有到,所以我们这里先在电脑平台上仿真一下.这里我们用到的就算gazebo物理仿真环境,他能很好的和R ...
- ISP图像调试工程师——3D和2D降噪(熟悉图像预处理和后处理技术)
2D降噪:只在2维空间域上进行降噪处理.基本方法:对一个像素将其与周围像素平均,平均后噪声降低,但缺点是会造成画面模糊,特别是物体边缘部分.因此对这种算法的改进主要是进行边缘检测,边缘部分的像素不用来 ...
随机推荐
- 【Spring】SpringSecurity的使用
4 SpringSecurity 只需要协助SpringSecurity创建好用户对应的角色和权限组,同时把各个资源所要求的权限信息设定好,剩下的像 "登录验证"."权限 ...
- 界面重建——Marching cubes算法
一.引子 对于一个标量场数据,我们可以描绘轮廓(Contouring),包括2D和3D.2D的情况称为轮廓线(contour lines),3D的情况称为表面(surface).他们都是等值线或等值面 ...
- 微软出品的UI自动化测试工具Playwright(三)
微软出品的UI自动化测试工具Playwright(三) 网址 说明 https://playwright.dev/ 官网首页 https://playwright.dev/python/docs/in ...
- express服务器框架
Express 为了提高开发效率,我们在开发过程中,都会尽量使用别人已经开发好的第三方模块,而我们想要快速实现服务器端的开发,推荐一个当下比较流行的框架:Express Express 作为开发框架, ...
- 2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态。 返回让所有值全变成1,最少的操作次数。 1 <
2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态. 返回让所有值全变成1,最少的操作次数. 1 &l ...
- 2022-04-01:有n个人,m个任务,任务之间有依赖记录在int[][] depends里。 比如: depends[i] = [a, b],表示a任务依赖b任务的完成, 其中 0 <= a <
2022-04-01:有n个人,m个任务,任务之间有依赖记录在int[][] depends里. 比如: depends[i] = [a, b],表示a任务依赖b任务的完成, 其中 0 <= a ...
- vue全家桶进阶之路13:生命周期
Vue2的生命周期是指Vue实例从创建.挂载.更新.销毁等各个阶段中所经历的一系列过程.Vue2的生命周期共有8个阶段,分别是: beforeCreate:Vue实例被创建之前的阶段,此时Vue实例的 ...
- exclude查询时出掉或排除某个条件的信息
exclude查询时出掉或排除某个条件的信息 print(Student.objects.all().exclude(nickname='A')
- ABP - 模块加载机制
Abp是一个基于模块化开发的应用程序框架,提供了模块化基础的架构和模块化加载的引擎. 理解模块 一个模块是对一个功能点的封装,可以独立成为一个包,实现了松耦合的代码组织方式.Abp框架的基本思想就是模 ...
- 【原创】浅谈EtherCAT主站EOE(上)-EOE网络
这篇文章的标题虽然是关于EtherCAT EOE,但其实主要内容是关于整个EOE网络结构,属于计算机网络原理.而EtherCAT EoE只是简单介绍,并不是文章的重点.需要注意的是,我们的描述主要基于 ...