Metadata-Version: 2.5
Name: umeyama
Version: 0.1.0
Summary: Umeyama method for point set registration in Python
Project-URL: Homepage, https://github.com/p-sira/umeyama
Project-URL: Repository, https://github.com/p-sira/umeyama
Project-URL: Issues, https://github.com/p-sira/umeyama/issues
Author-email: Sira Pornsiriprasert <code@psira.me>
Maintainer-email: Sira Pornsiriprasert <code@psira.me>
License-Expression: BSD-3-Clause
License-File: LICENSE
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.10
Requires-Dist: numpy>=2.2.6
Description-Content-Type: text/markdown

# Umeyama

<p>
    <a href="https://opensource.org/license/BSD-3-clause" style="text-decoration: none">
        <img src="https://img.shields.io/badge/License-BSD--3--Clause-brightgreen.svg" alt="License">
    </a>
    <a href="https://pypi.org/project/umeyama" style="text-decoration: none">
        <img src="https://img.shields.io/pypi/v/umeyama?label=pypi%20package" alt="PyPI Package">
    </a>
    <a href="https://pypi.org/project/umeyama" style="text-decoration: none">
        <img src="https://static.pepy.tech/personalized-badge/umeyama?period=total&units=INTERNATIONAL_SYSTEM&left_color=GREY&right_color=BRIGHTGREEN&left_text=downloads" alt="Total Downloads">
    </a>
    <a href="https://p-sira.github.io/umeyama" style="text-decoration: none">
        <img src="https://img.shields.io/badge/Docs-github.io-blue" alt="Documentation">
    </a>
</p>

**Umeyama** is a Python library implementing the Umeyama method for estimating the optimal similarity transformation (rotation, translation, and uniform scaling) between two sets of corresponding points.

```bash
pip install umeyama
```

## Quick Start

```python
from umeyama import umeyama
import numpy as np

src = np.array([[0, 0], [1, 0], [1, 1], [0, 1]], dtype=float)
dst = np.array([[1, 1], [1, 2], [2, 2], [2, 1]], dtype=float)

result = umeyama(src, dst)

print(result.rotation)  # Rotation matrix
print(result.translation)  # Translation vector
print(result.scale)  # Scale factor

transformed = result.apply(src)
print(result.rmse(src, dst))  # Root mean square error
```

## References

- Umeyama, Shinji. "Least-Squares Estimation of Transformation Parameters Between Two Point Patterns." IEEE Transactions on Pattern Analysis and Machine Intelligence 13, no. 4 (April 1991): 376–80. https://doi.org/10.1109/34.88573.
