{"id":20132765,"url":"https://github.com/feature-creature/iron_sky","last_synced_at":"2025-08-13T17:06:48.318Z","repository":{"id":94244327,"uuid":"120283355","full_name":"feature-creature/iron_sky","owner":"feature-creature","description":null,"archived":false,"fork":false,"pushed_at":"2018-02-12T14:48:23.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-04T00:53:40.464Z","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/feature-creature.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-05T09:30:57.000Z","updated_at":"2018-02-05T09:31:28.000Z","dependencies_parsed_at":"2023-04-24T06:46:08.250Z","dependency_job_id":null,"html_url":"https://github.com/feature-creature/iron_sky","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/feature-creature/iron_sky","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feature-creature%2Firon_sky","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feature-creature%2Firon_sky/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feature-creature%2Firon_sky/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feature-creature%2Firon_sky/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feature-creature","download_url":"https://codeload.github.com/feature-creature/iron_sky/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feature-creature%2Firon_sky/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270278343,"owners_count":24557172,"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","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-13T20:54:54.437Z","updated_at":"2025-08-13T17:06:47.386Z","avatar_url":"https://github.com/feature-creature.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Memo Akten's 'Techno Fan' Workflow\n\n## background\n\nI am starting to learn the principles of Computer Vision. I used Memo Akten's 'Techno Fan' as a guide for this first CV system. This is a reference review of his workflow.\n\n## init\n\nMemo was tasked with creating a programmatically generated visualization process that would be mapped to previously-created video files. Memo was provided with many separate video files of individual layers of individual video shots. These separate video files were originially part of a single, large, finalized file. After Memo created the 'enhanced' video files, the original videographer re-composited the separate video files back into the single, large, finalized file to be used as a music video.\n\n## workflow\n    \n### video analysis and point identification\nEvery frame, pre-process the frame received from the video source with computer vision techniques -- \u003ci\u003ec++ + openFrameworks + opencv\u003c/i\u003e -- to isolate points of interest. Image simplication and feature isolation can be achieved through the combination of different cv techniques. Some options:\n\n    cvSmooth\n    cvThreshold\n    cvErode\n    cvDialate\n\n\nAfter Image simplication and feature isolation is sufficient to your requirements, points of interest, whether predetermined or discovered through the previous process, can be identified and stored through the combination of other cv techniques. Some options:\n\n    cvFindContours\n    cvGoodFeatures\n    OpenSURF\n\nPoints of interest are then stored in an array.\n\nDepending on hardware requirements and concept requirements, simplifying the array of points might be necessary. You can use libraries or 'custom' techniques - adding a vector threshold between points of interest for removing data that is visually irrelevant - to create a more elegant data set.\n\n    cvCalcOpticalFlowPyrLK \n\n### triangulate identified points\n\nEvery update cycle, feed the simplified array of points into a Delaunay Triangulation structure and output a set of triangle data.\n\nofxDelaunay\n\nCurrent magnitude of data reduction?\n\n### display triangles\n\nCreate the visual appearance \"phenotype\" of generated triangle data. You have complete freedom, of course. As an aside, to visualize the entire window, instead of the triangulated subsection, you can add the coordinates of the display window's corners to the triangle data set. This technique and others can be combined with the original video files in semi-transparent layers to create complex visuals.\n\n### save image sequence to disk\n\nReal-time video processing with scrubbing, pausing, and playback was implemented via a custom user interface. Images are always displayed on screen as image processing is performed. Additionally, images can be optionally written to your hard disk in real-time while the next frame is processing. Memo stored frames in png format - perhaps for alpha capabilities in comparison to jpeg format. Using a real-time interface prevented the use of framecounting and keyframe referencing for the time-based decision making.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeature-creature%2Firon_sky","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeature-creature%2Firon_sky","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeature-creature%2Firon_sky/lists"}