GLSL Image Processing Demos
Many image processing filters map nicely to GPU architectures due to the local nature of the algorithms. APIs like GLSL, CUDA, and OpenCL allow GPU hardware to be used as general computational resources, not just rendering resources. GLSL, in particular, provides broad support on desktop and mobile platforms, more so than CUDA and OpenCL. However, GLSL does not provide the general computing environments of CUDA and OpenCL. Here, we explore the breadth of image processing algorithms that can be mapped to GLSL. We explore the space through a sequence on exemplar algorithms that represent large classes of techniques.
- A kernel filter requiring a single pass across an image, e.g. convolution
- A kernel filter that cannot be represented as a convolution operator, e.g. bilateral filter
- A filter requiring more than a single pass across an image, e.g. iterative dilation
- A filter with multiple inputs
- A filter with multiple outputs
- A filter to process 3D images
Demos:
- Gaussian Filter - The canonical kernel filter. This example illustrates a brute force approach to convolution - i.e. not leveraging separability - that forms a framework for subsequent filters.
- Bilateral Filter - The Bilateral Filter is not a convolution operator but the brute force approach to convolution can be adapted easily to implement the Bilateral Filter. The Bilateral Filter is an underutilized noise reduction filter that is frequently overlooked due to the high computational costs when implemented on the CPU.
- Gaussian and Bilateral comparison - An interactive comparison on the Bilateral Filter and traditional Gaussian smoothing.
- Iterative dilation (iterative) - An example of an iterative filter requiring multiple passes across an image while maintaining intermediate results.
- Grow Cut segmentation - Grow Cut is a simple and powerful segmentation technique. This algorithm requires multiple passes across an image while maintaining two intermediate result images.
- PDE segmentation - a simple PDE example.
- Scale space - a filter to support feature detection.
- Signed Distance Function - a signed distance function segmentation technique.
- More to come...