code: def skyblend(self, img, img_prev, skymask):
      m = self.skybox_tracking(img, img_prev, skymask)
  
      skybg = self.get_skybg_from_box(m)
  
      img = self.relighting(img, skybg, skymask)
      syneth = img * (1 - skymask) + skybg * skymask
  
      if self.halo_effect:
          # halo effect brings better visual realism but will slow down the speed
          syneth = self.halo(syneth, skybg, skymask)
  
      if self.is_rainy:
          syneth = self.rainmodel.forward(syneth)
  
      return np.clip(syneth, a_min=0, a_max=1)
  
file_path: PaddleHub/modules/video/Video_editing/SkyAR/skybox.py
imports: import cv2
  import numpy
  from .rain import Rain
  from .utils import build_transformation_matrix, update_transformation_matrix, estimate_partial_transform, removeOutliers, guidedfilter
label_desc: Use image node_id 9 for calling the SkyBox obj's underlying member method code with example usage: obj.skyblend(img, img_prev, skymask) and returns: np