text: from numba import jit, njit
  import numpy as np
  
  @njit(fastmath=True)
  def numba_image_to_pointcloud(depth_image, bounding_box, camera_matrix):
      x_min, y_min, x_max, y_max = bounding_box
      h, w = depth_image.shape
  
      # check and correct the bounding box to be within the rgb_image
      x_min = int(round(max(0, x_min)))
      y_min = int(round(max(0, y_min)))
      x_max = int(round(min(w-1, x_max)))
      y_max = int(round(min(h-1, y_max)))
      if x_max < x_min:
          x_max = x_min
      if y_max < y_min:
          y_max = y_min
          
      f_x = camera_matrix[0,0]
      c_x = camera_matrix[0,2]
      f_y = camera_matrix[1,1]
      c_y = camera_matrix[1,2]
  
      out_w = (x_max - x_min) + 1
      out_h = (y_max - y_min) + 1
      points = np.empty((out_h * out_w, 3), dtype=np.float32) 
  
      i = 0
      x = x_min
      while x <= x_max:
          y = y_min
          while y <= y_max:
              z_3d = depth_image[y,x] / 1000.0
              x_3d = ((x - c_x) / f_x) * z_3d
              y_3d = ((y - c_y) / f_y) * z_3d
              points[i] = (x_3d, y_3d, z_3d)
              i += 1
              y += 1
          x += 1
      
      return points
  