【OpenCV】OpenCV函数精讲之 -- 颜色空间缩减及LUT函数

1、颜色空间缩减

颜色空间缩减的做法是:将现有颜色空间值除以某个输入值,以获得较少的颜色数。即做减法,比如颜色值0到9可取为新值0,10到19可取为10,以此类推。

有一个简单的公式来实现颜色空间缩减:

在处理像素时,每个像素需要进行一遍上述公式计算,也需要一定的时间花销。我们可以把256中计算好的结果提前存在列表table中,这样每种情况不需计算,直接从table中取取结果即可。

int divideWith = 10;
unchar table[256];
for( int i =0; i<256; ++i)
    table[i] = divideWith*(i/divideWith);

于是table[i]存放的是值为 i 的像素减小颜色空间的结果,这样就可以理解上述方法中的操作:p [j] = table[ p [j] ]

简单的颜色空间缩减算法就由以下两步组成:

  1. 遍历图像矩阵的每一个像素
  2. 对像素应用上述公式

2、LUT函数:Look up table操作

Look up table操作使用operationsOnArrays:LUT()<lut>函数,用于批量进行图像元素查找、扫描与操作图像。使用方法如下:

//首先建立一个mat型用于查表
Mat lookUpTable(1, 256, CV_8U);
uchar* p = lookUpTable.data;
for(int i = 0; i < 256; ++i)
    p[i] = table[i];

//调用函数(I是输入,J是输出)
for (int i = 0; i < times; ++i)
    LUT(I, lookUpTable, J);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值