How to use DSP to make my OpenCV code run faster?

Hello,
I am working on image processing project which involves OpenCV libraries.I have a SURF detection code running on my board but it is slow. I need to optimize the code so that it runs faster. I am a complete newbie to this DSP configuration. So can anybody please assist me or provide me some good links for step by step procedure to set up DSP on Beagleboard-xm?

OS: Debian Wheezy
IDE : Qt Creator
Libraries: OpenCV,BOOST…

Thanks,
Surya

Hi

i think you could start reading about DSPLINK, code engine and others (there is many info in google about it). However as I have research about it it is hard to find actual people using at this moment.

In new boards the way to access DSP is by remote-proc and rpmsg, however for Beagleboard XM there is not support as far as I know.

I manage to create an custom Linux image using and old version of yocto, meta-ti layer, with DSPLINK support, and I manage to get the DSPLINK examples to work with some modification on meta-ti recipes, however I did not manage to get my own app to do a color space transformation as i was using message passing example as a base (my code: https://github.com/allangj/rgb2ycbcr-dsp) . I was getting a deadlock on the analisys and modification of the image pixels, but the code may work as a starting point as for increasing performance you may want to use different methods to pass information from GPP to DSP.

Also some links:
https://pixhawk.ethz.ch/tutorials/omap/dsplink

http://processors.wiki.ti.com/index.php/Example_application_using_DSP_Link_on_OMAPL1x

Hope this could help you as a starting point.
Regards
–Allan Granados

https://plus.google.com/106813818225399872098/posts/f2GWgRrjnjc?gclid=CMO0x_2ei8kCFZRefgodl68F1w&pid=6207823571560102530&oid=106813818225399872098

The remoteproc driver in mainline includes support for OMAP3/DM3730
(https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/remoteproc/omap_remoteproc.c).
We'd just need to choose an image with this built into the kernel.

Seems we could try to back-port the OpenCL support on BeagleBoard-X15
to BeagleBoard-xM and that'd be really helpful. See
http://www.elinux.org/Beagleboard:BeagleBoard-X15#Will_I_be_able_to_program_the_C66x_DSPs.3F.
It seems that currently the OpenCL integration into OpenCV requires
use of different data types to address memory allocation challenges.
See http://docs.opencv.org/2.4.3/modules/ocl/doc/introduction.html.
I'm not sure if that'd be managable for you.

There was also this project:
http://beagleboard.org/project/opencv+acceleration/

(You can find projects on on OpenCV via
http://beagleboard.org/project/?search=opencv. It'd be great to get
people to register more of their projects, though I'm considering
trying to work with hackster.io or hackaday.io to make a better
project registry tool.)

(You can find projects on on OpenCV via
http://beagleboard.org/project/?search=opencv. It’d be great to get
people to register more of their projects, though I’m considering
trying to work with hackster.io or hackaday.io to make a better
project registry tool.)

An incentive would probably help more than anything ( contest for a cape, or other hardware maybe ). But I think more people are interested in using these boards professionally than anything else. Look at the NASA project you put on google+ ( the underwater / ice rover ). They did not contact you or the site for a mention. Someone else told you about it . . .