matlab对二进制(uint16)图像的读取和显示

项目场景:

读取一幅二进制(uint16)raw原始图像并对其进行显示,以便后续的图像处理工作


matlab代码:

fid = fopen("F:\jihe0001.raw",'r'); %默认是小端存储
data = fread(fid,[2048 12294],'uint16');%大小是2048*12294,取第一个通道
data1 = mat2gray(data); %mat2gray将double数据归一化到[0 1]
data2 = data1*255; %反归一化,映射到[0 255]
% data2 = im2uint8(data1);round(data1*255)等价
figure,imshow(data2);%显示

% 也可以使用以下的方式读取,原始图像为8个通道
inputimg = multibandread('F:jihe0001.raw',[12294,2048,8],'uint16',0,'bsq','ieee-le' );

遇到的问题:

  • im2uint8(data1)round(data1*255)等价的前提是data1为[0 1]的double类型矩阵。
  • uint8(I)会将大于255的元素全部赋值为255,如果直接用uint8()将16位转化为8位会产生信息丢失。

关于mat2gray、im2uint8、uint8、double、mat2double函数的详细描述可以参考https://blog.csdn.net/FX677588/article/details/53301740

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值