生活随笔
收集整理的這篇文章主要介紹了
数字图像处理:实验七 遥感图像读取
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實驗七 遙感圖像讀取
一、實驗目的
熟悉MATLAB中遙感圖像讀寫的格式;掌握多波段遙感圖像的讀取與存儲;掌握多波段遙感圖像中單波段、不同波段的組合顯示。
二、實驗儀器及設備
計算機、Matlab圖像處理軟件、Landsat8遙感圖像
三、實驗基礎
1.實驗遙感圖像簡介
2013年2月11日Landsat8衛星成功發射,設計壽命為五年,星上攜帶兩個主要設備,陸地成像儀和熱紅外傳感器。陸地成像儀共11個波段,其中可見光,近紅外,短波紅外波段空間分辨率為30米,熱紅外波段空間分辨率為100米,全色波段分辨率為15米,成像寬幅185kmx185km。陸地成像儀包括ETEM+傳感器的所有波段,但為了避免大氣吸收特征,對波段進行了重新調整,比較大的調整是band5,排除了0.825um處水汽吸收特征,全做波段band8范圍較窄,可以在全色圖像上更好地區分植被和無植被特征,此外還增強了兩個波段藍色波段,主要應用于海岸帶觀測短波紅外波段。包括水汽強吸收特征,可用于云檢測,近紅外和短波紅外波段與modest對應的波段接近。
2.相關函數
MATLAB中用于多波段圖像讀寫的函數包括multibandread和multibandwtite。
四、實驗內容及步驟
遙感圖像頭文件讀取
clc
;clear;
hdrname='D:\Remote_sensing\ENVI實驗數據\ENVI_shiyuan_dt\shiyan\LC81230322013276LGN00_MTL_shiyan.hdr';fid=fopen
(hdrname,
'r');info=fread
(fid,
'char=>char');info=info'
;%轉置為行向量fprintf
(info
);%界面輸出打印顯示fclose
(fid
);
>> rs_hdr
ENVI
description
= {Calibrated Radiance from LC81230322013276LGN00_MTL_MultiSpectral
}
samples
= 7771
lines
= 7901
bands
= 7
data
type = 4
interleave
= bil
file type = ENVI Standard
header offset
= 0
byte order
= 0
map info
= {UTM,
1.000,
1.000,
358485.000,
4582815.000,
3.000000e+001,
3.000000e+001,
50, North, WGS-84,
units=Meters
}
coordinate system string
= {PROJCS
["WGS_1984_UTM_Zone_50N",GEOGCS
["GCS_WGS_1984",DATUM
["D_WGS_1984",SPHEROID
["WGS_1984",6378137.0,298.257223563
]],PRIMEM
["Greenwich",0.0
],UNIT
["Degree",0.0174532925199433
]],PROJECTION
["Transverse_Mercator"],PARAMETER
["False_Easting",500000.0
],PARAMETER
["False_Northing",0.0
],PARAMETER
["Central_Meridian",117.0
],PARAMETER
["Scale_Factor",0.9996
],PARAMETER
["Latitude_Of_Origin",0.0
],UNIT
["Meter",1.0
]]}
default bands
= {4,3,2
}
band names
= {Coastal aerosol, Blue, Green, Red, Near Infrared
(NIR
), SWIR
1, SWIR
2}
wavelength
= {0.443000,
0.482600,
0.561300,
0.654600,
0.864600,
1.609000,
2.201000}
fwhm
= {0.016000,
0.060100,
0.057400,
0.037500,
0.028200,
0.084700,
0.186700}
wavelength
units = Micrometers
data ignore value
= 0.00000000e+000
sun azimuth
= 156.793278sun elevation
= 43.279056
cloud cover
= 6.400000
earth sun distance
= 1.000646
sensor
type = Landsat OLI
acquisition
time = 2013-10-03T02:55:24.3050919Z
calibration scale factor
= 0.100000
data
units = W m^-2 sr^-1 um^-1
image quality
= 9
遙感圖像基本信息讀取
%讀取列數、行數、波段數、數據類型%列數
ac=strfind
(info,
'samples = ');bc=length
('samples = ');cc=strfind
(info,
'lines ');samples=[];for i=ac+bc:cc-1
samples=[samples,info
(i
)];end
samples=str2num
(samples
);%行數
ar=strfind
(info,
'lines = ');br=length
('lines = ');cr=strfind
(info,
'bands ');lines=[];for i=ar+br:cr-1
lines=[lines,info
(i
)];end
lines=str2num
(lines
);%波段數
ab=strfind
(info,
'bands = ');bb=length
('bands = ');cb=strfind
(info,
'data type ');
bands=[];for i=ab+bb:cb-1
bands=[bands,info
(i
)];end
bands=str2num
(bands
);%數據類型
ab=strfind
(info,
'data type = ');bb=length
('data type = ');cb=strfind
(info,
'interleave');datatype=[];for i=ab+bb:cb-1
datatype=[datatype,info
(i
)];end
datatype=str2num
(datatype
);precision=[];switch datatype
case 1precision='unit8=>unit8';case 2precision='int16=>int16';case 12precision='unit16=>unit16';case 3precision='int32=>int32';case 13precision='unit32=>unit32'; case 4precision='float32=>float32'; case 5precision='double=>double'; end
%數據格式
at=strfind
(info,
'interleave = ');bt=length
('interleave = ');ct=strfind
(info,
'sensor type ');
interleave=[];for i=at+bt:ct-1
interleave=[interleave,info
(i
)];end
interleave=strtrim
(interleave
);
fprintf
('Lines=%i\nSamples=%i\nDataType=%s\n',lines,samples,interleave
);
運行結果:
Lines=589
Samples=766
DataType=bsq
遙感圖像數據讀取與顯示
遙感圖像大多數具有多波段,MATLAB中用于多波段圖像讀寫的函數包括multibandread和multibandwtite。
%讀取圖像數據
imgfilename='F:\數字圖像處理\Landsat8_image.dat';
fid=fopen
(imgfilename,
'r');
data=multibandread
(imgfilename,
[lines,samples,7
],precision,0,
'bsq',
'ieee-le');
data=double
(data
);
%數值轉換為0-255的整型用于顯示
data_unit8=data
;
for k=1:bands
min_val=min
(data
(:,:,k
));max_val=max
(data
(:,:,k
));for i=1:lines
for j=1:samplesdata_unit8
(i,j,k
)=uint8
((data_unit8(i,j,k)-min_val)/(max_val-min_val)*255);endend
end
%單波段遙感圖像顯示
%數值轉為0-255的整型用于顯示
data_show=data;
for k=1:bandsmin_val=min(data(:,:,k));max_val=max
(data
(:,:,k
));for i=1:lines
for j=1:samplesdata_show
(i,j,k
)=uint8
((data_show
(i,j,k
)-min_val
)/
(max_val-min_val
)*255
);endend
end%單波段遙感圖像顯示
im1=data_show
(:,:,1
);im2=data_show
(:,:,2
);im3=data_show
(:,:,3
);im4=data_show
(:,:,4
);im5=data_show
(:,:,5
);im6=data_show
(:,:,6
);im7=data_show
(:,:,7
);im1=uint8
(im1
);im2=uint8
(im2
);im3=uint8
(im3
);im4=uint8
(im4
);im5=uint8
(im5
);im6=uint8
(im6
);im7=uint8
(im7
);figure
;imshow
(im1
);figure
;imshow
(im2
);figure
;imshow
(im3
);figure
;imshow
(im4
);figure
;imshow
(im5
);figure
;imshow
(im6
);figure
;imshow
(im7
);
%真彩色顯示
im3=data_show
(:,:,1:3
);im3=uint8
(im3
);figure
;imshow
(im3
);%假彩色顯示
im3=data_show
(:,:,4:6
);im3=uint8
(im3
);figure
;imshow
(im3
);
圖一 遙感圖像各波段顯示
4. 遙感圖像存儲
%按照BIL存儲類型存儲所有波段multibandwrite
(data,
'data.bil',
'bil');%以存儲32bit單波段為例
numbands=1;for band=1:numbandsmultibandwrite
(data
(:,:,band
),
'banddata.bsq',
'bsq',
'machfmt',
'ieee-le',
'precision',interleave
);end
五、實驗心得
1.學會了使用multibandread和multibandwtite函數處理遙感影像。
2. 對遙感影像的頭文件里的內容有了更加深入的了解。
總結
以上是生活随笔為你收集整理的数字图像处理:实验七 遥感图像读取的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。