OpenCV中Look up table操作(LUT函数)详解--在颜色空间缩减中的应用

举报
王博Kings 发表于 2020/12/29 22:51:21 2020/12/29
【摘要】 颜色空间缩减 我们可以把当前的像素值用一个值来划分,比如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,同时小数部分被丢弃,用数学表达式表示: 

                                                                     

 最简单的办法就是对矩阵像素进行遍历,遍历时每一个都进行一次除法和乘法操作。(这样做法直接暴力,但是浪费效率)

计算机中效率最高的是加法、减法和赋值

将所有结果存在表中,每次就不用计算,直接查表赋值即可。


  
  1. divideWith=10;
  2. uchar table[256];//存储像素空间减少的色彩域
  3. for (int i = 0; i < 256; ++i)
  4. table[i] = (uchar)(divideWith * (i/divideWith));

Look up table


  
  1. Mat lookUpTable(1, 256, CV_8U);//创建
  2. uchar* p = lookUpTable.data;
  3. for( int i = 0; i < 256; ++i)
  4. 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。