Matlab对夜间灯光数据图像的读取和统计

 1 %统计多幅影像的亮值像元个数(TLP)和灰度亮值总数(TDN)
 2 clear;
 3 file_path='D:\D\guo\线性校正DMSP\'; %存放文件夹位置
 4 img_list=dir(strcat(file_path,'*.tif'));
 5 img_num=length(img_list); %图像个数
 6 a=importdata('D:\D\guo\线性校正DMSP\F142000.tif'); %读取一个栅格数据
 7 [m,n]=size(a);     %获取数据行列号
 8 datasum=zeros(m*n,img_num);   %存放多幅影像的二维数组
 9 k=1;
10 for i=1:img_num
11     file_name=img_list(i).name; %图像的名称
12     data=importdata(strcat(file_path,file_name));
13     data=reshape(data,[],1);
14     datasum(:,k)=data;
15     k=k+1;
16 end
17 b=datasum>0; %大于0像素数组
18 TLP=sum(b); %大于0的像素个数
19 TDN=sum(datasum.*b);%大于0的像素和
View Cod

1、通过dir函数提取指定的文件夹下面的多幅".tif"格式的图像。

img_list=dir(strcat(file_path,'*.tif'));其中‘*’为通配符,没有’*‘将会读到到一个影像图列表。

2、读取影像importdata函数只能是读取当前目录下的文件,一般选择imread函数。imraed函数可以读取任务目录下的文件,只要你文件路径名正确。

a=importdata('D:\D\guo\线性校正DMSP\F142000.tif')

3、将多个栅格数据的像元值转换为数组形式,方便后面的数值统计。

data=reshape(data,[],1);通过reshape函数进行转换为一列是数值。

在matlab里面尽量少用循环,多用数组,向量进行统计分析,这样将大大提高运行的速度。

猜你喜欢

转载自www.cnblogs.com/wanghua3/p/12606275.html
今日推荐