mdsk.net
当前位置:首页 >> mAtlAB 中如何将unit8转成DouBlE型 >>

mAtlAB 中如何将unit8转成DouBlE型

内存不足,说明你的数据量太大了,一个double是8字节,值uint8的8倍。 试试single看看,single是double的一半内存。 要是还内存不够,除非你改算法;或者用64bit的matlab试试。

使用double命令 比如: a=int8(124);a2=double(a);whos该段代码先创建了一个uint8的变量a 再用double命令将a变为double变量并赋值给了a2 通过whos显示类型: Name Size Bytes Class Attributes a 1x1 1 int8 a2 1x1 8 double

直接 int8(A) 强制转换,注意数据范围就行了。因为是直接截尾的。

最简单的方法是把I改为double型后做+128计算再转为uint8。 即 I=double(I)+128; I=uint8(I); 当然你也可逐点遍历I,以求得新的一个unit8矩阵J,通过判断正负给该点J(i,j)赋值: 若I(i,j)>=0时:J(i,j)=128+uint8(I(i,j)); 若I(i,j)

使用double命令 比如: a=int8(124);a2=double(a);whos该段代码先创建了一个uint8的变量a 再用double命令将a变为double变量并赋值给了a2 通过whos显示类型: Name Size Bytes Class Attributes a 1x1 1 int8 a2 1x1 8 double

为了节省存储空间,matlab为图像提供了特殊的数据类型uint8(8位无符号整数),以此方式存储的图像称作8位图像。 imread把灰度图像存入一个8位矩阵,当为RGB图像时,就存入8位RGB矩阵中。 因此,matlab读入图像的数据是uint8,而matlab中数值一般...

代表无符号的8位整数,最大值为255。 MATLAB支持的数据类型有: double -- Double precision floating point numeric array logical -- Logical array char -- Character array single -- Single precision floating-point numeric array float ...

就是改变数据类型。那句话把double型的矩阵转换成了uint8型。

不了解matlab的图像存储,不过我估计double类型不会只是照搬unit8类型的数值大小,而是把它归一化到(0,1)之间了。如果图像中有个异常高值的点,然后其他点都处于比较小的灰度值,也许如此。 感觉这个只和颜色、灰度有关,不知道为什么会导致尺寸...

网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com