This is a bit of a long shot, but I was hoping somebody might have some insight (not sure of a better forum than here but open to suggestions). I have implemented the optical flow algorithm from the paper An Improved Algorithm for TV-L1 Optical Flow. I've tried to stick to exactly the same parameters as the article explains (they have quite detailed implementation notes), and yet I can't reproduce their results.
From my analysis (I'll show images in a moment), it appears that the algorithm works well with small images, so in the coarse-to-fine pyramid you can see the flow is accurately calculated for small-scale version of each image. Then when the images are upscaled beyond a certain point the optimisation seems to converge to some poor local minimum. To confirm this suspicion I reran the algorithm with a scaling factor of 0.9 between pyramid levels (instead of the 0.5 the article uses) and the results are much improved - it seems with a small enough up/downscaling factor we avoid the poor local minima. Here are the flows (Middlebury backyard scene, with scaling factors of 0.5, 0.7, 0.9 in that order):
These are the iteration-by-iteration sequences of each scaling factor (here we see that even 0.5 works well on small images):
I've fiddled with all the other parameters of the algorithm, and they don't have any major impact on this phenomenon. I can upload my Matlab code if anyone is interested. So my question is:
Does anyone have an alternate explanation for this phenomenon? The fact that I can't reproduce their results is troubling me greatly.