Преобразование цветного изображения в черно-белое

Этот онлайн калькулятор преобразует цветное изображение в черно-белое изображение. Для преобразования можно использовать либо пороговое значение яркости, либо алгоритм смешивания Флойда-Стейнберга.

Эта страница существует благодаря следующим персонам

Timur

Timur

Создан: 2021-05-16 11:58:47, Последнее изменение: 2021-05-26 04:08:19
Creative Commons Attribution/Share-Alike License 3.0 (Unported)

Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/9295/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).

Калькулятор ниже преобразует загруженное цветное изображение в черно-белое. То есть изображение, состоящее только из черных и белых точек. Поддерживается четыре метода преобразования - использование порогового значения яркости (которое можно менять), смешивание Флойда-Стейнберга (Floyd-Steinberg dithering), смешивание Джарвиса (Jarvis dithering) и смешивание Стаки (Stucki dithering). Подробнее о алгоритме работы калькулятора можно почитать ниже.

PLANETCALC, Преобразование цветного изображения в черно-белое

Преобразование цветного изображения в черно-белое

Пороговое значение: 127
Исходное изображение
  • Перетащите сюда файлы
Исходное изображение
 
Черно-белое изображение
 

Преобразование цветного изображения в черно-белое

Использование порогового значения яркости

Алгоритм работы этого способа создания черно-белого изображения достаточно прост.

  1. Вычислить яркость пикселя. Для вычисления используются стандартные коэффициенты (см. Преобразование цветного изображения в оттенки серого) и значение яркости рассчитывается как
    Y=0.2126R + 0.7152G+0.0722B

  2. Если рассчитанное значение выше порогового, заменить исходный цвет точки на белый цвет. Если ниже или равно - заменить исходный цвет точки на черный цвет.

По умолчанию в качестве порога используется середина диапазона [0...255] - значение 127.

Смешивание Флойда-Стейнберга

Использование только порогового значения дает слишком резкие переходы между черным и белым цветом, особенно на плавных границах. Чтобы преодолеть эту проблему, Флойд и Стейнберг в 1976 году предложили алгоритм дизеринга (dithering), основанный на диффузии ошибки квантования изображения.1 Идея алгоритма заключается в том, чтобы при переходе от исходного цвета к новому (с меньшим числом градаций) вычислять ошибку квантования (ошибку округления) и часть ее "возвращать" в исходное изображение, распределяя между соседними пикселями, которые еще только предстоит обработать.

В алгоритме Флойда-Стейнберга ошибка между соседними пикселями распределяется следующим образом:

{\displaystyle {\begin{bmatrix}&&*&{\frac {\displaystyle 7}{\displaystyle 16}}&\ldots \\\ldots &{\frac {\displaystyle 3}{\displaystyle 16}}&{\frac {\displaystyle 5}{\displaystyle 16}}&{\frac {\displaystyle 1}{\displaystyle 16}}&\ldots \\\end{bmatrix}}}

Как видно, такое распределение позволяет обрабатывать изображение в один проход - слева-направо сверху-вниз.

Псевдо-код алгоритма, приведенный в википедии:

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

Другие методы смешивания отличаются только распределением ошибки между соседними пикселями. В калькулятор добавлены еще два, но есть и другие (если будет интересно, могу добавить и их)

Смешивание Джарвиса

{\begin{bmatrix}&&&*&{\frac {7}{48}}&{\frac {5}{48}}&\ldots \\ \ldots &{\frac {3}{48}}&{\frac {5}{48}}&{\frac {7}{48}}&{\frac {5}{48}}&{\frac {3}{48}}&\ldots\\ \ldots &{\frac {1}{48}}&{\frac {3}{48}}&{\frac {5}{48}}&{\frac {3}{48}}&{\frac {1}{48}}&\ldots \\\end{bmatrix}}

Смешивание Стаки

{\begin{bmatrix}&&&*&{\frac {8}{42}}&{\frac {4}{42}}&\ldots \\ \ldots &{\frac {2}{42}}&{\frac {4}{42}}&{\frac {8}{42}}&{\frac {4}{42}}&{\frac {2}{42}}&\ldots\\ \ldots &{\frac {1}{42}}&{\frac {2}{42}}&{\frac {4}{42}}&{\frac {2}{42}}&{\frac {1}{42}}&\ldots \\\end{bmatrix}}


  1. R.W. Floyd, L. Steinberg, An adaptive algorithm for spatial grey scale. Proceedings of the Society of Information Display 17, 75–77 (1976). 

Ссылка скопирована в буфер обмена
PLANETCALC, Преобразование цветного изображения в черно-белое

Комментарии