Флойд-Стейнберг одноразовые альтернативы для пиксельного шейдера

StackOverflow https://stackoverflow.com/questions/4057970

Вопрос

я знаю это Флойд-Стейнберг Алгоритм не может быть реализован с пиксельным шейдером, потому что этот алгоритм строго последовательно. Но, возможно, существует какой-то алгоритм Gently Parallel Chithering, который на визуальном выходе похож на алгоритм Floyd-Steinberg?

Таким образом, вопрос - это то, что являются алгоритмами дизеров, которые подходят для реализации на пиксельном шейдере (предпочтительно GLSL) и с выходным качеством (очень), аналогично дигерию Floyd-Steinberg?

КСТАТИ. Многопроизводительные алгоритмы допускаются до тех пор, пока не более 2 проходов, а накладные расходы CPU между этими пропусками невелики.

Любые идеи ?

РЕДАКТИРОВАТЬ:
Мне нужен дитен от 24-битного цвета до 21-битного цвета.
(То есть - мне нужно преобразовать от 8 битов / канал до 7 бит / канал.)

Редактировать 2.Может быть, я не очень хорошо объяснил проблему. Поэтому я постараюсь расширить немного на точную проблему. Проблема это - подумайте, что у нас есть эта картина:
alt text
И у нас выше картинка, но обрабатывается с кардиорингом алгоритма:
alt text
Теперь это процедура, которая проверит вашу дириторию хорошо для меня или нет:
1. Загрузите эти фотографии в Photoshop в виде одной картинки с 2 слоями.
2. Выберите режим смешивания слоев в «Разница».
3. Выполните «слияние видимой» операции на слоях, чтобы получить только один слой.
4. Выполните операцию => изображение / настройки / выравнивание

После этого вы должны получить такое изображение:
alt text
Как вы видите - средние пиксели, которые были в монотонном красном цвете, вообще не говорили. Также дитен о левой и правой зоны изображения немного отличается. Попробуйте восстановить алгоритм дигерирования с таким поведением.

Это было полезно?

Решение

Если вы уменьшаете с 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 битов, я не могу сделать лучше.

alt text

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top