OpenCV笔记——图像不同位深度间的转换
来源:互联网 发布:2016数据有效性的设置 编辑:程序博客网 时间:2024/05/24 22:43
参考网址:
http://baike.baidu.com/view/3440672.htm
http://blog.csdn.net/yihandk666/article/details/7612756
最近编程有用到OpenCV,其中涉及到图像不同位深度间的转换。在网上搜索一番后,总结的东西整理成如下笔记。
图像的位深度及其取值范围
depth 图像元素的位深度,可以是下面的其中之一:
位深度 取值范围
IPL_DEPTH_8U - 无符号8位整型 0--255
IPL_DEPTH_8S - 有符号8位整型 -128--127
IPL_DEPTH_16U - 无符号16位整型 0--65535
IPL_DEPTH_16S - 有符号16位整型 -32768--32767
IPL_DEPTH_32S - 有符号32位整型 0--65535
IPL_DEPTH_32F - 单精度浮点数 0.0--1.0
IPL_DEPTH_64F - 双精度浮点数 0.0--1.0
如上,给出图像的位深度及其取值范围后,我们不难理解,要转换位深度本质上就是对原深度下的数据做线性变换,使原位深度下的最小值和最大值分别对应转换后位深度下的最小值和最大值。实现上述线性变换,我们可以用opencv库函数cvConvertScale。
cvConvertScale函数简介
查询百度百科后,可以的得到关于cvConvertScale函数的说明如下。
cvConvertScale( const CvArr* src, CvArr* dst,double scale CV_DEFAULT(1),double shift CV_DEFAULT(0) );
功能:使用线性变换转换数组
参数说明: src 输入数组,dst 输出数组,scale 比例因子,shift 偏移量。
对应的线性变换公式: dst(I)=src(I)*scale + (shift,shift,...)。
实例
比如将IPL_DEPTH_8U 转换成 IPL_DEPTH_32U,我们需要用线性变换将[0 255] 映射为 [0 1]。不难求出线性变换的参数scale=1/255, shift=0。即通过如下代码可实现位深度间转换(注,函数最后一个参数为0,等于默认参数,可以不用写)。
cvConvertScale(pImg8, pImg32, 1.0/255, 0);类似的如果IPL_DEPTH_32U转换成IPL_DEPTH_8U,我们需要用线性变换将[0 255] 映射为 [0 1]。对应的参数为scale=255, shift=0。即可通过如下代码行实现两位深度间的转换。
cvConverScale(pImg32, pImg8, 255, 0);
其余类型做法相似,不一一举例。
总结
要实现不同位深度间数据的转换,首先我们需要知道不同位深度对应数据的取值范围,然后计算出关于两取值范围上下限的线性变换,最后将图像数据和线性变换参数代入函数cvConvertScale()。
- OpenCV笔记——图像不同位深度间的转换
- OpenCV显示图像时,不同位深度的影响
- OpenCV对不同图像深度的处理
- OpenCV对不同图像深度的处理
- OpenCV不同图像深度类型的理解
- OpenCV中图像不同定义类型间的转换
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- opecncv不同深度图像的转换(IPL_DEPTH_8U转IPL_DEPTH_32F)
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- 不同深度图像的处理
- 图像编程学习笔记4——24位真彩色转换为灰度图像
- 图像旋转90度(CImage类实现)(不同的位深度)
- opencv笔记:图像与数据的相互转换
- OpenCV 2 学习笔记(6): 使用指针来扫描图像:减少图像的位深
- opencv 图像类的转换
- 两个openCV补充函数。用于不同位数图像之间转换的。。
- OpenCV学习笔记——Mat,图像的新容器
- Linear Decoders with Autoencoders编程代码整理
- Struts2源码阅读(二)_Dispatcher&ConfigurationProvider
- sort函数
- Vm10+ubuntu server 12.04.04安装vmtools
- java中ExceptionInInializerError
- OpenCV笔记——图像不同位深度间的转换
- poj 3440 Coin Toss(概率)
- 使用 fslex.exe 和 fsyacc.exe
- gora-hbase
- iOS --检测更新版本
- C++设计模式实现--观察者
- ASP.NET中如何实现FORM认证登录
- install ruby to mac
- Ubuntu文件命令