Как рассчитать, какой процент пикселя находится в пределах формы - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть двумерная сетка, в которой центры пикселей находятся на пересечении двух линий половинной сетки, как показано ниже. enter image description here

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

Правило для определения того, какие пиксели должны быть включены, простое: если центр пикселя попадает в контур фигуры, включите этот пиксель. На следующем рисунке показан пример применения этого правила. enter image description here

Теперь проблема, с которой я сталкиваюсь, связана с антиалиасингом. Я хотел бы рассчитать, какой процент площади данного пикселя попадает в контур. В качестве примера, на изображении выше, я нарисовал красный квадрат вокруг пикселя, который будет на 15% внутри фигуры.

Цель этого состоит в том, чтобы я мог затем включить этот пиксель только на 15% и таким образом получить более четкие края для окончательного растрового изображения.

Хотя мне удалось найти алгоритмы для определения того, попадает ли данная точка в многоугольник ( приведение лучей ), я не смог найти ничего об этой проблеме.

Может кто-нибудь подсказать мне какие-то алгоритмы для достижения этой цели? Также дайте мне знать, если я иду об этой проблеме неправильно!

1 Ответ

0 голосов
/ 02 апреля 2019

Это звучит как проблема X, Y.

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

Если вы работаететолько с одноцветными 2D-фигурами (то есть красным, синим, пурпурным ... квадратами, линиями, кривыми ...) Очень простое решение - создать свое изображение и затем смазать результат.

Это автоматически дастВы плавный контур и прост в реализации на многих языках.

...