影像出现条带斜纹式的乱码
如图
目前在两种情景中,出现了上图及类似上图的结果:
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操作)。