Core Image

Last updated

Core Image is a pixel-accurate, near-realtime, non-destructive image processing technology in Mac OS X. Implemented as part of the QuartzCore framework of Mac OS X 10.4 and later, Core Image provides a plugin-based architecture for applying filters and effects within the Quartz graphics rendering layer. [1] The framework was later added to iOS in iOS 5. [2]

Contents

Overview

Core Image abstracts the pixel-level manipulation process required when applying a filter to an image, making it simple for applications to implement image transformation capabilities without extensive coding. In a simple implementation, Core Image applies a single Image Filter to the pixel data of a given source to produce the transformed image. Each Image Filter specifies a single transform or effect, either built into Core Image or loaded from a plugin called an Image Unit. Combined with preset or user-defined input parameters, the filter can be applied to the original pixel data without modifying it, thereby providing non-destructive image editing. [3] [4]

Like Photoshop, Core Image can apply multiple filters to the same image source. Instead of applying a series of filters individually, Core Image assembles a dynamic instruction pipeline so that only one calculation needs to be applied to the pixel data to achieve a cumulative effect. Applying the pixel operations associated with multiple filters can be achieved simultaneously and without a significant increase in processing time. Regardless of the number of filters, Core Image assembles the code for this instruction pipeline with a just-in-time compiler, which is executed by either the CPU or graphics card's GPU, whichever can perform the calculation faster. [5]

Filters are written in the Core Image Kernel Language, which shares a subset of commands with OpenGL Shading Language (GLSL). [6] When a compatible GPU is available, the Core Image compiler writes the instruction pipeline using GLSL, handling buffers and states transparently. Although GPU rendering is preferred[ citation needed ], the compiler can operate in a CPU fallback mode, generating commands suitable for the current CPU architecture instead. [7] CPU fallback uses the vector processing capabilities of the current CPU or CPUs, and it is multi-processor aware. Thus, Core Image performance depends on the GLSL capabilities of the GPU or the processing power of the CPU. With a supported GPU, most effects can be rendered in realtime or near-realtime. [8]

History and implementation

Core Image was introduced with Mac OS X 10.4. [9] Early examples of its use can be found in the ripple effect in Dashboard, and Apple's professional digital photography application, Aperture. [10] Starting with Mac OS X 10.5, any application that implements Image Kit can utilize Core Image. [11] Preview and iPhoto are common examples.

In 2011, Apple added Core Image to iOS in iOS 5.0. [2]

The Xcode Tools include Core Image Fun House and Quartz Composer; both utilize Core Image.

The Core Image plugin architecture was inspired by that of Core Audio. [12]

Pixel accuracy

All pixel processing provided by an Image Unit is performed in a pre-multiplied alpha (RGBA) color space, storing four color channels: red, green, blue, and transparency (alpha). Each color channel is represented by a 32-bit, floating point number. This provides exceptional color depth, far greater than can be perceived by the human eye, as each pixel is represented by a 128-bit vector (four 32-bit color channels). For color spaces of lower bit-depth, the floating-point calculation model employed by Core Image provides exceptional performance, which is useful when processing multiple images or video frames. [3] [13]

Supported graphics processors

Any programmable GPU that supports the required OpenGL Shader (GLSL) commands is Core Image capable. Apple has used the following graphics cards to support Core Image GPU processing in Mac OS X 10.4 and Aperture, so the following list could be considered an example of minimum requirements: [10] [14]

Note that any GPU capable of handling Core Image instructions is also Quartz Extreme capable. The requirements for Core Image are greater than those of Quartz Extreme. [14]

Built-in filters

Wikipedia Logo with "Color Monochrome", "Parallelogram Tile", and "Pinch Distortion" Image Units applied Core Image WP Logo.jpg
Wikipedia Logo with "Color Monochrome", "Parallelogram Tile", and "Pinch Distortion" Image Units applied

macOS includes many built-in filters, including the following ones. Mac OS X 10.4 introduced over 100 of them, and Mac OS X 10.5 has added to the list. [3] [15]

An open source documentation website for built-in Core Image filters is maintained at CIFilter.io.

See also

Related Research Articles

