{"id":16071639,"url":"https://github.com/ioquatix/transform-flow","last_synced_at":"2025-04-23T02:00:17.472Z","repository":{"id":10238665,"uuid":"12342206","full_name":"ioquatix/transform-flow","owner":"ioquatix","description":"Transform Flow is a visualisation tool for mobile outdoor augmented reality data sets.","archived":false,"fork":false,"pushed_at":"2013-10-15T02:55:08.000Z","size":39788,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-05T23:56:12.501Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ioquatix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-24T11:18:38.000Z","updated_at":"2017-02-15T00:45:31.000Z","dependencies_parsed_at":"2022-08-20T13:30:51.270Z","dependency_job_id":null,"html_url":"https://github.com/ioquatix/transform-flow","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/ioquatix%2Ftransform-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioquatix%2Ftransform-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioquatix%2Ftransform-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ioquatix%2Ftransform-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ioquatix","download_url":"https://codeload.github.com/ioquatix/transform-flow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250354494,"owners_count":21416752,"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-10-09T07:41:35.802Z","updated_at":"2025-04-23T02:00:17.430Z","avatar_url":"https://github.com/ioquatix.png","language":"C++","readme":"# Transform Flow\n\nTransform Flow is a library for processing and analysing mobile phone sensor data and video streams. It uses an abstract motion model class to expose various tracking and registration algorithms, and these models can either be applied to static data sets or in real time on a mobile device.\n\nThere are a number of ways to contribute to this project:\n\n- Support more platforms, primarily Android and Linux, but potentially Windows in the future.\n- Develop motion models, including designing a motion model which reconciles global and local tracking approaches.\n- Better automatic evaluation of motion models in the visualisation tool.\n\n[![Build Status](https://travis-ci.org/HITLabNZ/transform-flow.png?branch=master)](https://travis-ci.org/HITLabNZ/transform-flow)\n\n## Organisation\n\nTransform Flow is a C++ library for the development of outdoor augmented reality tracking algorithms. It includes a data capture and visualisation tool, as well as a browser application for using the algorithms in real time:\n\n- [Transform Flow](https://github.com/HITLabNZ/transform-flow)\n- [Transform Flow Capture for iOS](https://github.com/HITLabNZ/transform-flow-capture-ios)\n- [Transform Flow Capture for Android](https://github.com/HITLabNZ/transform-flow-capture-android) (incomplete)\n- [Transform Flow Data Sets](https://github.com/HITLabNZ/transform-flow-data)\n- [Transform Flow Visualisation](https://github.com/HITLabNZ/transform-flow-visualisation)\n- [Transform Flow Browser for iOS](https://github.com/HITLabNZ/transform-flow-browser-ios)\n- [Transform Flow Browser for Android](https://github.com/HITLabNZ/transform-flow-browser-ios) (incomplete)\n\nCurrently the main development platform is Mac OS X and iOS, but we are expanding this to include Linux and Android.\n\n## Build\n\nUse [teapot][teapot] to build Transform Flow. You will need Ruby 1.9.3+ (preferably 2.0+) to install:\n\n\t$ gem install teapot\n\nOnce you've downloaded source code, build as follows:\n\n\t$ cd transform-flow\n\t$ export OSX_SDK_VERSION=10.8\n\t$ teapot fetch\n\t$ teapot build Library/TransformFlow variant-debug\n\nFor your own projects, you are best to use [teapot][teapot] as it can automatically fetch, build and link your code against TransformFlow. See `teapot.rb` in [Transform Flow Visualisation](https://github.com/HITLabNZ/transform-flow-visualisation) for an example.\n\n[teapot]: http://www.kyusu.org\n\n## Usage\n\nTransform Flow provides a set of classes for interacting with static data sets:\n\n\tPath data_path = \"path/to/data-set\";\n\tRef\u003cMotionModel\u003e motion_model = new BasicSensorMotionModel;\n\tRef\u003cVideoStream\u003e video_stream = new VideoStream(data_path, motion_model);\n\t\n\tauto frames = video_stream-\u003eframes()\n\tlog_debug(\"Heading\", frames[0].heading, \"Gravity\", frames[0].gravity);\n\nThe best place to see a working example is in the code for the [Transform Flow Visualisation](https://github.com/HITLabNZ/transform-flow-visualisation) application.\n\n## Video Stream Format\n\nThe video stream format consists of a directory of images and a CSV log file.\n\nThe CSV format is as follows:\n\n\t[sequence-number],[event-name],[event-arguments,]\n\nThere are several pre-defined events:\n\n\tconst char * GYROSCOPE = \"Gyroscope\";\n\tconst char * ACCELEROMETER = \"Accelerometer\";\n\tconst char * GRAVITY = \"Gravity\";\n\tconst char * MOTION = \"Motion\";\n\tconst char * LOCATION = \"Location\";\n\tconst char * HEADING = \"Heading\";\n\tconst char * FRAME = \"Frame\";\n\n### Motion Events\n\nThe motion event is a group of device sensor information at a single timestamp. It currently includes the `Gyroscope`, `Accelerometer` and `Gravity` events with the same timestamp and typically takes the form:\n\n\t1,Gyroscope,[timestamp],[rotation.x],[rotation.y],[rotation.z]\n\t2,Accelerometer,[timestamp],[acceleration.x],[acceleration.y],[acceleration.z]\n\t3,Gravity,[timestamp],[gravity.x],[gravity.y],[gravity.z]\n\t4,Motion,[timestamp]\n\nThe timestamp SHOULD be the same value for grouped motion events.\n\n### Location Events\n\nThe location event typically represents an update from the GPS and includes the position and accuracy of the update:\n\n\t1,Location,[timestamp],[latitude],[longitude],[horizontal_accuracy],[vertical_accuracy]\n\n### Heading Events\n\nThe heading event typically represents an update from the compass. It includes both the magnetic north and true north.\n\n\t1,Heading,[timestamp],[magnetic_bearing],[true_bearing]\n\n### Frame Events\n\nThe frame event represents a camera frame captured and includes data as an external PNG file in the same directory as the log file.\n\n\t1,Frame,[timestamp],[index]\n\nThe file in this case would be called `[index].png`.\n\n### Device Information\n\nIt is useful to log device specific information and frame rates. These are currently not used directly by the visualisation tool, but may be in the future.\n\n\t1,Device,[device_name],[device_model],[system_version]\n\nThis record is normally logged at the start of the capture.\n\nAdditional records relating to configuration may be included (e.g. frame rates, sensor rates) but these are for informational purposes at this time.\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\n## License\n\nReleased under the MIT license.\n\nCopyright, 2013, by [Samuel G. D. Williams](http://www.codeotaku.com/samuel-williams).\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fioquatix%2Ftransform-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fioquatix%2Ftransform-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fioquatix%2Ftransform-flow/lists"}