CIKernel
CIKernel объект управляет, основанная на GPU подпрограмма обработки изображений раньше создавала пользовательские Базовые фильтры Изображения. В OS X используйте CIKernel класс для любого фильтра, включающего пользовательскую основанную на GPU обработку изображений. В iOS, для обеспечения лучшей производительности, используют подклассы CIColorKernel и CIWarpKernel при реализации фильтров, воздействующих только на цвет или информацию о геометрии, и использующих CIKernel класс непосредственно только при реализации фильтров общего назначения, использующих и цвет и информацию о геометрии вместе.
Подпрограмма языка ядра для ядра фильтра общего назначения в iOS (или любого ядра фильтра в OS X) имеет следующие характеристики:
Его тип возврата
vec4; т.е. это возвращает пиксельный цвет для выходного изображения.Это может использовать нуль или более входные изображения. Каждое входное изображение представлено параметром типа
sampler.
Подпрограмма ядра обычно производит свой вывод путем вычисления координат исходного изображения (использующий destCoord и samplerTransform функции или samplerTransform функция), выборки из исходных изображений (использующий sample функция), и вычисляет заключительный пиксельный цвет (вывод с помощью return ключевое слово). Например, Базовый источник Языка Ядра Изображения ниже реализует фильтр, проходящий через его входное неизменное изображение.
kernel vec4 do_nothing(sampler image) {vec2 dc = destCoord();return sample(image, samplerTransform(image, dc));}
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Swift
import QuartzCore
Objective C
@import QuartzCore;
Доступность
Доступный в OS X v10.4 и позже.
-
Создает единственный объект ядра.
Объявление
Swift
init!(stringstring: String!) -> CIKernelObjective C
+ (CIKernel *)kernelWithString:(NSString *)stringПараметры
stringПрограмма в Базовом Языке Ядра Изображения, содержащем единственную подпрограмму, отметила использование
kernelключевое слово.Возвращаемое значение
Новый объект ядра. В iOS класс возвращенного объекта может быть
CIKernel,CIColorKernel, илиCIWarpKernelв зависимости от типа подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.Обсуждение
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.10 и позже.
-
Создает и возвращается и массив
CIKernelобъекты.Объявление
Swift
class func kernelsWithString(_s: String!) -> [AnyObject]!Параметры
sПрограмма в Базовом Языке Ядра Изображения, содержащем одну или более подпрограмм, каждая из которых отмечена с помощью
kernelключевое слово.Возвращаемое значение
Массив
CIKernelобъекты. Массив содержит тотCIKernelобъекты для каждой подпрограммы ядра в предоставленной строке. В iOS каждый объект в массиве может иметь классCIKernel,CIColorKernel, илиCIWarpKernelв зависимости от соответствующей подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.Обсуждение
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
OS X v10.4 и позже.
-
Возвращает имя подпрограммы ядра.
Возвращаемое значение
Имя подпрограммы ядра.
Обсуждение
Имя подпрограммы ядра является идентификатором, используемым для объявления его в Базовом исходном коде Языка Ядра Изображения. Например, если Вы используете
kernelWithString:метод для создания ядра из исходного кода ниже, имя возвращенногоCIKernelобъект является «moveUpTwoPixels».kernel vec4 moveUpTwoPixels (sampler image) {vec2 dc = destCoord();vec2 offset = vec2(0.0, 2.0);return sample (image, samplerTransform (image, dc + offset));}
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
-
Устанавливает селекторное Базовое использование Изображения для запросов представляющей интерес области для обработки изображений с ядром.
Объявление
Swift
func setROISelector(_aMethod: Selector)Objective C
- (void)setROISelector:(SEL)aMethodПараметры
aMethodСелекторное имя.
Обсуждение
При применении ядра фильтра область интереса (ROI) является областью пикселей исходного изображения, которые должны быть обработаны для создания данной области пикселей конечного изображения. Для более подробного определения посмотрите Область Интереса.
aMethodпараметр должен использовать подпись, определяющуюся дляregionOf:destRect:userInfo:метод, который является следующие:- (CGRect) regionOf:(int)samplerIndex destRect:(CGRect)r userInfo:obj;где:
samplerIndexопределяет сэмплер для запросовdestRectстепень области, в координатах рабочей области, для рендеринга.userInfoобъект, связанный сkCIApplyOptionUserInfoопция, когда ядро применяется к его параметрам (сapply:arguments:options:метод aCIFilterобъект с помощью ядра).userInfoважно, потому что переменные экземпляра не могут использоваться классом определения. Через переменные экземпляра нужно пройтиuserInfoпараметр.
regionOf:destRect:userInfo:метод объекта CIFilter вызывает платформа. Этот метод возвращает прямоугольник, содержащий область сэмплера, что ядро должно представить указанный целевой прямоугольник.Выборка
regionOf:destRect:userInfo:метод мог бы посмотреть следующим образом:- (CGRect)regionOf:(int)sampler destRect:(CGRect)r userInfo:params{float scale = fabs ([params X]);return CGRectInset (r, scale * -1.3333, scale * -1.3333);}
Если Вашему ядру не нужно изображение в
indexпроизвести вывод в прямоугольникеrect, Ваш метод должен возвратитьсяCGRectNull.В коде фильтра Вы устанавливаете селектор с помощью следующего:
[kernel setROISelector:@selector(regionOf:destRect:userInfo:)]Также используйте
applyWithExtent:roiCallback:arguments:метод для прямого применения ядра для создания выходного изображения, указывая обратный вызов ROI как блок или закрытие.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
См. также
