Solved

Best arrangement for real-time image processing

Posted on 2013-12-31
8
440 Views
Last Modified: 2014-01-02
Hello, I haven't ventured into these HW zones much but can us some expert help.

I'm interested in developing a little real-time-image processing system, and was wondering what combination of camera/driver/processor would result in the fastest times between image data acquisition and processing; in other words...

[visible light]->[camera]->[pixel data]->[CPU]

what camera/CPU technologies would minimize the time between the image acquired by the camera and my software having access to a pixeldata[x,y] array?

I am comfortable with both embedded and desktop software so I am flexible on where to do the processing.

I have some experience with a commercial camera (lumenera) that sends image data over USB, but -- between the time it is acquired, processed, sent over USB, and decoded and loaded into pixeldata[x,v] for my windows application to process, too much time has elapsed.  I have a feeling anything that involves windows and USB would be too slow.  I am thinking of some sort of embedded camera-to-CPU DMA type arrangement (ie camera writes, CPU reads same memory), where no actual time-consuming transfer of data occurs.

I will go buy the hardware and compilers necessary to optimize this speed, assuming its reasonably priced.

Does anyone have any advice/experience?

Thanks VERY much for any help.
0
Comment
Question by:RonMexico
  • 4
  • 3
8 Comments
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 39749165
You mean 'real-time' like TV broadcast speed?  What 'real-time' effects do you want?
0
 

Author Comment

by:RonMexico
ID: 39749195
I basically just mean that I want it as fast as possible, optimized for speed, want no unnecessary latencies between my camera and when the pixel_data[x,y] is presented to my software (which I anticipate will be embedded software).

After that it's on me to make my software processing faster than the frame rate.
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 39749217
You're still being too vague.  All the 'real-time' video processing equipment I know of is for broadcast and comes with sizeable price tags... though it's probably less than the $1 million for the first one I saw in 1984.  Try this search and see if there is anything like what you want:  https://www.google.com/search?q=%27real-time%27+video+processing+equipment
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 

Author Comment

by:RonMexico
ID: 39749270
I retract the phrase "real time."  

I basically want to build a system that processes, analyzes, and takes action in response to video input.  I will write software that analyzes video data (e.g., pixel_data[x,y]) and makes decisions where speed is of the essence.  

Obviously there are a lot of moving parts and options upstream that produce pixel_data[x,y] (lens, CMOS or CCD imaging, bus technology, driver, API).  There are a lot of different ways to do this, and I have personally tried one that is very slow (OEM camera -> USB -> windows -> vendor .NET driver -> my app).

So I'm looking for someone with a little experience in this area to recommend a chain of technologies (camera, memory model, bus) that is optimized for speed.  For example I have read about a CCD camera that pumps out data over a serial line, which I could access from an embedded CPU.  Is this the fastest way?  Or is there some way to get directly at the image data -- avoid the serial line which sounds slow -- by using some sort of direct memory access?
0
 
LVL 83

Accepted Solution

by:
Dave Baldwin earned 500 total points
ID: 39749303
Image data in cameras is created as a serial data stream and broadcast cameras always use high speed serial data in real time situations like the local live newscast.  Take a look at the products on this page:  http://www.fullcompass.com/category/Video-Capture-Cards-Interfaces.html   Some are PCI plugin cards that higher grade cameras will plug into directly.  This search will bring up some more PCI plugin card interfaces:  https://www.google.com/search?q=video+camers+PCI+interface
0
 

Author Comment

by:RonMexico
ID: 39750165
Rather than google searches, I was hoping for some recommendations from first-hand experience, since it is quite possible to put together a chain that ends up being slow (since I did this), but maybe that's too specific for EE.

Thanks for the answers.
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 39750228
You're welcome, sorry I couldn't help more.
0
 
LVL 27

Expert Comment

by:d-glitch
ID: 39751898
Look at the cameras from Dalsa:  they have line cameras and area cameras in several speed ranges.
    http://www.teledynedalsa.com/imaging/products/cameras/

National Instruments has interface boards for all the common types of camera bus.
There is an excellent paper here on performance and selection criteria here:
     http://www.ni.com/white-paper/5386/en/

For software, you might want to take a look at the Matlab Image Processing Toolbox:
     http://www.mathworks.com/products/image/

Neither "real-time" or "fast as possible" are useful specs.  You need a number.
A fast moving assembly line might need 10 ms response time.  An autonomous automobile is more like 100 ms.  A slow moving Roomba type robot could get by with over a second.

I would expect a USB camera (with the right driver) and Matlab on Windows to get you into the 100 ms regime.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Dedicated GPU? 21 66
Backup UPS - email alert 3 131
Why is compiler in oracle server ? 9 75
NEED HELP WITH VISUAL STUDIO 2017 (beginner) 6 66
This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
More and more people are using the enhanced small form-factor pluggable (SFP+) tranceivers, and speed is of utmost importance. Testing of speeds are critical to ensure that the devices will meet the speed requirements. There are some testing challen…
The goal of this video is to provide viewers with basic examples to understand how to use strings and some functions related to them in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

829 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question