code: def test_projective_weighted_estimation():
      # Exact solution with same points, and unity weights
      tform = estimate_transform("projective", SRC[:4, :], DST[:4, :])
      tform_w = estimate_transform(
          "projective", SRC[:4, :], DST[:4, :], np.ones(4)
      )
      assert_almost_equal(tform.params, tform_w.params)
  
      # Over-determined solution with same points, and unity weights
      tform = estimate_transform("projective", SRC, DST)
      tform_w = estimate_transform(
          "projective", SRC, DST, np.ones(SRC.shape[0])
      )
      assert_almost_equal(tform.params, tform_w.params)
  
      # Repeating a point, but setting its weight small, should give nearly
      # the same result.
      point_weights = np.ones(SRC.shape[0] + 1)
      point_weights[0] = 1.0e-15
      tform1 = estimate_transform("projective", SRC, DST)
      tform2 = estimate_transform(
          "projective",
          SRC[np.arange(-1, SRC.shape[0]), :],
          DST[np.arange(-1, SRC.shape[0]), :],
          point_weights,
      )
      assert_almost_equal(tform1.params, tform2.params, decimal=3)
  
imports: import re
  import textwrap
  import numpy
  import pytest
  from numpy.testing import assert_almost_equal, assert_array_almost_equal, assert_equal
  from skimage.transform import AffineTransform, EssentialMatrixTransform, EuclideanTransform, FundamentalMatrixTransform, PiecewiseAffineTransform, PolynomialTransform, ProjectiveTransform, SimilarityTransform, estimate_transform, matrix_transform
  from skimage.transform._geometric import _GeometricTransform, _affine_matrix_from_vector, _center_and_normalize_points, _euler_rotation_matrix
label_desc: Use image node_id 25 for calling a global function with example usage: test_projective_weighted_estimation() without return types