A basketball player, rebuilt from basketballs. Every tile is a black-and-white ball, and the player is whatever the balls make together. This is a study, not a finished piece. The source image is by my friend and collaborator Paolo Guidobono. We have both worked for Lega Basket for more than ten years, and the study grows out of our neofuturistic work for them, Lega Basket Serie A: The New Futurists.
The idea
Each tile is an eight-panel basketball. Dark areas of the picture get balls with more black showing, light areas get more white. The principle is old: Harmon and Knowlton built pictures from symbols of different density at Bell Labs in the 1960s [1].
A basketball cannot be white, because its seams are black. The lightest ball I built is about a fifth black. So where the picture is lighter than that, there is no ball at all, and the white of the page does the work.

Four looks
Four clips, four looks: black on white above, then white on black and two in colour.

Stills and details






Seeing the ball
The computer vision is small and has one job: find the ball, and let the rest follow.
- The ball. SAM 3 [2], prompted with the word “basketball”, on every second frame, interpolated in between. It found the ball in 106 of the 107 frames I asked it about.
- The wake. Where the ball is now, and where it was in the last three quarters of a second, the balls around it grow and thicken.
- The player. In the first stills I cut the figure out with BiRefNet [3] and kept the orange halo around it as a motion trail, its fade measured along and across the trail with scikit-image [5]. In the clips I dropped the matte: the size of the balls follows the edges of the picture, and the top 20% and bottom 15% of the frame keep only the small balls and the wake.
- The white. Where the picture is lighter than the lightest ball, the circle stays empty and its tone error moves to its neighbours: error diffusion [4], run over circles instead of pixels.
- The weakness. Tiles are so close in tone that a tiny change in the picture picks another ball. In an early test, a change of 0.3 grey levels in a still background altered 22% of the pixels from one frame to the next. Holding the circles still helped. It did not cure it, and the clips still twinkle a little.

Drafts and tests
The first tile model had its seams turned by 90 degrees and too thin to survive at ball size. This is where it started, and the corrected version above.

Then the contrast: how many of the lightest balls to drop. Four versions of one frame, from the plain packing to contrast 10.

Then the cut, and the wake, six frames a sixth of a second apart.


Sources
- Harmon, L. D. and Knowlton, K. C. (1969). Picture processing by computer. Science 164(3875): 19–29. doi:10.1126/science.164.3875.19
- Carion, N. et al. (2025). SAM 3: Segment Anything with Concepts. arXiv:2511.16719; ICLR 2026. arxiv.org/abs/2511.16719
- Zheng, P., Gao, D., Fan, D.-P., Liu, L., Laaksonen, J., Ouyang, W. and Sebe, N. (2024). Bilateral reference for high-resolution dichotomous image segmentation. CAAI Artificial Intelligence Research 3: 9150038. doi:10.26599/AIR.2024.9150038
- Floyd, R. W. and Steinberg, L. (1976). An adaptive algorithm for spatial grey scale. Proceedings of the Society for Information Display 17(2): 75–77.
- van der Walt, S. et al. (2014). scikit-image: image processing in Python. PeerJ 2: e453. doi:10.7717/peerj.453
Continue: Algorithmic Mosaic · How the algorithms developed, 1966–2026
Source image: Paolo Guidobono. Study, mosaics and animation: Charis Tsevis.