5

I'm working on robot vision system and its main purpose is to detect objects, i want to choose one of these libraries (CImg , OpenCV) and I have knowledge about both of them.

The robot I'm using has Linux , 1GHz CPU and 1G ram and I'm using C++ the size of image is 320p.

I want to have a real-time image processing near 20 out of 25 frames per seconds. In your opinion which library is more powerful l although I have tested both and they have the same process time, open cv is slightly better and I think that's because I use pointers with open cv codes.

Please share your idea and your reason.

thanks.

ajlajlajl
  • 177
  • 1
  • 14
  • 2
    It is best to present such image processing question on DSP -Q&A site itself.. Check this out: http://dsp.stackexchange.com/ – Dipan Mehta Dec 31 '11 at 14:57

2 Answers2

5

I think you can possibly get best performance when you integrated - OpenCV with IPP.

See this reference, http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-open-source-computer-vision-library-opencv-faq/

Here is another reference http://experienceopencv.blogspot.com/2011/07/speed-up-with-intel-integrated.html

Further, if you freeze the algorithm that works perfectly, usually you can isolate your algorithm and work your way towards doing serious optimization (such as memory optimization, porting to assembly etc.) which might not be ready to use.

Dipan Mehta
  • 2,110
  • 1
  • 17
  • 31
  • You should check that IPP can run in your embedded system. OpenCV has a huge user base so you should go with it. – Dat Chu Jan 04 '12 at 16:43
  • OpenCV is the answer. OpenCV will be the fastest and most powerful library you can use. – ahoffer Jan 06 '12 at 06:38
1

It really depends on what you want to do (what kind of objects you want to detect, accuracy, what algorithm you are using etc..) and how much time you have got. If it is for generic computer vision/image processing, I would stick with OpenCV. As Dipan said, do consider further optimization. In my experience with optimization for Computer Vision, the bottleneck usually is in memory interconnect bandwidth (or memory itself) and so you might have to trade in cycles (computation) to save on communication. Do understand the algorithm really well to further optimize the algorithm (which at times can give huge improvements as compared to compilers).

sumodds
  • 317
  • 1
  • 2
  • 10