2021-05-12 14:32:11
Matlab影象處理-灰度拉伸原理方法
2019-12-25 19:52:00
本教學適合Matlab數位影像處理的初學者。灰度線性拉伸是數位影像處理中最為簡單直接的影象增強方法,本文中所支援的灰度拉伸影象,不僅僅限於灰度圖,更將RGB真彩色圖、多波段遙感影像納入灰度拉伸範疇。較為全面直觀地給出在Matlab中對影象進行灰度拉伸的方法原理和Matlab原始碼,並配合必要的程式碼註釋,希望能幫助Matlab和數位影像處理的初學者入門。
1
開啟影象[FileName, FilePath]=uigetfile('*.tif;*.jpg;*.png;*.img;*.gif;','請選擇影象資料');str=[FilePath FileName];Image=imread(str);% 以對話方塊的形式選擇開啟一幅影象[M,N,nDims]=size(Image);Image=im2double(Image);%?獲取影象的尺寸和波段數2
灰度拉伸ImageStretch=Image;for i=1:nDims ?%?對每個波段依次進行灰度拉伸? ? Sp=Image(:,:,i);? ? MaxDN=max(max(Sp));? ? MinDN=min(min(Sp));? ? Sp=(Sp-MinDN)/(MaxDN-MinDN); ?%?灰度拉伸公式? ? ImageStretch(:,:,i)=Sp;end%?將灰度拉伸結果儲存在ImageStretch中3
儲存輸出figure, ?%?在同一視窗顯示原圖與灰度拉伸結果圖if nDims==3||nDims==1 ?%?若為灰度圖和RGB真彩色圖則以常規方式儲存並輸出? ? subplot(1,2,1),imshow(Image);title('原圖');? ? subplot(1,2,2),imshow(ImageStretch);title('灰度拉伸');? ? imwrite(ImageStretch,'Result_Stretch.jpg','jpeg');else ?% 若為多波段遙感影像則按照TM 3,2,1組合形式儲存並輸出? ? subplot(1,2,1),imshow(Image(:,:,[3,2,1
灰度圖拉伸結果對比
上圖:原灰度圖
下圖:灰度拉伸結果
2
RGB真彩色圖拉伸結果對比
上圖:原RGB真彩色圖
下圖:灰度拉伸結果
3
多波段遙感影像拉伸結果對比
上圖:原多波段遙感影像(TM321組合)
下圖:灰度拉伸結果(TM321組合)
相關文章