I finally worked out what was wrong with my implementation of a self organising map, instead of using a 1 dimensional list for the nodes in the lattice I changed it to a 2D dimensional array. This yielded the exact results I was looking for after changing this.
Here's the image clustering:
As you can see in the above, similar images are grouped together.
I'll explain the process in the future, I'll probably have to write it out for the dissertation anyway.