code: def test_two_view(self, device, dtype):
      num_views: int = 2
      num_points: int = 10
      scene: Dict[str, torch.Tensor] = epi.generate_scene(
          num_views, num_points
      )
  
      P1 = scene["P"][0:1]
      P2 = scene["P"][1:2]
      x1 = scene["points2d"][0:1]
      x2 = scene["points2d"][1:2]
  
      X = epi.triangulate_points(P1, P2, x1, x2)
      x_reprojected = kornia.geometry.transform_points(
          scene["P"], X.expand(num_views, -1, -1)
      )
  
      assert_close(scene["points3d"], X, rtol=1e-4, atol=1e-4)
      assert_close(
          scene["points2d"], x_reprojected, rtol=1e-4, atol=1e-4
      )
  
file_path: kornia/test/geometry/epipolar/test_triangulation.py
imports: from typing import Dict
  import pytest
  import torch
  from torch.autograd import gradcheck
  import kornia
  import kornia.geometry.epipolar
  from kornia.testing import assert_close
label_desc: Use image node_id 3 for calling the TestTriangulation obj's underlying member method code with example usage: obj.test_two_view(device, dtype) without return types