GPUImage: уменьшение глубины цвета

Я хотел бы уменьшить глубину цвета входного видео и изображений (например, до 16 бит) при использовании GPUImage на iOS, и мне было просто любопытно, есть ли простой способ сделать это с помощью существующих фильтров.

Похоже, что GPUImageColorMatrixFilter или GPUImageRGBFilter могут быть правильными инструментами; это тот случай? Я сейчас тоже начну экспериментировать. Спасибо.

1 ответ

Я не думаю, что кто-то из них будет делать то, что вы хотите здесь. Игнорируя сглаживание, вам понадобится что-то, что уменьшает количество уровней цвета в вашем изображении.

GPUImagePosterizeFilter уменьшает уровни цвета, уменьшая динамический диапазон красного, зеленого и синего каналов по отдельности, используя colorLevels имущество. При значении 10 это должно уменьшить ваше изображение до 1000 цветов.

Однако, поскольку это действует для каждого цветового канала индивидуально и единообразно, это может не уменьшить ваше цветовое пространство определенным образом, как вам бы хотелось. Чтобы настроить такие сокращения цветового пространства, я видел, как люди используют таблицы цветовых карт. Если вы хотите пойти по этому пути, я бы порекомендовал GPUImageLookupFilter, где вы можете выполнить операцию сокращения над изображением таблицы поиска, а затем использовать ее для повторного отображения. Это может привести к более качественному результату.

Другие вопросы по тегам