Jump to content

Дизеринг Флойда – Стейнберга

Исходное изображение
Нет сглаживания
Дизеринг Флойда – Стейнберга
1-битное изображение статуи Давида , обработанное алгоритмом Флойда-Стейнберга.

Сглаживание Флойда-Стейнберга изображений — это алгоритм сглаживания , впервые опубликованный в 1976 году Робертом В. Флойдом и Луи Стейнбергом . Он обычно используется программным обеспечением для обработки изображений, например, когда изображение преобразуется в формат GIF , который ограничен максимальным числом 256 цветов.

Выполнение

[ редактировать ]

Алгоритм обеспечивает сглаживание с помощью диффузии ошибок , то есть он переносит (добавляет) остаточную ошибку квантования пикселя . на соседние пиксели, чтобы разобраться с ними позже Он распределяет долг в соответствии с распределением (показанным в виде карты соседних пикселей):

Пиксель, отмеченный звездочкой (*), указывает пиксель, сканируемый в данный момент, а пустые пиксели — это пиксели, сканированные ранее. Алгоритм сканирует изображение слева направо, сверху вниз, квантовая значения пикселей одно за другим. Каждый раз ошибка квантования переносится на соседние пиксели, не затрагивая при этом уже квантованные пиксели. Следовательно, если несколько пикселей округлены вниз, становится более вероятным, что следующий пиксель будет округлен вверх, так что в среднем ошибка квантования близка к нулю.

Коэффициенты диффузии обладают тем свойством, что если исходные значения пикселей находятся ровно посередине между ближайшими доступными цветами, результат размытия представляет собой шахматный узор. Например, 50%-ные данные серого можно размывать в виде черно-белой шахматной доски. Для оптимального сглаживания подсчет ошибок квантования должен осуществляться с достаточной точностью, чтобы ошибки округления не влияли на результат.

В некоторых реализациях горизонтальное направление сканирования чередуется между строками; это называется «змеевидным сканированием» или сглаживанием преобразования бустрофедона .

Описанный выше алгоритм находится в следующем псевдокоде . Это работает для любого приблизительно линейного кодирования значений пикселей, например, 8-битных целых чисел, 16-битных целых чисел или действительных чисел в диапазоне [0, 1].

for each y from top to bottom do
    for each x from left to right do
        oldpixel := pixels[x][y]
        newpixel := find_closest_palette_color(oldpixel)
        pixels[x][y] := newpixel
        quant_error := oldpixel - newpixel
        pixels[x + 1][y    ] := pixels[x + 1][y    ] + quant_error × 7 / 16
        pixels[x - 1][y + 1] := pixels[x - 1][y + 1] + quant_error × 3 / 16
        pixels[x    ][y + 1] := pixels[x    ][y + 1] + quant_error × 5 / 16
        pixels[x + 1][y + 1] := pixels[x + 1][y + 1] + quant_error × 1 / 16

При преобразовании значений пикселей в оттенках серого из высокой разрядности в низкую (например, 8-битную шкалу серого в 1-битную черно-белую), find_closest_palette_color() может выполнить простое округление, например:

find_closest_palette_color(oldpixel) = round(oldpixel / 255)

Псевдокод может привести к тому, что значения пикселей превысят допустимые значения (например, больше 255 в 8-битных изображениях в оттенках серого). Такие значения в идеале должны быть обрезаны find_closest_palette_color() функцию, а не обрезать промежуточные значения, поскольку последующая ошибка может вернуть значение в диапазон. Однако если используются целые числа фиксированной ширины, перенос промежуточных значений может привести к инверсии черного и белого, поэтому этого следует избегать.

The find_closest_palette_color нетривиально для палитры, которая распределена неравномерно. В таком случае поиск ближайшего соседа требуется в 3D.

См. также

[ редактировать ]
  • Дизеринг Флойда-Стейнберга (проект курса графики, лаборатория Visgraf, Бразилия)
  • Р. В. Флойд, Л. Стейнберг, Адаптивный алгоритм для пространственной шкалы серого . Труды Общества информационного дисплея 17 , 75–77 (1976).
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d6d02560e7d38e5f55300ded375e4de0__1719474960
URL1:https://arc.ask3.ru/arc/aa/d6/e0/d6d02560e7d38e5f55300ded375e4de0.html
Заголовок, (Title) документа по адресу, URL1:
Floyd–Steinberg dithering - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)