code: def test_shape(
      self, batch_size, num_points, num_distcoeff, device, dtype
  ):
      B, N, Ndist = batch_size, num_points, num_distcoeff
  
      points = torch.rand(B, N, 2, device=device, dtype=dtype)
      K = torch.rand(B, 3, 3, device=device, dtype=dtype)
      distCoeff = torch.rand(B, Ndist, device=device, dtype=dtype)
  
      pointsu = undistort_points(points, K, distCoeff)
      assert pointsu.shape == (B, N, 2)
  
      new_K = torch.rand(B, 3, 3, device=device, dtype=dtype)
      pointsu = undistort_points(points, K, distCoeff, new_K)
      assert pointsu.shape == (B, N, 2)
  
imports: import pytest
  import torch
  from kornia.geometry.calibration.undistort import undistort_image, undistort_points
  from kornia.testing import assert_close, gradcheck
label_desc: Use image node_id 3 for calling the TestUndistortPoints obj's underlying member method code with example usage: obj.test_shape(batch_size, num_points, num_distcoeff, device, dtype) without return types