Разница между группировкой фильтров изображений и цепочкой фильтров изображений

Недавно наткнулся на проект Брэда Ларсона GPUImage. Смущен тем, что использовать для цепочки фильтров.

В чем разница между использованием GPUImageFilterGroup и GPUImageFilterPipeline (цепочка фильтров) и выполнением addTarget: для каждого фильтра?

Спасибо.


person ARC    schedule 05.11.2013    source источник


Ответы (1)


Это вопрос удобства.

При создании группы GPUImageFilterGroup из серии подфильтров вы можете обращаться с ней так, как если бы это был один фильтр. Это означает, что вы можете удалить группу из цепочки фильтров как единое целое, изменить цели и т. д. Подклассы групп фильтров могут упаковывать часто используемые цепочки фильтров в многократно используемые единицы с соответствующими открытыми свойствами для настройки.

Например, GPUImageCannyEdgeDetectionFilter — это группа GPUImageFilterGroup, состоящая из нескольких шагов фильтра, которые выполняют процесс обнаружения границ Canny. Вам не нужно ничего знать об этом, чтобы использовать это как отдельный фильтр, потому что это абстрагируется внутри группы.

person Brad Larson    schedule 06.11.2013
comment
Привет, Брэд, можете ли вы объяснить разницу между GPUImageFilterGroup и GPUImageFilterPipeline, так как это также было задано в вопросе? - person Andree; 26.08.2015
comment
@Andree - GPUImagePipeline - это то, что было добавлено в проект другим пользователем, а не то, что я активно поддерживал или использовал, но в основном это способ определения цепочки фильтров с использованием списка свойств. Он создает фильтры и связывает их в цепочки на основе этого списка. В прошлом у него были проблемы из-за того, что я им не пользуюсь, поэтому я полагаюсь на других, чтобы исправить их. Я обычно рекомендую вручную объединять фильтры в цепочки или размещать их в группах. - person Brad Larson; 26.08.2015