OpenCV中Look up table操作(LUT函数)详解--在颜色空间缩减中的应用
        【摘要】  颜色空间缩减 
我们可以把当前的像素值用一个值来划分,比如0-9的像素都归为0,10-19的像素都归为10,依此类推。  
256个数值最后可以表示为26个数字。三通道一下子降低为26*26*26 
上述即:当你把unsigned char除以一个int值,得到的值仍然是char,同时小数部分被丢弃,用数学表达式表示:  
                          ...
    
    
    
    颜色空间缩减
我们可以把当前的像素值用一个值来划分,比如0-9的像素都归为0,10-19的像素都归为10,依此类推。
256个数值最后可以表示为26个数字。三通道一下子降低为26*26*26
上述即:当你把unsigned char除以一个int值,得到的值仍然是char,同时小数部分被丢弃,用数学表达式表示:
                                                                     
最简单的办法就是对矩阵像素进行遍历,遍历时每一个都进行一次除法和乘法操作。(这样做法直接暴力,但是浪费效率)
计算机中效率最高的是加法、减法和赋值
将所有结果存在表中,每次就不用计算,直接查表赋值即可。
  
   - 
    
     
    
    
     
      divideWith=10;
     
    
- 
    
     
    
    
     
      uchar table[256];//存储像素空间减少的色彩域
     
    
- 
    
     
    
    
     
      for (int i = 0; i < 256; ++i)
     
    
- 
    
     
    
    
     
         table[i] = (uchar)(divideWith * (i/divideWith));
     
    
 Look up table
  
   - 
    
     
    
    
      Mat lookUpTable(1, 256, CV_8U);//创建
     
    
- 
    
     
    
    
     
       uchar* p = lookUpTable.data;
     
    
- 
    
     
    
    
      for( int i = 0; i < 256; ++i)
     
    
- 
    
     
    
    
     
       p[i] = table[i];
     
    
 其实书上讲的很含糊,让人摸不清头脑。
两个比较好的讲解:
https://blog.csdn.net/anjisi/article/details/53899222
https://blog.csdn.net/jameshater/article/details/50759650
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/84100286
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)