# Дизеринг

Имитация полутонов с помощью смешивания клеточек нескольких цветов

# Уменьшение цветов в изображении

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

Поэтому для создания схемы, по которой можно связать изделие разумного размера, нужно уменьшить и саму картинку, и количество цветов в ней.

При уменьшении размера неизбежно потеряется детальность изображения. Ниже приведен пример исходного изображения размером 768x768 клеточек, которое было уменьшено до размера 128x128:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/34Cimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/34Cimage.png)

Посмотрим теперь, как меняется изображение по мере уменьшения количества цветов в нем, от полноцветного до 2 цветов:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/69Uimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/69Uimage.png)

Полноцветное изображение

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/07Zimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/07Zimage.png)

256 цветов

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/3xZimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/3xZimage.png)

128 цветов

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/rBHimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/rBHimage.png)

64 цвета

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/aVoimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/aVoimage.png)

32 цвета

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/Uxgimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/Uxgimage.png)

16 цветов

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/LHPimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/LHPimage.png)

8 цветов

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/5Z3image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/5Z3image.png)

4 цвета

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/57Wimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/57Wimage.png)

2 цвета

Поначалу может даже показаться, что ничего не меняется, но по мере того, как цветов становится все меньше и меньше, изображение начинает заметно терять в качестве.

Как же так получается, что изображение с 256 цветами визуально мало чем отличается от полноцветного? Дело в том, что программы для обработки графики при уменьшении количества цветов могут создавать участки, в которых точки одного цвета чередуются с другим таким образом, чтобы на отдалении они визуально сливались и как бы создавали третий цвет. Эта методика называется дизеринг.

Сравните, как выглядит 256-цветное изображение с дизерингом:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/v6wimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/v6wimage.png)

и без:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/1gAimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/1gAimage.png)

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

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/QXLimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/QXLimage.png)

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/3IJimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/3IJimage.png)

Обратите внимание, на первом изображении хорошо видно, как за счет смешивания черных и белых точек создается визуальный эффект полутонов.

# Дизеринг по шаблону

Алгоритмов для смешивания черных и белых клеточек для создания эффекта полутонов придумано огромное количество, но самое широкое распространение получили два:

1. Дизеринг по шаблону
2. Дизеринг на основе распределения коррекции цвета на соседние клетки изображения

Сегодня мы рассмотрим первый.

В качестве исходного изображения возьмем градиент из черного в белый размером 16x16 клеточек:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/VAoimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/VAoimage.png)

У серого цвета фактически нет цвета как такового, поэтому мы будем оперировать понятием яркости. Яркость серого может варьироваться от 0 (черный цвет) до 255 (белый цвет). На картинке ниже в каждой клеточке подписаны соответствующие значения яркости:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/scaled-1680-/tNTimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-03/tNTimage.png)

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

Давайте попробуем нашу картинку превратить в черно-белую с порогом 120:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/image.png)

Очевидно, что от нашего градиентного перехода ничего не осталось, картинка поделилась пополам на черный и белый участки.

То же самое происходит и с цветными картинками, когда их преобразуют в черно-белые однобитные с помощью такой же методики:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/Slnimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/Slnimage.png)

Но у человеческого глаза есть особенность, которую можно использовать для создания изображений, имитирующих отсутствующие на самом деле полутона: он воспринимает несколько точек как единое целое. Обратите внимание на следующее изображение:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/luuimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/luuimage.png)

Создается впечатление, будто в нем множество оттенков серого цвета, но на самом деле оно составлено только из точек черного или белого!

Такое смешивание точек ограниченного количества цветов для имитации полутонов называется дизеринг (dithering).

Подобная техника активно использовалась в типографии, чтобы можно было печатать фотографии даже в черно-белых газетах и книгах.

Алгоритмов, позволяющих имитировать полутона, придумано огромное множество, сегодня рассмотрим самый простой из них - дизеринг по шаблону.

