Poll

Which would be best for video/image processing?

Raspberry Pi, Model B+
0 (0%)
BeagleBone Black
1 (12.5%)
IntelĀ® Edison
1 (12.5%)
Other (please comment)
6 (75%)

Total Members Voted: 8

Author Topic: Help me trying to figure out the best option for embedded video/image processing  (Read 5517 times)

0 Members and 1 Guest are viewing this topic.

Offline vj90Topic starter

  • Newbie
  • Posts: 6
Hi all!

I am working on a project were I need to do some image and video processing, I must admit Embedded Systems is not one of my strengths so I would appreciate your help.

What I am looking for is a device which can do some Pattern and Character Recognition in a fast enough manner that it would be considered "Real Time", the options that I had in mind are listed above (Raspberry Pi-Model B+, BBB and the Edison).

The way I was going to figure it out is by doing some testing, but I only have a Pi and a BeagleBoard, so I wouldn't be able to test the Edison (and I'd rather not buy it if I am not going to use it...)

Any suggestions? Thanks!
 

Offline miguelvp

  • Super Contributor
  • ***
  • Posts: 5550
  • Country: us
As far as I can tell by google, OpenCV (Open source Computer Vision) is available for all those platforms.
 

Offline vj90Topic starter

  • Newbie
  • Posts: 6
I think so as well, what I am not sure is which would be more powerful, and I don't have an Edison on hand to be able to do the testing :/
 

Offline Precipice

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: gb
How are you getting video into the boards? Do you need a camera?
Pi has the easy camera, as long as that's what you want. If you want something else, err...
BBB has no explicit camera interface, but you can DMA data in through the bus interface.
Dunno about Edison.
USB cameras are possible on all platforms, but it's hard to get good (global shutter) USB cameras for sane prices.

Classic Beagle has the least annoying video in port, in my experience.
 

Offline vj90Topic starter

  • Newbie
  • Posts: 6
For the BBB I would use this HD Camera Cape or an USB camera such as this guy does, for the Raspberry Pi I already have this Camera Module and I have not figured out how could I do it with the Edison, but it seems like , although I would probably need additional hardware.
 

Offline Jeroen3

  • Super Contributor
  • ***
  • Posts: 4212
  • Country: nl
  • Embedded Engineer
    • jeroen3.nl
What I am looking for is a device which can do some Pattern and Character Recognition in a fast enough manner that it would be considered "Real Time"
Real time in seconds, or real time in milliseconds?
You can also use industrial grade ethernet camera's. (expensive, but high quality)

All targets offer limited Image processing capability. The performance depends mostly on the software.
Since ARM offers platform depended SIMD instructions and other helpful tricks the compiler doesn't use by default.

I've worked on an STM32F407 and a camera (about 150x100 pixels) and this works nice, if you do not expect too much. And if you optimize your code by knowing the limits of the platform and the compiler. I've also seen people run basic image processing algorithms on FPGA's, which can offload the bulk stuff you have to pre-processes your image with. Such as invert, threshold and contrast corrections.
I got 7-segment character recognition working on the stm32f407 :)
 

Offline Precipice

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: gb
For the BBB I would use this HD Camera Cape or an USB camera such as this guy does, for the Raspberry Pi I already have this Camera Module and I have not figured out how could I do it with the Edison, but it seems like , although I would probably need additional hardware.

