matlab数据类型转换——int8转换成unit8
怎么样吧matlab里面的int8数据类型转换成unit8型!用C++builder读取图像之后传送到matlab进行处理的数据是int8型,范围是-128~127,但是...
怎么样吧matlab里面的int8数据类型转换成unit8型!
用C++builder读取图像之后传送到matlab进行处理的数据是int8型,范围是-128~127,但是matlab的程序是对unit8的数据进行处理(范围是0~255),试了很多方法都没有用。PS:不是简单的把int8数据都加一个128哦,这样会溢出。
加128绝对会溢出,例如int8型的55,加完128之后就变成了127了,也就是int8的最大值
我希望大家能把具体的语句实现写出来,例如I=[-55 -66 77 88]是int8型的,把I变成unit8型的数据类型结果是I=[73 62 205 216]。 展开
用C++builder读取图像之后传送到matlab进行处理的数据是int8型,范围是-128~127,但是matlab的程序是对unit8的数据进行处理(范围是0~255),试了很多方法都没有用。PS:不是简单的把int8数据都加一个128哦,这样会溢出。
加128绝对会溢出,例如int8型的55,加完128之后就变成了127了,也就是int8的最大值
我希望大家能把具体的语句实现写出来,例如I=[-55 -66 77 88]是int8型的,把I变成unit8型的数据类型结果是I=[73 62 205 216]。 展开
5个回答
展开全部
最简单的方法是把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)<0时,
J(i,j)=128-uint8(abs(I(i,j)));
但需要说明的是matlab中循环的效率不及矩阵直接运算的高。
即
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)<0时,
J(i,j)=128-uint8(abs(I(i,j)));
但需要说明的是matlab中循环的效率不及矩阵直接运算的高。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
+128,再将中间结果存为uint8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-12-25
展开全部
加128怎么会溢出?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
功能性用法,编程,模型建立。
方方面面,需要你多使用,最好有本书刊来看
方方面面,需要你多使用,最好有本书刊来看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询