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)