Расчет внутренних значений цвета между известными цветовыми точками (билинейная интерполяция?) - PullRequest
1 голос
/ 24 марта 2012

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

То, что у меня есть, это четыре отрезка линии, очерчивающих четырехугольник. Каждая вершина на каждом отрезке имеет известное значение цвета. Для простоты предположим, что каждый отрезок имеет 100 вершин (или 100 известных цветовых точек). Пример может выглядеть примерно так:

image

Что мне нужно сделать, так это визуализировать сплошной квад с каждым цветным внутренним пикселем, основываясь на цветах точек на контуре. Наиболее очевидный способ сделать это (без указания вершины для каждой цветовой точки 100 * 100) - это сначала сгенерировать растровое изображение 100x100 с каждым интерполированным значением цвета, а затем применить его в качестве текстуры для квадрата. Мне просто трудно понять, как рассчитать эти внутренние значения цвета.

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

В качестве примера, как я могу подойти к вычислению значения цвета точки в (50,50) - в середине четырехугольника - с известными цветными точками в (0,50), (50,0), ( 50,100) и (100,50)? Это даже билинейная интерполяция или это что-то совсем другое?

Заранее спасибо!

1 Ответ

1 голос
/ 24 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...