class_docstr: Each window is associated with a tuple of coordinates.
  These data properties are used to create TF
  placeholders or ``tf.data.Dataset`` when constructing a TF graph.
  Sampler read the data specifications and fill the placeholder/dataset.
class_docstr_tok: ["Each","window","is","associated","with","a","tuple","of","coordinates",".","These","data","properties","are","used","to","create","TF","placeholders","or","``","tf.data.Dataset","``","when","constructing","a","TF","graph",".","Sampler","read","the","data","specifications","and","fill","the","placeholder\/dataset","."]
docstr: If the window has dynamic shapes, this function
  infers the fully specified shape from the image_shapes.
  
  :param image_shapes:
  :return: dict of fully specified window shapes
docstr_tok: ["If","the","window","has","dynamic","shapes",",","this","function","infers","the","fully","specified","shape","from","the","image_shapes",".",":","param","image_shapes",":",":","return",":","dict","of","fully","specified","window","shapes"]
code: def match_image_shapes(self, image_shapes):
      """
      If the window has dynamic shapes, this function
      infers the fully specified shape from the image_shapes.
  
      :param image_shapes:
      :return: dict of fully specified window shapes
      """
      if not self.has_dynamic_shapes:
          return self._shapes
  
      static_window_shapes = self._shapes.copy()
      # fill the None element in dynamic shapes using image_sizes
      for name in list(self._shapes):
          static_window_shapes[name] = tuple(
              win_size if win_size else image_shape
              for (win_size, image_shape) in zip(
                  list(self._shapes[name]), image_shapes[name]
              )
          )
      return static_window_shapes
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import argparse
  import copy
  import numpy
  import tensorflow
  from tensorflow.python.data.util import nest
  from niftynet.utilities.util_common import ParserNamespace
label_desc: Use image node_id 11 for calling the ImageWindow obj's underlying member method code with example usage: obj.match_image_shapes(image_shapes) and returns: static_window_shapes, self