没有合适的资源?快使用搜索试试~ 我知道了~
Opencv像素处理与访问 对于图像处理来说,如果我们了解处理图像的具体算法,那么我们就可以通过直接操作图片的像素点来实现这些算法。所以本文就总结一下Opencv像素处理和访问的一些知识。 文章目录Opencv像素处理与访问1. 色彩空间缩减1.1色彩空间缩减的必要性1.2 查找表方法缩减色彩空间1.3 LUT函数2. 判断程序的运行效率3. 访问图像中像素的方法3.1 指针3.2 迭代器3.3 动态地址参考文献 1. 色彩空间缩减 1.1色彩空间缩减的必要性 图像的本质是矩阵,是由一个个的像素点组成的。储存图片数据往往会占用巨大的空间。假如的单通道的黑白图片,每个像素点用0-255这256
资源详情
资源评论
资源推荐
【【Opencv】】Opencv像素处理与访问像素处理与访问
Opencv像素处理与访问像素处理与访问
对于图像处理来说,如果我们了解处理图像的具体算法,那么我们就可以通过直接操作图片的像素点来实现这些算法。所以本文就总结一下Opencv像素处理和访问的一些知识。
文章目录文章目录Opencv像素处理与访问1. 色彩空间缩减1.1色彩空间缩减的必要性1.2 查找表方法缩减色彩空间1.3 LUT函数2. 判断程序的运行效率3. 访问图像中像素的方法3.1 指针3.2 迭代
器3.3 动态地址参考文献
1. 色彩空间缩减色彩空间缩减
1.1色彩空间缩减的必要性色彩空间缩减的必要性
图像的本质是矩阵,是由一个个的像素点组成的。储存图片数据往往会占用巨大的空间。假如的单通道的黑白图片,每个像素点用0-255这256个数字来表示颜色。而如果是三通道的
彩色图片,则每个像素点就有256x256x256种可能的颜色,这无疑对于数据储存来说是笔巨大的开销。
如果对色彩空间进行缩减,可以有效的减少数据储存压力。我们可以通过对颜色进行近似表示的方法,缩减色彩空间。比如对于一个通道256种颜色:0-10表示为0,11-20表示为1…
以此类推,那么我们就仅需要26个数字来表示一个通道的颜色,对于三通道彩色图来说,这个储存空间压缩比例就更加客观了,256x256x256减少到了26x26x26。
如何实现这种颜色近似表示呢?在c++中,int类型除法具有截断小数点位数的功能,就可以通过这种方法,处理色彩空间,公式如下
Inew=Iold10∗10
Inew=rac{Iold}{10}*10
Inew=10Iold∗10
举例:
Iold = 23,则Inew=23/10*10=2*10=20
1.2 查找表方法缩减色彩空间查找表方法缩减色彩空间
但是如果所有的像素点都要做一次近似计算,也是一种巨大的运算量。所以,我们可以利用查表的思想简化这一过程。我们可以创建一张记录了0-256分别对应变换以后哪个数字的
表,这样就不需要每次都计算了,而是查找变换表即可。
//查找表的创建
uchar table[256];
int divideWidth = 100;
for (int i = 0; i < 256; i++)
{
table[i] = i / divideWidth*divideWidth;
}
然后假设图片中每一个像素点为p[i],则通过下列变换即可实现色彩空间缩减
p[i]=table[p[i]];
1.3 LUT函数函数
Opencv中内置了一个查找表函数LUT,用来做色彩空间压缩。其函数定义为:
void LUT(InputArray src, InputArray lut, OutputArray dst);
第一个参数:输入图像
第二个参数:查找表
第三个参数:输出图片
这三个参数的类型均为Mat类型
使用例子
#include
#include
using namespace cv;
using namespace std;
int main()
{
//创建数值表
uchar table[256];
int dividedValue = 100;
for (int i = 0; i < 256; i++)
{
table[i] = i / dividedValue * dividedValue;
}
//定义图片
Mat srcImg, lut, dstImg;
srcImg = imread("1.png");
//创建查找表
lut.create(1, 256, CV_8UC1); //查找表一个通道就可以,处理三通道图片的时候,会把三个通道都安装lut的规则进行变换
uchar* p = lut.data;
for (int i = 0; i < 256; i++)
{
p[i] = table[i];
}
//查找表函数
imshow("a", srcImg);
LUT(srcImg, lut, dstImg);
imshow("b", dstImg);
waitKey(0);
}
weixin_38638292
- 粉丝: 5
- 资源: 920
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0