Что делает CIImageAccumulator?

#macos #image-processing #core-image #cifilter

#macos #обработка изображений #ядро-образ #cifilter

Вопрос:

Проблема

В документации Apple указано, когда CIImageAccumulater можно использовать, но, к сожалению, там не сказано, что он на самом деле делает.

Класс CIImageAccumulator обеспечивает обработку изображений на основе обратной связи для таких вещей, как итеративные операции рисования или моделирование динамики жидкости. Объекты CIImageAccumulator используются совместно с другими базовыми классами изображений, такими как CIFilter, CIImage, CIVector и CIContext, чтобы воспользоваться преимуществами встроенных базовых фильтров изображений при обработке изображений.

Я должен исправить код, который использовал CIImageAccumulator . Мне кажется, что все, для чего он предназначен, несмотря на его название, это возвращать a CIImage со всеми CIFilter примененными к изображению. Однако добавление первого изображения затемняет вывод. Это не то, чего я ожидал бы ни от аккумулятора, ни от любого другого оператора, который обеспечивает обработку изображений на основе обратной связи.

Вопрос

Кто-нибудь может ответить, какая логика / алгоритм используется при настройке и получении изображений в и из CIImageAccumulator

Ответ №1:

Самым большим преимуществом CIImageAccumulater является то, что он сохраняет свое содержимое между различными этапами рендеринга (в отличие от CIFilter или CIImage ). Это позволяет вам использовать состояние предыдущего шага рендеринга, смешать его с чем-то новым и снова сохранить этот результат в накопителе.

Основной вариант использования Apple — интерактивное рисование: вы извлекаете текущее изображение из накопителя, накладываете поверх него новый штрих, который пользователь только что нарисовал жестом, и сохраняете полученное изображение обратно в накопитель. Затем вы отображаете содержимое аккумулятора. Вы можете прочитать об этом здесь.