快速查表法 FLUT

对快速查表算法的理解 :来源《机器视觉自动检测技术》

表FLUT是一个3X256字节的二位矩阵,FLIT[0][256],FLIT[1][256],FLIT[2][256]分别表示R,G,B的索引序号。每个位表示一种颜色,最多可以表示八种颜色,如需表示更多颜色则可以定义更多位。如:FLUT[0][120]=10001011,表示对于R的值为120时,可能的颜色为第7、3、1、0种。

FLUT表的建立。

首先应该建立每种颜色的的RGB范围,以红色为例,假设其RGB范围为Rmax,Rmin,Gmax,Gmin,Bmax,Bmin。且假设字节的第一位表示红色。则对于红色,FLUT的迭代过程为:

for(int i=0;i<256;i++)
{
    if((i<RED.Rmax)&&(i>RED.Rmin))
        FLUT[0][i]=FLUT[0][i]|0x1;  //表示把第一位置1
    if((i<RED.Gmax)&&(i>RED.Gmin))
        FLUT[1][i]=FLUT[1][i]|0x1;
    if((i<RED.Bmax)&&(i>RED.Bmin))
        FLUT[2][i]=FLUT[2][i]|0x1;
}

对其它颜色也进行同样的迭代,则完成FLUT表的建立。

FLUT表检验:

for(int i=0;i<256;i++)
{
    for(int j=0;j<256;j++)
    {
        for(int k=0;k<256;k++)
        {
             d=FLUT[0][i]&FLUT[1][j]&FLUT[2][k];
             if(!(d==0x1||d==0x2||d==0x4||d==0x8||d==0x10||d==0x20||d==0x40||d==0x80))
                 //则该RGB同时可以表示两种颜色,区域重叠,错误。
        }
    }
}
颜色查找方法:输入RGB值(R,G,B):则颜色为 FLUT[0][R]&FLUT[1][G]&FLUT[2][B],其结果第几位为1,则是第几种颜色。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值