首頁 > 軟體

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]));title('原圖');? ? subplot(1,2,2),imshow(ImageStretch(:,:,[3,2,1]));title('灰度拉伸');? ? imwrite(ImageStretch(:,:,[3,2,1]),'Result_Stretch.tif','tiff');end%?將拉伸結果儲存至當前目錄並以Result_Stretch命名
etch(:,:,[3,2,1]),'Result_Stretch.tif','tiff');end%?將拉伸結果儲存至當前目錄並以Result_Stretch命名

1

灰度圖拉伸結果對比

上圖:原灰度圖

下圖:灰度拉伸結果



2

RGB真彩色圖拉伸結果對比

上圖:原RGB真彩色圖

下圖:灰度拉伸結果



3

多波段遙感影像拉伸結果對比

上圖:原多波段遙感影像(TM321組合)

下圖:灰度拉伸結果(TM321組合)




IT145.com E-mail:sddin#qq.com