So you're not looking at moving objects, then? (or on a moving platform?)
In that case, BBB has more general processing grunt than Pi (whose video competence comes from hardware acceleration, which you won't be able to use). No idea about Edison.
And that's about as far as it goes, for general suggestions. 'Image Processing' covers such a hugely wide range, you need to drop some more hints.
 

Offline vj90Topic starter

  • Newbie
  • Posts: 6
So you're not looking at moving objects, then? (or on a moving platform?)
In that case, BBB has more general processing grunt than Pi (whose video competence comes from hardware acceleration, which you won't be able to use). No idea about Edison.
And that's about as far as it goes, for general suggestions. 'Image Processing' covers such a hugely wide range, you need to drop some more hints.

My application is Automated License/Number Plate Recognition, such as this project done with the Pi, however this project had a processing time of in betweeen 10 and 13 seconds. I also found this other project, however that person seems to use off-board computing (i.e. a laptop to do the processing).

I want the recognition to be < 5 seconds, using only an embedded platform, or at last figure out which gives me the best results. Another (and tentative) thing, which I don't necessarily need to do, but I am also interested on is tracking, just like the , however my application is a ground vehicle. Both applications would never be running at the same time.
 

Offline vj90Topic starter

  • Newbie
  • Posts: 6
Real time in seconds, or real time in milliseconds?
You can also use industrial grade ethernet camera's. (expensive, but high quality)

All targets offer limited Image processing capability. The performance depends mostly on the software.
Since ARM offers platform depended SIMD instructions and other helpful tricks the compiler doesn't use by default.

I've worked on an STM32F407 and a camera (about 150x100 pixels) and this works nice, if you do not expect too much. And if you optimize your code by knowing the limits of the platform and the compiler. I've also seen people run basic image processing algorithms on FPGA's, which can offload the bulk stuff you have to pre-processes your image with. Such as invert, threshold and contrast corrections.

I am looking at in between 1 and 5 seconds, but the less I have the best, I was thinking of a camera with a resolution 640x480.

About the FPGA, I have heard about the use of FPGA for such applications, however I have nearly no experience in the matter, and quite frankly I feel I wouldn't know where to start after doing some research, I just don't understand what my needs would be by using an FPGA (additional hardware such as RAM) and also the how-to implement.
 

Offline mrgregs

  • Contributor
  • Posts: 13
Another thing to note is that the Pi is an Arm v6 chip, and the BBB is an Arm v7 chip. That means that the BBB has VFP v3 (the PI has VFP v2) the NEON SIMD extensions which OpenCV can use to optimise its calculations (see the bottom of this page).
 

Offline Stigaard

  • Contributor
  • Posts: 36
  • Country: dk
Just to throw a few more powerfull arm boards into the mix
I do not have any personal experience with any of these boards, but they all seem to pack a punch in each their own way, some more affordable than others though.
 

Offline Scrts

  • Frequent Contributor
  • **
  • Posts: 800
  • Country: lt
Basically, Jetson TK1 is a beast in video processing.
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 28516
  • Country: nl
    • NCT Developments
I'm missing the Freescale iMX5 and iMX6 here. These are actually available in small quantities and also have hardware video encoding/decoding which could be helpful to get images from a camera module (usually YUV). In the past I have used OpenCV on an iMX5 to do sophisticated video processing with OpenCV to automatically measure wounds.
« Last Edit: November 27, 2014, 12:56:56 pm by nctnico »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline miguelvp

  • Super Contributor
  • ***
  • Posts: 5550
  • Country: us
I agree with the Tegra K1, I think a 64bit version is coming up soonish with the same 192 cores, must be the first that supports full OpenGL 4.4 (not ES) in the mobile market.

Real time video processing and of license plates kind of discards the ones suggested by the OP.

But power requirements, size etc go way up.

I did ask the wife to get me one (even the current 32 bit Jetson will do) for Xmas. Not because it's expensive, but because I've been buying a lot of things and even if they where cheap it accumulates in the long run :)

 

Offline kxenos

  • Frequent Contributor
  • **
  • Posts: 284
  • Country: gr
I think you should define the algorithm(s) that will be used. Then, according to the computational complexity of the algorithm(s) and the time limitations you should select a hardware platform that will be just fast enough and cheap enough for the given task.

In this paper http://bestend.co.kr/attachment/cfile6.uf@153DCE2C4AC5B2EC5FF43B.pdf you can find info on some algorithms and their effectiveness so that you can define your hardware requirements.
Good luck
 

Offline Precipice

  • Frequent Contributor
  • **
  • Posts: 403
  • Country: gb
>you should select a hardware platform that will be just fast enough and cheap enough for the given task.

Unless you're manufacturing in volume and already have a functioning prototype, this is horrible advice. 50% spare compute power at a bare minimum, 100% is more comfortable. Benchmarking and planning something this complex is best done by writing and running the code. When it's all working nicely - then is the time to start optimising the hardware down. Or adding features to soak up any spare hardware+10%, which seems the more usual path.

Premature optimization is the root of all evil (or at least most of it), said a very wise man.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf