Я создал то, что, как я считаю, должен быть подходящим CIFilter в градациях серого, используя CIColorMonochromeFilter
, настроенный для белого. Для меня это выглядит очень мрачно, но я не эксперт, так что мне просто интересно, является ли это точной реализацией фильтра в оттенках серого.Как реализовать фильтр в оттенках серого с использованием фильтров CoreImage?
Я не написал код, чтобы сбрасывать и тестировать пиксели, но в зависимости от формата изображения, уже являющегося RBG, мне любопытно, в каком формате будет отображаться выходное изображение. Например, как бы я узнал, является ли каждый пиксель одним компонентом или тремя компонентами?
Я знаю, что CIImage - это всего лишь рецепт для изображений и что я должен использовать CGImageRef для рендеринга. Я просто не понимаю, в каком формате пикселей я должен ожидать, что данные будут.
CIFilter * monoChromeFilter = [CIFilter filterWithName:kCIColorMonochromeFilterName];
[monoChromeFilter setValue:self.inputImage forKey:kCIInputImageKey];
CIColor * white = [CIColor colorWithRed:1.0 green:1.0 blue:1.0];
[monoChromeFilter setValue:white forKey:kCIInputColorKey];
Так что вопрос? Это просто, что вы не знаете, как читать значение пикселя изображения? Это довольно хорошо документировано в Stack Overflow. – matt
Более или менее то, что я делаю, на самом деле является подходящим фильтром в оттенках серого, например. Монохромный белый - полутоновый. Мне любопытно формат вывода, хотя это скорее второстепенный вопрос. –