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的像素和
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里面尽量少用循环,多用数组,向量进行统计分析,这样将大大提高运行的速度。
请发表评论