<span class="mw-page-title-main">OpenGL</span> Cross-platform graphics API

OpenGL is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

<span class="mw-page-title-main">GeForce</span> Range of GPUs by Nvidia

GeForce is a brand of graphics processing units (GPUs) designed by Nvidia. As of the GeForce 40 series, there have been eighteen iterations of the design. The first GeForce products were discrete GPUs designed for add-on graphics boards, intended for the high-margin PC gaming market, and later diversification of the product line covered all tiers of the PC graphics market, ranging from cost-sensitive GPUs integrated on motherboards, to mainstream add-in retail boards. Most recently, GeForce technology has been introduced into Nvidia's line of embedded application processors, designed for electronic handhelds and mobile handsets.

<span class="mw-page-title-main">GeForce FX series</span> Series of GPUs by Nvidia

The GeForce FX or "GeForce 5" series is a line of graphics processing units from the manufacturer Nvidia.

<span class="mw-page-title-main">Graphics processing unit</span> Specialized electronic circuit; graphics accelerator

A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles.

<span class="mw-page-title-main">GeForce 6 series</span> Series of GPUs by Nvidia

The GeForce 6 series is Nvidia's sixth generation of GeForce graphic processing units. Launched on April 14, 2004, the GeForce 6 family introduced PureVideo post-processing for video, SLI technology, and Shader Model 3.0 support.

<span class="mw-page-title-main">Alienware</span> American computer hardware subsidiary of Dell, Inc.

Alienware is an American computer hardware subsidiary of Dell. Their product range is dedicated to gaming computers which can be identified by their alien-themed designs. Alienware was founded in 1996 by Nelson Gonzalez and Alex Aguila, and is currently led by Vivian Lien. The development of the company is also associated with Frank Azor, Arthur Lewis, Joe Balerdi, and Michael S. Dell. The company's corporate headquarters is located in The Hammocks, Miami, Florida.

Dell XPS is a line of consumer-oriented high-end laptop and desktop computers manufactured by Dell. The XPS mainly competes against computers such as Acer's Aspire, HP's Pavilion and Envy, Lenovo's X1, Samsung's Sens, and Apple MacBook Pro.

<span class="mw-page-title-main">GeForce 7 series</span> Series of GPUs by Nvidia

The GeForce 7 series is the seventh generation of Nvidia's GeForce graphics processing units. This was the last series available on AGP cards.

The Intel Graphics Media Accelerator (GMA) is a series of integrated graphics processors introduced in 2004 by Intel, replacing the earlier Intel Extreme Graphics series and being succeeded by the Intel HD and Iris Graphics series.

<span class="mw-page-title-main">Radeon R300 series</span> Series of video cards

The R300 GPU, introduced in August 2002 and developed by ATI Technologies, is its third generation of GPU used in Radeon graphics cards. This GPU features 3D acceleration based upon Direct3D 9.0 and OpenGL 2.0, a major improvement in features and performance compared to the preceding R200 design. R300 was the first fully Direct3D 9-capable consumer graphics chip. The processors also include 2D GUI acceleration, video acceleration, and multiple display outputs.

The Taito Type X is an arcade system board released in 2004 by game developer and publisher Taito.

The GeForce 8 series is the eighth generation of Nvidia's GeForce line of graphics processing units. The third major GPU architecture developed by Nvidia, Tesla represents the company's first unified shader architecture.

<span class="mw-page-title-main">GeForce 9 series</span> Series of GPUs by Nvidia

The GeForce 9 series is the ninth generation of Nvidia's GeForce series of graphics processing units, the first of which was released on February 21, 2008. Products are based on a slightly repolished Tesla microarchitecture, adding PCIe 2.0 support, improved color and z-compression, and built on a 65 nm process, later using 55 nm process to reduce power consumption and die size.

<span class="mw-page-title-main">Tesla (microarchitecture)</span> GPU microarchitecture by Nvidia

