Skip to content

ExperiBass/pixelsort-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pixelsorter (+ cli) written in golang
used my (node)js implementation as reference, which uses satyarth/pixelsort as reference
not at parity; no sorter/comparator validation, patterns/intervals/comparators arent listed in help
furst time using go, might be cursed

features

  • row and spiral patterns
  • sorth with a mask
  • sort multiple images at once
  • sort by lightness, hue, saturation, and r/g/b
  • shuffle pixels, sort in waves, randomly, or do a row sort
  • sort in reverse
  • rotation

wanted features

  • would like to mix and match thresholds (sort by red with saturation threshold, or sort by sat with darkness threshold)
  • more patterns; seam carving looks cool

examples

Original
webb picture-of-the-month 2023/10 - src: ESA/Webb, NASA & CSA, A. Adamo (Stockholm University) and the FEAST JWST team

Mask
mask

Random sort
pixelsort_go --input ~/Downloads/potm2310a.jpg --upper_threshold 0.4 --lower_threshold 0.2 --comparator saturation --angle 30 --randomness 0.4 --interval randomnoisy --output ./examples/webb-sort.jpg randomsort

Basic row sort w/ default options & mask
pixelsort_go --input ~/Downloads/potm2310a.jpg --mask ./examples/webb-mask.jpg --output ./examples/webb-sort.jpg masked row sort

Spiral sort using most options & mask
pixelsort_go --input ~/Downloads/potm2310a.jpg --mask ./examples/webb-mask.jpg --pattern spiral --interval wave --randomness 0.4 --comparator saturation --section_length 400 --output ./examples/webb-spiral.jpg masked spiral sort
did you know webb and hubble pics are cc4?

"elapsed" is time spent actually sorting

=> time pixelsort_go -i ~/Downloads/potm2310a.jpg -o ./benchmark
Sorting 1 images with a config of {Pattern:row Interval:row Comparator:lightness SectionLength:60 Randomness:1 Reverse:false Thresholds:{Lower:0 Upper:1} Angle:0}.
Loading image 1 ("/home/________/Downloads/potm2310a.jpg" -> "./benchmark")...
Sorting /home/________/Downloads/potm2310a.jpg...
./benchmark elapsed: 1.973s
Writing ./benchmark...
0:02.65 real 2.58 usermode 100% 88968 Kb mem

=> time pixelsort_go -i ~/Downloads/potm2310a.jpg -m ./examples/mask.jpg -o ./benchmark
Sorting 1 images with a config of {Pattern:row Interval:row Comparator:lightness SectionLength:60 Randomness:1 Reverse:false Thresholds:{Lower:0 Upper:1} Angle:0}.
Loading image 1 ("/home/________/Downloads/potm2310a.jpg" -> "./benchmark")...
Sorting /home/________/Downloads/potm2310a.jpg...
./benchmark elapsed: 986ms
Writing ./benchmark...
0:02.03 real 1.92 usermode 99% 215224 Kb mem