Organization of This Document
See Also
The Apple vImage framework, introduced in Mac OS X v10.3, is a high performance image processing framework. It includes high-level functions for image manipulation—convolutions, geometric transformations, histogram operations, morphological transformations, and alpha compositing—as well as utility functions for format conversions and other operations. You can call vImage functions from Carbon, Cocoa, and command line interpreter (CLI) applications, but not directly from the kernel.
vImage contains vectorized code to make use of a Single Instruction Multiple Data (SIMD) vector unit, when available, for high performance. All functions also contain scalar code that performs identical operations when a vector unit is not available. The framework uses the best code for the hardware it is running on, in a manner completely transparent to the calling application.
You should read this document if you want to use the vImage library for high-speed image processing in your application. You should be familiar with Macintosh application development and the basics of image representation and manipulation.
The vImage framework isn’t the only image processing framework that Mac OS X provides; but it’s the fastest and oldest, having been introduced in Mac OS X v10.3. If you need to process large quantities of high-resolution images for scientific and medical projects, vImage is the ideal framework. If you want to add image processing capability to an application to support color adjustment, halftone effects, stylizing filters, compositing, and transition effects you might want to consider Core Image. The Core Image framework is a high-level Objective-C programming interface that has more than 100 built-in filters and supports writing your own custom filters.
This document contains the following sections:
“vImage Basics” discusses image formats, image buffers, regions of interest, and 64-bit dat types.
“Best Practices” provides tips on getting the most from using vImage. Among other things, it discusses real-time issues, multiprocessing issues, and optimal use of buffers.
“Convolution Operations” explains convolution, shows the result of convolving an image, discusses high speed convolution, and deconvolution.
“Morphological Operations” describes how vImage operates on images, types of operations, and morphological kernels.
“Geometric Operations” discusses each of the operations available in vImage for altering the geometry of an image.
“Histogram Operations” explains histograms, histogram operations, look-up tables, and the algorithms uses by vImage to compute histograms.
“Alpha Compositing Operations” defines alpha compositing, explains the difference between premultiplied and non-premultiplied alpha, and give an overview of compositing operations.
“Image Transformation Operations” gives an overview the transformations you can perform using vImage functions, including transformations that correct gamma, use piecewise polynomial or rational functions, and those that use look-up tables.
vImage Reference Collection is a complete reference to the functions, data types, and constants defined by the vImage framework.
vImage Tableau is a sample application that shows how to use vImage functions for image processing. You’ll also be able to assess the performance of various functions.
Core Image Programming Guide if you would prefer to use higher-level image processing functions and don’t need the level of control, performance, and flexibility provided by the vImage framework.
Last updated: 2007-05-11