You can easily try out the stable matching between arbitrary point patterns using my R-package: matchingpp
Installation and usage are explained on github.
Two point patterns (e.g. a stationarized lattice, a Poisson point process, or data from csv files) are matched to each other via the stable mutual nearest neighbor matching (on the torus in arbitrary dimensions). Typically this results in a thinnig of one of the two point patterns.
See my blog post for more information.
M. A. Klatt, G. Last, D. Yogeshwaran. Hyperuniform and rigid stable matchings. Random Struct Alg. 57:439–473 (2020)