code: def focus(self, height, width, center_i=None, center_j=None):
          
          if center_i is None:
              center_i = self.height / 2
          if center_j is None:
              center_j = self.width / 2
  
          start_row = int(max(0, center_i - height / 2))
          end_row = int(min(self.height - 1, center_i + height / 2))
          start_col = int(max(0, center_j - width / 2))
          end_col = int(min(self.width - 1, center_j + width / 2))
  
          focus_data = np.zeros(self._data.shape)
          focus_data[start_row:end_row + 1, start_col:end_col + \
              1] = self._data[start_row:end_row + 1, start_col:end_col + 1]
          return type(self)(focus_data.astype(self._data.dtype), self._frame)
docs: Zero out all of the image outside of a crop box.
  
          Parameters
          ----------
          height : int
              The height of the desired crop box.
  
          width : int
              The width of the desired crop box.
  
          center_i : int
              The center height point of the crop box. If not specified, the center
              of the image is used.
  
          center_j : int
              The center width point of the crop box. If not specified, the center
              of the image is used.
  
          Returns
          -------
          :obj:`Image`
              A new Image of the same type and size that is zeroed out except
              within the crop box.