Cuando haces el bucle para leer las imágenes, haz una comprobación adicional con
is_dir(), ya que readdir() Lee tanto archivos como subcarpetas dentro de un directorio. Así, los que pasen is_dir() como true los guardas en un array distinto al de las imágenes para procesarlos luego. Recuerda que . y .. también regresan true con is_dir().