imageStacker

Assembly Unterland


Description

Timelapses are pretty cool, eh? But stacking might make them even cooler! Meet the imageStacker, a fairly optimized project to get the interesting bits out of your timelapse or video.

Originally inspired by footage shot from the ISS through the cupola, I simply couldn't resist getting these amazing lighttrails from my own footage. There began the journey of a hugely inefficient - although working - prototype with NodeJs, selecting the brightest values for each individual pixel throughout an entire timelapse. Soon after I was hooked and started developing a more serious attempt with C#, greatly improving performance, decreasing the time necessary from multiple hours per timelapse down to several minutes. With some early results at my hands, I had to go furhter - more footage - more features - darkstacking was born.

Soon thereafter, stacking everything into a single image wasn't enough anymore, and imageStacker became capable of creating a stacked frame for each frame put in, although requiring huge amounts of disk space as it was not possible to create a video directly from it. With summer came thunder, with thunder Continuous Stacking mode which creates a frame based on the last n frames before. With some decent looking footage captured, @Patagona suggested and thankfully donated an implementation for an AttackDecayFilter, which allowed me to get even more from the data captured.

Of course, optimization never stood still. After getting more and more efficient at utilizing multiple threads, switching to the unsafe side of code for some parts, decoupling image loading and decoding, a new approach had to be taken. With dotnetcore 3.1, intrinsics were introduced which allowed utilizing SIMD instructions like AVX which improved performance even further.

As my timelaspe collection grew larger and larger in size, creating videos by using a bunch of stacked images wasn't feasible anymore as I was running out of disk space, and implementation of ffmpeg support was more than due. Allowing imageStacker to deal with videos was a huge step forward. It revealed CMOS behavior like discharge delays.

It would be a huge overstatement to call this project stable or release ready, lots of stuff is yet to be improved (like CLI, error messages etc), but feel free to check it out.

tl:dr; imageStacker stacks images, if you've got some timelapses or some interest in it, check it out.


Links

Archived page - Impressum/Datenschutz