如何为不同的值范围创建查找表

时间:2012-11-01 03:37:11

标签: c opencv

我想尝试使用查找表(cvLUT)检查它是否比我现在正在做的当前方式快。问题是如果我有不同的值集,我真的不明白查找表是如何工作的。

if(mean < 50)
 //do gamma correction
else if(mean > 50 && mean < 100)
 // do gamma correction
else 
 //do do gamma correction

我看到我们需要先计算查找表,但是使用本地窗口在本地计算平均值。我怎样才能做到这一点?我尝试将平均值存储在向量中然后使用它,但是当它存储在向量中时它非常慢。

2 个答案:

答案 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