def respective_zoom(x, h_range=(<NUM_LIT>, <NUM_LIT>), w_range=(<NUM_LIT>, <NUM_LIT>), flags=None, border_mode='<STR_LIT>'):
zoom_matrix = affine_respective_zoom_matrix(h_range=h_range, w_range=w_range)<EOL>h, w = x.shape[<NUM_LIT:0>], x.shape[<NUM_LIT:1>]<EOL>transform_matrix = transform_matrix_offset_center(zoom_matrix, h, w)<EOL>x = affine_transform_cv2(<EOL>x, transform_matrix, flags=flags, border_mode=border_mode<EOL>)  <EOL>return x<EOL>
Zooming/Scaling a single image that height and width are changed independently.

    Parameters
    -----------
    x : numpy.array
        An image with dimension of [row, col, channel] (default).
    h_range : float or tuple of 2 floats
        The zooming/scaling ratio of height, greater than 1 means larger.
            - float, a fixed ratio.
            - tuple of 2 floats, randomly sample a value as the ratio between 2 values.
    w_range : float or tuple of 2 floats
        The zooming/scaling ratio of width, greater than 1 means larger.
            - float, a fixed ratio.
            - tuple of 2 floats, randomly sample a value as the ratio between 2 values.
    border_mode : str
        - `constant`, pad the image with a constant value (i.e. black or 0)
        - `replicate`, the row or column at the very edge of the original is replicated to the extra border.

    Returns
    -------
    numpy.array
        A processed image.