matlab的生成和保存图片的相位值为何不同,探索imwrite

1、

for j=1:4
    I0=A+B*cos(2*pi*f*X+phi+d*z/l+2*pi*(j-1)/4);
    I1=A+B*cos(2*pi*f*X+phi+2*pi*(j-1)/4);
    I2=A+B*cos(2*pi*f*X+phi-d*10/l+2*pi*(j-1)/4);
    filename0=['D:\新桌面\每隔一段时间整理一次\997wyh散斑\实验照片整理\zizhi\',['O',num2str(j)],'.bmp'];
    imwrite(I0,filename0,'bmp');
    filename1=['D:\新桌面\每隔一段时间整理一次\997wyh散斑\实验照片整理\zizhi\',num2str(j),'.bmp'];
    imwrite(I1,filename1,'bmp');
    filename2=['D:\新桌面\每隔一段时间整理一次\997wyh散斑\实验照片整理\zizhi\',num2str(j+4),'.bmp'];
    imwrite(I2,filename2,'bmp');
end
    bGrey = I0(b,:);%b行的灰度值
    figure;
    plot(bGrey);title('x轴方向的相位分布');

希望通过上述代码保存图片,x轴方向的相位分布显示如下图在0-2之间

然后准备在另一程序中读取,却变成了0-255,且缺少上部分

参考文章https://blog.csdn.net/zhb123GGGGGG/article/details/45409337?utm_source=blogxgwz8可知
imwrite() 中, 如果参数为uint8类型, 那么期待的参数像素值范围为0-255, 如果参数矩阵为double类型, 那么期待的像素值范围为0-255.

在imwrite中, 如果你将读取的图像转换为double类型, 直接用imwrite保存图像, 会出现全是白色的图像的情况 , 因为在转化图像类型的时候, 图像的像素值虽然变为double数据类型, 但是取值范围仍然是0-255, imwrite处理double类型的时候期待的数据范围是0-1, 会把大于1的值当作1处理, 这样几乎所有的像素都变成了白色。

遂将上述程序中的A、B改成0.5,但它们的相位值还是不一样
在这里插入图片描述

2、对图像进行滤波后imwrite
直接对phi,imwrite的话,是一幅几乎全是白色的图
先mat2gray(phi),再imwrite的话,是一幅和imshow一样的图
mat2gray是一个计算机函数,功能是实现图像矩阵的归一化操作。 所谓”归一化”就是使矩阵的每个元素的值都在0和1之间。该函数在数字图像处理中经常用到。

phi1 = mat2gray(phi);
imshow(phi,[]);
title('未解包phi的相位图');
filename2=[PathName,'new\未解包phi的相位图.bmp'];
imwrite(phi1,filename2,'bmp');

matlab中imshow(a,[])用法及其内部计算公式
参考链接:https://blog.csdn.net/lihe4151021/article/details/100690699
在这里插入图片描述

疑惑:matlab的mat2gray在c++中如何实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值