Идея дизеринга по шаблону заключается в том, чтобы сформировать определенный узор для каждого оттенка, который можно изобразить с помощью шаблона заданного размера. Например, если размер шаблона 4x4 клеточки, то он позволяет передать 17 оттенков. Если размер 8x8 клеточек, то с помощью такого шаблона можно передать 65 оттенка.

Например, один из распространенных шаблонов - матрица Байера 4x4 - позволяет передать 17 оттенков с помощью следующего набора узоров:

[![canvas.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/canvas.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/canvas.png)

А для матрицы Байера 8x8 набор доступных узоров гораздо богаче и позволяет передать уже 65 оттенков:

[![canvas.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/Crwcanvas.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/Crwcanvas.png)

Матрица Байера 4x4 выглядит следующим образом:

<table border="1" id="bkmrk-12-4-14-6-3-11-1-9-1" style="border-collapse: collapse; width: 20.8642%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>12  
</td><td>4  
</td><td>14  
</td><td>6  
</td></tr><tr><td>3  
</td><td>11  
</td><td>1  
</td><td>9  
</td></tr><tr><td>15  
</td><td>7  
</td><td>13  
</td><td>5  
</td></tr><tr><td>0  
</td><td>8  
</td><td>2  
</td><td>10  
</td></tr></tbody></table>

Клеточек у нас в шаблоне 4x4 всего 16, и в каждую мы можем поставить число от 0 до 16, тем самым формируя узор дизеринга для каждого полутона.

Работает это по следующему принципу. Яркость клеточки представляет собой диапазон значений от 0 до 255, и значения из шаблона разбивают этот диапазон равномерно на 16 участков, в зависимости от значения порога в матрице:

<table border="1" id="bkmrk-0%3A-0-15-4%3A-61-79-8%3A-" style="border-collapse: collapse; width: 100%; height: 119.2px;"><colgroup><col style="width: 24.9383%;"></col><col style="width: 24.9383%;"></col><col style="width: 24.9383%;"></col><col style="width: 24.9383%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">0: 0-15</td><td style="height: 29.8px;">4: 61-79</td><td style="height: 29.8px;">8: 128-143</td><td style="height: 29.8px;">12: 192-207</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">1: 16-31</td><td style="height: 29.8px;">5: 80-95</td><td style="height: 29.8px;">9: 144-159</td><td style="height: 29.8px;">13: 208-223</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">2: 32-47</td><td style="height: 29.8px;">6: 96-111</td><td style="height: 29.8px;">10: 160-175</td><td style="height: 29.8px;">14: 224-239</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">3: 48-63</td><td style="height: 29.8px;">7: 112-127</td><td style="height: 29.8px;">11: 176-191</td><td style="height: 29.8px;">15: 240-255</td></tr></tbody></table>

При применении дизеринга по шаблону исходное изображение разбивается на участки размером с шаблон (в нашем случае это будут участки 4x4 клеточки) и каждая клеточка полученного участка сопоставляется с шаблоном по следующему алгоритму:

1. Берем значение из шаблона, соответствующее положению клеточки участка относительно матрицы
2. Вычисляем пороговое значение по формуле ЗначениеИзШаблона/КоличествоЯчеекШаблона\*255
3. Если значение яркости клеточки рисунка больше порога, то клеточка будет белой. Если меньше или равно - черной
4. Записываем вычисленное значение яркости в результат дизеринга.

Давайте попробуем обработать нашу картинку по шагам.

Разобьем ее на участки размером 4x4 клеточки:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ctnimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ctnimage.png)

Начнем обработку с первого блока:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ZIkimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ZIkimage.png)

И с первой клеточки:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/YWyimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/YWyimage.png)

Ей соответствует значение 12 из шаблона, следовательно порог будет 12/16\*255=191,25

Значение 0 яркости меньше порога, поэтому в результирующей картинке клеточка не поменяется, как была черной, так и останется.

Теперь берем вторую клеточку:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ulHimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ulHimage.png)

Ей соответствует значение 4 из шаблона, порог 63,75. Значение яркости меньше порога, поэтому в результирующей картинке клеточка станет черной.

Идем дальше:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/RDAimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/RDAimage.png)

