Matlab图像处理-灰度拉伸原理方法

作者:落知秋 | 创建时间: 2023-07-08
本教程适合Matlab数字图像处理的初学者。灰度线性拉伸是数字图像处理中最为简单直接的图像增强方法,本文中所支持的灰度拉伸图像,不仅仅限于灰度图,更将RGB真彩色图、多波段遥感影像纳入灰度拉伸范畴。较为全面直观地给出在Matlab中对图像进...
Matlab图像处理-灰度拉伸原理方法

操作方法

打开图像 [FileName, FilePath]=uigetfile('*.tif;*.jpg;*.png;*.img;*.gif;','请选择图像数据'); str=[FilePath FileName]; Image=imread(str); % 以对话框的形式选择打开一幅图像 [M,N,nDims]=size(Image); Image=im2double(Image); % 获取图像的尺寸和波段数

灰度拉伸 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中

保存输出 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命名

结果对比

灰度图拉伸结果对比 上图:原灰度图 下图:灰度拉伸结果

RGB真彩色图拉伸结果对比 上图:原RGB真彩色图 下图:灰度拉伸结果

多波段遥感影像拉伸结果对比 上图:原多波段遥感影像(TM321组合) 下图:灰度拉伸结果(TM321组合)

温馨提示

Matlab中若需写入4波段以上信息到tif格式文件中,需要通过Tiff函数实现。
点击展开全文

更多推荐