数字图像处理:实验八 遥感图像增强

实验八 遥感图像增强

一、实验目的

  1. 熟悉MATLAB中图像增强的原理;
  2. 掌握遥感图像灰度变换,直方图调整等增强方法。

二、实验仪器及设备

计算机、Matlab图像处理软件、Landsat8遥感图像

三、实验内容及步骤

  1. 遥感图像头文件读取
    图像对比度增强的方法可以分为两类,一类是直接对比增强方法,另一类是间接对比增强方法,直方图均衡化和线性拉伸是两种最常见的间接对比度增强方法,直方图均衡是通过使用累计函数对灰度值进行调整以实现对比度的增强。线性拉伸通过对比度拉伸对直方图进行调整,从而扩大前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现,如指数变换,对数变换和线性拉伸等。
1.直方图均衡化
直方图均衡化处理的中心思想是将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,通过对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数据大致相同,从而使得给定图像的直方图分布变成均匀分布。

2.指数变换
指数变换可以将遥感图像的灰度值部分进行压缩,高灰度值部分进行扩展,以达到增强遥感影像高灰度部分的目的。

3.对数变换
对数变换可以将遥感图像的低灰度值部分进行扩展,高灰度值部分进行压缩,以达到增强遥感影像低灰度部分的目的。

4.线性拉伸
线性拉伸是为了突出感兴趣的目标或灰度区间相对抑制那些不感兴趣的灰度区域。

四、实验内容及步骤

  1. 直方图均衡化
src_img=data(:,:,6);
%转为8bit图像,以波段6为例
min_val=min(min(src_img));
max_val=max(max(src_img));
for i=1:lines
    for j=1:samples
        src_img(i,j)=(src_img(i,j)-min_val)/(max_val-min_val)*255;
    end
end
src_img=uint8(src_img);
figure(1);
subplot(2,2,1),imshow(src_img),title('原图像');
subplot(2,2,2),imhist(src_img),title('原图像直方图');
matlab_eq=histeq(src_img);
subplot(2,2,3),imshow(matlab_eq),title('matlab直方图均衡化原图像');
subplot(2,2,4),imhist(matlab_eq),title('matlab直方图均衡化直方图');

在这里插入图片描述

图一 直方图均衡化
2. 指数变换

gamma=0.4;
c=1;
g2=data(:,:,6);
g2=c*(g2.^gamma);
%归一化
min_val=min(min(g2));
max_val=max(max(g2));
for i=1:lines
    for j=1:samples
        g2(i,j)=(g2(i,j)-min_val)/(max_val-min_val)*255;
    end
end
g2=uint8(g2);
figure(1);
subplot(2,2,1),imshow(src_img),title('原图像');
subplot(2,2,2),imhist(src_img),title('原图像直方图');
subplot(2,2,3),imshow(g2),title('增强图像');
subplot(2,2,4),imhist(g2),title('增强图像直方图');

在这里插入图片描述

图二 指数变换
3. 对数变换

c1=1.0;
g=double(src_img);
v1=10;
v2=100;
v3=200;
g11=c*log2(1+v1*g)/log2(v1+1);
g22=c*log2(1+v2*g)/log2(v2+1);
g33=c*log2(1+v3*g)/log2(v3+1);
%归一化
min_val1=min(min(g11));
max_val1=max(max(g11));
min_val2=min(min(g22));
max_val2=max(max(g22));
min_val3=min(min(g33));
max_val3=max(max(g33));
for i=1:lines
    for j=1:samples
        g11(i,j)=(g11(i,j)-min_val1)/(max_val1-min_val1)*255;
        g22(i,j)=(g22(i,j)-min_val2)/(max_val2-min_val2)*255;
        g33(i,j)=(g33(i,j)-min_val3)/(max_val3-min_val3)*255;
    end
end
g=uint8(g);
g11=uint8(g11);
g22=uint8(g22);
g33=uint8(g33);
figure(1);
subplot(2,2,1),imshow(g),title('原图像');
subplot(2,2,2),imshow(g11),title('增强图像v=10');
subplot(2,2,3),imshow(g22),title('增强图像v=100');
subplot(2,2,4),imshow(g33),title('增强图像v=2000');

在这里插入图片描述

图三 对数变换
4. 线性拉伸

g=double(src_img);
[m,n,w]=size(g);
figure(1);
imshow(src_img);title('原图像');
mid=mean(mean(g));
%横轴
fa=20;fb=120;
%纵轴
ga=100;gb=255;
[height,width]=size(g);
dst_img=uint8(zeros(height,width));
g=double(g);
%三段斜率
k1=ga/fa;
k2=(gb-ga)/(fb-fa);
k3=(255-ga)/(255-fa);
for i=1:height
    for j=1:width
        if g(i,j)<=fa
            dst_img(i,j)=k1*g(i,j);
        elseif fa<g(i,j) && g(i,j)<=fb
             dst_img(i,j)=k2*(g(i,j)-fa)+ga;
        else
            dst_img(i,j)=k3*(g(i,j)-fb)+gb;
        end
    end
end
dst_img=uint8(dst_img);
j=dst_img;
figure(2);
imshow(j);title('线性拉伸图像');

pixel_f=1:256;
pixel_g=zeros(1,256);
%三段斜率,小于1表示该段江北压缩
k1=ga/fa;
k2=(gb-ga)/(fb-fa);
k3=(255-ga)/(255-fa);
for i=1:256
        if i<= fa
            pixel_g(i)=k1*i;
        elseif fa<i && i<=fb
             pixel_g(i)=k2*(i-fa)+ga;
        else
            pixel_g(i)=k3*(i-fb)+gb;
        end
end
figure(3);
plot(pixel_f,pixel_g);

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

图四 线性拉伸

五、实验心得

1.学会了遥感影像的增强处理。
2. 通过合适的增强操作,可凸显出图像的一些细节信息,使得影像信息提取、图像解译变得方便。

猜你喜欢

转载自blog.csdn.net/chengzilhc/article/details/124557064