Соответствующее значение из шаблона - 14, порог 223,125. Снова черный в результате.

Ниже приведен результат вычислений для текущего блока:

<table border="1" id="bkmrk-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D1%8F%D1%80%D0%BA%D0%BE%D1%81%D1%82%D0%B8-%D0%A8%D0%B0%D0%B1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 23.2386%;"></col><col style="width: 23.2402%;"></col><col style="width: 28.4285%;"></col><col style="width: 24.9691%;"></col></colgroup><thead><tr><td>Значения яркости  
</td><td>Шаблон  
</td><td>Пороговые значения (округленно)  
</td><td>Результат  
</td></tr></thead><tbody><tr><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>0  
</td><td>11  
</td><td>19  
</td><td>28  
</td></tr><tr><td>11  
</td><td>19  
</td><td>28  
</td><td>36  
</td></tr><tr><td>19  
</td><td>28  
</td><td>36  
</td><td>45  
</td></tr><tr><td>28  
</td><td>36  
</td><td>45  
</td><td>53  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>12  
</td><td>4  
</td><td>14  
</td><td>6  
</td></tr><tr><td>3  
</td><td>11  
</td><td>1  
</td><td>9  
</td></tr><tr><td>15  
</td><td>7  
</td><td>13  
</td><td>5  
</td></tr><tr><td>0  
</td><td>8  
</td><td>2  
</td><td>10  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>191,3  
</td><td>63,8  
</td><td>223,1  
</td><td>95,6  
</td></tr><tr><td>47,8  
</td><td>175,3  
</td><td>15,9  
</td><td>143,4  
</td></tr><tr><td>239,1  
</td><td>111,6  
</td><td>207,2  
</td><td>79,7  
</td></tr><tr><td>0  
</td><td>127,5  
</td><td>31,9  
</td><td>159,4  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td><span style="background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);">Ч</span>  
</td><td><span style="background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);">Ч</span>  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td></tr><tr><td><span style="background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);">Ч</span>  
</td><td><span style="background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);">Ч</span>  
</td><td>Б  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td></tr><tr><td><span style="background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);">Ч</span>  
</td><td><span style="background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);">Ч</span>  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td></tr><tr><td>Б  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td><td>Б  
</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span>  
</td></tr></tbody></table>

</td></tr></tbody></table>

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

Теперь проделаем аналогичную операцию для следующего блока:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/8K1image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/8K1image.png)

<table border="1" id="bkmrk-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D1%8F%D1%80%D0%BA%D0%BE%D1%81%D1%82%D0%B8-%D0%A8%D0%B0%D0%B1-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 23.2386%;"></col><col style="width: 23.2402%;"></col><col style="width: 28.4285%;"></col><col style="width: 24.9691%;"></col></colgroup><thead><tr><td>Значения яркости  
</td><td>Шаблон  
</td><td>Пороговые значения (округленно)  
</td><td>Результат  
</td></tr></thead><tbody><tr><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>36  
</td><td>45</td><td>53</td><td>61</td></tr><tr><td>44</td><td>53</td><td>61</td><td>70</td></tr><tr><td>53</td><td>61</td><td>70</td><td>78</td></tr><tr><td>62</td><td>70</td><td>78</td><td>87</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>12  
</td><td>4  
</td><td>14  
</td><td>6  
</td></tr><tr><td>3  
</td><td>11  
</td><td>1  
</td><td>9  
</td></tr><tr><td>15  
</td><td>7  
</td><td>13  
</td><td>5  
</td></tr><tr><td>0  
</td><td>8  
</td><td>2  
</td><td>10  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>191,3  
</td><td>63,8  
</td><td>223,1  
</td><td>95,6  
</td></tr><tr><td>47,8  
</td><td>175,3  
</td><td>15,9  
</td><td>143,4  
</td></tr><tr><td>239,1  
</td><td>111,6  
</td><td>207,2  
</td><td>79,7  
</td></tr><tr><td>0  
</td><td>127,5  
</td><td>31,9  
</td><td>159,4  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%; height: 119.2px;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr></tbody></table>

</td></tr></tbody></table>

