我正在研究用于计算视频中光流量的Horn-schunck方法。我的代码在C中,这意味着我从头开始实现所有算法,包括灰度缩放图像,计算衍生物等。我无法完全吸收方法的本质。我得到的最终流矩阵将包含每个像素的位移矢量,对吧?对于每个像素的含义,流矩阵中的值将指示它在下一图像中的位移量。
当我的所有像素值介于0-255之间时,如何解决这个问题,我所有的计算都是在这些像素值上完成的,结果输出会在例如1920 X 1080图像中产生位移。
答案 0 :(得分:1)
您的方法的结果将是具有两个通道或两个矩阵的矩阵,一个用于u(或dx)方向/位移,另一个用于v(或dy)方向/位移。这意味着你有一个矢量字段
[u(x,y) v(x,y] = optical flow for each position (x,y) in your image
此向量字段(此字段的值)具有浮动精度。这意味着例如u(0,0) = 0.2 v(0,0) = 0.13
。因此,在您的coud的一部分中,您将输入图像的灰度值转换为浮动值。这主要是在你计算渐变时完成的,例如:与索贝尔运营商合作。 OpenCV库有一个Horn-Schunk实现。虽然阅读代码需要一些时间,但您可以放心,这是实现此方法的一种非常有效的方法。