Hello, I've recently started using SciPy/NumPy for my computer vision research work and I wanted to get involved with scikits.image to help build a useful library and to learn more about NumPy and Cython programming. I looked at the tasks list and it seems there is a range of work from fairly simple integration work to some high-end plans (OpenCL backend, etc.). So I thought I might start with e.g., merging some of the Cell Profiler code, but then I saw that there are 24 forks of scikits.image on github and it's not clear to me what is already being worked on. So I thought I would just ask if someone could point me in the direction of some entry level work to do? Actually I just thought of something else, what is required to update the OpenCV bindings for OpenCV 2.2? I can't seem to use scikits.image at the moment because it can't find the opencv that it's looking for (the default Python bindings for 2.2 work, and native C++ code works too -- so it's definitely installed correctly). Thanks, Dan
I was planning on working on moving the cpmorphology code into scikits, but haven't started. I don't think everything in the cpmorphology.py file is needed, so the first thing might be to get a list of which functions are there and decide which are worth moving or not. Or, if you would rather just dive in, you could just move those functions that correspond to the bwmorph operations from Matlab, many (all?) of which Lee rewrote for CellProfiler. I believe the usual procedure is to fork stefan's master branch and work from there. Ray Jones On Wed, Mar 16, 2011 at 03:42, Dan Farmer <dfarmernv@gmail.com> wrote:
Hello, I've recently started using SciPy/NumPy for my computer vision research work and I wanted to get involved with scikits.image to help build a useful library and to learn more about NumPy and Cython programming. I looked at the tasks list and it seems there is a range of work from fairly simple integration work to some high-end plans (OpenCL backend, etc.). So I thought I might start with e.g., merging some of the Cell Profiler code, but then I saw that there are 24 forks of scikits.image on github and it's not clear to me what is already being worked on. So I thought I would just ask if someone could point me in the direction of some entry level work to do? Actually I just thought of something else, what is required to update the OpenCV bindings for OpenCV 2.2? I can't seem to use scikits.image at the moment because it can't find the opencv that it's looking for (the default Python bindings for 2.2 work, and native C++ code works too -- so it's definitely installed correctly). Thanks, Dan
Thanks Ray, I see what you mean (lots of utility functions mixed in there I guess?). I know for another project I'm working on I'd like to merge the canny edge detector over pretty soon. I'll check things out some more and send out a new email regarding the morphology operations. -Dan
On Tue, Mar 15, 2011 at 10:42 PM, Dan Farmer <dfarmernv@gmail.com> wrote:
Hello,
I've recently started using SciPy/NumPy for my computer vision research work and I wanted to get involved with scikits.image to help build a useful library and to learn more about NumPy and Cython programming. I looked at the tasks list and it seems there is a range of work from fairly simple integration work to some high-end plans (OpenCL backend, etc.). So I thought I might start with e.g., merging some of the Cell Profiler code, but then I saw that there are 24 forks of scikits.image on github and it's not clear to me what is already being worked on. So I thought I would just ask if someone could point me in the direction of some entry level work to do?
Actually I just thought of something else, what is required to update the OpenCV bindings for OpenCV 2.2? I can't seem to use scikits.image at the moment because it can't find the opencv that it's looking for (the default Python bindings for 2.2 work, and native C++ code works too -- so it's definitely installed correctly).
Are you getting an error message printed to the console that says the opencv libs can't be found? i.e.: In [1]: from scikits.image import opencv /Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/scikits/image/opencv/_libimport.py:55: RuntimeWarning: The opencv libraries were not found. Please ensure that they are installed and available on the system path. 'The opencv libraries were not found. Please ensure that they ' *** Skipping import of OpenCV functions. That line is just stating the libs can't be found and we probably need to update the code which does the search for the libs. On the other hand, I originally wrote the OpenCV bindings as a stop-gap while we added functionality to the scikit (and because I wanted to see if I could get opencv to share memory with numpy). Rather than continuing to maintain the OpenCV wrappers, I would rather see effort focused on replacing the functionality that's there with our own equally performant codes. What is your Python and programming experience level in general? I can help you find something appropriate to work on.
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). 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. 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. Thanks, Dan [1] http://opencv.willowgarage.com/wiki/OpenCV%20Change%20Logs On Wed, Mar 16, 2011 at 6:50 AM, Chris Colbert <sccolbert@gmail.com> wrote:
On Tue, Mar 15, 2011 at 10:42 PM, Dan Farmer <dfarmernv@gmail.com> wrote:
Hello, I've recently started using SciPy/NumPy for my computer vision research work and I wanted to get involved with scikits.image to help build a useful library and to learn more about NumPy and Cython programming. I looked at the tasks list and it seems there is a range of work from fairly simple integration work to some high-end plans (OpenCL backend, etc.). So I thought I might start with e.g., merging some of the Cell Profiler code, but then I saw that there are 24 forks of scikits.image on github and it's not clear to me what is already being worked on. So I thought I would just ask if someone could point me in the direction of some entry level work to do? Actually I just thought of something else, what is required to update the OpenCV bindings for OpenCV 2.2? I can't seem to use scikits.image at the moment because it can't find the opencv that it's looking for (the default Python bindings for 2.2 work, and native C++ code works too -- so it's definitely installed correctly).
Are you getting an error message printed to the console that says the opencv libs can't be found? i.e.: In [1]: from scikits.image import opencv /Library/Frameworks/Python.framework/Versions/7.0/lib/python2.7/site-packages/scikits/image/opencv/_libimport.py:55: RuntimeWarning: The opencv libraries were not found. Please ensure that they are installed and available on the system path. 'The opencv libraries were not found. Please ensure that they ' *** Skipping import of OpenCV functions. That line is just stating the libs can't be found and we probably need to update the code which does the search for the libs. On the other hand, I originally wrote the OpenCV bindings as a stop-gap while we added functionality to the scikit (and because I wanted to see if I could get opencv to share memory with numpy). Rather than continuing to maintain the OpenCV wrappers, I would rather see effort focused on replacing the functionality that's there with our own equally performant codes. What is your Python and programming experience level in general? I can help you find something appropriate to work on.
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.
Hi Dan On Wed, Mar 16, 2011 at 4:42 AM, Dan Farmer <dfarmernv@gmail.com> wrote:
I've recently started using SciPy/NumPy for my computer vision research work and I wanted to get involved with scikits.image to help build a useful library and to learn more about NumPy and Cython programming. I looked at
Welcome!
the tasks list and it seems there is a range of work from fairly simple integration work to some high-end plans (OpenCL backend, etc.). So I thought I might start with e.g., merging some of the Cell Profiler code, but then I saw that there are 24 forks of scikits.image on github and it's not clear to me what is already being worked on. So I thought I would just ask if someone could point me in the direction of some entry level work to do?
You may try your hand on any of the tasks set out. Personally, I'd love for someone to improve our docs building system so that it builds the docs *outside* the scikits.image directory (currently, it breaks the built version everytime you do, which is annoying). But there are plenty of more technical tasks waiting. The GSOC suggestions give you a good idea of the larger projects we are contemplating in the near future. As for integrating code, other than the CellProfiler code, I also am busy porting grey-level co-occurrence matrix code (written in C); but I never got this done, so it may be a good place to learn Cython. Chris is quite keen to have someone implement/port OpenCV functionality, but I'm not sure how we're going to get those kinds of speeds yet. A really exciting project is the implementation of backend engines so that we may compute results using either NumPy, OpenCL, Theano, etc. The process is pretty simply: fork my branch on github.com/stefanv/scikits.image and start working on a feature branch of your own. When you're ready to let someone have a look at the code, simply send an email to the list, or file a pull request on github. We like to go through one or more rounds of feedback before integrating patches. If you have any questions, don't hesitate to ask. We are always happy to help new contributors!
Actually I just thought of something else, what is required to update the OpenCV bindings for OpenCV 2.2? I can't seem to use scikits.image at the moment because it can't find the opencv that it's looking for (the default Python bindings for 2.2 work, and native C++ code works too -- so it's definitely installed correctly).
I thought we already did update to OpenCV 2.2, but if the library isn't found it may be that your system calls it something other than libopencv.dll/so (ubuntu, for example, likes to call things *.so.3, and we may have to account for that). That reminds me: while you learn about the scikit, do make notes or write up your experiences; we can certainly do with a thicker user manual / more tutorials. Thanks for helping out! Cheers Stéfan
Hi Stefan, I had an opportunity to look at a few things tonight and found my first landmine :P I had installed scikits.learn using pip and after cloning scikits.image from my fork on github I could not get it to import scikits.image. After much tearing of hair I realized that it (seems to have been) that having a scikit in site-packages and one on the PYTHONPATH caused it to "short-circuit" it's search early. Removing scikits.learn fixed the issue, and I just cloned learn from git and added it to my pythonpath and now I can use both (with both built in place). -Dan
participants (4)
-
Chris Colbert
-
Dan Farmer
-
Stéfan van der Walt
-
Thouis (Ray) Jones