Solved

Best arrangement for real-time image processing

Posted on 2013-12-31
8
445 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

pc, laptop  monitor connection configurations
As cyber crime continues to grow in both numbers and sophistication, a troubling trend of optimization has emerged over the last year.
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.

695 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