{ "info": { "author": "['Robert Sare', 'George Hilley']", "author_email": "rmsare@stanford.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# pymccrgb\n\n[![Build Status](https://travis-ci.com/rmsare/pymccrgb.svg?branch=master)](https://travis-ci.com/rmsare/pymccrgb)\n[![Documentation Status](https://readthedocs.org/projects/pymccrgb/badge/?version=latest)](https://pymccrgb.readthedocs.io/en/latest/?badge=latest)\n\n**pymccrgb** is a Python package for multiscale curvature classification of\npoint clouds with color attributes. \n\nIt extends a popular classification method\n([MCC lidar](https://sourceforge.net/p/mcclidar/wiki/Home/)) [[0]](#references) to point cloud datasets with multiple color channels, such as those\ncommonly produced in surveys using drone photography or other platforms. It can be used to distinguish points from the\nground surface and low vegetation in data produced by structure from motion photogrammetry,\nstereo photogrammetry, or multi-spectral lidar scanning, or to filter colorized lidar point clouds.\n\nThe intended users are scientists in geomorphology, ecology, or planetary science\nwho want to classify point clouds for topographic analysis, canopy height measurements, or other spectral classification.\n\n### Installation\n\nThis package is developed for Linux and Python 3.6+. It depends on common \nPython packages like sklearn, numpy, the LibLAS C API, and \n[MCC Python bindings](https://github.com/stgl/pymcc).\n\nYou can install it with `conda`:\n\n```bash\nconda env create -n pymcc\nconda activate pymcc\nconda install pymccrgb -c conda-forge\n```\n\n### Requirements\n\nThe LibLAS C library is required for MCC and `pymccrgb`. The MCC wrapper also \nrequires Boost and the C++11 or later standard library. These are installed \nwith the conda package.\n\nRefer to the [documentation](https://pymccrgb.readthedocs.io/en/latest/installation.html)\nand the [LibLAS install guide](https://liblas.org/start.html#installation) for \ninstructions for installing LibLAS from source.\n\n### Examples\n\nExample notebooks are available in the docs or at [docs/source/examples](docs/source/examples).\n\n#### Topography under tree cover\n\n```python\nfrom pymccrgb import mcc, mcc_rgb\nfrom pymccrgb.datasets import load_mammoth_lidar\nfrom pymccrgb.plotting import plot_results\n\n# Load sample data (Mammoth Mountain, CA)\ndata = load_mammoth_lidar(npoints=1e6)\n\n# MCC algorithm\nground_mcc, labels_mcc = mcc(data)\n\n# MCC-RGB algorithm\nground_mccrgb, labels_mccrgb = mcc_rgb(data)\n\nplot_results(data, labels_mcc, labels_mccrgb)\n```\n\n[![MCC results](docs/img/mccrgb.png)]()\n\nResults of MCC and MCC-RGB on a forested area near Mammoth Mountain, CA. \n\n### Documentation\n\nRead the documentation for example use cases, an API reference, and more at [pymccrgb.readthedocs.io](https://pymccrgb.readthedocs.io). \n\n### Contributing\n\n#### Bug reports\n\nBug reports are much appreciated. Please [open an issue](https://github.com/rmsare/pymccrgb/issues/new) with the `bug` label,\nand provide a minimal example illustrating the problem.\n\n#### Suggestions\n\nFeel free to [suggest new features](https://github.com/rmsare/pymccrgb/issues/new) in an issue with the `new-feature` label.\n\n#### Pull requests\n\nIf you would like to add a feature or fix a bug, please fork the repository, create a feature branch, and [submit a PR](https://github.com/rmsare/pymccrgb/compare) and reference any relevant issues. There are nice guides to contributing with GitHub [here](https://akrabat.com/the-beginners-guide-to-contributing-to-a-github-project/) and [here](https://yourfirstpr.github.io/). Please include tests where appropriate and check that the test suite passes (a Travis build or `pytest pymccrgb/tests`) before submitting.\n\n### Support and questions\n\nPlease [open an issue](https://github.com/rmsare/pymccrgb/issues/new) with your question.\n\n### References\n\n[0] Evans, J. S., & Hudak, A. T. 2007. A multiscale curvature algorithm for classifying discrete return LiDAR in forested environments. IEEE Transactions on Geoscience and Remote Sensing, 45(4), 1029-1038 [doi](https://doi.org/10.1109/TGRS.2006.890412) \n\n### License\n\nThis work is licensed under the MIT License (see [LICENSE](LICENSE)). It also\nincorporates a wrapper for the [`mcc-lidar` implementation](https://sourceforge.net/p/mcclidar),\nwhich is distributed under the Apache license (see [LICENSE.txt](https://sourceforge.net/p/mcclidar/code/HEAD/tree/tags/2.1/LICENSE.txt)).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rmsare/pymccrgb", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pymccrgb", "package_url": "https://pypi.org/project/pymccrgb/", "platform": "", "project_url": "https://pypi.org/project/pymccrgb/", "project_urls": { "Homepage": "https://github.com/rmsare/pymccrgb" }, "release_url": "https://pypi.org/project/pymccrgb/0.1.7/", "requires_dist": null, "requires_python": "", "summary": "A Python package for point cloud classification using color and curvature", "version": "0.1.7", "yanked": false, "yanked_reason": null }, "last_serial": 6034546, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1406ee18a317229230011490725f089f", "sha256": "f684961d1d6743c240d291cd4e35ffb2f39dc39ee0bb179a88173a10e392d35c" }, "downloads": -1, "filename": "pymccrgb-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1406ee18a317229230011490725f089f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15274, "upload_time": "2019-09-25T18:53:58", "upload_time_iso_8601": "2019-09-25T18:53:58.051104Z", "url": "https://files.pythonhosted.org/packages/a5/9a/3aecfca57327033148aecb0fe1a7b350faca595fdbd21cee991bbd1ec168/pymccrgb-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ddfdb9a0bd2103a7ff16b8db32d473b0", "sha256": "fa1931fbb385702a2d71b8b8361723b2da183fcfa77164701c7efbe38851651d" }, "downloads": -1, "filename": "pymccrgb-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ddfdb9a0bd2103a7ff16b8db32d473b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13484, "upload_time": "2019-09-25T18:54:11", "upload_time_iso_8601": "2019-09-25T18:54:11.778946Z", "url": "https://files.pythonhosted.org/packages/b1/3f/fd0a3e0c26f2a2dd11022cf04ac5377aa9f51f2b0379c9985068f0c4ddb2/pymccrgb-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d145e53e6b9d8c2666e4fa78432720dc", "sha256": "33eb84265b71a256c99a887b5148a894100f438ca29663ebdc3f57baaf09b2a9" }, "downloads": -1, "filename": "pymccrgb-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d145e53e6b9d8c2666e4fa78432720dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24330871, "upload_time": "2019-09-25T21:35:43", "upload_time_iso_8601": "2019-09-25T21:35:43.890789Z", "url": "https://files.pythonhosted.org/packages/cf/ec/190f30603e41268a1bd25a01dadd56d4f13cadc5f2e745d30f8059ccc5fa/pymccrgb-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "21f9c08377a477d53e20df2052458dfe", "sha256": "27496cc832ac970230d896cd2480663d54373b291cbc64a9568ce6f19318b6ec" }, "downloads": -1, "filename": "pymccrgb-0.1.1.tar.gz", "has_sig": false, "md5_digest": "21f9c08377a477d53e20df2052458dfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24283549, "upload_time": "2019-09-25T21:36:10", "upload_time_iso_8601": "2019-09-25T21:36:10.576809Z", "url": "https://files.pythonhosted.org/packages/9f/31/b506ac0119dd7ac93c0dcb727ef9514250e0c7f8dcac4ef3802a3d471bbd/pymccrgb-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "dc742f58474dfb05f6aab7ff2ab9805a", "sha256": "ef89cff419a417f5cbfee1575da97dbee4128f3136d568674fd50293ae580da1" }, "downloads": -1, "filename": "pymccrgb-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "dc742f58474dfb05f6aab7ff2ab9805a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21648667, "upload_time": "2019-10-01T14:55:33", "upload_time_iso_8601": "2019-10-01T14:55:33.794779Z", "url": "https://files.pythonhosted.org/packages/02/38/60d1a4a0e98a2559017b54f749426e58686552045d15362910c19b1645e1/pymccrgb-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c6b84acf36a52965fd56bbf339948f23", "sha256": "a5a40a855057a31984c7dec770b7c24723f6c359d091e2eedeb967e0c15b95f9" }, "downloads": -1, "filename": "pymccrgb-0.1.3.tar.gz", "has_sig": false, "md5_digest": "c6b84acf36a52965fd56bbf339948f23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21648735, "upload_time": "2019-10-01T14:55:40", "upload_time_iso_8601": "2019-10-01T14:55:40.713767Z", "url": "https://files.pythonhosted.org/packages/6b/a3/668a0dbc8f5b46dfb5b7f4c354e89600bdd2789aecdb4243d168644f2157/pymccrgb-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "613ddd7f9ab73072e851bca2eaacf5ff", "sha256": "e79fc2e33e760952ef1072f4471f01012ace52547b2dbddf3b5b869888b780b3" }, "downloads": -1, "filename": "pymccrgb-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "613ddd7f9ab73072e851bca2eaacf5ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 284893, "upload_time": "2019-10-20T20:23:02", "upload_time_iso_8601": "2019-10-20T20:23:02.138961Z", "url": "https://files.pythonhosted.org/packages/ad/a8/194127d9b3fd3ce095e2c2869eb6705e186982e318d8c538bb118a468ab0/pymccrgb-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c8b23d3423a50db85efaa04e2ecd7baf", "sha256": "3e9d19dc96b8580e9130cee9527c9f23556a911303815c1414118b5ad942f64a" }, "downloads": -1, "filename": "pymccrgb-0.1.4.tar.gz", "has_sig": false, "md5_digest": "c8b23d3423a50db85efaa04e2ecd7baf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 285043, "upload_time": "2019-10-20T20:23:04", "upload_time_iso_8601": "2019-10-20T20:23:04.431949Z", "url": "https://files.pythonhosted.org/packages/e0/00/d0bc754c9b7a7830408a3af0b94eee5db67e5c8ae117dea12def6cddd0d5/pymccrgb-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "666ec9afc83d526297013174a94be826", "sha256": "86a981a435e17dabe84733e595bc8e08ce4c11ffdad463745482077ce78073d4" }, "downloads": -1, "filename": "pymccrgb-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "666ec9afc83d526297013174a94be826", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 285850, "upload_time": "2019-10-22T22:51:37", "upload_time_iso_8601": "2019-10-22T22:51:37.065786Z", "url": "https://files.pythonhosted.org/packages/ff/93/20cbbdb8071113be2b747c0db5d899d445d6120bcb44dccca8173c18333f/pymccrgb-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9e1db5576da84a9bcb00f1c0f9c38f9d", "sha256": "17119579f934016e4561b032186d7c834a2ae9e61e26accbb94313cc92b3f39e" }, "downloads": -1, "filename": "pymccrgb-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9e1db5576da84a9bcb00f1c0f9c38f9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 285869, "upload_time": "2019-10-22T22:51:39", "upload_time_iso_8601": "2019-10-22T22:51:39.394964Z", "url": "https://files.pythonhosted.org/packages/97/b9/d962b2218c2f8d52cf9c10f0052e1342b82f75762fd838bf08e631c9325e/pymccrgb-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "36d52cd3f8bb2dbdbf33bb6ce9566448", "sha256": "4fec43877ba16587a3c0a5daf01e782d97421bffa3006b7b602cb8c33aa32af0" }, "downloads": -1, "filename": "pymccrgb-0.1.6.tar.gz", "has_sig": false, "md5_digest": "36d52cd3f8bb2dbdbf33bb6ce9566448", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 285187, "upload_time": "2019-10-26T05:02:13", "upload_time_iso_8601": "2019-10-26T05:02:13.526763Z", "url": "https://files.pythonhosted.org/packages/bb/ca/0fcf2008b825197c290f5384f9a02daac15709a0b70fa4cf0e9fbe3f59bb/pymccrgb-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "4423962cecb5d6b908c9648820f11a53", "sha256": "378f2207f8f8ccfb1ff3a93c702f34f6254e62ebdfa287b86bf4ead471a0a653" }, "downloads": -1, "filename": "pymccrgb-0.1.7.tar.gz", "has_sig": false, "md5_digest": "4423962cecb5d6b908c9648820f11a53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 285142, "upload_time": "2019-10-26T18:16:12", "upload_time_iso_8601": "2019-10-26T18:16:12.003264Z", "url": "https://files.pythonhosted.org/packages/ab/d9/e9110c173745ad72fefac9ad1bce5e34b91d28443a3df807bbba20731454/pymccrgb-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4423962cecb5d6b908c9648820f11a53", "sha256": "378f2207f8f8ccfb1ff3a93c702f34f6254e62ebdfa287b86bf4ead471a0a653" }, "downloads": -1, "filename": "pymccrgb-0.1.7.tar.gz", "has_sig": false, "md5_digest": "4423962cecb5d6b908c9648820f11a53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 285142, "upload_time": "2019-10-26T18:16:12", "upload_time_iso_8601": "2019-10-26T18:16:12.003264Z", "url": "https://files.pythonhosted.org/packages/ab/d9/e9110c173745ad72fefac9ad1bce5e34b91d28443a3df807bbba20731454/pymccrgb-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }