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).