The image
property of ImageGallery
a) expects an URL, and b) is defined as:
URL of an image of the item.
So your markup says: "My ImageGallery can be described by three images."; while it probably should say: "My ImageGallery consists of three images.".
So with image
you could specify an image that can be used to represent the whole gallery.
For each image of the gallery you should probably use the associatedMedia
property (but I’m not 100% sure if I get its definition correctly, "encode" confuses me here).
The markup for each ImageObject
looks good to me.