{"id":20191668,"url":"https://github.com/joerivandervelde/animated-sirds","last_synced_at":"2025-07-31T18:06:22.469Z","repository":{"id":66818430,"uuid":"437021651","full_name":"joerivandervelde/animated-sirds","owner":"joerivandervelde","description":"Exploring factors that influence the credibility of animated single-image random-dot stereograms","archived":false,"fork":false,"pushed_at":"2022-01-14T20:57:22.000Z","size":7756,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-13T18:55:36.932Z","etag":null,"topics":["animation","asirds","sirds","stereogram","stereogram-generator"],"latest_commit_sha":null,"homepage":"","language":"Java","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/joerivandervelde.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":"2021-12-10T15:15:12.000Z","updated_at":"2022-01-14T21:07:42.000Z","dependencies_parsed_at":"2023-02-23T14:00:15.391Z","dependency_job_id":null,"html_url":"https://github.com/joerivandervelde/animated-sirds","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/joerivandervelde%2Fanimated-sirds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joerivandervelde%2Fanimated-sirds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joerivandervelde%2Fanimated-sirds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joerivandervelde%2Fanimated-sirds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joerivandervelde","download_url":"https://codeload.github.com/joerivandervelde/animated-sirds/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241629736,"owners_count":19993707,"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":["animation","asirds","sirds","stereogram","stereogram-generator"],"created_at":"2024-11-14T03:50:01.593Z","updated_at":"2025-03-03T07:41:43.892Z","avatar_url":"https://github.com/joerivandervelde.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Determinants of convincing SIRDS animations\n\n## SIRDS in a nutshell\n[Stereograms](https://en.wikipedia.org/wiki/Stereoscopy) consist of two images that can merge to produce three-dimensional scenes.\nThis effect caused by providing differential depth information to your eyes.\nIn an [autostereogram](https://en.wikipedia.org/wiki/Autostereogram), a 3D scene is contained in one image by repeating narrow strips.\nA single-image random-dot stereogram (SIRDS) is type of autostereogram in which these strips are random dot patterns.\nAt first glance, SIRDS resemble random static noise, but a hidden scene will be revealed when the image is viewed correctly.\nSIRDS are usually still, but multiple images may be concatenated into an animated SIRDS (ASIRDS).\nBut what determines whether an ASIRDS looks good or not?\nWe can do some highly subjective experiments to perhaps get some clues.\nBut let's start at the beginning.\n\n## How to view a SIRDS\n\nLet's take a simple image of a sphere.\nThe grayscale values act like a depth map, where white is closest and black is farthest.\n\n![sphere-oneframe.gif](gifs/sphere-oneframe.gif)\n\nWe then convert the image into a SIRDS.\nThere sphere can be seen again by letting the focal point of your eyesight move past the screen until the black dots overlap.\nLet your eyes adjust to the depth effect of the image.\nIf you are wearing eyeglasses, taking them off might make this easier.\n\n![sphere-oneframe-sirds.gif](gifs/sphere-oneframe-sirds.gif)\n\n## Animating a SIRDS\n\nWe can animate the sphere by letting it move in a circular orbit.\nTo achieve this in a simple way, we let the both the radius of the sphere and its depth (i.e. grayness) depend on the distance.\n\n![a-sphere-r0.4-d0.1.gif](gifs/a-sphere-r0.4-d0.1.gif)\n\nWhen converted into an ASIRDS, the result is a smoothly orbiting sphere with a convincing depth effect that is easy to follow.\nThis will be our reference image.\n\n![a-sphere-r0.4-d0.1-noisy.gif](gifs/a-sphere-r0.4-d0.1-noisy.gif)\n\n## Experiment 1: reusing the pattern\n\nIn the reference image, we generate a new random dot pattern for each frame.\nThis seems to be the norm for these type of animations.\nBut is that necessary?\nLet's use the reference image from before.\n\n![a-sphere-r0.4-d0.1.gif](gifs/a-sphere-r0.4-d0.1.gif)\n\nWhat happens when we simply re-use the random dot pattern from the first frame, for all following frames, when converting to an ASIRDS?\nThe result is a calmer image where the sphere can still be seen moving.\nHowever, background echos from the stereoscopic encoding technique seem to make it nearly impossible to track the sphere in 3D.\n\n![b-sphere-r0.4-d0.1-calm.gif](gifs/b-sphere-r0.4-d0.1-calm.gif)\n\n## Experiment 2: no depth scaling\n\nWhat happens when we disable the scaling of the grayscale depth values with distance?\nThe input image is similar to that of before, except the sphere is equally bright at all positions.\n\n![c-sphere-r0.4-d1.0.gif](gifs/c-sphere-r0.4-d1.0.gif)\n\nThe result is at first glance similar to our reference image, but tracking the sphere with your eyes around its farthest point feels less natural and requires more effort.\n\n![c-sphere-r0.4-d1.0-noisy.gif](gifs/c-sphere-r0.4-d1.0-noisy.gif)\n\n## Experiment 3: no size scaling\n\nWhat happens if we disable distance scaling of the sphere's radius but leave depth scaling untouched?\nDoes the sphere's movement still appear as circular despite the lack of shape information?\nThe input image would look like this:\n\n![d-sphere-r1.0-d0.1.gif](gifs/d-sphere-r1.0-d0.1.gif)\n\nWhen viewed as an ASIRDS, the animation is smooth and easy to follow.\nHowever, instead of a circular orbit, the sphere seems to emerge from the background, move to the right, submerge into the background, and later re-appear on the left.\n\n![d-sphere-r1.0-d0.1-noisy.gif](gifs/d-sphere-r1.0-d0.1-noisy.gif)\n\n## Experiment 4: color vs monochrome\n\nWould a colored ASIRDS be easier to view than a monochrome one?\nLet's use our reference image as a starting point.\n\n![a-sphere-r0.4-d0.1.gif](gifs/a-sphere-r0.4-d0.1.gif)\n\nBut instead of the monochrome color palette used so far, we use random RGB colors.\nCompared to the reference ASIRDS, the colors seem to make the scene more smooth and subtle, but somehow also more bland.\n\n![e-sphere-color-noisy.gif](gifs/e-sphere-color-noisy.gif)\n\n## Experiment 5: low vs normal resolution\n\nFinally, we can test if image resolution makes a difference in viewing experience.\nAgain we use the reference image.\n\n![a-sphere-r0.4-d0.1.gif](gifs/a-sphere-r0.4-d0.1.gif)\n\nThis time, we lower the resolution by copying every other pixel to its neighbouring position.\nThe image width and height do not change, but one pixel is now the size of four, and three are lost.\nWhile the sphere is trackable, the depth effect is surprisingly awkward to view, as if your eyes cannot focus properly on the object.\n\n![f-sphere-lowres-noisy.gif](gifs/f-sphere-lowres-noisy.gif)\n\n## Conclusions\n\nA credible ASIRDS seems to depend on depth scaling proportional to object size, a fresh random dot pattern for each frame, and a high (or high enough) image resolution.\nThe used color palette does not seem to matter much.\nThese conclusions, based on a single input image and handful of opinions by one observer, should be regarded as speculation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoerivandervelde%2Fanimated-sirds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoerivandervelde%2Fanimated-sirds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoerivandervelde%2Fanimated-sirds/lists"}