code: def defocus_blur(x, severity=1):
    
    c = [(3, 0.1), (4, 0.5), (6, 0.5), (8, 0.5), (10, 0.5)][severity - 1]
    x = np.array(x) / 255.
    kernel = disk(radius=c[0], alias_blur=c[1])
    channels = []
    for d in range(3):
      channels.append(tfds.core.lazy_imports.cv2.filter2D(x[:, :, d], -1, kernel))
    channels = np.array(channels).transpose((1, 2, 0))  # 3x224x224 -> 224x224x3
    x_clip = np.clip(channels, 0, 1) * 255
    return around_and_astype(x_clip)
docs: Defocus blurring to images.
  
    Apply defocus blurring to images using Gaussian kernel.
  
    Args:
      x: numpy array, uncorrupted image, assumed to have uint8 pixel in [0,255].
      severity: integer, severity of corruption.
  
    Returns:
      numpy array, image with uint8 pixels in [0,255]. Applied defocus blur.