我正在调试机器人的项目并发现了一个错误,我不太确定如何在理论上修复它。
我必须计算一个颜色距离图,然后我必须拍摄结果的积分图像并用它做一些计算。
使用来自Lab色彩空间图像的A和B通道,使用公式sqrt([A-pA] ^ 2 + [B-pB] ^获得颜色距离,例如红色(pA = 255,pB = 127) 2)
subtract(mA, Scalar(pA), tA);
subtract(mB, Scalar(pB), tB);
tA.convertTo(t32A, CV_32SC1);
tB.convertTo(t32B, CV_32SC1);
pow(t32A, 2.0, powA);
pow(t32B, 2.0, powB);
add(powA, powB, sq);
pow(sq, 0.5, res);
//res.convertTo(result, CV_8UC1);
由于CV_8U处理值高于255的限制,我需要转换为CV_32S。
现在我必须将结果输入到积分图像中,这只需要CV_8UC1的图像。
我面临的问题是上述色彩距离函数可能会产生值大于255的像素。
例如: (0,0)到红色(255,127)之间的距离
sqrt((0-255)^ 2 +(0-127)^ 2)= 285
或介于(0,255)到红色(255,127)
之间sqrt((0-255)^ 2 +(255-127)^ 2)= 285
是否有人建议如何将结果输入到整体图像中,而不会丢失任何信息。
谢谢
答案 0 :(得分:1)
如何使用sqrt(2)作为归一化因子?