Обратите внимание, что результат получился такой же, как и в первом блоке, несмотря на то, что исходные цвета были другие.

Теперь возьмем третий и четвертый блоки:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/waqimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/waqimage.png)

<table border="1" id="bkmrk-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D1%8F%D1%80%D0%BA%D0%BE%D1%81%D1%82%D0%B8-%D0%A8%D0%B0%D0%B1-2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 23.2386%;"></col><col style="width: 23.2402%;"></col><col style="width: 28.4285%;"></col><col style="width: 24.9691%;"></col></colgroup><thead><tr><td>Значения яркости  
</td><td>Шаблон  
</td><td>Пороговые значения (округленно)  
</td><td>Результат  
</td></tr></thead><tbody><tr><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>70</td><td>78</td><td>87</td><td>95</td></tr><tr><td>78</td><td>87</td><td>95</td><td>103</td></tr><tr><td>87</td><td>95</td><td>104</td><td>112</td></tr><tr><td>95</td><td>104</td><td>112</td><td>121</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>12  
</td><td>4  
</td><td>14  
</td><td>6  
</td></tr><tr><td>3  
</td><td>11  
</td><td>1  
</td><td>9  
</td></tr><tr><td>15  
</td><td>7  
</td><td>13  
</td><td>5  
</td></tr><tr><td>0  
</td><td>8  
</td><td>2  
</td><td>10  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>191,3  
</td><td>63,8  
</td><td>223,1  
</td><td>95,6  
</td></tr><tr><td>47,8  
</td><td>175,3  
</td><td>15,9  
</td><td>143,4  
</td></tr><tr><td>239,1  
</td><td>111,6  
</td><td>207,2  
</td><td>79,7  
</td></tr><tr><td>0  
</td><td>127,5  
</td><td>31,9  
</td><td>159,4  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%; height: 119.2px;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;">Б</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td style="height: 29.8px;">Б</td><td style="height: 29.8px;"><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr></tbody></table>

</td></tr></tbody></table>

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/Vlmimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/Vlmimage.png)

<table border="1" id="bkmrk-%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D1%8F%D1%80%D0%BA%D0%BE%D1%81%D1%82%D0%B8-%D0%A8%D0%B0%D0%B1-3" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 23.2386%;"></col><col style="width: 23.2402%;"></col><col style="width: 28.4285%;"></col><col style="width: 24.9691%;"></col></colgroup><thead><tr><td>Значения яркости  
</td><td>Шаблон  
</td><td>Пороговые значения (округленно)  
</td><td>Результат  
</td></tr></thead><tbody><tr><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>103</td><td>112</td><td>120</td><td>129</td></tr><tr><td>112</td><td>120</td><td>129</td><td>137</td></tr><tr><td>120</td><td>129</td><td>137</td><td>146</td></tr><tr><td>129</td><td>137</td><td>146</td><td>154</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>12  
</td><td>4  
</td><td>14  
</td><td>6  
</td></tr><tr><td>3  
</td><td>11  
</td><td>1  
</td><td>9  
</td></tr><tr><td>15  
</td><td>7  
</td><td>13  
</td><td>5  
</td></tr><tr><td>0  
</td><td>8  
</td><td>2  
</td><td>10  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td>191,3  
</td><td>63,8  
</td><td>223,1  
</td><td>95,6  
</td></tr><tr><td>47,8  
</td><td>175,3  
</td><td>15,9  
</td><td>143,4  
</td></tr><tr><td>239,1  
</td><td>111,6  
</td><td>207,2  
</td><td>79,7  
</td></tr><tr><td>0  
</td><td>127,5  
</td><td>31,9  
</td><td>159,4  
</td></tr></tbody></table>

</td><td><table border="1" style="border-collapse: collapse; width: 100.407%;"><colgroup><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col><col style="width: 24.8649%;"></col></colgroup><tbody><tr><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td>Б</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td>Б</td></tr><tr><td>Б</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td>Б</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr><tr><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td>Б</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td><td>Б</td></tr><tr><td>Б</td><td>Б</td><td>Б</td><td><span style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0);">Ч</span></td></tr></tbody></table>

