WarpFilter warps an image using a mesh warp algorithm. You supply two warp grids: a source grid and a destination grid. The filter will warp the image so that pixels on source grid points will move to destination grid points. The warp grids are implemented by the class WarpGrid which contains methods for interpolating between grids. This allows you to produce animations of warping by repeatedly using WarpFilter. To make this easier, WarpFilter can be given a number of frames and will produce an image containing tiled frames of a warp from 0 to 100%.

WarpFilter in action: Source grid on left, destination on right

WarpFilter has a couple of utility methods which allow you to do morphing between two images. This involves calculating the intermediate grid, warping both images from their grids to the intermediate grid and then cross-dissolving the two resulting images. To make this easier, there is a class Morph which has a main program taking two arguments- the filenames of the two images. Running this shows a window which allows you to play with the filter, changing the positions of grid points and the proportion of warp. It will also allow you to produce tiled animations of the warp. This is very much work in progress and I expect to improve this interface and make it more robust as time goes on.