code: def test_from_to_projections(self, device, dtype):
      P1 = torch.tensor(
          [
              [
                  [1.0, 0.0, 0.0, 0.0],
                  [0.0, 1.0, 0.0, 0.0],
                  [1.0, 0.0, 1.0, 0.0],
              ]
          ],
          device=device,
          dtype=dtype,
      )
  
      P2 = torch.tensor(
          [
              [
                  [1.0, 1.0, 1.0, 3.0],
                  [0.0, 2.0, 0.0, 3.0],
                  [0.0, 1.0, 1.0, 0.0],
              ]
          ],
          device=device,
          dtype=dtype,
      )
  
      F_mat = epi.fundamental_from_projections(P1, P2)
      P_mat = epi.projections_from_fundamental(F_mat)
      F_hat = epi.fundamental_from_projections(
          P_mat[..., 0], P_mat[..., 1]
      )
  
      F_mat_norm = epi.normalize_transformation(F_mat)
      F_hat_norm = epi.normalize_transformation(F_hat)
      assert_close(F_mat_norm, F_hat_norm, atol=1e-4, rtol=1e-4)
  
imports: from typing import Dict
  import pytest
  import test_common
  import torch
  from torch.autograd import gradcheck
  import kornia.geometry.epipolar
  import kornia.testing
  from kornia.testing import assert_close
label_desc: Use image node_id 4 for calling the TestFundamentalFromProjections obj's underlying member method code with example usage: obj.test_from_to_projections(device, dtype) without return types