вторник, 18 марта 2014 г.

Флойд-Штейнберг



Пришлось немного повозиться с dithering-фильтрами.
Для "быстрой"(хуяк-хуяк-продакшн) выбрали достаточно простой фильтр Флойда-Штайнберга.
Фильтр позволяет обработать изображение в один проход, единственное неудобство - приходится собирать до 2 строчек пикселей для работы.
Кратенько перескажу википедию.
1. Берем grayscale-изображение.
2. Берем пиксель и смотрим, белым он будет, или черным. Всё, что больше 128 - белое, всё что меньше - черное. Дополнительно нужно сохранить ошибку этого пикселя - насколько его значение отличалось от белого или черного, т.е. e = (oldpix - newpix).
3. Теперь распределяем ошибку по соседним пикселям таким образом:







Пиксель справа получает изменение в 7/16 пикселя, пиксели на следующей линии - по 3/16, 5/16, 1/16.

И результат:



ЗЫ: Плохо подходит для документов, т.к. ошибка от серой линии может размазаться по всей странице.

Комментариев нет:

Отправить комментарий