New OrderGPU accelerated image sorting
A GPU accelerated sorting algorithm arranges every line of an image by increasing luminosity. The image retains every pixel, but appears in new order.
It’s fascinating to discover how many artworks - by old masters or by more modern artists - use similar patterns in how visual weight balances on the canvas.
Using a bitonic merge sort network implemented in the fragment shader, this piece is fast enough to process images and videos in real-time; it also sorts live videos fed from the built-in camera. To show the sorting algorithm in vivo, the first sorts run about 50 times slower than realtime.
- Big hat-tip to @jvcleave and “Sorted” which inspired this piece.
- Animations made with ofxPlaylist
- Hashtable for the bitonic merge sort network generated using Perl’s Algorithm::Networksort.
Images of artworks from wikipaintings.org – in order of appearance:
- Gustave Caillebotte: “The Bridge at Argenteuil”
- Gustave Caillebotte: “The Parquet Planers”
- Edgar Degas: “Promenade by the Sea”
- Pieter Bruegel The Elder: “Netherlandish Proverbs”
- Gerhard Richter: “Betty”
- Gerhard Richter: “1024 Colours”
Mikhail Nesterov: “Adriatic Sea”
- VIDEO: Computer Commercial: IBM Computer (1986)(IBM)(US) – via the internet archive
VIDEO: Live video feed
- Ivan Aivazovsky: “Frigate Under Sails”
Gustave Caillebotte: “Landscape Banks of the Yerres”
- Music: Golden Gate Orchestra: Charleston (Fox Trot) (1925) – via the internet archive
Made with openFrameworks 0.8.0.