On Wed, Mar 16, 2011 at 11:03 AM, Dan Farmer <dfarmernv@gmail.com> wrote:
I have about 1.5 years of experience doing vision and image processing programming in C++. I've implemented things like FFT, Wavelet transform, Principal Component Analysis for face recognition, etc.
I've used Python as a glue language off and on for maybe 3 years, but again just started using SciPy seriously in the last few weeks. Actually your SciPy 2010 paper was part of what made me decide to give it a try and it's proven to be a really nice environment to work in (though I'm still learning the "vectorized programming" mindset).
I'm glad the paper was of use/inspired someone :-)
Finally re: the OpenCV wrappers: I agree with your take on it. For one thing the OpenCV python bindings in 2.2 were re-written and are much better than they used to be [1], but on the other hand they still feel clunky compared to how seamless the SciPy libraries are ("What do you mean I have to convert this array to a CvMat?"). So I'd love to see more of that implemented directly in scikits.image.
Interesting, I took a brief look at the new sources, and it seems like they are exposing the IPLImage structures as numpy arrays via the array interface. That's a good idea, and pretty much obviates the need for our current wrappers.
So let me know what you think would be good to work on also and I'll try to integrate your feedback with Stefan's and put together some kind of plan of attack.
How would you feel about doing a bit of research on the 2D convolution task listed here? http://stefanv.github.com/scikits.image/gsoc2011.html I know that CVFilter2D is quite intelligent. For example, it will switch between the spatial domain and frequency domain to do the convolution based on the size of the image and the kernel. It also makes heavy use of SSE/2 instructions. It would be worth taking a look at exactly how the CVFilter2D is constructed and understand the code flow, so we have a good idea of what exactly is making it so fast, and what ideas from that we can borrow to make our own fast routine. So many algorithms rely on 2D convolution that it only makes sense to a have really really fast core routine with C and Python Api's that everyone can depend upon. If you want something more on the Python side, or on the GUI side, there is plenty to do there as well. Just let me know your interests.