Флойд-Стейнберг одноразовые альтернативы для пиксельного шейдера
-
27-09-2019 - |
Вопрос
я знаю это Флойд-Стейнберг Алгоритм не может быть реализован с пиксельным шейдером, потому что этот алгоритм строго последовательно. Но, возможно, существует какой-то алгоритм Gently Parallel Chithering, который на визуальном выходе похож на алгоритм Floyd-Steinberg?
Таким образом, вопрос - это то, что являются алгоритмами дизеров, которые подходят для реализации на пиксельном шейдере (предпочтительно GLSL) и с выходным качеством (очень), аналогично дигерию Floyd-Steinberg?
КСТАТИ. Многопроизводительные алгоритмы допускаются до тех пор, пока не более 2 проходов, а накладные расходы CPU между этими пропусками невелики.
Любые идеи ?
РЕДАКТИРОВАТЬ:
Мне нужен дитен от 24-битного цвета до 21-битного цвета.
(То есть - мне нужно преобразовать от 8 битов / канал до 7 бит / канал.)
Редактировать 2.Может быть, я не очень хорошо объяснил проблему. Поэтому я постараюсь расширить немного на точную проблему. Проблема это - подумайте, что у нас есть эта картина:
И у нас выше картинка, но обрабатывается с кардиорингом алгоритма:
Теперь это процедура, которая проверит вашу дириторию хорошо для меня или нет:
1. Загрузите эти фотографии в Photoshop в виде одной картинки с 2 слоями.
2. Выберите режим смешивания слоев в «Разница».
3. Выполните «слияние видимой» операции на слоях, чтобы получить только один слой.
4. Выполните операцию => изображение / настройки / выравнивание
После этого вы должны получить такое изображение:
Как вы видите - средние пиксели, которые были в монотонном красном цвете, вообще не говорили. Также дитен о левой и правой зоны изображения немного отличается. Попробуйте восстановить алгоритм дигерирования с таким поведением.
Решение
Если вы уменьшаете с 8 битов до 7, вы бросаете практически не информации. Вы уверены, что вам даже нужно дизеннее?
Если вам нужно, добавьте случайный шум, а затем клип, это будет достаточно хорошо для вашего приложения.
Другие советы
Вы могли бы использовать заказал. Отказ Это более грубый, чем Floyd-Steinberg, но нет зависимости между пикселями.
Редактировать: Так как вы только удаляете один бит, это становится почти тривиальным. Принцип позади упорядоченного предназначена для создания шаблона, который предусиет порог перехода; В этом случае смещение будет 0 или 1, а шаблон будет 2х2 пикселей. Эти два изменения вместе сделают узор намного менее неприятным, чем один в статье Википедии - вам может даже понравиться это лучше, чем Floyd-Steinberg.
Вот какой-то псевдокод:
bias = (X xor Y) and 0x01
value = pixel + bias
if value > 255: value = 255
pixel = value and 0x7e
Редактировать 2: Вот мой различие, как я могу сделать. Не зная, как вы набрали свои 7-битные значения на 8 битов, я не могу сделать лучше.