Solved

Best arrangement for real-time image processing

Posted on 2013-12-31
8
426 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 82

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 82

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
 

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
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 82

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 82

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

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
FF error message building new PC 19 83
Cooling a 'server' cabinet 7 40
Linux on a Dell PowerEdge 720 3 104
Acrinis True image 2 22
I have purchased two new systems and both are now Universal Extensible Firmware Interface (UEFI) based. UEFI is replacing BIOS for the desktop PC. It is a Linux based firmware with enough robustness it can communicate with a website without loading …
In the modern office, employees tend to move around the workplace a lot more freely. Conferences, collaborative groups, flexible seating and working from home require a new level of mobility. Technology has not only changed the behavior and the expe…
The goal of this video is to provide viewers with basic examples to understand opening and writing to files in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use nested-loops in the C programming language.

743 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

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now