我正在寻找像 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++;
}
最后,我使用 QT 使新的过滤图像像素成为像素(如果使用 C++ 则无关紧要),如下所示:
newImage->setPixel(x, y, qRgb(arrayBezierY[qRed(line[x])], arrayBezierY[qGreen(line[x])], arrayBezierY[qBlue(line[x])]));
但我有时会得到一个带有蓝点的扭曲图像,而且曲线甚至不接近 Photoshop 中的曲线......