</td></tr></tbody></table>

Таким образом у нас получилась вот такая полоска:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/Z0qimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/Z0qimage.png)

Выполним аналогичную операцию для всех остальных блоков, в результате у нас получится такая картинка:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/v5Bimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/v5Bimage.png)

Или, если убрать все надписи и вернуть изначальный размер, она выглядит вот так:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/gA0image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/gA0image.png)

Видно, что с помощью дизеринга нам удалось создать имитацию полутонов.

На видео ниже представлена построчная работа алгоритма от начала до конца изображения:

<video controls="controls" height="320" poster="" width="320"><source src="https://mosaic-crochet.ru/public/docs/dither-ordered-16.mp4" type="video/mp4"></source></video>

Аналогичным образом выполняются вычисления и для шаблона размером 8x8, только картинка 16x16 при этом будет делиться на 4 блока, а не на 16.

Конечно, на такой маленькой картинке, как 16x16, артефакты дизеринга видны слишком хорошо, но давайте посмотрим, как выглядит дизеринг по матрице Байера 4x4 на картинке размером 300x300 точек:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/rriimage.png)<video controls="controls" height="300" poster="" width="300"><source src="https://mosaic-crochet.ru/public/docs/dither-ordered-300.mp4" type="video/mp4"></source></video>](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/rriimage.png)

Полутона в целом получились, но вышли ступенчатые, и в этом заключается главная проблема дизеринга по шаблону: на переходах полутонов всегда будут ступеньки из разных узоров.

Если взять матрицу Байера 8x8, то у нас будет гораздо больше узоров для разных полутонов и этот эффект будет выражен меньше, но, тем не менее, будет:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/2Ejimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/2Ejimage.png)

Если использовать изображения, приведенные к однобитному цвету с помощью шаблонного дизеринга, в вязании, то нужно иметь в виду следующее:

- Популярные шаблоны дизеринга, такие как матрицы Байера, отлично подходят для вязания жаккарда. Можно сразу брать и вязать.
- В то же самое время матрицы Байера не подходят для мозаичного вязания, так как они устроены таким образом, что создают четное количество клеточек одного цвета по вертикали. Для мозаичного вязания нужно разрабатывать специально адаптированные матрицы.
- Дизеринг по шаблону отлично смотрится в геометрических узорах или там, где в принципе изначально мало цветов и они плоские, нет плавных переходов цвета, например, некоторые виды рисованной мультипликации.
- За счет повторяемости узора в ряду такие схемы проще вязать.

В [генераторе схем](https://mosaic-crochet.ru/generator2) на сайте доступны как стандартные матрицы Байера, так и разработанные мной адаптированные для мозаики матрицы. А также можно воспользоваться режимом эксперта и составить собственную матрицу, наилучшим образом подходящую для вашей картинки.

# Дизеринг с распределением коррекции

В прошлой части мы рассмотрели имитацию полутонов (дизеринг) с помощью шаблона, который обладает несколькими недостатками:

1. Количество передаваемых оттенков ограничено размером матрицы
2. Каждый оттенок создается хорошо различимым регулярным узором, что может не очень хорошо смотреться на фотографиях
3. На изображениях с плавным переходом полутонов будут видны четкие границы узоров
4. Тонкие линии контрастного цвета могут пропасть полностью, если попадутся на неудачный участок шаблона

Для борьбы с этими недостатками был придуман другой метод, заключающийся в адаптивном распределении значения коррекции, возникшего при приведении клеточки к черному или белому цвету, на соседние клеточки.

За основу возьмем то же самое изображение 16x16 клеточек из предыдущей части:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/IJzimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/IJzimage.png)

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

Фильтров придумано огромное множество и они создают разные эффекты. Одним из самых распространенных фильтров является фильтр Флойда-Штейнберга, который выглядит следующим образом:

