code: def bbox_scaling(bboxes, scale, clip_shape=None):
      """Scaling bboxes w.r.t the box center.
  
      Args:
          bboxes (ndarray): Shape(..., 4).
          scale (float): Scaling factor.
          clip_shape (tuple[int], optional): If specified, bboxes that exceed the
              boundary will be clipped according to the given shape (h, w).
  
      Returns:
          ndarray: Scaled bboxes.
      """
      if float(scale) == 1.0:
          scaled_bboxes = bboxes.copy()
      else:
          w = bboxes[..., 2] - bboxes[..., 0] + 1
          h = bboxes[..., 3] - bboxes[..., 1] + 1
          dw = (w * (scale - 1)) * 0.5
          dh = (h * (scale - 1)) * 0.5
          scaled_bboxes = bboxes + np.stack((-dw, -dh, dw, dh), axis=-1)
      if clip_shape is not None:
          return bbox_clip(scaled_bboxes, clip_shape)
      else:
          return scaled_bboxes
  
imports: import numbers
  import cv2
  import numpy
  from ..utils import to_2tuple
  from .io import imread_backend
label_desc: Use image node_id 11 for calling a global function with example usage: bbox_scaling(bboxes, scale, clip_shape) and returns: bbox_clip, scaled_bboxes