code: def test_transform_points(
      self, batch_size, num_points, num_dims, device, dtype
  ):
      # generate input data
      eye_size = num_dims + 1
      points_src = torch.rand(
          batch_size, num_points, num_dims, device=device, dtype=dtype
      )
  
      dst_homo_src = utils.create_random_homography(
          batch_size, eye_size
      ).to(device=device, dtype=dtype)
      dst_homo_src = dst_homo_src.to(device)
  
      # transform the points from dst to ref
      points_dst = kgl.transform_points(dst_homo_src, points_src)
  
      # transform the points from ref to dst
      src_homo_dst = torch.inverse(dst_homo_src)
      points_dst_to_src = kgl.transform_points(src_homo_dst, points_dst)
  
      # projected should be equal as initial
      assert_close(points_src, points_dst_to_src, atol=1e-4, rtol=1e-4)
  
imports: import pytest
  import torch
  from torch.autograd import gradcheck
  import kornia
  import kornia.geometry.linalg
  import kornia.testing
  from kornia.testing import BaseTester, assert_close
label_desc: Use image node_id 1 for calling the TestTransformPoints obj's underlying member method code with example usage: obj.test_transform_points(batch_size, num_points, num_dims, device, dtype) without return types