Аппроксимация изображения с использованием подобных непересекающихся кругов

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

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

У кого-нибудь есть предложения?

Изменить: вот пример использования квадратов вместо кругов Пример с квадратами вместо кругов Другой пример с использованием кругов одинакового размера на сетке. Это было получено путем замены размытых квадратов кружками, но это дало плохие результаты из-за отклонения от первоначально аппроксимированного изображения. Круги здесь распределены по сетке, а это не то, что мне нужно: введите здесь описание изображения


person BaconBad    schedule 16.01.2020    source источник
comment
Наверняка у вас есть пример или два? И какое-то указание на вашу мотивацию? И что такое похожий круг? Похож на что?   -  person Mark Setchell    schedule 17.01.2020
comment
Вы ищете что-то вроде полутонового изображения?   -  person beaker    schedule 17.01.2020
comment
@MarkSetchell Я добавил пару примеров, которые близки к тому, что я хочу. Я не могу показать вам пример того, что точно я хочу, потому что я не знаю, как создать такое изображение, поэтому этот пост. Под похожим кругом я подразумеваю круг такого же размера, как и другие круги в наборе (скажем, 25%-ная разница в размерах). Моя мотивация — длинная история, но вкратце, эти круги должны быть напечатаны на пластиковом листе и просверлены, чтобы сформировать представление изображения, поэтому это должны быть круги и почему они должны приближаться к изображению.   -  person BaconBad    schedule 17.01.2020
comment
@beaker Не совсем так - взгляните на примеры, которые я добавил.   -  person BaconBad    schedule 17.01.2020
comment
Ах, тогда я бы посмотрел на алгоритмы штриховки. Хотя в автоматически сгенерированных паттернах всегда будет некоторая степень регулярности.   -  person beaker    schedule 17.01.2020
comment
@beaker Да, именно так, большое спасибо!   -  person BaconBad    schedule 17.01.2020
comment
Оба ваших примера кажутся распространением ошибок на работе. Точки находятся на сетке.   -  person Yves Daoust    schedule 17.01.2020


Ответы (1)


Подсказка:

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

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

Проще сказать, чем сделать.

person Yves Daoust    schedule 17.01.2020