я ищу что-то вроде 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 …
Задача ещё не решена.
Других решений пока нет …