Bookmark and Share

Software Topics

Accelerating OpenCV
7 replies [Last post]
Eric Gregori's picture
Offline
Last seen: 3 days 14 hours ago
Level 6: Enchanter
Joined: 2011-08-16
Points: 202

 

 

The goal for this forum thread is to list companies that are accelerating OpenCV.  Acceleration is defined ( for the purposes of this thread ) as improving real-time performance when compared to the results of the released library.

If your hardware or software makes OpenCV run more efficiently for a specific algorithm, please include it on this list.

Offline
Last seen: 11 weeks 6 days ago
Level 1: Prestidigitator
Joined: 2012-05-28
Points: 4

Accelerating the execution of OpenCV functions on a processor can be addressed in two ways:
 
1. tailoring the OpenCV functionality to take advantage of the underlying processor
2. tailoring the processor so it matches the application-specific requirements
 
Combining both approaches promises the best result. In a recent case study Synopsys used the well-understood CannyEdge algorithm example from the OpenCV library to demonstrate the gains that can be achieved by building an application-specific processor. It shows a gain (in per cycles / pixel) of more than 100x over a plain RISC architecture and more than 10x over an optimized algorithm tailored for the TI DSP 320C64x architecture.
 
You can learn more from Synopsys’ webinar on this use case, which features the Embedded Vision Processor Starter Kit used in the above-mentioned case study.

rparakkal's picture
Offline
Last seen: 1 week 3 days ago
Level 2: Evoker
Joined: 2013-02-04
Points: 11

 

Uncanny Vision Solutions has an accelerated imageprocessing/computervision library called UncannyCV optimized for Cortex A series ARM family using Neon instruction set. The UncannyCV API interface is not identical to OpenCV APIs, and currently there are no wrappers available to maintain OpenCV compatibility. So in that sense we cannot claim to have an accelerated OpenCV library.

 

But for most of the high level algorithms we have tried to keep the UncannyCV APIs as close as possible to OpenCV.

 

We use algorithm optimizations, data prefetching and Neon instructions to achieve speedups varying from 2x to 20x(compared to normal C code) on Cortex A8. On an average I believe we see around 5x improvement. The same libraries will work as it is on other Cortex A series ARM, like Cortex A9 and A15.

 

The APIs can be loosely classified into 3

1. Low level APIs - convolution, morphological, rescaling, rotate/flip, pyramid, histogram, colour conversion etc

2. Mid level APIs   - Canny, Hough, K-means clustering, Lens distortion correction, Persepctive transform, Harris Corner, FAST9 keypoint, connected components etc 

3. High level APIs - Optical flow, ORB etc

 

We have an Android and Linux SDK available, to get customers started quickly. And we are working on an IOS SDK too.

 

 

You can find more details at http://www.uncannyvision.com/uncannycv/

rparakkal's picture
Offline
Last seen: 1 week 3 days ago
Level 2: Evoker
Joined: 2013-02-04
Points: 11

Uncanny Vision has added support for more algorithms in UncannyCV. The recent additions to UncannyCV has been HOG(Histogram of Oriented Gradients) and perspective correction.
 
Both the algorithms have been accelerated over 8x relative to the OpenCV version. Some details about the HOG optimization in the blog below.
 
http://www.edn.com/electronics-blogs/systems-interface/4419918/Is-Intel-within-ARM-s-reach--Pedestrian-Detection-shows-the-way

cameron.swen@amd.com's picture
Offline
Last seen: 27 weeks 1 day ago
Level 1: Prestidigitator
Joined: 2013-01-07
Points: 4

AMD Radeon GPU and APU Acceleration
AMD has accelerated and released as of OpenCV 2.4.3 over 70 OpenCV functions for use on AMD Radeon Discrete GPUs and integrated APUs.  These include:
 
oclMat class    copyto    setto    convertto    reshape    swap    merge split    addweighted    add    subtract    multiply    divide    compare tanspose     absdiff     meanStdDev    norm    flip    sum    minmax minmaxLoc    countNonZero    LUT    calcHist    equalizeHist    bilateralFilter    exp log    magnitude    magnitudeSqr    phase    pow    cartToPolar    polarToCart Bitwise_not    Bitwise_or    Bitwise_and     Bitwise_xor    cvtColor    Laplacian    boxFilter blur    Sobel    Scharr     GaussianBlur     erode    dilate    meanShiftFiltering meanShiftProc    meanShiftSegmentation    threshold    resize    remap    copyMakeBorder    medianFilter warpAffine    warpPerspective    integral    cornerHarris     cornerMinEigenVal     stereoBM    StereoBP SteroCSBP    haardetect    pyrDown    pyrUp     blendLinear     columnSum     matchTemplate canny    dft    gemm    bruteforcematch
 
See this YouTube video for more information, http://www.youtube.com/watch?v=LhIuSShTO0g&feature=BFa&list=PLA5581E4E4F...
 
This includes operation on embedded APUs and GPUs with support for 5+ year availability for various long life applications.  See http://www.amd.com/embedded for more information.

Eric Gregori's picture
Offline
Last seen: 3 days 14 hours ago
Level 6: Enchanter
Joined: 2011-08-16
Points: 202

Qualcomm FastCV

 

Although FastCV is its own API, it can be linked into OpenCV to accelerate various OpenCV algorithms.

 

FastCV will accelerate any ARM + NEON design.

 

If using a Snapdragon, FastCV + OpenCV will take advantage of the DSP and NEON.

 

https://developer.qualcomm.com/mobile-development/mobile-technologies/co...

 

 

 

 

Eric Gregori's picture
Offline
Last seen: 3 days 14 hours ago
Level 6: Enchanter
Joined: 2011-08-16
Points: 202

NVIDIA

 

Desktop GPU: http://developer.download.nvidia.com/GTC/PDF/1085_Fung.pdf

 

Face detection (6x)
— Keypoint detection (12x) / Point matching (20-30x)
— Pedestrian detection (8x)
— Image Stitching
— Optical flow
— Stereo matching (7x/20x/50x)
 
 
 
TEGRA:  http://developer.download.nvidia.com/GTC/PDF/GTC2012/Posters/P0490_GTC_Tegra_nv.pdf
 
http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/O4A_SDK.html
 
Uses GPU and NEON to accelerate various OpenCV functions.
Eric Gregori's picture
Offline
Last seen: 3 days 14 hours ago
Level 6: Enchanter
Joined: 2011-08-16
Points: 202

Videantis       http://www.videantis.com/products/sw-ip/opencv

 

 

OpenCV Computer Vision Library

OpenCV is an open-source computer vision library comprising 500+ API functions for image and video processing.

The videantis OpenCV software portfolio includes a growing set of library functions being made available as accelerated function calls for high-level algorithm implementations on general purpose embedded CPUs. Libray functions are available from the following functional classes:

Image processing

  • Histograms
  • Filtering, e.g., dilate, erode, Laplace, Sobel
  • Image transforms, e.g., affine transform, warp
  • Feature detection, e.g. Canny, Hough

Feature detection and descriptor extraction

  • Feature detection and description, e.g., SURF

Object detection

  • Cascade classification, e.g., Haar classifier

Video analysis

  • Motion analysis and object tracking