MATLAB常用数据类型的转换
一直以来,在使用MATLAB进行运算的过程中,经常会用到对图像的各种处理,因此需要对图像进行数据转换,因此对经常用到的转换进行整理,方便查看。
1、uint8转化为double用来方便图像的运算:
double函数只是将读入图像的uint8数据转换为double类型,一般不使用。
常用的是im2double函数,将uint8图像转为double类型,范围为0-1,如果是255的图像,那么255转为1,0还是0,中间的做相应改变。
MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double
因此
I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出。
默认情况下,matlab将图象中的数据存储为double型,即64位浮点数;
matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运算时要转换成double型。
im2double():将图象数组转换成double精度类型
im2uint8():将图象数组转换成unit8类型
im2uint16():将图象数组转换成unit16类型
2、uint8和im2uint8的区别
在数据类型转换时候uint8和im2uint8的区别,uint8的操作仅仅是将一个double类型的小数点后面的部分去掉;
但是im2uint8是将输入中所有小于0的数设置为0,而将输入中所有大于1的数值设置为255,再将所有其他值乘以255。
图像数据在计算前需要转换为double,以保证精度;
很多矩阵数据也都是double的,要想显示其,必须先转换为图像的标准数据格式.
如果转换前的数据符合图像数据标准(比如如果是double则要位于0~1之间),那么可以直接使用im2uint8
如果转换前的数据分布不合规律,则使用uint8,将其自动切割至0~255(超过255的按255),因此最好使用mat2gray,将一个矩阵转化为灰度图像的数据格式(double)
3、double类型图像的显示
图像数据在进行计算前要转化为double类型的,这样可以保证图像数据运算的精度。
很多矩阵的很多矩阵数据也都是double的,要想显示它,必须先转换为图像的标准数据格式。
如果直接运行imshow(I),我们会发现显示的是一个白色的图像。
这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。
而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。
具体方法有:
imshow(I/256); ----------将图像矩阵转化到0-1之间
imshow(I,[]); -----------自动调整数据的范围以便于显示 (注意这里,必须是灰度图,负责不行)
imshow(uint8(I));
imshow(mat2gray(I));%
上面的mat2gray是将最终获得的矩阵转化为灰度图像。常用的为:
A = im2uint8(mat2gray(result))
这样就将result矩阵转化为uint8类型的图像。
MATLAB常用数据类型的转换的更多相关文章
- Java中几种常用数据类型之间转换的方法
Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...
- VC常用数据类型使用转换
我们先定义一些常见类型变量借以说明 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]=&qu ...
- VC常用数据类型使用转换详解
一.其它数据类型转换为字符串 短整型(int)itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); ///按二进制方式转换 长整型 ...
- C#常用数据类型间的转换
数据类型有很多种,数据类型间的转换也是有很多的方法,如果不细心整理的话等到用的时候再查就会显得很浪费时间,所以决心整理出这篇博文.主要是讲解常用数据类型之间的转换方法以及常见数据类型所占字节数. 字节 ...
- Java 常用知识点汇总(数据类型之间转换、字符串的相关操作-截取、转换大小写等)
1.Java四类八种数据类型 byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围- ...
- Java—常用数据类型
1 Vector类 Vector类似于一个数组,但与数组相比在使用上有以下两个优点. (1) 使用的时候无需声明上限,随着元素的增加,Vector的长度会自动增加. (2) Vector提供额外的方 ...
- python常用数据类型内置方法介绍
熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...
- ios中常用数据类型相互转换
ios中常用数据类型相互转换 //1. NSMutableArray和NSArray互转 // NSArray转为NSMutableArray NSMutableArray *arrM = [arr ...
- 语言基础:C#输入输出与数据类型及其转换
今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console ...
随机推荐
- Apache源码分析资源
关于作者张中庆, 目前主要的研究方向是嵌入式浏览器,移动中间件以及大规模服务器设计.目前正在进行Apache的源代码分析,计划出版<Apache源代码全景分析>上 下册.Apache系列文 ...
- HTML5入门1---Canvas画布
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- PCB工艺镀金(电金)和沉金(化金)的区别
1.镀金和沉金的别名分别是什么? 镀金:硬金,电金(镀金也就是电金) 沉金:软金,化金 (沉金也就是化金) 2.别名的由来: 镀金:通过电镀的方式,使金粒子附着到pcb板上,所以叫电金,因为附着 ...
- SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种) .
今天看到一位博友的文章,觉得不错,转载一下,希望对大家有帮助,更多文章,请访问:http://blog.haoitsoft.com 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺 ...
- Hibernate 主键策略
Hibernate主键生成策略 .自动增长identity 适用于MySQL.DB2.MS SQL Server,采用数据库生成的主键,用于为long.short.int类型生成唯一标识 使用SQL ...
- Android之NDK编程(JNI)
转自:http://www.cnblogs.com/xw022/archive/2011/08/18/2144621.html NDK编程入门--C回调JAVA方法 一.主要流程 1. 新建一个 ...
- (二)CSS基础语法
CSS语法规则由两个主要的部分构成:选择器,以及一条或者多条声明. 下面的示意图为您展示了CSS语法结构: 例如: h1{color:red;font-size:14px;} 值得不同写法和单位 其中 ...
- jdbc知识问答 分类: 面试 2015-07-10 22:05 5人阅读 评论(0) 收藏
1 JDBC连接数据库6步 Load the JDBC Driver Establish the Database Connection Create a Statement Object Execu ...
- Uboot 2014.07 makefile分析 - 其他Cortex系列
uboot的官网可以通过谷歌搜索得到,显示结果第一个链接就是. 官网:: http://www.denx.de/wiki/U-Boot ftp下载: ftp://ftp.denx.de/pub/u-b ...
- Android开发之定义接口暴露数据
写了一个网络请求的工具类,然后想要获取到网络请求的结果,在网络工具类中写了一个接口,暴露除了请求到的数据 代码: package com.lijingbo.knowweather.utils; imp ...