Discussion about this post

User's avatar
lcamtuf's avatar
1dEdited

Some postscripts:

1) MATLAB source for the one-axis version: https://lcamtuf.coredump.cx/blog/venus.m

2) The algorithm hinges on knowing the blur method and the boundary pixel values, so it works for digital blur, but is not suitable for "analog" use cases, such as sharpening blurry photos. This is typically done with more approximate deconvolution algorithms and the results are almost never as clean.

3) For readers wondering if the centered-window case is fundamentally harder - it isn't, it's just that the formulas are a tad messier and I wanted to keep the article easy to read. Here's the visual solution for a 100-element centered window: https://lcamtuf.coredump.cx/blog/venus-centered.png . The only major difference is that we have two alternating stripe patterns moving left-to-right and right-to-left and accumulating separate quantization errors. The solution could probably be optimized to avoid the resulting seams, but again - it'd be busywork with no real importance to the main thesis.

4) The "flat" box-blur filter we constructed isn't all that visually pleasant, so in photography and related applications, we use 2D Gaussian blur or more complex filters that mimic camera aperture. These filters are fundamentally still just weighted averages, but the math would be more complex.

5) If you're interested in the impact of various values of the bias parameter (B) on the 2-D reconstruction, here's a quick demo: https://lcamtuf.coredump.cx/blog/venus-bias.png

Nigel K Tolley's avatar

Excellent as always!

4 more comments...

No posts

Ready for more?