{"id":13436005,"url":"https://github.com/tum-vision/fastfusion","last_synced_at":"2025-04-05T16:09:17.332Z","repository":{"id":17174528,"uuid":"19941780","full_name":"tum-vision/fastfusion","owner":"tum-vision","description":"Volumetric 3D Mapping in Real-Time on a CPU ","archived":false,"fork":false,"pushed_at":"2016-06-23T14:23:00.000Z","size":485,"stargazers_count":568,"open_issues_count":23,"forks_count":174,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-03-29T15:09:32.962Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tum-vision.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-19T12:56:12.000Z","updated_at":"2025-03-28T16:09:04.000Z","dependencies_parsed_at":"2022-08-07T08:15:49.413Z","dependency_job_id":null,"html_url":"https://github.com/tum-vision/fastfusion","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-vision%2Ffastfusion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-vision%2Ffastfusion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-vision%2Ffastfusion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-vision%2Ffastfusion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tum-vision","download_url":"https://codeload.github.com/tum-vision/fastfusion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361691,"owners_count":20926643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T03:00:42.055Z","updated_at":"2025-04-05T16:09:17.282Z","avatar_url":"https://github.com/tum-vision.png","language":"C++","funding_links":[],"categories":["C++","3D reconstruction"],"sub_categories":["Fastfusion"],"readme":"fastfusion\n==========\n\nVolumetric 3D Mapping in Real-Time on a CPU \n\nThis code implements the approach for real-time 3D mapping on a CPU as\ndescribed in the following research paper:\n\nhttp://vision.in.tum.de/_media/spezial/bib/steinbruecker_etal_icra2014.pdf\n\nVolumetric 3D Mapping in Real-Time on a CPU (F. Steinbruecker, J. Sturm, D. Cremers), \nIn Int. Conf. on Robotics and Automation, 2014.\n\n![alt tag](http://vision.in.tum.de/_media/data/software/fastfusion_small.png)\n\nDemo video:\nhttp://youtu.be/7s9JePSln-M\n\n```\n@string{icra=\"Int. Conf. on Robotics and Automation\"}\n@inproceedings{Steinbruecker-etal-icra14,\n  author = {F. Steinbruecker and J. Sturm and D. Cremers},\n  title = {Volumetric 3D Mapping in Real-Time on a CPU},\n  booktitle = icra,\n  year = {2014},\n  address = {Hongkong, China},\n  titleurl = {steinbruecker_etal_icra2014.pdf},\n  topic = {3D Reconstruction},\n  keywords =  {RGB-D,Fusion,3d-reconstruction}\n}\n```\n\nInstallation\n============\n\n    $ git clone https://github.com/tum-vision/fastfusion.git`\n\n    $ cd fastfusion\n  \n    $ cmake .\n\n    $ make\n\nPreparation of the data\n======================\n\nThe software takes a text file as input which contains per file\n- the camera pose\n- the depth image filename\n- the color image filename\n\nYou can either generate such a file yourself (e.g., by running\nChristan Kerl's DVO SLAM:\n\nhttp://vision.in.tum.de/data/software/dvo\n\navailable as open source on our homepage) or you can download \nsequences from the TUM RGB-D benchmark:\n\nhttp://vision.in.tum.de/data/datasets/rgbd-dataset/\n\nFor simplicity, we take a pre-recorded sequence from the TUM\nRGB-D benchmark.\n\n    $ mkdir ~/data\n\n    $ cd ~/data\n\n    $ wget http://vision.in.tum.de/rgbd/dataset/freiburg3/rgbd_dataset_freiburg3_long_office_household.tgz\n\n    $ tar xvzf rgbd_dataset_freiburg3_long_office_household.tgz\n\nNow we need to generate the text file. For this, we use the associate.py tool from\nthe RGB-D benchmark website. We need to run it twice, as we join the\ncamera poses, the depth image list and the color image list into a single file:\n\n    $ cd ~/fastfusion/\n\n    $ ./associate.py ~/data/rgbd_dataset_freiburg3_long_office_household/groundtruth.txt ~/data/rgbd_dataset_freiburg3_long_office_household/depth.txt \u003e tmp.txt\n\n    $ ./associate.py tmp.txt ~/data/rgbd_dataset_freiburg3_long_office_household/rgb.txt \u003e ~/data/rgbd_dataset_freiburg3_long_office_household/associate.txt\n\nThe resulting text file should look as follows:\n\n    $ head ~/data/rgbd_dataset_freiburg3_long_office_household/associate.txt\n\n```\n1341847980.790000 -0.6832 2.6909 1.7373 0.0003 0.8617 -0.5072 -0.0145 1341847980.786879 depth/1341847980.786879.png 1341847980.786856 rgb/1341847980.786856.png\n1341847980.820100 -0.6821 2.6914 1.7371 0.0003 0.8609 -0.5085 -0.0151 1341847980.822989 depth/1341847980.822989.png 1341847980.822978 rgb/1341847980.822978.png\n1341847980.850000 -0.6811 2.6918 1.7371 0.0001 0.8610 -0.5084 -0.0159 1341847980.854690 depth/1341847980.854690.png 1341847980.854676 rgb/1341847980.854676.png\n[..]\n```\n\nRunning the code\n================\n\n    $ ./bin/onlinefusion ~/data/rgbd_dataset_freiburg3_long_office_household/associate.txt --thread-fusion\n\nAfter some debugging output on the console, a window with a 3D viewer should open. To start the \nreconstruction process, press \"S\". \n\nIf you run the program for the first time, press and hold the CTRL key and turn your scroll wheel. \nThis is only needed once to \"free\" the camera viewpoint. After this, you can pan (right click) and \nrotate (left click) the view as you wish using your mouse.\n\nFurther options\n===============\n\n```\n   ./bin/onlinefusion  [--intrinsics \u003cstring\u003e] [--imagescale \u003cfloat\u003e]\n                       [--threshold \u003cfloat\u003e] [--scale \u003cfloat\u003e]\n                       [--max-camera-distance \u003cfloat\u003e]\n                       [--consistency-checks \u003cint\u003e] [-k \u003cint\u003e] [-e \u003cint\u003e]\n                       [-s \u003cint\u003e] [--incremental-meshing] [-c] [-b] [-v]\n                       [--thread-image] [--thread-fusion]\n                       [--thread-meshing] [-l \u003cstring\u003e] [--] [--version]\n                       [-h] \u003cstring\u003e ...\n\n\nWhere: \n\n   --intrinsics \u003cstring\u003e\n     File with Camera Matrix\n\n   --imagescale \u003cfloat\u003e\n     Image Depth Scale\n\n   --threshold \u003cfloat\u003e\n     Threshold\n\n   --scale \u003cfloat\u003e\n     Size of the Voxel\n\n   --max-camera-distance \u003cfloat\u003e\n     Maximum Camera Distance to Surface\n\n   --consistency-checks \u003cint\u003e\n     Number of Depth Consistency Checks\n\n   -k \u003cint\u003e,  --imagestep \u003cint\u003e\n     Use every kth step\n\n   -e \u003cint\u003e,  --endimage \u003cint\u003e\n     Number of the End Image\n\n   -s \u003cint\u003e,  --startimage \u003cint\u003e\n     Number of the Start Image\n\n   --incremental-meshing\n     Perform incremental Meshing\n\n   -c,  --loopclosures\n     Read Multiple Trajectories and perform Loop Closures\n\n   -b,  --buffer\n     Buffer all Images\n\n   -v,  --viewer\n     Show a Viewer after Fusion\n\n   --thread-image\n     Thread reading the Images from Hard Disk\n\n   --thread-fusion\n     Thread the Fusion inside the Viewer\n\n   --thread-meshing\n     Thread the Meshing inside the Fusion\n\n   -l \u003cstring\u003e,  --loadmesh \u003cstring\u003e\n     Loads this mesh\n\n   --,  --ignore_rest\n     Ignores the rest of the labeled arguments following this flag.\n\n   --version\n     Displays version information and exits.\n\n   -h,  --help\n     Displays usage information and exits.\n\n   \u003cstring\u003e  (accepted multiple times)\n     The File Names\n```\n![alt tag](http://vision.in.tum.de/_media/data/software/screenshot_fastfusion.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftum-vision%2Ffastfusion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftum-vision%2Ffastfusion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftum-vision%2Ffastfusion/lists"}