如何使用样条曲线生成色调曲线滤镜C#

时间:2013-09-05 14:35:01

标签: c++ qt colorfilter

我正在寻找类似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通道相互作用,那么很高兴知道或分享信息:)

无论如何,我实际上正在尝试的是这个,有这个更为迷人的曲线:

x    y
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++;
    }

,如How do I implement a Bézier curve in C++?

最后我将新的滤镜图像像素设为QT像素(如果是C ++则无关紧要),如下所示:

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

但我有时会得到一张带有蓝点的扭曲图像,曲线与Photoshop中的曲线甚至不相近......

0 个答案:

没有答案