I'm trying to implement an optical flow calculation program for two successive images based on this article by Brox et al.

The Euler-Lagrange combined with a fixed point iteration loop yields two equations in the form of:

$\\0=(\Psi')_{Data}^{k,l}\cdot (I_x^k(I_z^k+I_x^kdu^{k,l+1}+I_y^kdv^{k,l+1}))-\alpha div((\Psi')_{Smooth}^{k,l}\nabla_3(u^k+du^{k,l+1}))) \\0=(\Psi')_{Data}^{k,l}\cdot (I_y^k(I_z^k+I_x^kdu^{k,l+1}+I_y^kdv^{k,l+1}))-\alpha div((\Psi')_{Smooth}^{k,l}\nabla_3(v^k+dv^{k,l+1})))$

No gamma term here becaues it's a simplified version, and the nabla3 is the gradient in x, y and "time" (difference between two successive images). Iz is the image difference in time (I2-I1)

As I understand, at this point we can treat u and v as "constant images", and treat du and dv as our variables, and we can find them using SOR. Then we update u and v by u=u+du, v=v+dv in the external loop.

In order to solve with SOR I need to construct a linear equation set in the form of Ax=b, where x is a vector containing the du and dv values. I'm not sure however how to extract du and dv from the divergence term. Can it be extracted, or maybe I should use the du term from the previous iteration and treat it as a constant only in this term?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.