Как выполнить линейную интерполяцию между изображениями - PullRequest
1 голос
/ 13 августа 2010

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

Ответы [ 3 ]

2 голосов
/ 13 августа 2010

'lerp'ing' - просто способ угадать посредническую ценность. Например, если одно значение было 10, а следующее было 8, функция 'lerp' могла бы вернуть 9. Есть несколько способов сделать оценку - линейную, тригономическую и т. Д. В самом простом, линейном виде вы просто берете 1001 *, где расстояние колеблется от 0 до 1.

При обработке изображений это делается с помощью значений цвета между пикселями. Например, если масштабирование превышает 100%, вы должны использовать функцию lerp, чтобы определить, что следует рисовать в областях, представляющих частичные пиксели.

Я должен добавить, я посмотрел на эту статью, и она ссылается на шум Перлина. В этом типе алгоритма функции lerp'ing используются довольно широко для вычисления значений между точками, в которых существуют данные, которые могут быть переданы в алгоритм perlin или fractal для генерации значения для этой промежуточной точки.

1 голос
/ 13 августа 2010

Что такое lerp и

lerp (factor, a, b) = factor * a + (1.0 - factor) * b

, где factor этов диапазоне [0, 1,0]

См. википедия

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

Вам нужны два исходных изображения (src1, src2) и конечное изображение (dst) одинакового размера.Плюс коэффициент интерполяции.

Затем для каждого пикселя (цвет RGB):

dst[x][y].r = lerp(factor, src1[x][y].r, src2[x][y].r)
dst[x][y].g = lerp(factor, src1[x][y].g, src2[x][y].g)
dst[x][y].b = lerp(factor, src1[x][y].b, src2[x][y].b)
0 голосов
/ 13 августа 2010

Как бы вы это синтезировали?Используя функцию.Функция выдаст вам вывод для заданных входов в любом пикселе.Интерполяция двух изображений не имеет никакого смысла, тем не менее, вы, вероятно, заинтересованы в использовании интерполяции для изменения размера.У этого также есть некоторые интересные свойства.Интерполятор sinc эквивалентен пропуску изображения через фильтр нижних частот кирпичной стены в пространстве частот.

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

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