Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo
Wladimir van der Laan
What is the state on global motion compensation in Dirac? As far as I have seen, it is defined in the standard, but not actually ever implemented in encoders.
I suppose it is quite hard to estimate the global motion, especially the zoom and perspective components, and I am very interested in how this is done. I think it would improve the encoding performance for common types of scenes a lot.
Wladimir J. van der Laan
As you say global motion compensation is defined in the standard but not yet implemented.
We have experimented with global motion compensation. We found that it doesn't give much advantage if implemented only using block motion vectors, which is why the specification defines that the global motion vector varies pixel by pixel (that is global motion constitutes a dense motion vector field). Implementing global motion compensation using a dense motion vector field is more difficlut to implement, in both hardware and software, than using block motion vectors. And this is the primary reason why we have not, yet, implmented it in the source code we distribute.
I don't think it is too difficult to determine global motion paramters, and we have done some work on this although more remains to be done. Finding global motion parameters can be done from block based motion vectors using the RANSAC algorithm to determine a set of blocks which correspond to the background. In this implementation of RANSAC the global (background) motion parameters would be the "inliers" and motion of forground objects would be "outliers" (see Wikipedia for RANSAC). Once the set of block motion vectors that form the background have been determined then an LMS algorithm may be used to determine precise values of the global motion paramters.
I agree that the use of global motion parameters would significantly improve the compression of many common types of scene, particularly at low bit rates (in which I include broadcast bit rates and bit rates typically used for internet distribution). This is an optimisation that I hope we will investigate further in the future.