GPUImage: уменьшение глубины цвета
Я хотел бы уменьшить глубину цвета входного видео и изображений (например, до 16 бит) при использовании GPUImage на iOS, и мне было просто любопытно, есть ли простой способ сделать это с помощью существующих фильтров.
Похоже, что GPUImageColorMatrixFilter или GPUImageRGBFilter могут быть правильными инструментами; это тот случай? Я сейчас тоже начну экспериментировать. Спасибо.
1 ответ
Я не думаю, что кто-то из них будет делать то, что вы хотите здесь. Игнорируя сглаживание, вам понадобится что-то, что уменьшает количество уровней цвета в вашем изображении.
GPUImagePosterizeFilter уменьшает уровни цвета, уменьшая динамический диапазон красного, зеленого и синего каналов по отдельности, используя colorLevels
имущество. При значении 10 это должно уменьшить ваше изображение до 1000 цветов.
Однако, поскольку это действует для каждого цветового канала индивидуально и единообразно, это может не уменьшить ваше цветовое пространство определенным образом, как вам бы хотелось. Чтобы настроить такие сокращения цветового пространства, я видел, как люди используют таблицы цветовых карт. Если вы хотите пойти по этому пути, я бы порекомендовал GPUImageLookupFilter, где вы можете выполнить операцию сокращения над изображением таблицы поиска, а затем использовать ее для повторного отображения. Это может привести к более качественному результату.