Matlab讀取ENVI格式遙感圖像的頭文件

ENVI 格式遙感圖像頭文件的讀取

%設置函數HDR_Read,返回值爲parameter,參數爲HDRfilename
function  parameter =HDR_Read(HDRfilename)
fileID = fopen(HDRfilename, 'r');  %以只讀方式打開.hdr頭文件
    
%一直讀取頭文件的內容直至文件末尾
while ~feof(fileID)
     fileline=fgetl(fileID);
     C = cellstr(strsplit(fileline,'= '));     %"="分割每一行   
     if(C(1)=="samples ")  
         samples=str2double(cell2mat(C(2)));   %存儲列數samples
     end
     if(C(1)=="lines   ")       
         lines=str2double(cell2mat(C(2)));     %存儲行數lines
     end
     if(C(1)=="bands   ")                      %存儲波段數bands
         bands=str2double(cell2mat(C(2)));
     end
     if(C(1)=="interleave ")                   %存儲envi中數據存儲方式
         interleave=cell2mat(C(2));
     end  
      if(C(1)=="data type ")                   %存儲數據類型
         datatype=cell2mat(C(2));
     end       
end
 fclose(fileID);     %關閉文件的讀取

%定義ENVI中的數據類型格式
 data_type = {'uint8' 'int16' 'int32' 'float32' 'float64' 'uint16' 'uint32' 'uint64'};
 
 %將envi中不同的數據格式轉換成matlab中的特定格式
 switch datatype
    case '1'
        datatype = cell2mat(data_type(1));    %灰度範圍0-255
    case '2'
        datatype = cell2mat(data_type(2));    %16位整數
    case '3'
        datatype = cell2mat(data_type(3));    %32位整數
    case '4'
        datatype = cell2mat(data_type(4));    %32位浮點數
    case '5'
        datatype = cell2mat(data_type(5));    %64位浮點數
    case '6'
        datatype = cell2mat(data_type(6));    %灰度範圍0-2^16
    case '7'
        datatype = cell2mat(data_type(7));    %灰度範圍0-2^32
    case '8'
        datatype = cell2mat(data_type(8));    %灰度範圍0-2^64
 end
 
 %將各數據存入返回值參數parameter中
 parameter = {samples,lines,bands,interleave,datatype};
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章