{ "info": { "author": "Hannes Ovr\u00e9n", "author_email": "hannes.ovren@liu.se", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Topic :: Scientific/Engineering" ], "description": "Camera-to-IMU calibration toolbox\n=================================\n\nThis toolbox provides a python library to perform joint calibration of a\nrolling shutter camera-gyroscope system.\n\nGiven gyroscope and video data, this library can find the following\nparameters\n\n- True gyroscope rate\n- Time offset\n- Rotation between camera and gyroscope coordinate frames\n- Gyroscope measurement bias\n\nIf you use the package for your work, please cite the following paper\n\n Ovr\u00e9n, H and Forss\u00e9n, P.-E. \"Gyroscope-based video stabilisation\n with auto-calibration.\" In 2015 IEEE International Conference on\n Robotics and Automation (ICRA) (pp. 2090\u20132097). Seattle, WA\n\nCan I use these methods for my application?\n-------------------------------------------\n\nThe calibration methods in this package assumes the following\n\n- Your camera is calibrated, including known readout time\n- The camera frame rate is constant, and known\n- The gyroscope frame rate is constant, and approximately known (within\n a few Hz, or percent)\n\nIf the video and gyroscope data are *not uniformly sampled*, but you\nhave access to somewhat reliable timestamps, then you can still use the\nmethod if you resample the data to be uniform. By \"reliable\" we mean\ntimestamps without drift, and no (or negligble) jitter.\n\nChanges from 1.0\n----------------\n\nThe 2.0 version of crisp features a new fully automatic calibrator. This\nmeans that there is no compelling reason to use the semi-manual methods\nin the previous version of crisp. Therefore the old example scripts have\nbeen removed, and the old functions are not imported into the module\nnamespace. No old functions have been removed, so if you want to use\nthem they are still available in submodules.\n\nInstallation\n------------\n\nTo use the package you need the following Python packages:\n\n- NumPy\n- SciPy\n- OpenCV\n- matplotlib\n\nThe easiest way is to install from PyPI:\n\n::\n\n $ pip install crisp\n\nIf you want to build the package from source, you also need the *Cython*\npackage. To build and install the ``crisp`` module just run the\nfollowing commands:\n\n::\n\n $ python setup.py build\n $ python setup.py install\n\nFor a user-only installation add ``--user`` to the install command.\n\nUsage\n-----\n\nThe gyroscope and video data are first loaded into a stream object\n(``GyroStream``, and a subclass of ``VideoStream`` respectively). To be\nable to understand how points are mapped from the real world to the\nimage, the video stream also need a ``CameraModel`` (-subclass)\ninstance.\n\n::\n\n import crisp\n\n gyro = crisp.GyroStream.from_data(some_data_array)\n camera_model = crisp.AtanCameraModel(...) # One specific choice of camera model\n video = crisp.VideoStream.from_file(camera_model, video_file_path)\n\nWe then tie the streams together using a ``AutoCalibrator`` instance.\nSince the calibration proces need to have estimates of the time offset\nand relative rotation, these are first estimated using the\n``initialize()`` member. This initialization only requires that you give\nan approximate gyroscope sample rate (in Hz).\n\n::\n\n calibrator = crisp.AutoCalibrator(video, gyro)\n calibrator.initialize(guessed_gyro_rate)\n result = calibrator.calibrate() # Dict of calibrated parameters\n\nInitialization and calibration errors can be caught by handling\n``InitializationError`` and ``CalibrationError``.\n\nExample scripts\n~~~~~~~~~~~~~~~\n\nWe bundle one example script ``gopro_dataset_example.py`` which shows\nhow to use the library with the data in our dataset\n(http://www.cvl.isy.liu.se/research/datasets/gopro-gyro-dataset/). This\nis the same dataset that was used to produce the above mentioned ICRA\n2015 paper.\n\nFeedback\n--------\n\n- For any questions regarding the method and paper, please send an\n e-mail to hannes.ovren@liu.se.\n- For issues about the code, you are welcome to either use the tools\n (issue reporting, etc.) provided by GitHub, or send an e-mail.\n\nLicense\n-------\n\nAll code in this repository is licensed under the GPL version 3.", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hovren/crisp", "keywords": "gyroscope gyro camera imu calibration synchronization", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "crisp", "package_url": "https://pypi.org/project/crisp/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/crisp/", "project_urls": { "Homepage": "https://github.com/hovren/crisp" }, "release_url": "https://pypi.org/project/crisp/2.2/", "requires_dist": null, "requires_python": null, "summary": "Camera-to-IMU calibration and synchronization toolkit", "version": "2.2" }, "last_serial": 1713368, "releases": { "2.1": [ { "comment_text": "", "digests": { "md5": "7763e360c8127557a50d9f55ddfb287a", "sha256": "260ec2eb9ef629746b1a2e7278097f71fecb53334c55c9357832ae4a84d29bc8" }, "downloads": -1, "filename": "crisp-2.1.tar.gz", "has_sig": false, "md5_digest": "7763e360c8127557a50d9f55ddfb287a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114166, "upload_time": "2015-08-24T08:23:15", "url": "https://files.pythonhosted.org/packages/db/a2/b3f53eafcb17c93700249dbe14faac9e4d458824353e50ffef99bc4aaba8/crisp-2.1.tar.gz" } ], "2.1.post1": [ { "comment_text": "", "digests": { "md5": "febb6810e9ef8e0847c30b279e72fc7b", "sha256": "a961a64181aaf6010958fbb0c3f78a4149f92fc8aaf32070936c3e482e4d5fba" }, "downloads": -1, "filename": "crisp-2.1.post1.tar.gz", "has_sig": false, "md5_digest": "febb6810e9ef8e0847c30b279e72fc7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114200, "upload_time": "2015-08-24T09:11:01", "url": "https://files.pythonhosted.org/packages/27/60/af27c362a56266aac8a5e42a20ecbf21ef6c1fbab7659e246e3c627d3001/crisp-2.1.post1.tar.gz" } ], "2.1.post2": [ { "comment_text": "", "digests": { "md5": "a1bfff82748a28f47a7c47830bbb3a51", "sha256": "60d60c2b3e0322303d8588de9098e589ca85cfeea5e92c6ff1d54bb914fa1df9" }, "downloads": -1, "filename": "crisp-2.1.post2.tar.gz", "has_sig": false, "md5_digest": "a1bfff82748a28f47a7c47830bbb3a51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114199, "upload_time": "2015-08-24T09:14:42", "url": "https://files.pythonhosted.org/packages/a8/89/b2bb5a731d82845ab68b52d31e3fd80507bee7b394893e50bf7fb863e092/crisp-2.1.post2.tar.gz" } ], "2.1.post3": [ { "comment_text": "", "digests": { "md5": "d28b62bd7468baaef0cd8b554f3843c7", "sha256": "9e972b36c0718ff41233454df766e104aa0ad39bf058ccf77f881b57b188a114" }, "downloads": -1, "filename": "crisp-2.1.post3.tar.gz", "has_sig": false, "md5_digest": "d28b62bd7468baaef0cd8b554f3843c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114177, "upload_time": "2015-08-24T09:39:46", "url": "https://files.pythonhosted.org/packages/be/ce/35c0c3eabc969f19476d02dc2b8437d5bd415bddc753e14bd18efd7599da/crisp-2.1.post3.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "674d4fd2f780521b09bebc9cd85e4dc5", "sha256": "11191143e1283394f533e133af71c10e497132ee892ae7ccd54f9055909cbc73" }, "downloads": -1, "filename": "crisp-2.2.tar.gz", "has_sig": false, "md5_digest": "674d4fd2f780521b09bebc9cd85e4dc5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76291, "upload_time": "2015-09-08T14:50:25", "url": "https://files.pythonhosted.org/packages/6e/73/5d7fd666be151da2ac7cfae038e3eb3cbd34bdf3421994633d87be05c8f5/crisp-2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "674d4fd2f780521b09bebc9cd85e4dc5", "sha256": "11191143e1283394f533e133af71c10e497132ee892ae7ccd54f9055909cbc73" }, "downloads": -1, "filename": "crisp-2.2.tar.gz", "has_sig": false, "md5_digest": "674d4fd2f780521b09bebc9cd85e4dc5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76291, "upload_time": "2015-09-08T14:50:25", "url": "https://files.pythonhosted.org/packages/6e/73/5d7fd666be151da2ac7cfae038e3eb3cbd34bdf3421994633d87be05c8f5/crisp-2.2.tar.gz" } ] }