code: def random_pca_lighting(src, alphastd, eigval=None, eigvec=None):
      """Apply random pca lighting noise to input image.
  
      Parameters
      ----------
      img : mxnet.nd.NDArray
          Input image with HWC format.
      alphastd : float
          Noise level [0, 1) for image with range [0, 255].
      eigval : list of floats.
          Eigen values, defaults to [55.46, 4.794, 1.148].
      eigvec : nested lists of floats
          Eigen vectors with shape (3, 3), defaults to
          [[-0.5675, 0.7192, 0.4009],
           [-0.5808, -0.0045, -0.8140],
           [-0.5836, -0.6948, 0.4203]].
  
      Returns
      -------
      mxnet.nd.NDArray
          Augmented image.
  
      """
      if alphastd <= 0:
          return src
  
      if eigval is None:
          eigval = np.array([55.46, 4.794, 1.148])
      if eigvec is None:
          eigvec = np.array(
              [
                  [-0.5675, 0.7192, 0.4009],
                  [-0.5808, -0.0045, -0.8140],
                  [-0.5836, -0.6948, 0.4203],
              ]
          )
  
      alpha = np.random.normal(0, alphastd, size=(3,))
      rgb = np.dot(eigvec * alpha, eigval)
      src += nd.array(rgb, ctx=src.context)
      return src
  
file_path: gluon-cv/gluoncv/data/transforms/image.py
imports: from __future__ import division
  import random
  import numpy
  import mxnet
  from mxnet import nd
  from mxnet.base import numeric_types
label_desc: Use image node_id 4 for calling a global function with example usage: random_pca_lighting(src, alphastd, eigval, eigvec) and returns: src, src