<table border="1" id="bkmrk--1--1-7%2F16-3%2F16-5%2F16" style="border-collapse: collapse; width: 24.321%;"><colgroup><col style="width: 33.1878%;"></col><col style="width: 33.1878%;"></col><col style="width: 33.1878%;"></col></colgroup><tbody><tr><td style="background-color: rgb(224, 62, 45);">-1  
</td><td style="background-color: rgb(53, 152, 219);">-1  
</td><td style="background-color: rgb(45, 194, 107);">7/16  
</td></tr><tr><td style="background-color: rgb(45, 194, 107);">3/16  
</td><td style="background-color: rgb(45, 194, 107);">5/16  
</td><td style="background-color: rgb(45, 194, 107);">1/16  
</td></tr></tbody></table>

Здесь голубым цветом выделена исходная клеточка, которую мы модифицируем и с которой распределяем коррекцию на соседние клеточки, красным - клеточка, на которую мы не распространяем коррекцию, а зеленым - клеточки, на которые распространение коррекции происходит.

Знаменатель дроби означает, на сколько частей нужно разделить значение коррекции, а числитель - какая доля коррекции будет распределена. Упрощенно можно считать, что если сумма всех числителей будет равна знаменателю, то полученный результат коррекции будет примерно совпадать с исходным изображением по яркости и контрасту. Если сумма числителей будет меньше знаменателя, то картинка станет более контрастной, потеряются оттенки в самых светлых и самых темных участках. Если больше, то картинка станет ярче.

Как мы видим из таблички, в фильтре Флойда-Штейнберга распространение коррекции происходит вправо, вниз, по диагонали вправо-вниз и влево-вниз. Есть фильтры, которые распространяют коррекцию не только на непосредственно соседние клеточки, но и через одну или даже дальше. Например, фильтр Сьерры выглядит следующим образом:

<table border="1" id="bkmrk--1--1--1-5%2F32-3%2F32-2" style="border-collapse: collapse; width: 100%; height: 89.4px;"><colgroup><col style="width: 20%;"></col><col style="width: 20%;"></col><col style="width: 20%;"></col><col style="width: 20%;"></col><col style="width: 20%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="background-color: rgb(224, 62, 45); height: 29.8px;">-1  
</td><td style="background-color: rgb(224, 62, 45); height: 29.8px;">-1  
</td><td style="height: 29.8px; background-color: rgb(53, 152, 219);">-1  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">5/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">3/32  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px; background-color: rgb(45, 194, 107);">2/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">4/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">5/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">4/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">2/32  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px; background-color: rgb(224, 62, 45);">-1  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">2/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">3/32  
</td><td style="height: 29.8px; background-color: rgb(45, 194, 107);">2/32  
</td><td style="height: 29.8px; background-color: rgb(224, 62, 45);">-1  
</td></tr></tbody></table>

Почему распространение коррекции идет вправо и вниз и не затрагивает клеточки слево от текущей? Дело в том, что обработка изображения идет сверху вниз и слева направо, и слева от текущей клеточки у нас расположены уже обработанные, то есть либо черные, либо белые клеточки. Если на них распространить коррекцию, то они приобретут оттенок серого цвета и их придется обрабатывать повторно. Есть более сложные алгоритмы, которые умеют работать с распределением коррекции на уже обработанные ранее клеточки, но они за рамками данной статьи.

Итак, давайте попробуем обработать нашу картинку алгоритмом дизеринга с распространением коррекции, используя фильтр Флойда-Штейнберга.

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/baXimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/baXimage.png)

Берем первую клеточку. Она уже черного цвета, поэтому делать тут нечего.

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/KpBimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/KpBimage.png)

У следующей клеточки оттенок серого с яркостью 11. Это меньше порогового значения 128, поэтому мы приведем ее к черному, т.е. к 0. В результате у нас возникнет значение коррекции в 11 единиц, которое нам нужно распределить на соседние клеточки в соответствии с фильтром. Знаменатель дроби (количество долей) у нас 16, поэтому делим 11 на 16 и получаем размер одной доли - 0,6875. Вправо мы должны распределить 7 долей, т.е. 4,8125. Яркость правой клеточки у нас 19, прибавим к ней 4,8125, округлим математически до целого значения и получится новое значение яркости - 24:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/YfDimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/YfDimage.png)

