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 собирает код для этого конвейера команд с помощью оперативного компилятора, который выполняется либо ЦП, либо графическим процессором видеокарты, в зависимости от того, какой из них может выполнять вычисления быстрее.
Фильтры написаны на Core Image Kernel Language, который разделяет подмножество команд с OpenGL Shading Language (GLSL). Когда совместимый графический процессор доступен, компилятор Core Image записывает конвейер инструкций с использованием GLSL, прозрачно обрабатывая буферы и состояния. Хотя отрисовка с помощью графического процессора является предпочтительной, компилятор может работать в резервном режиме ЦП, вместо этого генерируя команды, подходящие для текущей архитектуры ЦП. Резервный режим ЦП использует возможности векторной обработки текущего ЦП или ЦП и поддерживает многопроцессорность. Таким образом, производительность Core Image зависит от возможностей GLSL графического процессора или вычислительной мощности процессора. С помощью поддерживаемого графического процессора большинство эффектов можно визуализировать в реальном времени или почти в реальном времени.
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 в iOS 5.0.
Инструменты Xcode включают Core Image Fun House и Quartz Композитор ; оба используют Core Image.
Вся обработка пикселей, обеспечиваемая блоком изображения, выполняется в цветовом пространстве с предварительно умноженным альфа-каналом (RGBA ), сохраняя четыре цветовых канала: красный, зеленый, синий и прозрачность (альфа ). Каждый цветовой канал представлен 32-битным числом с плавающей запятой. Это обеспечивает исключительную глубину цвета, намного большую, чем может воспринимать человеческий глаз, поскольку каждый пиксель представлен 128-битным вектором (четыре 32-битных цветовых канала). Для цветовых пространств с меньшей битовой глубиной модель вычислений с плавающей запятой, используемая Core Image, обеспечивает исключительную производительность, что полезно при обработке нескольких изображений или видеокадров.
Любые программируемый графический процессор, который поддерживает необходимые команды OpenGL Shader (GLSL ), поддерживает Core Image. Apple использовала следующие видеокарты для поддержки обработки Core Image GPU в Mac OS X 10.4 и Aperture, поэтому следующий список можно рассматривать как пример минимальных требований:
Обратите внимание, что любой графический процессор, способный обрабатывать инструкции Core Image, также поддерживает Quartz Extreme. Требования к Core Image выше, чем у Quartz Extreme.
macOS включает множество встроенных фильтров, включая следующие. Mac OS X 10.4 представила более 100 из них, а Mac OS X 10.5 добавила в список.
Веб-сайт документации с открытым исходным кодом для встроенных фильтров Core Image поддерживается по адресу CIFilter.io.