最全可白嫖之高光谱图像数据处理(格式转换,数据增强,通道剪切,大小裁剪,光谱显示,折线图表示)

您所在的位置:网站首页 图像增强处理软件 最全可白嫖之高光谱图像数据处理(格式转换,数据增强,通道剪切,大小裁剪,光谱显示,折线图表示)

最全可白嫖之高光谱图像数据处理(格式转换,数据增强,通道剪切,大小裁剪,光谱显示,折线图表示)

2024-07-15 17:48| 来源: 网络整理| 查看: 265

目录 (一)高光谱谱格式转换之rar转mat格式①RAW转tiff步骤:②tiff转mat步骤: (二)两种方法把高光谱图像缩放到0-1的数据集(三)高光谱数据预处理成规定大小和规格的数据集(四)高光谱数据增强①旋转②缩放 (五)论文可用的光谱反射率等曲线对比图画法(六)高光谱图像拼接组合(七)高光谱图像快照式模拟编码(八)高光谱图像分波段显示(九)mat转tiff格式持续更新中......... 完整代码下载地址: 高光谱数据处理大礼包

(一)高光谱谱格式转换之rar转mat格式

  网上的很多公开高光谱数据集(如cave,icvl等)下载下来是raw格式,而一般用神经网络等方法对高光谱数据进行分类、训练、超分辨的时候,大多使用.mat格式的高光谱数据,碍于网上一直没有一个系统全面的方法,于是我总结了以下方法,分为两步:    在这里插入图片描述

1. 使用ENVI软件读取原格式的高光谱数据,选取需要的光谱通道,裁剪需要的像素区域,转化为.tiff格式保存2. 使用MATLAB软件编写代码批量将.tiff格式数据转化为mat格式光谱数据 ①RAW转tiff步骤:

导入高光谱图像

在这里插入图片描述 选择感兴趣的波段和裁剪区域 在这里插入图片描述 保存为tiff格式 在这里插入图片描述

②tiff转mat步骤: %% 读取文件夹里的所有tif文件转化成mat格式(452,25-643.27) 28个通道规格化到0-1之间的测试集 % path='C:\HIS-pre-deal\430-740粉末\New Folder' %保存放tiff的文件路径 % A = dir(fullfile(path,'*.tif')); % A = struct2cell(A); % num = size(A) % for i=1:num(2) % a=A((i-1)*6+1); % a=a{1}; % deal = importdata(a); % for j=1:28 % img(:,:,j)=deal(:,:,20+2*j); % end % img=single(img)/double(65536); % k='C:\HIS-pre-deal\430-740粉末\New Folder\'; %保存结果的文件路径 % kk=num2str(i); % kkk='.mat'; % kkkk=[k,kk,kkk]; % % save(kkkk,'img') % end

在这里插入图片描述

(二)两种方法把高光谱图像缩放到0-1的数据集 %% 把高光谱图像转变成0-1的数据集 % % %% 方法一: % img_expand = importdata('15.mat'); % % % img=im2double(img_expand); % % % save('C:\Users\Desktop\test1.mat','img') % % %% 方法二: % c=0; % for i=1:31 //通道数为31 % b=max(max(squeeze(img_expand(:,:,i)))); % c=max(b,c); % end %img_h = importdata('test6.mat'); % img=double(img)/double(65536); % save('C:\Users\Desktop\test1.mat','img') (三)高光谱数据预处理成规定大小和规格的数据集 %% 高光谱数据预处理成规定大小和规格的数据(660*660*12) %%%%%%%% % img_expand = importdata('scene148.mat'); % for i=1:12 //通道数 % img(:,:,i)=img_expand(1:660,1:660,i); //长宽 % %imshow(img(:,:,i)) % end % save('C:\Users\Desktop\test1.mat','img') (四)高光谱数据增强

由于拍摄的高光谱数据总是有限的,而神经网络需要大量的数据样本来训练拟合,一种行而有效的方式就是数据增强。

