Forum Discussion
Camera Design
I am working on a project that involves inputing data from 3-6 machine vision cameras (6 monochrome or 3 color) performing some basic image processing on the streams from the cameras and then saving data out to storage. The cameras need to operate with video frame rates. I was just wondering if I could get some suggestions on if this is even possible with FPGA, or what kind of hardware could be used to accomplish this.
Thanks for any help!14 Replies
- Altera_Forum
Honored Contributor
Yes, the matrix operation and gain can easily be done on live video with little buffering (you'll need a few line delays, but thats fairly straightforward internal to the FPGA).
As for output - thats a lot of data. How about Gigabit Ethernet? or PCIe? - Altera_Forum
Honored Contributor
Yes, scaling does mean just a gain factor. Would buffering be required, or could I just pass the data straight in and do the processing, which would be a matrix operation on each pixel using all 6 streams?
Also, Figuring out where the data will go after processing is another issue I need to figure out. I basically just want to send it off to some storage medium, but because the data will all be combined at that point into a spectral estimation, which means it will have up to 30 channels/pixel, the final output will be rather large, looking at up to 1 GB/s of data. What would you guys suggest for a final storage medium? Thanks again for all your help with this. - Altera_Forum
Honored Contributor
Yes. I took scaling to mean a gain factor, not a format conversion.
- Altera_Forum
Honored Contributor
He did specify a scaling. Depending on what kind of scaling can mean buffering is required - eg. if its camerlink to PAL or NTSC - a standard conversion.
- Altera_Forum
Honored Contributor
True. If buffering is required then it gets a lot more complicated. If you just want to pass the data through and do the processing in real time then it's pretty straightforward. Where does the data go after the processing is done?
- Altera_Forum
Honored Contributor
--- Quote Start --- So assuming I get an interface chip for each camera, will an FPGA be able to handle six parallel streams of video data? --- Quote End --- Shouldnt be a problem, but it will really depend on what operations you are going to do. If you need to buffer the video you will need a lot of external memory bandwidth. We have a project that has 16 video inputs, all of them buffered, on a single (large) FPGA. - Altera_Forum
Honored Contributor
Yes, it's likely. You'll need enough I/O pins to handle all the cameras (8, 10, 12 or 16 data lines plus clock, line_valid & frame_valid for each camera). It sounds like your processing is pretty simple so you won't need a lot of resources. You can try it all out in Quartus first without building anything.
- Altera_Forum
Honored Contributor
So assuming I get an interface chip for each camera, will an FPGA be able to handle six parallel streams of video data?
- Altera_Forum
Honored Contributor
CameraLink will be by far the easiest interface. One (or two, depending on data rate) interface chips (DS90CR288A) per camera and you've got parallel data streaming into the FPGA.
- Altera_Forum
Honored Contributor
gj is right, you definitely want to look at a camera with an FPGA friendly interface. i don't think Firewire is a good idea, GigE or CameraLink might be