首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光流中的像素对应

光流中的像素对应
EN

Stack Overflow用户
提问于 2012-12-14 14:29:50
回答 3查看 1.5K关注 0票数 2

不知何故,我对视频序列中的光流概念是个新手,我已经读过关于光流的基础知识,我熟悉Horn & Shunck方法或Lucas &Kanade方法。

我意识到,在这些方法中,我们计算的是代表图像中像素运动的一些向量,当然,这些像素有一些约束(亮度恒定、平滑度和...)。

我的问题是:

根据公式fx*u + fy *v = -ft,我们如何准确地建立帧t中的一个像素与帧t + 1中的另一个像素之间的对应关系

我的意思是,我们如何确定它是我们在frame t + 1中找到的frame t中的相同像素,我不知道我们是在他们算法的哪一部分中找到这些像素,并在frame t和frame t + 1中的像素之间建立对应关系!我知道我们可以找到已经移动的像素,但我不知道我们是如何找到帧t和帧t + 1中像素之间的关系的。

我希望你理解我的问题:o)(o:

如果这是可能的答案,请尽可能地制定。

谢谢你

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-16 23:43:20

实际上,Horn,Schunk和Lucas,Kanade的方法以不同的方式处理方程:

代码语言:javascript
复制
Fx*U + Fy*V = -Ft

如你所见,这个方程是一个欠定的方程组。因此,Horn和Schunk提出了第二个假设。光滑度约束了UV的偏差应该很小。这被集成到一个最小二乘框架中,在这个框架中你有:

代码语言:javascript
复制
(Fx*U + Fy*V + Ft)² + lambda * (gradient(U)² + gradient(V)² = E
E -> min

利用该方程,可以通过将U的偏差设置为V来求解E0。因此,运动矢量的解通过UV的梯度算子联系起来。

Lucas和Kanade提出,在定义的区域中,Lucas Kanade窗口只计算一个运动矢量(或者一个区域具有唯一的运动/运动恒定约束),并将其放入最小二乘框架中:

代码语言:javascript
复制
sum(Fx*U + Fy*V + Ft)² = E
E->min

对定义区域中的每个像素进行求和。UV也可以很容易地通过E的偏差设置为0来计算。

通过这两个方程,您可以看到像素对应关系是通过使用时间(Ft)和空间图像梯度(FxFy)找到的。在Lucas和Kanade的原始论文中有一张很好的图片,用图形显示了这种相关性。但是,有几点需要考虑:

如果图像包含纹理,则这些方法只能计算运动矢量(

  • F(x, y, t) = F(x + U, y + V, t + 1)的一阶泰勒近似。这意味着你的图像信号需要是线性的。因此,您只能计算高达几个像素的运动。这就是为什么图像金字塔被用来提供线性。
  • 运动恒定性或平滑度约束可防止尖锐的运动边界。这在一些application.
  • The框架中可能很重要,但不会阻止您遇到经典的通信问题。
票数 6
EN

Stack Overflow用户

发布于 2012-12-16 10:48:19

使用Fx*U + Fy*V = -Ft,我们不能在cvGoodFeaturesToTrack给出一组像素后,为一个pixel...so求解这个方程...在该set...according中的每个像素周围选择一个窗口,假设补丁/窗口(以所选像素为中心)在下一帧中具有相同的强度。假设在frameA中,我们通过考虑一个点周围的窗口来找出它的U和V。U和V给出了特定点在水平和垂直direction...using中应该经过的像素位移U和V,我们在下一帧中找到了点的位置,即frameB。根据恒定强度假设,frameB中预测点周围的补丁应该与frameA had...after中该点周围的补丁具有相同的强度。检查frameA和frameB中两个补丁之间的强度,以确定该点是否处于良好的轨道上。如果我在某个点上出错,我已尝试尽可能多地解释I could...correct me。

票数 1
EN

Stack Overflow用户

发布于 2017-01-03 10:22:51

在Horn和Schunk的方法中,不需要通过无关的方法计算两个帧之间的像素对应关系。H&S是一种迭代算法。对于两个连续的帧,您从u-s和v-s的一些初始值开始,然后迭代直到它收敛。

详细信息:

对于两个连续的帧,您执行以下几次迭代,(这是为每个像素计算的,想象一下有一个u-image-buffer和一个v-image-buffer)

代码语言:javascript
复制
u = u_av - Fx *(P/D)
v = v_av - Fy *(P/D)

哪里

代码语言:javascript
复制
*, stands for multiplication
P = Fx * u_av + Fy  * v_av + Ft
D = lambda + Fx**2 + Fy**2
Fx = gradient of image along x (can be averaged across the two frames)
Fy = gradient of image along y (can be averaged across the two frames)
Ft = temporal gradient across two frames
u_av = (sum of u-s of 4 diagonal neighbors)/4
v_av = (sum of u-s of 4 diagonal neighbors)/4
lambda=smoothness constraint coefficient

U和v的初始值可以是零。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13873791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档