Image Signal Processing (ISP) Guide
A guide covering Image Signal Processing (ISP) including the applications, libraries and tools that will make you a better and more efficient Image Signal Processing (ISP) development.
Note: You can easily convert this markdown file to a PDF in VSCode using this handy extension Markdown PDF.
Architectural Analysis of a Baseline ISP Pipeline. Source: SpringerLink
Table of Contents
-
Image Signal Processing(ISP) Tools, Libraries, and Frameworks
-
Augmented Reality (AR) & Virtual Reality (VR) Tools and Frameworks
ISP Learning Resources
Image Signal Processing (ISP) is the processs of converting an image into digital form by performing operations like noise reduction, auto exposure, autofocus, auto white balance, HDR correction, and image sharpening with a Specialized type of media processor.
Developer Resources
-
Apply convolution to image processing | MATLAB & Simulink Tutorial
-
Deep Learning for Signal Processing Applications | MATLAB & Simulink
Courses
-
Introduction to Data, Signal, and Image Analysis with MATLAB | Coursera
-
Learn Image Processing with Online Courses and Lessons | edX
ISP Tools, Libraries, and Frameworks
CCD(charge coupled device) is a semiconductor image sensor used in digital cameras to convert light into electrical signals. CCD Sensors are made up of tiny elements known as pixels with expressions such as 6 MP(megapixel) or 12 MP(megapixel) refering to the number of pixels comprising the CCD Sensors of a camera. With each pixel there is a tiny photodiode that is sensitive to light(photon) and becomes electrically charged in accordance with the strength of light it captures.
CMOS(Complementary Metal Oxide Semiconductor) sensors are semiconductor image sensors that convert light into electrical signals. It includes features such as timing logic, exposure control, analog-to-digital conversion, shuttering, white balance, gain adjustment, and initial image processing algorithms. CMOS sensors contain rows of photodiodes coupled with individual amplifiers to amplify the electric signal from the photodiodes. This not only enables CMOS sensors to operate on less electrical power than CCDs, but also enables speedier and easier reading of electrical charges at a relatively low-cost.
Sensors from Alps Alpine. Source: Alps Alpine
Different Types of Sensors. Source: electronicshub
Signal Processing Toolbox™ is a tool that provides functions and apps to analyze, preprocess, and extract features from uniformly and nonuniformly sampled signals. The toolbox includes tools for filter design and analysis, resampling, smoothing, detrending, and power spectrum estimation. The toolbox also provides functionality for extracting features like changepoints and envelopes, finding peaks and signal patterns, quantifying signal similarities, and performing measurements such as SNR and distortion.
Embedded Coder® is a tool that generates readable, compact, and fast C and C++ code for embedded processors used in mass production. It extends MATLAB Coder™ and Simulink Coder™ with advanced optimizations for precise control of the generated functions, files, and data. These optimizations improve code efficiency and facilitate integration with legacy code, data types, and calibration parameters.
Phased Array System Toolbox™ is a tool that provides algorithms and apps for designing and simulating sensor array and beamforming systems in wireless communication, radar, sonar, acoustic, and medical imaging applications. You can model and analyze the behavior of active and passive arrays, including subarrays and arbitrary geometries.
Radar Toolbox™ is a tool that includes algorithms and tools for designing, simulating, analyzing, and testing multifunction radar systems. Reference examples provide a starting point for implementing airborne, ground-based, shipborne, and automotive radar systems.
Audio Toolbox™ is a tool that provides tools for audio processing, speech analysis, and acoustic measurement. It includes algorithms for processing audio signals such as equalization and time stretching, estimating acoustic signal metrics such as loudness and sharpness, and extracting audio features such as MFCC and pitch. It also provides advanced machine learning models, including i-vectors, and pretrained deep learning networks, including VGGish and CREPE.
Wavelet Toolbox™ is a tool that provides functions and apps for analyzing and synthesizing signals and images. The toolbox includes algorithms for continuous wavelet analysis, wavelet coherence, synchrosqueezing, and data-adaptive time-frequency analysis.
RF Toolbox™ is a tool that provides functions, objects, and apps for designing, modeling, analyzing, and visualizing networks of radio frequency (RF) components. It supports wireless communications, radar, and signal integrity applications.
RF Blockset™ is a tool that provides a Simulink® model library and simulation engine for designing RF communications and radar systems. The RF Blockset lets you simulate RF transceivers and front-ends. You can model nonlinear RF amplifiers to estimate gain, noise, even-order, and odd-order intermodulation distortion, including memory effects. For RF mixers, you can predict image rejection, reciprocal mixing, local oscillator phase noise, and DC offset.
Mixed-Signal Blockset™ is a tool that provides models of components and impairments, analysis tools, and test benches for designing and verifying mixed-signal integrated circuits (ICs).
Python Imaging Library (PIL) is a library provides extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities to your Python interpreter.
scikit-image is a tool for Image processing in Python.
Imaginary is a fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing.
H.264(AVC) is a video compression standard based on block-oriented and motion-compensated integer-DCT coding that defines multiple profiles (tools) and levels (max bitrates and resolutions) with support up to 8K.
H.265(HEVC) is a video compression standard that is the successor to H.264(AVC). It offers a 25% to 50% better data compression at the same level of video quality, or improved video quality at the same bit-rate.
FFmpeg is a leading multimedia framework that can decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge ones on multiple platforms such as Windows, macOS, and Linux.
Apple ProRes is a codec technology developed by Apple for high-quality & high-performance editing in Final Cut Pro that supports up to 8K.
Logic Pro is a digital audio workstation (DAW) and MIDI sequencer software application for macOS.
HTTP Live Streaming (HLS) is a communications protocol developed by Apple that sends live and on‐demand audio and video to iPhone, iPad, Mac, Apple Watch, Apple TV, and PC.
Dynamic Adaptive Streaming over HTTP (DASH) is an adaptive streaming protocol that allows for a video stream to switch between bit rates on the basis of network performance, in order to keep a video playing.
OpenMAX™ is a cross-platform API that provides comprehensive streaming media codec and application portability by enabling accelerated multimedia components to be developed, integrated and programmed across multiple operating systems and silicon platforms.
GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. Applications can take advantage of advances in codec and filter technology transparently.
Media Source Extensions (MSE) is a W3C specification that allows JavaScript to send byte streams to media codecs within Web browsers that support HTML5 video and audio. Also, this allows the implementation of client-side prefetching and buffering code for streaming media entirely in JavaScript.
NVIDIA® TensorRT™ is an SDK for high-performance deep learning inference. It includes a deep learning inference optimizer and runtime that delivers low latency and high throughput for deep learning inference applications.
OpenCV is a highly optimized library with focus on real-time computer vision applications. The C++, Python, and Java interfaces support Linux, MacOS, Windows, iOS, and Android.
Scikit-Learn is a Python module for machine learning built on top of SciPy, NumPy, and matplotlib, making it easier to apply robust and simple implementations of many popular machine learning algorithms.
Pillow is the friendly PIL(Python Imaging Library) fork. The Python Imaging Library adds image processing capabilities to your Python interpreter. Including extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities.
CuPy is an open-source array library accelerated with NVIDIA CUDA. It uses CUDA-related libraries including cuBLAS, cuDNN, cuRand, cuSolver, cuSPARSE, cuFFT and NCCL to make full use of the GPU architecture.
Open Neural Network Exchange(ONNX) is an open ecosystem that empowers AI developers to choose the right tools as their project evolves. ONNX provides an open source format for AI models, both deep learning and traditional ML. It defines an extensible computation graph model, as well as definitions of built-in operators and standard data types.
Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to mix symbolic and imperative programming to maximize efficiency and productivity. At its core, MXNet contains a dynamic dependency scheduler that automatically parallelizes both symbolic and imperative operations on the fly. A graph optimization layer on top of that makes symbolic execution fast and memory efficient. MXNet is portable and lightweight, scaling effectively to multiple GPUs and multiple machines. Support for Python, R, Julia, Scala, Go, Javascript and more.
AutoGluon is toolkit for Deep learning that automates machine learning tasks enabling you to easily achieve strong predictive performance in your applications. With just a few lines of code, you can train and deploy high-accuracy deep learning models on tabular, image, and text data.
Anaconda is a very popular Data Science platform for machine learning and deep learning that enables users to develop models, train them, and deploy them.
PlaidML is an advanced and portable tensor compiler for enabling deep learning on laptops, embedded devices, or other devices where the available computing hardware is not well supported or the available software stack contains unpalatable license restrictions.
DSP Development
Digital Signal Processing(DSP) Learning Resources
[Digital Signal Processing