我是靠谱客的博主 淡定斑马,最近开发中收集的这篇文章主要介绍影像出现条带斜纹式的乱码——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操作)。
最后
以上就是淡定斑马为你收集整理的影像出现条带斜纹式的乱码——reshape操作中按行与按列取数据的差异影像出现条带斜纹式的乱码的全部内容,希望文章能够帮你解决影像出现条带斜纹式的乱码——reshape操作中按行与按列取数据的差异影像出现条带斜纹式的乱码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复