I am trying to test the sub-pixel accuracy of an optical flow method and need to generate some synthetic data to do so. I start with an image $I_0$, which is a Perlin noise image and a set of sub-pixel ground truth flow fields to apply, e.g. rotation around the image centre. I want to produce the most faithful image, ${I_1}$, that agrees with this sub-pixel flow.

Method 1. The dumb approach is to just apply the flow directly to the image, and interpolate a new image from the old using one of the many interpolation techniques. But the interpolation is almost certain to introduce noise, the nature of which I guess depends on the statistics of the image and the interpolation function chosen.

Method 2. A better approach (I think), is to start with a much larger image $J_0$, which is the parent of $I_0$ in that downsampling $J_0$ results in $I_0$. Then apply the flow to the large image and downsample that to get to $I_1$.

However, the downsampling process itself requires an assumption about which kernel to use. Also, this gets tricky if $I_1$ needs to be large (say $1000 \times 1000$), since $J_0$ will need to be even larger (e.g. $20000 \times 20000$) and becomes difficult to store in memory.

Method 3. Another possibility is to model the image as some known continuous function, apply a flow function analytically to the image function, then produce the warped image by sampling from that new function with an assumed point spread function to produce the warped image. But I've no idea if that's possible or what kind of functions would work.

Would anyone be able to provide any suggestions? Would Method 3 work? Is there another, better alternative?

Thanks a lot in advance!


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.