4

I have been working with OpenCV on Desktop environment for the past one year and now I want to shift to dedicated hardware for my real time image processing applications. I have the following questions:

  1. Which development boards (FPGA/Microcontroller) are good for implementing image processing algorithms? The image capturing device will be webcam.
  2. Will I be able to code in C/C++ and convert the code into assembly level and dump it in that development board?
  3. Will I be able to use libraries like OpenCV in those image processing algorithms?

Since webcams will be used, the image interface/resolution is:

  1. Interface USB 2.0
  2. Resolution max 640 x 480
  3. Frame rate 25 - 30 fps
  4. Depth 8 x 3 for colored image 8 x 1 for gray
  5. Application: thresholding, gesture recognition, object detection, tracking, optical flow
rotating_image
  • 149
  • 1
  • 5

3 Answers3

3
  1. In terms of FPGAs, you would be most concerned with high performance DSP on the chip, for that I would recommend a Xilinx Spartan-6 FPGA or a comparable Altera. Digilent makes some low priced development boards that has USB and VGA that might fit the bill.

  2. You will need to program the FPGA with Verilog or VHDL. When programming FPGAs you are describing actual hardware and so it is completely different from coding in C/C++.

  3. Unless someone has ported OpenCV to VHDL or Verilog I doubt it.

Michael Choi
  • 444
  • 2
  • 5
2

This is a very broad question, and without knowing what sort of applications you're targeting, the resolution and frame rate of your images, etc. it is very difficult to answer.

FPGA programming for real-time video is a very different animal from software programming using libraries such as OpenCV. It sounds like a good first step for you would be to shift to a single-board computer that offers many of the features of the desktop environment you're used to. There are many inexpensive ARM-based boards out there; perhaps one of the best known right now is the Raspberry Pi.

Dave Tweed
  • 168,369
  • 17
  • 228
  • 393
  • @Dave..i think i mentioned the image capturing device are webcams..so the interface will be USB and the frame rate will be 25-30 fps which is a general webcam frame rate..resolution is 320 X 240 and 640 X 480...and the depth of image is 8 X 3...for colored image 8 X 1 for gray image so maximum data through put is 640 x 480 x 8 x 3 x 30 bits/second...applications are like thresholding..gesture recognition..tracking..optical flow calculation – rotating_image Oct 03 '12 at 17:32
  • @Dave..thanx for raspberry pi info... – rotating_image Oct 03 '12 at 19:26
  • You'd have better luck using a "bare" CCD rather than a webcam. USB host and FPGA aren't a good match. – akohlsmith Oct 24 '12 at 03:49
  • @AndrewKohlsmith: Where did that come from? I never suggested they were! – Dave Tweed Oct 24 '12 at 05:05
  • @DaveTweed I was remarking on rotating_image's comment. sorry for the confusion. – akohlsmith Oct 24 '12 at 15:31
1

I think you can be successful with the Avnet ZedBoard with the new Xilinx Zynq XC7Z7020. It runs embedded linux, has the interfaces you require, and since the dual ARM Cortex-A9 processing system is tightly integrated with the FPGA fabric, supports high bandwidth integration of software and memory-mapped hardware accelerators.

It should be straightforward to build and run OpenCV on this board. It is a much steeper learning curve, however, to master the build environment, building your accelerators to speak AXI4 bus interface, etc.

At $300-$400 it is ~10X more expensive than RaspPi but includes the FPGA.

http://zedboard.org

Happy hacking!

Jan Gray
  • 306
  • 2
  • 4