MATLAB读取多波段遥感影像的三种方法

未经博主同意,请勿转发,保护知识产权

对于多波段的遥感影像读取,我们可以读进来多个单波段然后合成一个矩阵,或者通过tiff格式读取。这个问题昨天困扰我很久,因为读进来的tiff都变成了三个波段,我等菜鸡也不知道为什么,但今天半夜醒来,突然就大彻大悟。还顿悟了三种方法,总有一种适合你。

(1)单波段读取->二维转三维->合并成一个矩阵。

理论:以Landsat8为例,我们下载后的影像会有11个单波段影像。
MATLAB读取多波段遥感影像的三种方法_第1张图片

那我们就可以用MATLAB挨着读取,然后放在一块组成一个新矩阵。
代码如下:

%先读取第一个波段
B1 = imread('LC08_L1TP_122044_20150103_20170415_01_T1_B1.TIF');
B2 = imread('LC08_L1TP_122044_20150103_20170415_01_T1_B2.TIF');
B3 = imread('LC08_L1TP_122044_20150103_20170415_01_T1_B3.TIF');
B4 = imread('LC08_L1TP_122044_20150103_20170415_01_T1_B4.TIF');
%看看每个波段有多少行多少列,申请内存空间
[M,N] = size(B1);
A = zeros(M,N,4);
%按照顺序存储
A(:,:,1) = B1;
A(:,:,2) = B2;
A(:,:,3) = B3;
A(:,:,4) = B4;

%读取之前,最好裁剪出来需要的研究区域,不然真的好卡

(2)遥感影像的TIFF读取

首先要在ENVI Classic中将影像转化为tiff格式。用经典版本,不要用ENVI版本,我不知道为什么,用ENVI转换过来的tiff只有三个波段。但是用envi classic转换过来的就有影像全部的波段。

MATLAB读取多波段遥感影像的三种方法_第2张图片转换的方式为:
将导入的影像,file->save as -> tiff

MATLAB读取多波段遥感影像的三种方法_第3张图片
代码如下:

I = imread('data3.tif')

(3)利用multibandread工具箱

这个比较麻烦,但确实是可行的。此处参考帮助文档提供的实例

Setup initial parameters for a data set.

rows=3; cols=3; bands=5;
filename = tempname;
Define the data set.

fid = fopen(filename, 'w', 'ieee-le');
fwrite(fid, 1:rows*cols*bands, 'double');
fclose(fid);
Read every other band of the data using the Band-Sequential format.

im1 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bsq', 'ieee-le', ...
                    {'Band', 'Range', [1 2 bands]} )
Read the first two rows and columns of data using Band-Interleaved-by-Pixel format.

im2 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bip', 'ieee-le', ...
                    {'Row', 'Range', [1 2]}, ...
                    {'Column', 'Range', [1 2]} )
Read the data using Band-Interleaved-by-Line format.

im3 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bil', 'ieee-le')
Delete the file created in this example.

delete(filename);

作为一名混日子还想生存的fake giser,我准备后期更新一些ENVI处理遥感影像的全部流程、MATLAB处理遥感影像,ArcGIS操作和python爬取的相关总结。写下来,总是能让人印象深刻,也希望对你有帮助。

你可能感兴趣的:(MATLAB读取多波段遥感影像的三种方法)