Как сделать фильтр цветовой кривой C # со сплайнами

я ищу что-то вроде 5/6-го изображения, я могу работать на QT или C ++, у меня уже есть каналы, но кроме этого я не могу найти, как сделать что-то еще …

http://www.mediachance.com/pseam/help/curves.html

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

http://www.filterforge.com/more/help/Miscellaneous/ToneCurveExplained.html
https://photo.stackexchange.com/questions/6549/how-exactly-do-rgb-curves-work-and-interact-w-each-other-in-photoshop

Так что, если кто-то хотя бы знает, как кривые взаимодействуют с каналами rgb, было бы неплохо узнать или поделиться информацией 🙂

Во всяком случае, что я на самом деле пытаюсь это с этой кривой Безье:

х у
0 0
127 178
255 255
float* arrayBezierY = new float[255];
qDebug() << "Initializng Bezier Array";
int counter = 0;
for (float i = 0; i < 1; i += 1.0 / 255.0) {
int xa = getPt(0, 127, i);
int ya = getPt(0, 178, i);
int xb = getPt(127, 255, i);
int yb = getPt(178, 255, i);
int x = getPt(xa, xb, i);
int y = getPt(ya, yb, i);
arrayBezierY[counter] = y;
counter++;
}

как в Как мне реализовать кривую Безье в C ++?

наконец, я делаю пиксель нового отфильтрованного изображения пикселем с QT (неважно, с C ++) так:

newImage->setPixel(x, y, qRgb(arrayBezierY[qRed(line[x])], arrayBezierY[qGreen(line[x])], arrayBezierY[qBlue(line[x])]));

Но иногда я получаю искаженное изображение с синими точками, а кривая даже близко не такая, как в Photoshop …

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …