I am new to DSP? Where is a good resource for open source DSP algorithms?
MATLAB is great at making protos but once we move to C coding, it takes time and we end up making too many mistakes. I would guess there must be good repositories of C codes for various implementation of filters etc. Any pointers would be good.
Answer
Part #1: Regarding the comparison:
There is no great general answer to what is a faster alternative to Matlab. It all depends on the platform you use.
@Hilmar asnwer indicating features like SIMD - which ARE possible in C. But it would require assembly lanaguage support along with C.
Here is a broader comparision:
If you are working on a general purpose computing (like x86 or PPC), i guess there is nothing better (and faster) than C.
If you are working on specialized DSP hardware, (or embedded platform such as ARM) than native assembly will be far ahead and C might just be no match against it. (Though C might be a right balance between making flexible software vs. execution speed.
If you are comparing C with C++, unlike general perception - C++ can be made just as optimum in most context with some of the better programming features.
For other handy tools - you can look at some other scripting tools like TCL,or Lua. These are definitely better than lower level but might compromise speed.
Part #2: The references
I would guess there must be good repositories of C codes for various implementation of filters etc.
OpenCV - probably best for computer vision applications.
ImLab 2.3 - is a free open source graphical application for Scientific Image Processing that runs in Windows, Linux and many other UNIX systems. It supports multiple windows, data types including 32 bit integers, 32 bit real numbers and complex numbers. It is implemented in C++ and also in C to provide a very simple way to add new functions. It has many image operations and supports several file formats.
ImageLib: is a C++ class library providing image processing and related facilities. The main set of classes provides a variety of image and vector types, with additional modules supporting scalar and vector quantisation, wavelet transforms, DCT transforms, and simple histogram operations.
CImage - C++ Template Image Processing Library
Camellia Library is an open source Image Processing & Computer Vision library. Written in plain C, it is cross-platform (Unix / Linux, Windows) and robust. It already includes a lot of functions for image processing (filtering, morphological mathematics, labelling, warping, drawing, project/backproject, color conversion, loading/saving images, etc.), most of them being highly speed-optimized. It is also doxygen-documented and examples of use are provided.
VXL : C++ Libraries for Computer Vision Research and Implementation
GNU Scientific Library (GSL) is a numerical library for C and C++ programmers
Intel® Math Kernel Library (Intel® MKL) is a computing math library of highly optimized, extensively threaded math routines for applications that require maximum performance. Core math functions include BLAS, LAPACK, ScaLAPACK1, sparse solvers, fast Fourier transforms, vector math, and more.
You can refer to the book: Numerical Recepies in C - and the example code.
find lot more from here: http://www.cs.cmu.edu/~cil/v-source.html
No comments:
Post a Comment