class_docstr: Crops the size of the observation to a given crop window. For example, in Atari, the
  observations are images with a shape of 210x160. Usually, we will want to crop the size of the observation to a
  square of 160x160 before rescaling them.
code: def get_filtered_observation_space(
      self, input_observation_space: ObservationSpace
  ) -> ObservationSpace:
      # replace -1 with the max size
      crop_high = self._replace_negative_one_in_crop_size(
          self.crop_high, input_observation_space.shape
      )
      crop_low = self._replace_negative_one_in_crop_size(
          self.crop_low, input_observation_space.shape
      )
  
      input_observation_space.shape = crop_high - crop_low
      return input_observation_space
  
file_path: coach/rl_coach/filters/observation/observation_crop_filter.py
imports: from typing import Union, Tuple
  import numpy
  from rl_coach.core_types import ObservationType
  from rl_coach.filters.observation.observation_filter import ObservationFilter
  from rl_coach.spaces import ObservationSpace
label_desc: Use image node_id 5 for calling the ObservationCropFilter obj's underlying member method code with example usage: obj.get_filtered_observation_space(input_observation_space) and returns: input_observation_space