Some comments here and there. In general, I would try to break up your file structure a bit. If I read your filenames it is pretty hard to understand how things interact and in most files you have a lot of static functions, so it seems like a file is not something that combines things that have one clear purpose but just a bunch of thrown together functions. Would try to divide by purpose / activity into subfolders like : imageprocessing, io, datastructure or something like that with dedicated files for specific things
A few things I point out depend a bit on how much you want this to be code for one project that should be comprehensible, but doesn't have to be reused or built-on later. If the latter then you may want to consider using: