code: def srmd_degradation(x, k, sf=3):
      """blur + bicubic downsampling
      Args:
          x: HxWxC image, [0, 1]
          k: hxw, double
          sf: down-scale factor
      Return:
          downsampled LR image
      Reference:
          @inproceedings{zhang2018learning,
            title={Learning a single convolutional super-resolution network for multiple degradations},
            author={Zhang, Kai and Zuo, Wangmeng and Zhang, Lei},
            booktitle={IEEE Conference on Computer Vision and Pattern Recognition},
            pages={3262--3271},
            year={2018}
          }
      """
      x = ndimage.convolve(
          x, np.expand_dims(k, axis=2), mode="wrap"
      )  # 'nearest' | 'mirror'
      x = bicubic_degradation(x, sf=sf)
      return x
  
imports: import random
  from functools import partial
  import albumentations
  import cv2
  import ldm.modules.image_degradation.utils_image
  import numpy
  import scipy
  import scipy.stats
  import torch
  from scipy import ndimage
  from scipy.interpolate import interp2d
  from scipy.linalg import orth
label_desc: Use image node_id 12 for calling a global function with example usage: srmd_degradation(x, k, sf) and returns: x