Now that Imaging Whiteboard 2.0 has been released this would be a good time to blog about some of the new features. The Warper has been improved to include variable warps. Previously only fixed warps were implemented; that is warps such as zoom and rotate where the warp factor is the same for every pixel, see previous blog http://sound-analysis.com/using-complex-arithmetic-to-perform-combination-warps/ . Version 2.0 includes variable warps; that is warps where the warp factor is dependent on the target image location (specifically distance from the center of the target image).
Complex number arithmetic is still used, but, the fixed warp factor is split into two components: Fixed Zoom Factor and Fixed Rotate Factor. These are calculated once. Then for each pixel the variable part of the warp factor is calculated from the user input and the target pixel address. The full warp factor is calculated:
(FixedZoomFactor + variableZoom) * (FixedRotateFactor * variableRotate)
Fish-eye correction can be achieved using the variable zoom. This works well enough, but, is wrong in a number of ways. First it is too simple, real fish-eye correction will take account of the source fish-eye lens properties see Fisheye lens correction (paulbourke.net) if you really want the details. Also, this technique is based on the target pixel location as it implements backward mapped warping (more efficient), real fish-eye correction will use the source image location to determine the correction.
Fish-eye correction is shown in the user manual and further in the cookbook. Here we see biased rotation applied to a chequerboard: