I am considering buying a Beagleboard Xm for a robotic vision project. What could I do with a MIPI camera (so I don’t have bandwidth issues) with an opitmized vision libray for DSP, ie VLIB?
I would like to process 10-15 fps, mainly using low level vision algorithms. What would be the maximum resolution I can attain ?
You will be able to get at most 150 MHz pixel rate with 8 bit, 75 MHz with 12-bit (it is actually 16 bit) - these are maximal ratings according to datasheet. So with mt9p031 it is possible to get the full frame rate - it means 5 megapixels @15 fps. But getting the frames and processing them are quite different stories. The maximal memory bandwidth you can achieve in software processing (carefully using neon, cache alignment and prefetch) is in the range of 500-700 mb/s, with non-optimized access it is going to drop down to 200-300 mb/s. I have no idea what is with DSP, but pretty much sure that it will not be faster. Besides, DSP does not come readily usable. If you are not specifically bound to using Beagleboard XM, I would suggest to use something else - e.g. there exist imx6 boards with serial and parallel camera ports.
You will be able to get at most 150 MHz pixel rate with 8 bit, 75 MHz with 12-bit (it is actually 16 bit) - these are maximal ratings according to datasheet. So with mt9p031 it is possible to get the full frame rate - it means 5 megapixels @15 fps. But getting the frames and processing them are quite different stories. The maximal memory bandwidth you can achieve in software processing (carefully using neon, cache alignment and prefetch) is in the range of 500-700 mb/s, with non-optimized access it is going to drop down to 200-300 mb/s. I have no idea what is with DSP, but pretty much sure that it will not be faster. Besides, DSP does not come readily usable. If you are not specifically bound to using Beagleboard XM, I would suggest to use something else - e.g. there exist imx6 boards with serial and parallel camera ports.
The best solutions for camera processing is OMAP5 [1] because it has RPMSG support in mainline so you can use the DSP for image processing. Supports single or dual MIPI CSI-2 camera.
On a quick glance - picture is really appealing, but I am not quite sure what is actually shown there. In the table right above it performance improvements are given for different image operations - there improvements are modest - about 20-80%.
In the article they compare DSP code to pure unoptimized C code, not to the vectorized neon. Neon might give a similar boost - something like 10-20 times compared to pure C. Neon actually implements a number of DSP-typical operators.
And well, it is just my not very much professional opinion. You can get a dsp running twice faster than omap3 core, but neon on multicore imx might be even faster.
If I am not mistaken OMAP5432 has no DSP. Also I think it’s too new processor and maybe risky to bother with.
@Nizamov Shawkat
Actually the way they present the improvement in percentages is confusing at first glance. Instead check the numbers in useconds in previous columns. For example where it says 85.25% dsp time is 6317us and neon 42817 , ie the dsp finishes in the (100-85.25)% of time NEON uses.
As for the article, they present dsp usage with unoptimized c code for dsp and optimized vlib c code for dsp (to my understanding)