Topic: some ideas about how to improve motion estimation
Hey guys,
two ideas:
1) Have you thought about making use of the motion information from the video bitstream? Obviously this information is missing for key frames, and it's probably not completely reliable. But it might serve as a first guess, or as a low CPU variant.
2) I've seen Didée (doom9) comment that some of the AviSynth algos don't really track motion, but just try to find a block match. Is that the case for SVP? Or is SVP actively trying to find *continuous* motion vectors over multiple frames?
Maybe both 1) and 2) could be combined? E.g. as an ultra low CPU/GPU power algo, you could rely on the video bitstream motion information, and refine that by tracking motion vectors over multiple frames. E.g. let's say that block A moves 5 pixels right from frame X to frame X+1, and another 5 pixels right from frame X+1 to X+2. And let's say frame X+3 is a key frame. So motion information is missing for the key frame. So SVP could just "continue" all previous motion vectors in the same speed for the key frame. Maybe it would make sense to do some block comparisons just to make sure that continuing the motion vectors seem "likely" for the key frame, just to be safe. Or maybe SVP could run its usual algos just for key frames, but rely on the video stream motion vectors for the other frames? It might make sense to ignore "random" motion vectors which are not continuous, and just use those which stay similar over at least 3 frames or so.
Just some thoughts I had...