{ "info": { "author": "Siavash Khallaghi", "author_email": "siavashk@ece.ubc.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering" ], "description": "#############\nPython-CPD\n#############\n.. image:: https://travis-ci.com/siavashk/pycpd.svg?branch=master\n :target: https://travis-ci.com/siavashk/pycpd\n\nPure Numpy Implementation of the Coherent Point Drift Algorithm.\n\nMIT License.\n\n*************\nIntroduction\n*************\n\nThis is a pure numpy implementation of the coherent point drift `CPD `_ algorithm by Myronenko and Song. It provides three registration methods for point clouds: 1) Scale and rigid registration; 2) Affine registration; and 3) Gaussian regularized non-rigid registration.\n\nThe CPD algorithm is a registration method for aligning two point clouds. In this method, the moving point cloud is modelled as a Gaussian Mixture Model (GMM) and the fixed point cloud are treated as observations from the GMM. The optimal transformation parameters maximze the Maximum A Posteriori (MAP) estimation that the observed point cloud is drawn from the GMM.\n\nThe registration methods work for 2D and 3D point clouds. For more information, please refer to my `blog `_.\n\n*************\nPip Install\n*************\n.. code-block:: bash\n\n pip install pycpd\n\n************************\nInstallation From Source\n************************\n\nClone the repository to a location, referred to as the ``root`` folder. For example:\n\n.. code-block:: bash\n\n git clone https://github.com/siavashk/pycpd.git $HOME/pycpd\n\nInstall the package:\n\n.. code-block:: bash\n\n pip install .\n\nFor running sample registration examples under ``examples``, you will need ``matplotlib`` to visualize the registration. This can be downloaded by running:\n\n.. code-block:: bash\n\n pip install matplotlib\n\n*****\nUsage\n*****\n\nEach registration method is contained within a single class inside the ``pycpd`` subfolder. To try out the registration, you can simply run:\n\n.. code-block:: bash\n\n python examples/fish_{Transform}_{Dimension}.py\n\nwhere ``Transform`` is either ``rigid``, ``affine`` or ``deformable`` and ``Dimension`` is either ``2D`` or ``3D``. Note that examples are meant to be run from the ``root`` folder.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/siavashk/pycpd", "keywords": "image processing,point cloud,registration,mesh,surface", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pycpd", "package_url": "https://pypi.org/project/pycpd/", "platform": "", "project_url": "https://pypi.org/project/pycpd/", "project_urls": { "Homepage": "https://github.com/siavashk/pycpd" }, "release_url": "https://pypi.org/project/pycpd/1.0.5/", "requires_dist": [ "numpy", "future" ], "requires_python": "", "summary": "Pure Numpy Implementation of the Coherent Point Drift Algorithm", "version": "1.0.5" }, "last_serial": 4379231, "releases": { "0.0": [ { "comment_text": "", "digests": { "md5": "9ce36649d7fb53ca11dc43b91add360d", "sha256": "32962e2fd02a33577b470352edfd8697d28ac938248a98bc0e6376c8bd151d64" }, "downloads": -1, "filename": "pycpd-0.0.tar.gz", "has_sig": false, "md5_digest": "9ce36649d7fb53ca11dc43b91add360d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2746, "upload_time": "2017-03-15T20:13:15", "url": "https://files.pythonhosted.org/packages/14/48/95d53a5e823196f3c02b4614e85d00852ce9ed4433a296d993a4099ba620/pycpd-0.0.tar.gz" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "e320d9a881be5b84bcc15f01c5987c61", "sha256": "86f5335a1b9ad7d53bbd4e12c3f092f0006c59aef17fad28cf5e9f55de03d4bf" }, "downloads": -1, "filename": "pycpd-0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "e320d9a881be5b84bcc15f01c5987c61", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8169, "upload_time": "2017-03-19T01:39:40", "url": "https://files.pythonhosted.org/packages/8b/9d/b75eac4931b0041629787617323e97b6290755ec52d4277a95ec9fa5858e/pycpd-0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a92dc1b1eb3cf9b6a90744141218f30", "sha256": "3eb20cd152571c5100052fa50c101231a6400b148a27d263d9c05b4f2f7ee240" }, "downloads": -1, "filename": "pycpd-0.1.tar.gz", "has_sig": false, "md5_digest": "4a92dc1b1eb3cf9b6a90744141218f30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4096, "upload_time": "2017-03-19T01:39:43", "url": "https://files.pythonhosted.org/packages/3d/c8/ef2b519c67e4f9fa77e29d84144d2f67297d31066563ba404dd4cffeb199/pycpd-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "bf8a1bf66e558183172c51dec2c2e8a6", "sha256": "578c202e7fda8d401c9c7b52166f330c8060e41c2f9903df0d9ee44d6e03876e" }, "downloads": -1, "filename": "pycpd-0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "bf8a1bf66e558183172c51dec2c2e8a6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9053, "upload_time": "2017-06-27T22:15:36", "url": "https://files.pythonhosted.org/packages/7f/52/637b78a90dcfdc1fadf3c06bae8f64a84d1a43bcb258dd9e12012c1b67f0/pycpd-0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb12575d3c2b94ec10289116366aa0f5", "sha256": "47f416adb1bcdabf65f364e3a314cef76b23397e87f8817d321786edb096a83c" }, "downloads": -1, "filename": "pycpd-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eb12575d3c2b94ec10289116366aa0f5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9055, "upload_time": "2017-06-27T22:15:38", "url": "https://files.pythonhosted.org/packages/cf/6f/179acae9a6e642bc1fd2d59233a035d7e7b0c389bc9db8ec07697a96f4c2/pycpd-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9267a6a1bd11111a411dbfc619aff318", "sha256": "4bfc0cd3fa2f6e17b32ddc25197dee200243d35c49aee08f70ccb0e07b6ff497" }, "downloads": -1, "filename": "pycpd-0.2.tar.gz", "has_sig": false, "md5_digest": "9267a6a1bd11111a411dbfc619aff318", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4649, "upload_time": "2017-06-27T22:15:39", "url": "https://files.pythonhosted.org/packages/5f/04/491d67e68cab6df0fe1bc3728fe0120da904517210794a1351e69c6638c1/pycpd-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "e34a95e503f46b78d562d96d7e843020", "sha256": "f2bb4f8659fd3b95c18baa9aec0d6e7486e7a175d2e068ca7f9c916ac9f621e7" }, "downloads": -1, "filename": "pycpd-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e34a95e503f46b78d562d96d7e843020", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9073, "upload_time": "2017-07-12T01:56:12", "url": "https://files.pythonhosted.org/packages/70/b4/f8ed1ea2e2fbb1d48df1036397ddbf45d13fcc88b63101f90d225ef52880/pycpd-0.3-py2.py3-none-any.whl" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "62da4c5e13910364a80c445eb9ae95c8", "sha256": "103f3e7f4fc5e154441298f0c05d05b2197363a417d3d4f18ee35e8c1f800476" }, "downloads": -1, "filename": "pycpd-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "62da4c5e13910364a80c445eb9ae95c8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9108, "upload_time": "2018-01-17T02:17:39", "url": "https://files.pythonhosted.org/packages/e1/d2/f5e1ea951f67e5c316163286ab95ca1a6cefc40bda791a305cc14d42822c/pycpd-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e845d23bd3a592531c54139d1956776", "sha256": "df2c629f9150a70146c5296a0634cc2f040bd30f7d0ca77c9cd60f98545ba392" }, "downloads": -1, "filename": "pycpd-0.4.tar.gz", "has_sig": false, "md5_digest": "1e845d23bd3a592531c54139d1956776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5027, "upload_time": "2018-01-17T02:17:40", "url": "https://files.pythonhosted.org/packages/ae/39/36bf0778d21c1363989df77bd213c104a2e84cc28ce9606e6c4354d76994/pycpd-0.4.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "b8292330640599c0b27100c85f2eb777", "sha256": "30d624ee979f3d14514dfe71594cfa8a31d600e4a847aaf92bcee92499266953" }, "downloads": -1, "filename": "pycpd-1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "b8292330640599c0b27100c85f2eb777", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9006, "upload_time": "2018-08-07T07:03:40", "url": "https://files.pythonhosted.org/packages/3d/4e/89859375d236e4629ce6d17a348a05d5249dc177f1a1f6a315ca4d10ed85/pycpd-1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62bed3fa267788a918a9846728844401", "sha256": "f2cfaa25a0be47fdafc3fd7a4030bbd0213782439e1c73abc7ead78a395f45a0" }, "downloads": -1, "filename": "pycpd-1.0.tar.gz", "has_sig": false, "md5_digest": "62bed3fa267788a918a9846728844401", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5590, "upload_time": "2018-08-07T07:03:42", "url": "https://files.pythonhosted.org/packages/2f/0a/231bae604802f7226925cace4ecb4dd0788e2e57a846eb821299e42b3e54/pycpd-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "15f6bd9b631b3faa7db9d0160f292972", "sha256": "b5f0b29f9c1732c11f5f8a23da1ea3935fd4e16d08fd267e3423d40bad412924" }, "downloads": -1, "filename": "pycpd-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "15f6bd9b631b3faa7db9d0160f292972", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9029, "upload_time": "2018-08-07T07:04:43", "url": "https://files.pythonhosted.org/packages/71/2e/420507e9d9899157abfae7c3e24ba6fc5301484aa898731ea4f7cd07cdf2/pycpd-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1953ed440bc8f6a1f2d3066c91c001c5", "sha256": "2f11064955a3ad383001e75b1fb2280b3adca1039e5259ef94863a1490222d4a" }, "downloads": -1, "filename": "pycpd-1.0.1.tar.gz", "has_sig": false, "md5_digest": "1953ed440bc8f6a1f2d3066c91c001c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5591, "upload_time": "2018-08-07T07:04:45", "url": "https://files.pythonhosted.org/packages/60/5e/02284a15ce1143720694ec239297915302b32d582d071dff61268ca1ac98/pycpd-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ea2824aee4a649187268c5cb83495a7a", "sha256": "6ad224960e3f147f95c889dab5b317e24f8565b65d04992f0784bdf5232c3b98" }, "downloads": -1, "filename": "pycpd-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "ea2824aee4a649187268c5cb83495a7a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9122, "upload_time": "2018-08-08T04:32:54", "url": "https://files.pythonhosted.org/packages/07/08/b991035bf47c6e254a9fe4de6bac770219b3ed152a4d2658b3ffe2633668/pycpd-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af59e031653a177424911cf51c39fa0b", "sha256": "ceb5eb53b4b8f83161a11df2a61450d8aeffa77be7734ddd564e8125b7e841e6" }, "downloads": -1, "filename": "pycpd-1.0.2.tar.gz", "has_sig": false, "md5_digest": "af59e031653a177424911cf51c39fa0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5696, "upload_time": "2018-08-08T04:32:55", "url": "https://files.pythonhosted.org/packages/6e/8a/47bb92a886f8259e66b3602ef89110e99e8d68da9c2b30094d6099796d48/pycpd-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "ed2bc802236f97ebb2c016ec93614e52", "sha256": "e750f7c09246f62232b882e3410206cf5d96214d26497d9f3b3a5513ae414b9e" }, "downloads": -1, "filename": "pycpd-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "ed2bc802236f97ebb2c016ec93614e52", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9126, "upload_time": "2018-08-08T05:32:20", "url": "https://files.pythonhosted.org/packages/6e/a7/8af2ebb6ecaa4b379d07b374e25b3785d388fe339612d3845730caa4652e/pycpd-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c79167bd7a63aa71f4cfd429b845efb1", "sha256": "4d7253f9ce790bf3b10c23a411afd7e27de523c2e5e022ce55cc3ce116c92c37" }, "downloads": -1, "filename": "pycpd-1.0.3.tar.gz", "has_sig": false, "md5_digest": "c79167bd7a63aa71f4cfd429b845efb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5735, "upload_time": "2018-08-08T05:32:21", "url": "https://files.pythonhosted.org/packages/63/42/bf447fddc700eccf44b19f75c054282dc62924387fa521f1e28ed9d9bc42/pycpd-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "8f132531bf07dfa742fa245d7b57a030", "sha256": "cceef365f0c2434036604e477477ac391197d5aaa7cbd21779b3faa86241294d" }, "downloads": -1, "filename": "pycpd-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "8f132531bf07dfa742fa245d7b57a030", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8039, "upload_time": "2018-10-07T02:35:10", "url": "https://files.pythonhosted.org/packages/3c/53/126c0f66a1f60fcc6f6d386b5cc178d45eec3243e3c7e3fb2d405fdfb479/pycpd-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4d07d1f335e63baf46a37e1810c79e9", "sha256": "a68dc5de15a8f8e446b2b6496ac47010f39a5c1de4cacc3d05e2e05c26e9f8e4" }, "downloads": -1, "filename": "pycpd-1.0.4.tar.gz", "has_sig": false, "md5_digest": "c4d07d1f335e63baf46a37e1810c79e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5632, "upload_time": "2018-10-07T02:35:11", "url": "https://files.pythonhosted.org/packages/fd/0a/15019c5d9c3aba2f5c9ad1a95c38b9f67e5d5a40a7256f10fea8377533ae/pycpd-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "957c6963f9631276eb2ccbb89b9dba83", "sha256": "b68a122c6ca8048a4896eccf83c3b758af8a7bd5a22176e7b3d4365426ee40df" }, "downloads": -1, "filename": "pycpd-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "957c6963f9631276eb2ccbb89b9dba83", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7192, "upload_time": "2018-10-15T22:08:28", "url": "https://files.pythonhosted.org/packages/dc/ff/4456e999c48ab823b0faffd50a9a5515346be52d8a820762dfff783ca35e/pycpd-1.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7efddfc32e5aa85ea39ee4e644d88d8", "sha256": "8becbe7951df4607cd2c296db1087011325b1ec1cb05462bbe8003123b934da7" }, "downloads": -1, "filename": "pycpd-1.0.5.tar.gz", "has_sig": false, "md5_digest": "e7efddfc32e5aa85ea39ee4e644d88d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5243, "upload_time": "2018-10-15T22:08:29", "url": "https://files.pythonhosted.org/packages/a7/18/e7e8158bf336d8ef90545776d294f204a24bae7b3b78305219522565dbfc/pycpd-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "957c6963f9631276eb2ccbb89b9dba83", "sha256": "b68a122c6ca8048a4896eccf83c3b758af8a7bd5a22176e7b3d4365426ee40df" }, "downloads": -1, "filename": "pycpd-1.0.5-py2-none-any.whl", "has_sig": false, "md5_digest": "957c6963f9631276eb2ccbb89b9dba83", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7192, "upload_time": "2018-10-15T22:08:28", "url": "https://files.pythonhosted.org/packages/dc/ff/4456e999c48ab823b0faffd50a9a5515346be52d8a820762dfff783ca35e/pycpd-1.0.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7efddfc32e5aa85ea39ee4e644d88d8", "sha256": "8becbe7951df4607cd2c296db1087011325b1ec1cb05462bbe8003123b934da7" }, "downloads": -1, "filename": "pycpd-1.0.5.tar.gz", "has_sig": false, "md5_digest": "e7efddfc32e5aa85ea39ee4e644d88d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5243, "upload_time": "2018-10-15T22:08:29", "url": "https://files.pythonhosted.org/packages/a7/18/e7e8158bf336d8ef90545776d294f204a24bae7b3b78305219522565dbfc/pycpd-1.0.5.tar.gz" } ] }