EDIT, 12/12/20: Images below are of the radial sinusoid pattern. Left side is the "unrotated" version. Right side is what the a photograph of the pattern would look like if the disc was rotated into the depth dimension, 45 degrees about the x/horizontal axis, and 20 degrees about the y/vertical axis. Note that the diameter of the disc on the left is equal to the length of the long axis of the disc (ellipse) on the right. And thus the spatial frequency of the sinusoid along the long axis is equal to that of the unrotated disc.
I'm tasked with estimating the spatial (pixels/inch) resolution at the location (depth) of an object in a digital photograph. I can create a small "standard" reference signal (akin to a QR code or bar code) that will be clipped to the object, such that I can assess the resolution via image processing, Fourier analysis, etc.
- Does such a standard reference exists? Along with optimized algorithms for estimating the spatial resolution via image processing?
- If not, I'm looking for ideas for patterns that might serve as such a reference, and the associated estimation methods.
- The object and the visual standard are not fixed in space, and may rotate (into the depth dimension), to some degree.
- The visual standard needs to be limited to ~3 inches in diameter (or a ~3x3 inch square).
Given the above caveats, my early thinking has been to use a circular reference (a "disc"), displaying concentric rings of a fixed spatial frequency--e.g., a sinusoid that is radial symmetric. If the disc rotates in any direction, the concentric circles will look like ellipses in the photographic image, but the sinusoidal frequency along the long axis of the ellipses will remain constant. I thought a 2D FFT would allow me to obtain a good frequency estimate, but based on some testing, the circular nature of the pattern results in "artifacts" in the frequency domain, such that the estimate is not sufficiently accurate. Perhaps the concentric rings are an adequate reference/standard pattern, but a better frequency estimation method is needed (I've also tried direct fitting via gradient descent). Or maybe I need some other pattern altogether?