{"id":17086277,"url":"https://github.com/kach/hootow-hyperlapse","last_synced_at":"2026-04-29T11:02:39.538Z","repository":{"id":66653300,"uuid":"251725979","full_name":"kach/hootow-hyperlapse","owner":"kach","description":"Using classic computer vision algorithms to align hundreds of images of Hoover Tower","archived":false,"fork":false,"pushed_at":"2020-04-01T16:08:58.000Z","size":37207,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T14:37:02.010Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","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/kach.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":"2020-03-31T20:39:38.000Z","updated_at":"2024-02-01T16:22:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a42da85-1585-444b-b1a3-c8e192683002","html_url":"https://github.com/kach/hootow-hyperlapse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kach/hootow-hyperlapse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fhootow-hyperlapse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fhootow-hyperlapse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fhootow-hyperlapse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fhootow-hyperlapse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kach","download_url":"https://codeload.github.com/kach/hootow-hyperlapse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fhootow-hyperlapse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32422532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-10-14T13:28:07.779Z","updated_at":"2026-04-29T11:02:39.512Z","avatar_url":"https://github.com/kach.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"Hoover Tower Hyperlapse\n-----------------------\n\nWarning: the images in this README are bright and flashy -- if you anticipate\nit causing you discomfort, don't scroll to the bottom.\n\n---\n\nHow does it work? It's a six-step process:\n\n1. Scrape Flickr for the top 500 images that match the search query \"hoover\n   tower stanford\" and are licensed appropriately. Also collect attributions.\n2. For each image, search for the vertical edges of HooTow. The easiest way is\n   to isolate edges using a vertical Sobel filter + Canny edge detector, and\nthen apply a linear Hough transform that selects for nearly-vertical lines.\n3. Compute the intersection of the verticals to estimate the vanishing point.\n   In principle this is like another inverse-Hough transform, but there is also\na nice closed form for the least-squares distance-minimizing point given a set\nof lines in 2D.\n4. Isolate Hootow's red dome. This is a horizontal Sobel filter + Canny edge\n   detector, sent to a circular Hough transform with appropriate bounds on the\nradius. This is the slowest part of the process, and it is worth precomputing\nthis information to make experimenting easier.\n5. Center all images by scaling/shifting so that the dome is in a specific\n   location. By manual inspection, filter out images that the CV algorithms\nfailed on (this is the only non-automated part of the process).\n6. Use the (scaled/shifted) vanishing points to sort the images in a nice\n   order. A nice way to do this is to plot the vanishing points and treat them\nas a DAG where each point has edges to its nearest _k_ neighbors that are\n_below it_ (this is a DAG because monotonicity of the y-coordinate is\npreserved). Then run a topological sort and find longest paths through this\ngraph.\n\n![hootow shiny](hootow-small.gif)\n\n![hootow guts](hootow-guts-small.gif)\n\n(Full-size GIFs, 10-20MB each, are in the repo.)\n\nThis work is somewhat inspired by [Vermödalen by John\nKoenig](https://www.youtube.com/watch?v=8ftDjebw8aA) and this [video by Sam\nMorrison](https://www.youtube.com/watch?v=WTGmxCpo89c), but also [this SIGGRAPH\n2011 paper](http://graphics.cs.cmu.edu/projects/crossDomainMatching/). And\n maybe it all started back in 2013 when a friend showed me [this video from\nTeehan+Lax Labs](https://www.youtube.com/watch?v=ngdAF_QFvRc) in CS class....\n\nOf course, credit goes to all the photographers who made their work available\nto artists on Flickr. See [`image-credits.txt`](image-credits.txt) for their\nnames and Flickr handles, sorted by number of images contributed to this\nproject.\n\nAnd a note of appreciation to the tooling that made this possible: Flickr's API\nis fantastic, and Python's `requests`, `jupyter`, `numpy`, `matplotlib`,\n`skimage`, `bs4`, and `networkx`, as well as Imagemagick, made this a pleasure\nto work on -- it took less than a day to go from concept to GIF.\n\nThis work is licensed under [CC BY-NC-SA\n4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkach%2Fhootow-hyperlapse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkach%2Fhootow-hyperlapse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkach%2Fhootow-hyperlapse/lists"}