Help me trying to figure out the best option for embedded video/image processing - Page 1
Forum section: electronics / projects

author: vj90
author_rank: Newbie
timestamp: November 27, 2014, 06:03:13 am
content: 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!

author: miguelvp
author_rank: Super Contributor
timestamp: November 27, 2014, 06:40:31 am
content: As far as I can tell by google, OpenCV (Open source Computer Vision) is available for all those platforms.

author: vj90
author_rank: Newbie
timestamp: November 27, 2014, 06:48:45 am
content: 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 :/

author: Precipice
author_rank: Frequent Contributor
timestamp: November 27, 2014, 07:32:50 am
content: 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.

author: vj90
author_rank: Newbie
timestamp: November 27, 2014, 07:48:54 am
content: For the BBB I would use thisHD Camera Capeor an USB camera such asthis guydoes, for the Raspberry Pi I already have thisCamera Moduleand I have not figured out how could I do it with the Edison, but it seems like, although I would probably need additional hardware.

author: Jeroen3
author_rank: Super Contributor
timestamp: November 27, 2014, 07:54:22 am
content: Quote from: vj90 on November 27, 2014, 06:03:13 amReal 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

author: Precipice
author_rank: Frequent Contributor
timestamp: November 27, 2014, 08:28:33 am
content: Quote from: vj90 on November 27, 2014, 07:48:54 amSo 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.

author: vj90
author_rank: Newbie
timestamp: November 27, 2014, 08:40:44 am
content: Quote from: Precipice on November 27, 2014, 08:28:33 amMy application is Automated License/Number Plate Recognition, such asthis projectdone with the Pi, however this project had a processing time of in betweeen 10 and 13 seconds. I alsofound 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.

author: vj90
author_rank: Newbie
timestamp: November 27, 2014, 08:47:55 am
content: Quote from: Jeroen3 on November 27, 2014, 07:54:22 amI 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.

author: mrgregs
author_rank: Contributor
timestamp: November 27, 2014, 09:14:18 am
content: 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 hasVFP v3(the PI has VFP v2) theNEON SIMD extensionswhich OpenCV can use to optimise its calculations (see the bottom ofthis page).

author: Stigaard
author_rank: Contributor
timestamp: November 27, 2014, 09:22:06 am
content: Just to throw a few more powerfull arm boards into the mixOdroid XU3 8-core 2Ghz arm, with USB3, for an all software solution (http://www.hardkernel.com/main/products/prdt_info.php?g_code=G140448267127)NVIDIA Jetson TK1, 4-core ARM, but with the possibility of GPU acceleration (http://www.hardkernel.com/main/products/prdt_info.php?g_code=G140448267127)Parallella, dual core ARM (low clock rate compared to the others), but also an FPGA and a separate math co-processor like thingie, which should also be programmable in openCLhttp://www.parallella.org/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.

author: Scrts
author_rank: Frequent Contributor
timestamp: November 27, 2014, 09:36:23 am
content: Basically, Jetson TK1 is a beast in video processing.

author: nctnico
author_rank: Super Contributor
timestamp: November 27, 2014, 12:54:52 pm
content: 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.

author: miguelvp
author_rank: Super Contributor
timestamp: November 27, 2014, 06:02:54 pm
content: 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

author: kxenos
author_rank: Frequent Contributor
timestamp: November 27, 2014, 06:41:33 pm
content: 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 paperhttp://bestend.co.kr/attachment/cfile6.uf@153DCE2C4AC5B2EC5FF43B.pdfyou can find info on some algorithms and their effectiveness so that you can define your hardware requirements.Good luck

author: Precipice
author_rank: Frequent Contributor
timestamp: November 27, 2014, 07:58:39 pm
content: >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 -thenis 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.