code: def test_registration_real(self, device, dtype, data):
      data_dev = utils.dict_to(data, device, dtype)
      IR = ImageRegistrator(
          "homography", num_iterations=1200, lr=2e-2, pyramid_levels=5
      ).to(device, dtype)
      model = IR.register(data_dev["image0"], data_dev["image1"])
      homography_gt = torch.inverse(data_dev["H_gt"])
      homography_gt = homography_gt / homography_gt[2, 2]
      h0, w0 = data["image0"].shape[2], data["image0"].shape[3]
      h1, w1 = data["image1"].shape[2], data["image1"].shape[3]
  
      model_denormalized = denormalize_homography(
          model, (h0, w0), (h1, w1)
      )
      model_denormalized = (
          model_denormalized / model_denormalized[0, 2, 2]
      )
  
      bbox = torch.tensor(
          [[[0, 0], [w0, 0], [w0, h0], [0, h0]]],
          device=device,
          dtype=dtype,
      )
      bbox_in_2_gt = transform_points(homography_gt[None], bbox)
      bbox_in_2_gt_est = transform_points(model_denormalized, bbox)
      # The tolerance is huge, because the error is in pixels
      # and transformation is quite significant, so
      # 15 px  reprojection error is not super huge
      assert_close(bbox_in_2_gt, bbox_in_2_gt_est, atol=15, rtol=0.1)
  
imports: import sys
  import pytest
  import torch
  import kornia
  import kornia.testing
  from kornia.geometry import transform_points
  from kornia.geometry.conversions import denormalize_homography
  from kornia.geometry.transform import ImageRegistrator
  from kornia.testing import assert_close
  from kornia.utils._compat import torch_version
label_desc: Use image node_id 3 for calling the TestImageRegistrator obj's underlying member method code with example usage: obj.test_registration_real(device, dtype, data) without return types