I really like the looks of this project and I'm hoping to add a few things. However, I've never contributed to open source before, so I'll definitely need some guidance along the way.
I've written some code to perform thinning on binary objects (i.e. skeletonization). I've created a file that contains the logic, another file with an example of usage, and one for unit tests.
A few questions:
1. Which package is best for this function? I've put it in the 'morphology' package, but I'm not sure it really belongs there because I don't use any morphological operations. (note: this implementation should be significantly faster than a morphology-based approach)
2. Unit test: I've written a few tests checking IO, but I can't see how to write tests to check if it is creating the "correct" skeleton, because there isn't really a "correct" skeleton. There's lots of thinning algorithms out there, and they often give different results (e.g. the medial axis transform gives different skeletons than this implementation). How does one write useful unit tests in these cases?
3. github: I've never used git before, and I'm still getting used to the terminology. What is the best way for someone to review my code? I've now pushed it to a branch (neil_yager-skeletonize) in my repo (NeilYager). If you were to test it out, would you fork it or pull it?
In general, any comments about coding style/efficiency/documentation/ etc would be very welcome.
I'm thinking about doing a thresholding algorithm next, followed by perhaps gabor filters or gray-level co-occurance matrices (if no one is already working on these).