Введение

Технология обработки изображений, представленная в Mac OS X 10.4. Core Image – это технология обработки изображений в Mac OS X, обеспечивающая высокую точность на уровне пикселей, работу почти в реальном времени и неразрушающее редактирование. Реализованная как часть фреймворка QuartzCore в Mac OS X 10.4 и более поздних версиях, Core Image предоставляет архитектуру, основанную на плагинах, для применения фильтров и эффектов в слое графического рендеринга Quartz. Позже этот фреймворк был добавлен в iOS, начиная с iOS 5.

Обзор

Core Image абстрагирует процесс манипулирования на уровне пикселей, необходимый при применении фильтра к изображению, упрощая реализацию возможностей преобразования изображений в приложениях без сложного кодирования. В простейшей реализации Core Image применяет один фильтр изображения к пиксельным данным исходного изображения для получения преобразованного результата. Каждый фильтр изображения определяет одно преобразование или эффект, встроенный в Core Image или загруженный из плагина, называемого Image Unit. В сочетании с предустановленными или заданными пользователем входными параметрами, фильтр может быть применен к исходным пиксельным данным без их изменения, обеспечивая тем самым неразрушающее редактирование изображения. Как и в Photoshop, Core Image может применять несколько фильтров к одному и тому же источнику изображения. Вместо последовательного применения серии фильтров, Core Image собирает динамический конвейер инструкций, так что для достижения кумулятивного эффекта к пиксельным данным требуется применить только одно вычисление. Применение пиксельных операций, связанных с несколькими фильтрами, может быть выполнено одновременно без значительного увеличения времени обработки. Независимо от количества фильтров, Core Image собирает код для этого конвейера инструкций с помощью JIT-компилятора (компилятора Just-In-Time), который выполняется либо центральным процессором (CPU), либо графическим процессором (GPU) видеокарты, в зависимости от того, какой из них способен выполнить вычисление быстрее. Фильтры написаны на языке ядра Core Image Kernel Language, который использует подмножество команд языка шейдеров OpenGL (GLSL). При наличии совместимого GPU, компилятор Core Image генерирует конвейер инструкций, используя GLSL, прозрачно управляя буферами и состояниями. Хотя предпочтительна отрисовка с использованием GPU, компилятор может работать в режиме резервного копирования на CPU, генерируя команды, подходящие для текущей архитектуры процессора. Режим резервного копирования использует возможности векторной обработки текущего CPU или CPU, а также поддерживает многопроцессорность. Таким образом, производительность Core Image зависит от возможностей GLSL GPU или вычислительной мощности CPU. При использовании поддерживаемого GPU большинство эффектов могут быть отрисованы в реальном времени или почти в реальном времени.

История и реализация

Core Image был представлен вместе с Mac OS X 10.4. Ранние примеры его использования можно найти в эффекте ряби в Dashboard и в профессиональном приложении Apple для цифровой фотографии Aperture. Начиная с Mac OS X 10.5, любое приложение, использующее Image Kit, может применять Core Image. Preview и iPhoto — типичные примеры. В 2011 году Apple добавила Core Image в iOS, начиная с версии 5.0.