赞
踩
遥感影像具有四种分辨率:时间分辨率、空间分辨率、辐射分辨率和光谱分辨率。其中,对于光谱分辨率而言,按照成像传感器波谱通道划分数目的多少,分为多光谱、高光谱和超光谱。通常认为,多光谱波段数目在100以下,高光谱波段数目在100~10000之间,超光谱波段数目在10000以上
Hyperspectral Remote Sensing Scenes:包含Indian Pines、Salinas、Pavia Centre and University、Cuprite、 Kennedy Space Center、Botswana、anomaly detection(7个地区),在每个地区都会有介绍类型数量、波段数,可直接下载。
Hyperspectral Images:Portion of Southern Tippecanoe County, Indiana、Northwest Tippecanoe County, Indiana、Washington DC Mall。
这里,我只下载了Washington DC Mall Image的数据,如下图所示:
这里以Salinas.mat为例,首先打开Matlab软件,进入下载的高光谱遥感数据目录,作为工作空间;然后修改输入文件名后运行以下代码。
load('Salinas.mat') InputMatImg=salinas; b = size(InputMatImg); fprintf('输入图像宽度为 %d\n',b(1)); fprintf('输入图像高度为 %d\n',b(2)); fprintf('输入图像波段数为 %d\n',b(3)); i=120;j=180;k=220;%自选三个波段 InputImg_r= InputMatImg(:,:,i);%获取第i个波段 InputImg_g= InputMatImg(:,:,j);%获取第j个波段 InputImg_b= InputMatImg(:,:,k);%获取第k个波段 InputImg_r= uint8(InputImg_r);%将i波段的灰度值转为0~255 InputImg_g= uint8(InputImg_g);%将j波段的灰度值转为0~255 InputImg_b= uint8(InputImg_b);%将k波段的灰度值转为0~255 RGBImg=cat(3,InputImg_r,InputImg_g,InputImg_b);%将i、j、k三个波段进行合成 figure; subplot(221);imshow(InputImg_r);title('红色波段'); subplot(222);imshow(InputImg_g);title('绿色波段'); subplot(223);imshow(InputImg_b);title('蓝色波段'); subplot(224);imshow(RGBImg);title('合成波段'); imwrite(InputImg_r,['MATBand',num2str(i),'.jpg']); imwrite(InputImg_g,['MATBand',num2str(j),'.jpg']); imwrite(InputImg_b,['MATBand',num2str(k),'.jpg']); imwrite(RGBImg,'compositeMATRGBimg.jpg');
|
|
|
|
这里以dc.tif(Washington DC Mall)为例,首先进入文件所在目录:
Matlab代码功能:获取第i、j、k三个波段,然后合成三个波段.
InputTIFImage = importdata('dc.tif'); Info=imfinfo('dc.tif') i=130;j=160;k=190;%自选三个波段 InputImage_r= InputTIFImage(:,:,i);%获取第i个波段 InputImage_g= InputTIFImage(:,:,j);%获取第j个波段 InputImage_b= InputTIFImage(:,:,k);%获取第k个波段 Image_r= uint8(InputImage_r);%将i波段的灰度值转为0~255 Image_g= uint8(InputImage_g);%将j波段的灰度值转为0~255 Image_b= uint8(InputImage_b);%将k波段的灰度值转为0~255 RGBImg=cat(3,Image_r,Image_g,Image_b);%将i、j、k三个波段进行合成 figure; subplot(221);imshow(Image_r);title('红色波段'); subplot(222);imshow(Image_g);title('绿色波段'); subplot(223);imshow(Image_b);title('蓝色波段'); subplot(224);imshow(RGBImg);title('合成波段'); imwrite(Image_r,['TIFBand',num2str(i),'.jpg']); imwrite(Image_g,['TIFBand',num2str(j),'.jpg']); imwrite(Image_b,['TIFBand',num2str(k),'.jpg']); imwrite(RGBImg,'compositeRGBTIFimg.jpg');
|
|
|
|
Mat2Tif.m函数脚本文件
%InputMatFileName如D:/360极速浏览器下载/Pavia.mat %OutputTifFilename如D:/360极速浏览器下载/PaviaTIF.tif % Mat2Tif('D:/360极速浏览器下载/Pavia.mat','D:/360极速浏览器下载/TifPavia.tif'); function Mat2Tif(InputMatFileName,OutputTifFilename) load(InputMatFileName); InputMatImg=pavia; 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();% 关闭影像 %下面的代码仅为了测试显示结果 %tdc = Tiff('D:/360极速浏览器下载/TifPavia.tif','r'); %TifPavia = read(tdc); %close(tdc); % i=12;j=55;k=89;%自选三个波段 % InputImg_r= TifPavia(:,:,i);%获取第i个波段 % InputImg_g= TifPavia(:,:,j);%获取第j个波段 % InputImg_b= TifPavia(:,:,k);%获取第k个波段 % InputImg_r= uint8(InputImg_r);%将i波段的灰度值转为0~255 % InputImg_g= uint8(InputImg_g);%将j波段的灰度值转为0~255 % InputImg_b= uint8(InputImg_b);%将k波段的灰度值转为0~255 % RGBImg=cat(3,InputImg_r,InputImg_g,InputImg_b);%将i、j、k三个波段进行合成 % figure; % subplot(221);imshow(InputImg_r);title('红色波段'); % subplot(222);imshow(InputImg_g);title('绿色波段'); % subplot(223);imshow(InputImg_b);title('蓝色波段'); % subplot(224);imshow(RGBImg);title('合成波段');
转换前Mat三波段与转换后Tif三波段显示效果对比如下图所示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。