影像出现条带斜纹式的乱码——reshape操作中按行与按列取数据的差异

影像出现条带斜纹式的乱码

如图
在这里插入图片描述

目前在两种情景中,出现了上图及类似上图的结果:

Case1:ENVI打开遥感影像,并手动添加头文件,编辑图片行列号(samples and lines),当输入的行列号与图像实际的不符时,会出现类似上图的情况。

Case2:做反演的时候,矩阵变向量输入模型,输出向量再变回矩阵时,reshape使用错误时,出现上图结果。
如,对于输入的矩阵,用以下代码生成输入到模型里面的列向量:

for i=1:m
    for j=1:n
        templat=lat2-0.03*(i-1);   %中心像素的纬度
        templon=lon1+0.03*(j-1);   %中心像素的经度
        
        %生成经纬度的列向量
        lat(count,1)=templat;
        lon(count,1)=templon;
        
        %生成变量LC的列向量
        mm=ceil((53.505-templat)/0.03);
        nn=ceil((templon-73.645)/0.03);
        LC(count)=LCdata(mm,nn);
        
     end
end

此代码是按行取数据,将矩阵变成列向量;
列向量输入模型,输出仍是列向量,需要reshape成矩阵。Matlab里面的reshape默认是按列取数据的,如果需要按照行取数据,需要进行转置处理。例如,把列向量A改变成m*n的矩阵:
1)如果按照取,应该写成:reshape(A,m,n)
2)如果按照取,应该写成:reshape(A‘,n,m)‘

我们看一下Matlab下两句代码结果的差异:

% 按行与按列取数据的不同结果

% 原始的列向量
A=[1,2,3,4,5,6]'

%按列取数据
B=reshape(A,2,3)

%按行取数据
C=reshape(A',3,2)'

输出结果为:

在这里插入图片描述
如果在矩阵变列向量时使用的按行取数据,那么列向量变回矩阵的时候,应该保持同样的按行取数据,否则就会出现如上图的结果(适用于所有的reshape操作)。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值