①旋转 %% 读取路径下的所有mat文件,并左旋转90(角度自行修改,右旋类似) % path='C:\HIS-pre-deal\' % A = dir(fullfile(path,'*.mat')); % A = struct2cell(A); % num = size(A) % for i=1:num(2) % a=A((i-1)*6+1); % a=a{1}; % deal = importdata(a); % for j=1:28 % dea=imrotate(squeeze(deal(:,:,j)),90); % img_hs(:,:,j)=reshape(dea,1,512,512); % end % kk=num2str(i); % k='C:\HIS-pre-deal\左旋转90\'; % kkk='_左旋.mat'; % kkkk=[k,kk,kkk]; % save(kkkk,'img_hs') % end ②缩放 %% 第一种缩放形式:对高光谱图像进行大小缩放,并保存到相应文件夹 % size=0.5; //缩放尺度 % for i=1:28 % deal=img(:,:,i); % img_deal(:,:,i)=imresize(deal,size); % % subplot(4,7,i) % % imshow(deal) % end % img=0; % img=img_deal; % save('C:\HIS-pre-deal\Deal-img\scene010.mat','img') %% 第二种缩放形式:剪切。 % img_hs = importdata('scene200.mat'); % for i=1:24 % deal=img_hs(100:429,100:429,i); % deal=im2double(deal); % img(:,:,i)=deal; % % subplot(4,7,i) % % imshow(deal) % end % save('C:\HIS-pre-deal\Deal-img\660-1.mat','img') (五)论文可用的光谱反射率等曲线对比图画法 %% 人物 % x=[455.65 462.49 469.33 476.17 483.02 489.9 496.78 503.65 510.55 517.45 524.36... % 531.29 538.21 545.15 552.11 559.06 566.02 573.01 579.99 586.99 594.0 601.0 608.03 615.06 622.1 629.16 636.23 643.27];%x轴上的光谱波段值 % a=[0.046328 %a数据y值 % 0.042890 % 0.049437 % 0.052339 % 0.055272 % 0.057959 % 0.061730 % 0.064379 % 0.069850 % 0.076214 % 0.089666 % 0.109428 % 0.134469 % 0.151328 % 0.155143 % 0.163445 % 0.160454 % 0.145173 % 0.134909 % 0.119050 % 0.107735 % 0.092402 % 0.078581 % 0.073911 % 0.068458 % 0.066618 % 0.064307 % 0.061029]; %b数据y值 % b=[0.050210 % 0.048562 % 0.047848 % 0.048780 % 0.053608 % 0.054584 % 0.062421 % 0.066507 % 0.070665 % 0.082705 % 0.092355 % 0.112599 % 0.148814 % 0.160001 % 0.164293 % 0.159431 % 0.150049 % 0.139673 % 0.123176 % 0.113360 % 0.104669 % 0.093209 % 0.083308 % 0.078677 % 0.072299 % 0.070175 % 0.066874 % 0.067031]; % c=[0.032769 %c数据y值 % 0.033612 % 0.033636 % 0.035964 % 0.039693 % 0.044313 % 0.052775 % 0.061756 % 0.073795 % 0.086206 % 0.102327 % 0.120271 % 0.134366 % 0.143251 % 0.146189 % 0.148024 % 0.140879 % 0.133600 % 0.123866 % 0.112065 % 0.106048 % 0.100711 % 0.092865 % 0.086199 % 0.081167 % 0.077816 % 0.073928 % 0.071923 % ]; % d=[ 0.039684 %d数据y值 % 0.035936 % 0.039848 % 0.037460 % 0.037582 % 0.042013 % 0.048105 % 0.052788 % 0.059851 % 0.075452 % 0.085753 % 0.104524 % 0.117041 % 0.120392 % 0.119326 % 0.113422 % 0.105514 % 0.094912 % 0.085812 % 0.074321 % 0.067386 % 0.057413 % 0.050733 % 0.040744 % 0.041173 % 0.038101 % 0.035418 % 0.032557]; % e=[ 0.063452 %e数据y值 % 0.065448 % 0.066141 % 0.065247 % 0.067798 % 0.072938 % 0.078020 % 0.080517 % 0.084534 % 0.091731 % 0.101428 % 0.109275 % 0.117019 % 0.120379 % 0.117849 % 0.111377 % 0.099289 % 0.085903 % 0.078416 % 0.073114 % 0.068887 % 0.063553 % 0.059130 % 0.057317 % 0.059024 % 0.055005 % 0.057847 % 0.058094 % ]; % f=[0.051219 %f数据y值 % 0.065892 % 0.055956 % 0.049184 % 0.063560 % 0.074998 % 0.060415 % 0.067667 % 0.058828 % 0.079587 % 0.068357 % 0.099085 % 0.098976 % 0.094208 % 0.092482 % 0.093320 % 0.103216 % 0.086699 % 0.078904 % 0.062498 % 0.070742 % 0.068190 % 0.080951 % 0.067120 % 0.067791 % 0.062038 % 0.071721 % 0.071092 % ]; % g=[0.046503%g数据y值 % 0.054286 % 0.039724 % 0.045279 % 0.055584 % 0.064824 % 0.052188 % 0.051663 % 0.045794 % 0.076992 % 0.065128 % 0.090259 % 0.093017 % 0.084527 % 0.091849 % 0.093118 % 0.110003 % 0.101593 % 0.099130 % 0.087800 % 0.094021 % 0.102329 % 0.105936 % 0.092304 % 0.094816 % 0.089412 % 0.099360 % 0.091986]; % % plot(x,a,'-*b',x,b,'-or'); %线性,颜色,标记 % plot(x,a,'-or','LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor','red','MarkerFaceColor','red'); % hold on; % plot(x,b,'-ob','LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor',[0 0.6 1],'MarkerFaceColor',[0 0.6 1]); % hold on; % plot(x,c,'--og','LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor','green','MarkerFaceColor','green'); % hold on; % plot(x,d,'--o','Color',[1 .5 0],'LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor',[1 .5 0],'MarkerFaceColor',[1 .5 0]); % hold on; % plot(x,e,'--oc','LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor','cyan','MarkerFaceColor','cyan'); % hold on; % plot(x,f,'--om','LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor','magenta','MarkerFaceColor','magenta'); % hold on; % plot(x,g,'--oy','LineWidth',1.5,'MarkerSize',3,'MarkerEdgeColor','yellow','MarkerFaceColor','yellow'); % hold off; % axis([450,650,0,0.18]) %确定x轴与y轴框图大小 % set(gca,'XTick',[450:50:650]) %x轴范围1-6,间隔1 % set(gca,'YTick',[0:0.04:0.18]) %y轴范围0-700,间隔100 % legend('Truth','Ours','TSA','λ-net','HSSP','DCSI','TwIST'); %右上角标注 % xlabel('Wavelength(nm)') %x轴坐标描述 % ylabel('Intensity') %y轴坐标描述

