Simd Library Documentation.Home | Release Notes | Download | Documentation | Forum | SourceForge | GitHub
Simd Library Overview
The Simd Library is a free open source image processing library, designed for C and C++ programmers. It provides many useful high performance algorithms for image processing such as: pixel format conversion, image scaling and filtration, extraction of statistic information from images, motion detection, object detection (HAAR and LBP classifier cascades) and classification, neural network.
The algorithms are optimized with using of different SIMD CPU extensions. In particular the library supports following CPU extensions: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 for x86/x64, VMX(Altivec) and VSX(Power7) for PowerPC, NEON for ARM.
The Simd Library has C API and also contains useful C++ classes and functions to facilitate access to C API. The library supports dynamic and static linking, 32-bit and 64-bit Windows and Linux, MSVS, G++ and Clang compilers, MSVS project and CMake build systems.
The Simd Library has next folder's structure:
To build the library and test application for Windows 32/64 you need to use Microsoft Visual Studio 2015. These project files are in the directory:
To build the library and test application for Linux 32/64 you need to use CMake build systems. Files of CMake build systems are placed in the directory:
cmake . -DTOOLCHAIN="" -DTARGET=""
To build the library for PowePC(64) and ARM(32/64) platforms you can also use toolchain for cross compilation. There is an example of using for PowerPC (64 bit):
cmake . -DTOOLCHAIN="/path_to_your_toolchain/usr/bin/powerpc-linux-g++" -DTARGET="ppc64" -DCMAKE_BUILD_TYPE="Release"
For ARM (32 bit):
cmake . -DTOOLCHAIN="/path_to_your_toolchain/usr/bin/arm-linux-gnueabihf-g++" -DTARGET="arm" -DCMAKE_BUILD_TYPE="Release"
And for ARM (64 bit):
cmake . -DTOOLCHAIN="/path_to_your_toolchain/usr/bin/aarch64-linux-gnu-g++" -DTARGET="aarch64" -DCMAKE_BUILD_TYPE="Release"
As result the library and the test application will be built in the current directory.
If you use the library from C code you must include:
And to use the library from C++ code you must include:
In order to use Simd::Detection you must include:
The test suite is needed for testing of correctness of work of the library and also for its performance testing. There is a set of tests for every function from API of the library. There is an example of test application using:
./Test -m=a -t=1 -f=Sobel -o=log.txt
Where next parameters were used:
Also you can use parameters: