code: def rgbd2pcd(path_img, path_intrinsic, path_trans, path_color=None):
      # read imageio
      depth = imageio.imread(path_img)
  
      intrinsic = np.loadtxt(path_intrinsic)
      trans = np.loadtxt(path_trans)
      if path_color is not None:
          color_image = imageio.imread(path_color)
          pcd, color = extract_pcd(depth, intrinsic, color_image)
          pcd = pcd.dot(trans[:3, :3].T) + trans[:3, 3]
          return pcd, color
      else:
          pcd = extract_pcd(depth, intrinsic)
          pcd = pcd.dot(trans[:3, :3].T) + trans[:3, 3]
          return pcd
  
imports: import collections
  import errno
  import numpy
  import os
  import os.path
  import torch
  from torch_geometric.data import Data
  from torch_points_kernels.points_cpu import ball_query
  import imageio
  from tqdm.auto import tqdm
  from torch_points3d.core.data_transform import GridSampling3D, SaveOriginalPosId
  from torch_geometric.transforms import Compose
  import torch_points3d.datasets.registration.fusion
  from torch_cluster import fps
label_desc: Use image node_id 6 for calling a global function with example usage: rgbd2pcd(path_img, path_intrinsic, path_trans, path_color) and returns: pcd,  color, pcd