在这里插入图片描述

(六)高光谱图像拼接组合 (七)高光谱图像快照式模拟编码 (八)高光谱图像分波段显示 (九)mat转tiff格式 %% 将mat格式的文件转化为tif格式 % InputMatFileName='D:' % OutputTifFilename='D' % load(InputMatFileName); % InputMatImg=double(res); % t = Tiff(OutputTifFilename,'w'); % if size(InputMatImg,3) == 3 % t.setTag('Photometric',Tiff.Photometric.RGB); % else % t.setTag('Photometric',Tiff.Photometric.MinIsBlack);%颜色空间解释方式 % end % t.setTag('Compression',Tiff.Compression.None);%无压缩 % t.setTag('BitsPerSample',64);% 由于输入.mat为double类型,所以选择了64位 % t.setTag('SamplesPerPixel',size(InputMatImg,3));% 每个像素的波段数目 % t.setTag('SampleFormat',Tiff.SampleFormat.IEEEFP);% 配合BitsPerSample64位double类型,选择IEEEFP来对应 % t.setTag('ImageLength',size(InputMatImg,1));% 影像宽度 % t.setTag('ImageWidth',size(InputMatImg,2));% 影像高度 % t.setTag('PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);%平面配置选择集中式 % t.write(InputMatImg);% 准备好了头文件,开始写影像数据 % t.close();% 关闭影像 持续更新中…


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3