一、rgb-hvc(munsell)坐标转换
x = 0.620*rgb.r + 0.178*rgb.g + 0.204*rgb.b;
y = 0.299*rgb.r + 0.578*rgb.g + 0.144*rgb.b;
z = 0.056*rgb.g + 0.942*rgb.b;
以上是转换成xyz颜色空间
p = 11.6*(pow(x, 0.3333) - pow(y, 0.3333));//对于f(y)和f(z)论文中未给出,假设关系式与f(x)相似
q = 0.4*(pow(z, 0.3333) - pow(y, 0.3333));
以上是转换成pq颜色空间
s = (8.88 + 0.966*cos(atan(p / q)))*p;//注意p/ q为整数,注意精度,double(p/q )
t = (8.025 + 2.558*sin(atan(p / q)))*q;
以上是转换成st颜色空间
hvc.h = atan(double(s / t));//同样double(s/t)
hvc.v = 11.6*(pow(y, 0.3333)) - 1.6;
hvc.c = sqrt(s*s + t*t);
以上是转换成munsell
二、hvc-rgb颜色空间转换
rgb三个 for循环,不用求hvc的反函数。
三、遇到问题:
1.读取位置发生错误
原因:在for循环的第一个分号前面没有设置初始值,无法进入第二次循环。
2.函数的除了return外无法记录在函数中运算的数值,全部被释放。
3.函数可以返回一个结构。
阅读(402) | 评论(0) | 转发(0) |