Вправо и вниз мы распределяем 1 долю, т.е. 0,6875, или округленно 1:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/6P8image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/6P8image.png)

Вниз распределяем 5 долей, т.е. 3,4375, округленно 3:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/9Xrimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/9Xrimage.png)

И влево-вниз 3 доли, т.е. 2,0625, округленно 2:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/zydimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/zydimage.png)

Переходим ко второй клеточке. Ее значение яркости уже не 19, а 24, но это все еще меньше 128, поэтому клеточку приводим к черному цвету (0) и получаем значение коррекции 24, которое нужно распределить вправо, вправо-вниз, вниз и влево-вниз соответственно на 11, 2, 8 и 5 значений:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/Cw1image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/Cw1image.png)

Четвертую клеточку мы тоже приводим к черному и распределяем уже 38 пунктов коррекции:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/m05image.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/m05image.png)

Пройдем до конца ряда:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/Nuyimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/Nuyimage.png)

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/RMJimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/RMJimage.png)

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/1AZimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/1AZimage.png)

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/IABimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/IABimage.png)

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/oSWimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/oSWimage.png)

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/lqcimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/lqcimage.png)

Обратите внимание, как постепенно накапливается значение коррекции, высветляя соседние клеточки все больше и больше, пока не приводит к тому, что очередную клеточку мы уже приводим не к черному, а к белому: 143 -&gt; 255. При этом значение коррекции у нас уже становится отрицательным: 143 - 255 = -112, соответственно соседние клеточки мы уже будем распределением коррекции не высветлять, а затемнять, отнимая яркость в соответствии с долями распределения коррекции:

[![image.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/DTwimage.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/DTwimage.png)

Теперь посмотрим на видео, как происходит обработка картинки от начала до конца:

<video controls="controls" height="320" poster="" width="320"><source src="https://mosaic-crochet.ru/public/docs/dither-fs-16.mp4" type="video/mp4"></source></video>

Конечно, на маленьком изображении результат не так очевиден, но вот как этот алгоритм выглядит на изображении 300x300 точек:

[![dither-fs-300.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/dither-fs-300.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/dither-fs-300.png) <video controls="controls" height="300" poster="" width="300"><source src="https://mosaic-crochet.ru/public/docs/dither-fs-300.mp4" type="video/mp4"></source></video>

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

Ниже приведены результаты преобразования той же картинки размером 300x300 точек с использованием разных фильтров:

<table border="1" id="bkmrk--19" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>[![DitherFloydSteinbergSimplified.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditherfloydsteinbergsimplified.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditherfloydsteinbergsimplified.png)  
</td><td>[![DitheringAtkinson.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringatkinson.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringatkinson.png)  
</td><td>[![DitheringBurkes.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringburkes.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringburkes.png)  
</td></tr><tr><td>[![DitheringJJN.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringjjn.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringjjn.png)  
</td><td>[![DitheringOstromukhov.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringostromukhov.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringostromukhov.png)  
</td><td>[![DitheringShiauFan.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringshiaufan.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringshiaufan.png)  
</td></tr><tr><td>[![DitheringSierra.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringsierra.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringsierra.png)  
</td><td>[![DitheringSierra2Rows.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringsierra2rows.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringsierra2rows.png)  
</td><td>[![DitheringSierraLite.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringsierralite.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringsierralite.png)  
</td></tr><tr><td>[![DitheringStuki.png](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/scaled-1680-/ditheringstuki.png)](https://docs.mosaic-crochet.ru/uploads/images/gallery/2024-04/ditheringstuki.png)  
</td><td>  
</td><td>  
</td></tr></tbody></table>

В [генераторе схем](https://mosaic-crochet.ru/generator2) для платных подписчиков на [Бусти](https://boosty.to/mosaic-crochet) и в [ВК](https://vk.com/donut/mosaic_crochet) доступны все эти фильтры и другие настройки, а также возможность составить собственный фильтр.