Линейный градиент с функциями IPP - PullRequest
0 голосов
/ 02 сентября 2010

Я хотел бы создать линейный градиент с помощью функций IPP (Integrated Performance Primitives) и избежать попиксельного манипулирования цветом.

Другими словами, я не могу найти подходящую функцию или комбинацию функций, которые позволили бы мне создать изображение RGB с градиентом от R0 до R1, от G0 до G1, от B0 до B1 (начальные и конечные значения RGB). Я могу создать его вручную, переключая каждый пиксель и устанавливая цвет, но я надеюсь, что есть более элегантный (и быстрый) способ сделать это.

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Насколько я понимаю, ippiImageRamp может создавать только линейные изменения оттенков серого, верно?

В качестве альтернативы, вы можете использовать ippiResizeSqrPixel, чтобы изменить размер изображения 2x2 до полного размера с интерполяцией IPPI_INTER_LINEAR:

RGB0   |   RGB1
---------------                 =>         [Full Sized Image]
RGB0   |   RGB1

Результатом должен быть линейный градиент (хотя я никогда не пробовал).Если вам нужен повернутый градиент, вы можете использовать ippiWarpAffine для масштабирования и вращения одновременно.

0 голосов
/ 04 сентября 2010

Я нашел какое-то решение. С помощью функции ippiImageRamp.

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

Значения пикселей изображения-получателя рассчитываются по одной из следующих формул:

dst (x, y) = смещение + наклон * x, если ось = ippAxsHorizontally,

dst (x, y) = смещение + наклон * y, если ось = ippAxsVertical,

dst (x, y) = смещение + наклон * x * y, если ось = ippAxsBoth

...