A variable fisheye and defish warp as an FFGL effect. It re-photographs the picture through a different lens instead of drawing a bulge on top, so the Projection control picks the lens, and defish exactly undoes fish.
This demo runs the plugin's shader in your browser, so it needs JavaScript and WebGL2. The plugin itself, its source and its downloads are on its project page.