Matlab中double,im2double,mat2gray区别
转载:http://blog.sina.com.cn/s/blog_6c41e2f30101559d.html
****************假设某图像数据A(uint8格式)**********************
A =
235 200 89 20
>> double(A) %返回与原矩阵数值相同但类型为double的矩阵;
ans =
235 200 89 20
>> im2double(A) %返回矩阵类型:double;数值范围[0 1] ,0对应uint8中的0;1对应uint8中的255;
ans =
0.9216 0.7843 0.3490 0.0784
>> mat2gray(A) %对原矩阵归一化
ans =
1.0000 0.8372 0.3209 0
****************假设矩阵A为一般二维数组,非图像数据(double格式)**********************
A =
235 200 89 20
>> double(A)
ans =
235 200 89 20
>> im2double(A)
ans =
235 200 89 20
>> mat2gray(A)
ans =
1.0000 0.8372 0.3209 0
小结:
im2double:
如果输入类型是uint8、unit16 、logical,则按照0-->>0,255-->>1,将其值按比例处理成0~1之间的double数值.
如果输入类型是double,输出没有处理.
double:
返回数值与输入相同的double类型矩阵;
mat2gray:
对输入进行归一化处理,最小值-->>0;最大值-->>1,输出类型为double。
1. 在Matlab对图像处理过程中,图像是unit类型,所以imshow等这些关于图像的函数,默认输入都是uint格式的,其他格式的数据显示会有默认改动,需要注意。另一方面,在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。因此通常使用im2double函数将图像数据转换成双精度型数据再进行计算。
2. 有时需要把图像以mat的方式进行存储(multispectral images), 那么mat只能存储double类型的数据,所以最好先用im2double将uint类型的图片转为[0 1]范围内的数据存储于mat中,将来使用的时候再用im2uint8 or im2uint16转换回图像。
3. uint16和uint8之间的转换,使用im2double 作为中间桥梁,或者:img8 = uint8(img16 / 256)。
Matlab中double,im2double,mat2gray区别的更多相关文章
- 在OpenCV中实现matlab中的im2double功能
最近在把matlab的代码转化到VS2010上. matlab中采用im2double将读入的图像转换为double型,在OpenCV中就需要对图像进行深度的转换. 读入一幅灰度图像,深度为1(8U) ...
- matlab中 mcc/mbuild/mex 区别
mcc 的作用是将 .m文件编译为 c/c++动态链接库文件,使你可以在 c/c++程序中使用 matlab的一些函数功能.mcc 也可以将.m文件编译为exe可执行文件. mex 的作用是将 c/c ...
- matlab中double和im2double
uint8的图像里 im2double其实就是double(I/255); 像素值被标准化到0-1. 16位图像以此类推.
- Matlab中一些函数的区别
1.fix, floor,ceil,round 都是对x取整,但取整方向不同. fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整(从名字看,地板,表示下面) c ...
- matlab中图片数据类型转换uint8与double
matlab中处理图像像素点数据: img1=double(imread('lenna.bmp')); matlab中imshow图片,要先转换成uint8: subplot(1,2,1),imsho ...
- matlab中的卷积——filter,conv之间的区别
%Matlab提供了计算线性卷积和两个多项式相乘的函数conv,语法格式w=conv(u,v),其中u和v分别是有限长度序列向量,w是u和v的卷积结果序列向量. %如果向量u和v的长度分别为N和M,则 ...
- matlab中findstr,strfind,strcmp,strncmp区别与联系
在Matlab中,这几个函数区分如下: (以下默认S1和S2是字符串,同样也适用于cell细胞类型数据,也就是循环对cell中每个元素分别判断即可.) findstr(S1,S2):寻找是否有S1和S ...
- MATLAB 中gcf、gca 以及gco 的区别
MATLAB 中gcf.gca 以及gco 的区别gcf 返回当前Figure 对象的句柄值gca 返回当前axes 对象的句柄值gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意 ...
- Matlab中的eig函数和Opecv中eigen()函数的区别
奇异值分解的理论参见下面的链接 http://www.cnblogs.com/pinard/p/6251584.html https://blog.csdn.net/shenziheng1/artic ...
随机推荐
- javax.crypto.BadPaddingException: Given final block not properly padded 解决方法
下面的 Des 加密解密代码,在加密时正常,但是在解密是抛出错误: javax.crypto.BadPaddingException: Given final block not properly p ...
- SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- sizeof
一.sizeof使用的场合: 1.sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信.例如: void* malloc(size_t size); size_t fread(v ...
- IIS+域组策略+hosts:禁止访问指定网站
一.简介 禁止访问网站可以通过多种方式实现,在网络设备上实现大概是性能最好的方式.本文在域服务器上实现该功能,优点是配置简单.可自定义跳转页面,缺点也很明显,遇到熟悉操作系统的用户,修改hosts文件 ...
- MMORPG大型游戏设计与开发(服务器 游戏场景 聊天管道和寻路器)
又快到双十一,又是不少同仁们出血的日子,首先希望大家玩的开心.我曾经想要仔细的剖析场景的的每个组件,就像这里的聊天管道与寻路器,但是仔细阅读别人代码的时候才发现元件虽小但是实现并不简单,因为有些东西还 ...
- 解决:PADS导入.DXF结构图出现坐标超出范围问题
现象: 原因: PCB尺寸是有限的,PADS中对于坐标大小有所限制,但AUTO CAD中的坐标却是无限制的. 解决方法: 1.在AUTO中使用M命令,将绘制的结构图移动至原点: 2.在AUTO中使用W ...
- UVA - 11134 Fabled Rooks[贪心 问题分解]
UVA - 11134 Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n × n board subject to t ...
- jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL
|- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...
- spring mvc+ spring +mybatis
首先,修改web.xml,添加配置文件路由以及格式过滤 <?xml version="1.0" encoding="UTF-8"?> <web ...
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 适合大型企业信息化应用使用的角色权限管理体系
每个人外表看看都没什么大区别.但是内在的知识.处理问题的能力.解决问题的能力.头脑灵活性都会有很大的差距.软件组件也是一样,有些组件编写厉害,想问题深入,能处理的难题也多,构思巧妙. 通用快速开发平台 ...