[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Best arrangement for real-time image processing

Posted on 2013-12-31
8
Medium Priority
?
459 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 84

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 84

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 84

Accepted Solution

by:
Dave Baldwin earned 1500 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 84

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

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…
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The goal of this video is to provide viewers with basic examples to understand opening and writing to files 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.

656 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