我想尝试使用查找表(cvLUT)检查它是否比我现在正在做的当前方式快。问题是如果我有不同的值集,我真的不明白查找表是如何工作的。
if(mean < 50)
//do gamma correction
else if(mean > 50 && mean < 100)
// do gamma correction
else
//do do gamma correction
我看到我们需要先计算查找表,但是使用本地窗口在本地计算平均值。我怎样才能做到这一点?我尝试将平均值存储在向量中然后使用它,但是当它存储在向量中时它非常慢。
答案 0 :(得分:0)
我不认为查找表适合您正在做的事情,因为转换依赖于本地窗口中的信息。如果您希望对所有像素进行转换,仅依赖于像素值并且不依赖于其他像素的值,则查找表很有用。
答案 1 :(得分:0)
如果你正在寻找性能,那么就很难击败内联汇编。
int mean;
asm {
cmp mean, 99
jg _else
cmp mean, 50
jl _if
_else_if:
}
// gamma correction
asm { _else: }
// gamma correction
asm { _if: }
// gamma correction