code: def change_coordinate_frame(boxlist, window):
      """Change coordinate frame of the boxlist to be relative to window's frame.
  
      Given a window of the form [ymin, xmin, ymax, xmax],
      changes bounding box coordinates from boxlist to be relative to this window
      (e.g., the min corner maps to (0,0) and the max corner maps to (1,1)).
  
      An example use case is data augmentation: where we are given groundtruth
      boxes (boxlist) and would like to randomly crop the image to some
      window (window). In this case we need to change the coordinate frame of
      each groundtruth box to be relative to this new window.
  
      Args:
        boxlist: A BoxList object holding N boxes.
        window: a size 4 1-D numpy array.
  
      Returns:
        Returns a BoxList object with N boxes.
      """
      win_height = window[2] - window[0]
      win_width = window[3] - window[1]
      boxlist_new = scale(
          np_box_list.BoxList(
              boxlist.get()
              - [window[0], window[1], window[0], window[1]]
          ),
          1.0 / win_height,
          1.0 / win_width,
      )
      _copy_extra_fields(boxlist_new, boxlist)
  
      return boxlist_new
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import numpy
  from .None import np_box_list, np_box_ops
label_desc: Use image node_id 15 for calling a global function with example usage: change_coordinate_frame(boxlist, window) and returns: boxlist_new