Core Image
Use built-in or custom filters to process still and video images in near real-time. Detect features such as faces and eyes, and track faces in video images.
Overview
Core Image is an image processing and analysis technology designed to provide high-performance processing for still and video images.
Getting Started with Core Image
Use Core Image classes to:
-
Process images using the many built-in image filters
-
Chain together filters and then archive them for later use
-
Detect features (such as faces and eyes) in still and video images, and track faces in video images
-
Analyze images to get a set of auto adjustment filters
-
Create custom filters for use in your app
In OS X, you can also package custom filters as Image Units that you can publish for use by others. For details, see Image Unit Tutorial.
To learn about using Core Image, read Core Image Programming Guide.
Classes
CIColorKernel
A CIColorKernel
object manages a GPU-based image processing routine that processes only the color information in images, used to create custom Core Image filters. You create CIColorKernel
objects using methods of the superclass CIKernel
.
CIDetector
A CIDetector
object uses image processing to search for and identify notable features (faces, rectangles, and barcodes) in a still image or video. Detected features are represented by CIFeature
objects that provide more information about each feature.
CIFaceFeature
A CIFaceFeature
object describes a face detected in a still or video image. Its properties provide information about the face’s eyes and mouth. A face object in a video can also have properties that track its location over time—tracking ID and frame count.
CIFeature
A CIFeature
object represents a portion of an image that a detector believes matches its criteria. Subclasses of CIFeature
typically hold additional information specific to the detector that discovered the feature.
CIFilter
The CIFilter
class produces a CIImage
object as output. Typically, a filter takes one or more images as input. Some filters, however, generate an image based on other types of input parameters. The parameters of a CIFilter
object are set and retrieved through the use of key-value pairs.
CIFilterGenerator
The CIFilterGenerator
class provides methods for creating a CIFilter
object by chaining together existing CIFilter
objects to create complex effects. (A filter chain refers to the CIFilter
objects that are connected in the CIFilterGenerator
object.) The complex effect can be encapsulated as a CIFilterGenerator
object and saved as a file so that it can be used again. The filter generator file contains an archived instance of all the CIFilter
objects that are chained together.
CIImage
The CIImage
class represents an image. Core Image images are immutable. You use CIImage
objects in conjunction with other Core Image classes—such as CIFilter
, CIContext
, CIVector
, and CIColor
—to take advantage of the built-in Core Image filters when processing images. You can create CIImage
objects with data supplied from a variety of sources, including Quartz 2D images, Core Video image buffers (CVImageBufferRef
), URL-based objects, and NSData
objects.
CIImageAccumulator
The CIImageAccumulator
class enables feedback-based image processing for such things as iterative painting operations or fluid dynamics simulations. You use CIImageAccumulator
objects in conjunction with other Core Image classes, such as CIFilter
, CIImage
, CIVector
, and CIContext
, to take advantage of the built-in Core Image filters when processing images.
CIKernel
An CIKernel
object manages a GPU-based image processing routine used to create custom Core Image filters. To ensure the best performance, use the subclasses CIColorKernel
and CIWarpKernel
when implementing filters that operate only on color or geometry information, and use the CIKernel
class directly only when implementing general-purpose filters that use both color and geometry information together.
CIPlugIn
The CIPlugIn
class loads image units. An image unit is an image processing bundle that contains one or more Core Image filters. The .plugin
extension indicates one or more filters that are packaged as an image unit.
CIQRCodeFeature
A CIQRCodeFeature
describes a Quick Response code (a two-dimensional barcode using the ISO/IEC 18004:2006 standard) detected in a video or still image. The properties of a QR code feature identify the corners of the barcode as it appears in perspective in the image and provide the message decoded from the barcode.
CIRectangleFeature
A CIRectangleFeature
object describes a quadrilateral region detected in a video or still image. A detected rectangle feature is not necessarily rectangular in the plane of the image; rather, the feature identifies a shape that may be rectangular in space but which appears in perspective in the image—for example, a paper or book on a desk. The properties of a rectangle feature identify its corners in image coordinates.
CISampler
The CISampler
class retrieves samples of images for processing by a CIKernel
object. A CISampler
object defines a coordinate transform, and modes for interpolation and wrapping. You use CISampler
objects in conjunction with other Core Image classes, such as CIFilter
, CIKernel
, and CIFilterShape
, to create custom filters.
CITextFeature
A CITextFeature
object describes a quadrilateral region likely to contain upright text detected in a video or still image. The properties of a text feature identify its corners in image coordinates.
CIVector
The CIVector
class is used for coordinate values and direction vectors. You typically use a CIVector
object to pass parameter values to Core Image filters. CIVector
objects work in conjunction with other Core Image classes, such as CIFilter
, CIContext
, CIImage
, and CIColor
, to process images using the Core Image framework.
CIWarpKernel
A CIWarpKernel
object manages a GPU-based image processing routine that processes only the geometry information in an image, used to create custom Core Image filters. You create CIWarpKernel
objects using methods of the superclass CIKernel
.
Protocols
CIFilterConstructor
The CIFilterConstructor
protocol defines a method for supplying CIFilter
objects.
CIImageProcessorInput
A object conforming to the CIImageProcessorInput
protocol provides image data and information for use in a custom image processor. Your app does not define classes that adopt this protocol; Core Image provides an object of this type when you create a custom image processor with a block passed to the CIImage
imageWithExtent:processorDescription:argumentDigest:inputFormat:outputFormat:options:roiCallback:processor:
method.
CIImageProcessorOutput
A object conforming to the CIImageProcessorOutput
protocol provides image data and information for use in a custom image processor. Your app does not define classes that adopt this protocol; Core Image provides an object of this type when you create a custom image processor with a block passed to the CIImage
imageWithExtent:processorDescription:argumentDigest:inputFormat:outputFormat:options:roiCallback:processor:
method.
CIPlugInRegistration
The CIPlugInRegistration
protocol defines a method for loading Core Image image units. The principal class of an image unit bundle must support this protocol.