Tesla is the codename for a GPU microarchitecture developed by Nvidia, and released in 2006, as the successor to Curie microarchitecture. It was named after the pioneering electrical engineer Nikola Tesla. As Nvidia's first microarchitecture to implement unified shaders, it was used with GeForce 8 Series, GeForce 9 Series, GeForce 100 Series, GeForce 200 Series, and GeForce 300 Series of GPUs collectively manufactured in 90 nm, 80 nm, 65 nm, 55 nm, and 40 nm. It was also in the GeForce 405 and in the Quadro FX, Quadro x000, Quadro NVS series, and Nvidia Tesla computing modules.

PureVideo is Nvidia's hardware SIP core that performs video decoding. PureVideo is integrated into some of the Nvidia GPUs, and it supports hardware decoding of multiple video codec standards: MPEG-2, VC-1, H.264, HEVC, and AV1. PureVideo occupies a considerable amount of a GPU's die area and should not be confused with Nvidia NVENC. In addition to video decoding on chip, PureVideo offers features such as edge enhancement, noise reduction, deinterlacing, dynamic contrast enhancement and color enhancement.

<span class="mw-page-title-main">Radeon HD 6000 series</span> Series of video cards

The Northern Islands series is a family of GPUs developed by Advanced Micro Devices (AMD) forming part of its Radeon-brand, based on the 40 nm process. Some models are based on TeraScale 2 (VLIW5), some on the new TeraScale 3 (VLIW4) introduced with them.

<span class="mw-page-title-main">GeForce 500 series</span> Series of GPUs by Nvidia

A refresh of the Fermi based GeForce 400 series, the GeForce 500 series is a series of graphics processing units developed by Nvidia, first released on November 9, 2010 with the GeForce GTX 580.

<span class="mw-page-title-main">Radeon 9000 series</span> Series of video cards

The R300 GPU, introduced in August 2002 and developed by ATI Technologies, is its third generation of GPU used in Radeon graphics cards. This GPU features 3D acceleration based upon Direct3D 9.0 and OpenGL 2.0, a major improvement in features and performance compared to the preceding R200 design. R300 was the first fully Direct3D 9-capable consumer graphics chip. The processors also include 2D GUI acceleration, video acceleration, and multiple display outputs.

<span class="mw-page-title-main">Cg (programming language)</span> Shading language

Cg and High-Level Shader Language (HLSL) are two names given to a high-level shading language developed by Nvidia and Microsoft for programming shaders. Cg/HLSL is based on the C programming language and although they share the same core syntax, some features of C were modified and new data types were added to make Cg/HLSL more suitable for programming graphics processing units.

References

  1. "Mac Dev Center - Introduction to Core Image Programming Guide" . Retrieved September 20, 2009.
  2. 1 2 "iOS 5.0 API Diffs" . Retrieved September 14, 2012.
  3. 1 2 3 "Apple - Developer - Developing with Core Image" . Retrieved September 20, 2009.
  4. "Mac Dev Center - Introduction to Core Image Programming Guide - Filter Clients and Filter Creators" . Retrieved September 20, 2009.
  5. "ArsTechnica - Mac OS X 10.4 Tiger - Page 15" . Retrieved September 20, 2009.
  6. "Mac Dev Center - Core Image Kernel Language Reference - Introduction" . Retrieved September 20, 2009.
  7. "Mac Dev Center - Core Image Programming Guide - Core Image Concepts - Core Image and the GPU" . Retrieved September 20, 2009.
  8. "ArsTechnica - Mac OS X 10.4 Tiger - Page 15" . Retrieved April 17, 2007.
  9. "Mac Dev Center - Core Image Programming Guide - Core Image Concepts" . Retrieved September 20, 2009.
  10. 1 2 "Apple - Aperture - Tech Specs" . Retrieved September 20, 2009.
  11. "Mac Dev Center - Image Kit Programming Guide - Introduction to Image Kit Programming Guide" . Retrieved September 20, 2009.
  12. Singh 2006, p. 97.
  13. "Mac Dev Center - Core Image Programming Guide - Core Image Concepts - Color Components and Premultiplied Alpha" . Retrieved September 20, 2009.
  14. 1 2 "Mac OS X 10.4 - Requirements for Quartz Extreme and Core Image Graphics" . Retrieved September 20, 2009.
  15. "Mac Dev Center - Core Image Filter Reference" . Retrieved September 20, 2009.

Bibliography