class_docstr: A duplicate of our JAX-basded camera class.
  
  This is necessary to use tf.data.Dataset.
class_docstr_tok: ["A","duplicate","of","our","JAX-basded","camera","class",".","This","is","necessary","to","use","tf.data.Dataset","."]
docstr: Returns the local ray directions for the provided pixels.
docstr_tok: ["Returns","the","local","ray","directions","for","the","provided","pixels","."]
code: def pixel_to_local_rays(self, pixels: tnp.ndarray):
      """Returns the local ray directions for the provided pixels."""
      y = (
          pixels[..., 1] - self.principal_point_y
      ) / self.scale_factor_y
      x = (
          pixels[..., 0] - self.principal_point_x - y * self.skew
      ) / self.scale_factor_x
  
      x, y = _radial_and_tangential_undistort(
          x,
          y,
          k1=self.radial_distortion[0],
          k2=self.radial_distortion[1],
          k3=self.radial_distortion[2],
          p1=self.tangential_distortion[0],
          p2=self.tangential_distortion[1],
      )
  
      dirs = tnp.stack([x, y, tnp.ones_like(x)], axis=-1)
      return dirs / _norm(dirs)
  
imports: from typing import Tuple, Optional
  import tensorflow
  from tensorflow.experimental import numpy
label_desc: Use image node_id 10 for calling the TFCamera obj's underlying member method code with example usage: obj.pixel_to_local_rays(pixels) and returns: unknown