Преобразование цветного изображения в черно-белое
Этот онлайн калькулятор преобразует цветное изображение в черно-белое изображение. Для преобразования можно использовать либо пороговое значение яркости, либо алгоритм смешивания Флойда-Стейнберга.
Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/9295/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).
Калькулятор ниже преобразует загруженное цветное изображение в черно-белое. То есть изображение, состоящее только из черных и белых точек. Поддерживается четыре метода преобразования - использование порогового значения яркости (которое можно менять), смешивание Флойда-Стейнберга (Floyd-Steinberg dithering), смешивание Джарвиса (Jarvis dithering) и смешивание Стаки (Stucki dithering). Подробнее о алгоритме работы калькулятора можно почитать ниже.
Преобразование цветного изображения в черно-белое
Использование порогового значения яркости
Алгоритм работы этого способа создания черно-белого изображения достаточно прост.
-
Вычислить яркость пикселя. Для вычисления используются стандартные коэффициенты (см. Преобразование цветного изображения в оттенки серого) и значение яркости рассчитывается как
- Если рассчитанное значение выше порогового, заменить исходный цвет точки на белый цвет. Если ниже или равно - заменить исходный цвет точки на черный цвет.
По умолчанию в качестве порога используется середина диапазона [0...255] - значение 127.
Смешивание Флойда-Стейнберга
Использование только порогового значения дает слишком резкие переходы между черным и белым цветом, особенно на плавных границах. Чтобы преодолеть эту проблему, Флойд и Стейнберг в 1976 году предложили алгоритм дизеринга (dithering), основанный на диффузии ошибки квантования изображения.1 Идея алгоритма заключается в том, чтобы при переходе от исходного цвета к новому (с меньшим числом градаций) вычислять ошибку квантования (ошибку округления) и часть ее "возвращать" в исходное изображение, распределяя между соседними пикселями, которые еще только предстоит обработать.
В алгоритме Флойда-Стейнберга ошибка между соседними пикселями распределяется следующим образом:
Как видно, такое распределение позволяет обрабатывать изображение в один проход - слева-направо сверху-вниз.
Псевдо-код алгоритма, приведенный в википедии:
for each y from top to bottom do
for each x from left to right do
oldpixel := pixel[x][y]
newpixel := find_closest_palette_color(oldpixel)
pixel[x][y] := newpixel
quant_error := oldpixel - newpixel
pixel[x + 1][y ] := pixel[x + 1][y ] + quant_error × 7 / 16
pixel[x - 1][y + 1] := pixel[x - 1][y + 1] + quant_error × 3 / 16
pixel[x ][y + 1] := pixel[x ][y + 1] + quant_error × 5 / 16
pixel[x + 1][y + 1] := pixel[x + 1][y + 1] + quant_error × 1 / 16
Другие методы смешивания отличаются только распределением ошибки между соседними пикселями. В калькулятор добавлены еще два, но есть и другие (если будет интересно, могу добавить и их)
Смешивание Джарвиса
Смешивание Стаки
-
R.W. Floyd, L. Steinberg, An adaptive algorithm for spatial grey scale. Proceedings of the Society of Information Display 17, 75–77 (1976). ↩
Комментарии