ImageAlign should probably be at least part of the solution:
img = Import["https://i.sstatic.net/pc6ul.png"]; {xdim, ydim} = ImageDimensions[img]; images = Flatten@ImagePartition[img, {xdim/4, ydim/4}]; aligned = ImageAlign[images]; ListAnimate[aligned] Here is an attempt to make it more robust and to prevent it from clipping parts of the figure off at the edges:
images = Flatten@ImagePartition[ ImagePad[img, {{10, 15}, {15, 10}}], {xdim/4 + 20, ydim/4 + 20}, {xdim/4, ydim/4} ]; aligned = FoldList[ImageAlign, images]; ListAnimate[aligned] WeThe padding is what it is because ImagePartition discards images that are smaller than the given size.


