2

我正在寻找像 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 -photoshop 中的彼此

因此,如果有人至少知道曲线如何与 rgb 通道交互,那么很高兴知道或分享信息:)

无论如何,我实际上正在尝试的是这个贝塞尔曲线:

xy
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 中的曲线......

4

0 回答 0