matlab遥感代码,遥感数字图像处理(内含Matlab)代码

【实例简介】

1 读取BIP 、BIL、 BSQ文件

2 均值滤波 中值滤波

3 边缘信息提取

4 DFT FFT

5 主成分变换

6 缨帽变换

7 图像分类(K—均值分类、最小距离分类、最大似然分类)

8 大气校正 反射率 地表温度的反演

9 Habib教授课程总结

N=6

for 1=I N

img=fopen (D: MATLAB Sample BIP,rb,)

bo=fread(img, i-1,uint8);

b=fread(img, lines*samples,'uinL8, (N-1)

band cov=reshape(b, samples, lines)

band cov 2=band Cov: 0/0x0A

band uint8=uint&(band cov2);

tif - imadjust(band uint8)

mkdir(E: MATLAB, tifbands')

name=[E: MATLAB \tifbands tif, int2str(i), tif

imwrite(tif, name, tif ); %imwrite(A, filename, fmt)

lL='波段

subplot(3, 2, 1), imshow ( tif); title(tilt)

fclose(img);

3.读取BIL的源代码

clear all

clc

lines =400

samples=640

N=6:

for i=l:N

bi-zeros(lines, samples)

for j=l: samples

img=fopen(D: MATLAB\Sample BIL, 'rb)

bb=fread(img, (i-1)*640, uint8)

bo=fread(img, IG-1),uint8);

bandi linej-fread(img, lines, uint8, 1(N*Samples-1)

fclose(img)

i( j)=bar

band uint8=uint(bi)

tif-imadjust(band uint8)

mkdir(D: MATLAB, tifbands')

name=l'D: MATLAB\tifbands tif, int2str(),tit

imwrite til,name, til

tit[波段,int2str()

subplot(3, 2, 1), imshow(tif) title(tilt

end

四、运行结果

波段

淀段4

波段

派段

图1:读取文件的六个波段图

实习2均值/中值滤波、边缘信息提取

、实验目的与原理

各种图像滤波算子可以实现图像的增强,去噪,边缘提取等。图像增强的目

的在于:1.釆用一系列技术改善图像的视觉效果,提高图像的清晰度,2.将图像

转换成一种更适合于人或机器进行分析处理的形式。它不是以图像保真度为原

则,而是通过处理,设法有选择地突出便于人或机器分析某些感兴趣的信息,抑

制一些无用的信息,以提高图像的使用价值。图像增强方法从增強的作用域出发

可分为空间域增强和频率域增强。空间域增强就是直接对图像像素灰度进行操

作;频率域増强是对图像经傅里叶变换后的频谱成分进行操作,然后经傅里叶逆

变换获得所需结果。

图像滤波可分为空间域滤波和频率域滤波,前者通过窗口或卷积核进行,它

参照相邻像素改变单个像素的灰度值。后者对图像进行傅立叶变换,然后对频谱

进行滤波。空间域图像滤波称为平滑和锐化,强调像素与其周围相邻像素的关系

去噪滤波为平滑滤波包括均值滤波和中值滤波。锐化滤波包括罗伯特梯度、索伯

尔梯度、拉普拉斯算法、定向检测,用以提取线状地物和边缘。此实验用 Matlab

采用各种滤波对图像进行了处理,处理结果如下

二、算法描述

1.用 imread读取图像文件,并用size获取图像的大小

2.设计各种滤波算了。

3利用卷积公式对图像的没一个像素进行处理,得到滤波后的图像。

4.用 imshow显示滤波后的图像

三、 Matlab源代码

1.均值滤波源码:

clear all

img=imread(2. jpg,)

Trow, column, band]=size(img)

img=double(img;

fl=1/9;f2=1/9;fl3=1/9;

21=19;f2=1/9;f23=1/9;

f31=1/9;f32=1/9;f33=1/9

imgl-img0(:, 1, ) img0( : ) img0(, column, 1

img2limgl(1, ) img 1(: ) imgI(row,: I

filtered=zeros(row, column, band)

for ii=1: row

for jj=1: column

filtered(iii )=f1l*img 2 (i1,11, f12img2(11, 1j+1, ) f13*img2(i1,1j +2, )

f21*img2(i+1j,)+12*img2(i+1.j+1,)十

f23*mg2(+j+2,)+

31*img2(i+2i;)

门32*ing2(i+2.i+1,)+

f33img2(i计+2j+2;);

end

filtered 1=uint& (filtered

subplot(1,2,1) ashow(ing);itlc图1原始RGB图像)

subplot(1,2,2), imshow( filtered 1); title((图2均值滤波后的图像');

imwrite(filtered1, flower filtered mean.jpg)

2中值滤波代码:

image=imread(flower. jpg,)

Im, n,p=size(image);

mage0-double(image);

image l=limage0(, 1, image(; ) imageD(, n,: ) image2=limagel(,; imagel(;,:

imagel(m, )

clear imagel

imagel=zeros(m, n, p)

ori=l: m

fori=1: n

A- image 2 (i: 1+2, j: j+2,

B- reshape(A, 33, 3);

imagel(i, j, )=median(B)

end

end

imagel=uint8(image1)

subplot(1,2,1), dshow( image; c title(图1:原始的RGB图像)

subplot(1,2,2), imshow( imagel);tte图2:中值滤波后的图像);

3.边缘提取滤波源代码

clear all

img=imread(2.jpg)

row, column, band]=size(img)

img=double(img);

门11-=1;n2-0;n3=1

f21=1:f22=0;f23=-1;

f3|=1:f32=0;f33=-1;

ingl=[img(, 1, ) img(: ) img( column, )

img2-[ingl(1, imgI(: ) imgI(row, )1: filtered=zeros(row, column, band)

for jj=1: column

filtered (ii, jj, )=fl I*img2(11,1j>: f2*img(i1,1j+I,

f13*1img2(i1+2,)+…

21*ing2(i+1,j,)+2*ing2(i+1j+1,)+

f23img2(i+1、j+2,)+…

f31*img2(i+2,j,)+f32*img2(i+2.ij+1;)+

f33*img2(i计+2j+2,);

end

filteredl-uint8 (filtered)

subplot(1,2,1) imshow(img);itlc图1RGB原图像)

subplot(1,2,2), imshow( filtered1); title(图2边缘提取后的图像);

imwrite(filtered1, flower filtered edge. jpg,)

四、运行结果

图1原始的RGB图象

图2均佰源波后的裂俊

图1:原始RGB图像

图2:均值滤波后的图像

2中值滤汹后约原像

图2漆液尼的图騫

图3:中值滤波后的图像

图:边缘提取后的图像

实习3傅里叶变换、傅里叶逆变换,及频域滤波

、实验目的

按照信号处理理论,根据滤除的频率特征,滤波冇3种:1.低通滤波。低通滤

波是对频率域的图像通过滤波器H(u,ⅴ)削弱或抑制高频部分而保留低频部分

的滤波方法。由于图像上的噪声主要集中在高频部分,所以低通滤波可以起到压

噪声的作用。同时,由于强调了低频成分,图像会变得比较平滑。2.高通滤波

高通滤波是对频率域的图像通过滤波器来突岀图像的边缘和轮廓,进行图像镋化

的方法。3.带通滤波。仅保留指定频率范围的滤波,范围外的频率被阻止。

将空间域中的图像变换到频率域中进行计算。空间増强技术强调像元位置和

像元之间的关系,但随着考虑的像元数目增多,计算的复杂度增加而且非常耗费

计算运算吋间,特别是当模板越来越大吋,这种现象尤为明显。

频率域增强方法:

1.频率域平滑:保留图像的低频部分而抑制髙频部分

2.频率域锐化:保留图像的高频部分而削弱低频部分。

首先将空间域图像fxy)通过傅立叶变换为频率域图像F(uy),然后选择合适的滤

波器Huυν)对F(u、)的频谱成分进行增强得到图像Gu、,再经过傅立叶逆变换将

G(u变换到空间域,得到增强后的图像g(xy)

根据傅里叶变换的原理,用 Matlab实现对图像的傅里叶变换,再设计各种频

率滤波器,包括理想滤波器、巴特汏斯滤波器、指教滤波器等髙通或低通滤波器,

用这些滤波器对频率图像进行滤波,将得到的滤波后的频率图像经过傅里叶逆变

换后得到想要的图像。本实验,对这些滤波器都进行了设计,处理结果如下图:

算法描述

1读取RGB图像,并获得其某个波段。

2调用ft2对某波段进行傅里叶变换,川 fftshift频移函数,使得图像的低频部分

移动到频谱的中心。

3设置低通高通滤波器,对频谱图像进行滤波处理,去除其高频或低频部分

4.用if对频谱图像进行逆傅里叶变换,得到滤波后的图像。

5.对图像进行归一化,使像素值在0-255之间。

6. imshow显小频谱图像和滤波后的图像。

、 Matlab源代码

1理想低通滤波源代码

clear all

a=imread(2. jpg);

[X,Y,Z]size(a)

al=a(: : 1); bl= fft2(aD)

b2-fishil(b1)

F-abs(b2):

h=zeros(X, Y);

cutoff=0.7: threshold=1-cutoff

lowx=round(X 2-threshold*X/2)

upx=round(X /2+threshold X/2)

lowy=round(Y/2-threshold=Y/ 2)

upy=round(Y/2threshold*Y/ 2)

h(lowx upx, lowy: upy)=1;

lowpass=b2. h

do=ifft(lowpass );

result=abs(do)

result=uint8(result);

Fl=loglo(reshape(F, XY,1)

F2=uint8(((F1-min(F1)/(max(F1)-min(F1)))*255 )

F3=reshapeF2,X, Y);

subplot(1,3,1), imshow(F3), lille(Fig.1傅旦叶频谱)

subplot(1,3,2), imshow(h), title('Fig.2珥想低通滤波器);

subplot1,3,3), ashow( result) title((Fig.3,理想低通滤波结果);

2.巴特沃斯低通滤波代码:

clear all

a=imread( 2. jpg);

IX,Y, zI-size(a)

al-a(:;,1),b1=ft2(a1)

b2=fftshift(b1)

F=abs(b2

h=∠eros(X,Y);

lowpass zeros(X,Y)

nl=round(X/2)

n2=round(Y/2)

dmax=sqrt(n1 2+n2 2)

cutoff-0.7; d0=(l-cutoff)*dmax

for x=l x

or y

d=sqrt(x-nl)^2-(y-n2)^2);

h(x,y)=1/(1+(dd0^(2*n)

owpass(x, y)=b2(x, y). h(x,y)

Ip=ifft(lowpass);

result=abs(p:

result=uint&(result);

F1-log10(reshape (F, X*Y, 1));

F2-uint8(((F1- min(F1))(max(F1)-min (F1)*255)

F3=reshapeF2,X,Y);

subplot(1,3,1), imshow(F3), title(Fig.,傅旦叶频谱);

subplot(1,3,2), imshow(h), title(Fig2巴特沃斯低通滤波器);

subplot(13,3), ashow( result),te'ig3巴特沃斯低通滤波结果)

3指数低通滤波的主要代码:

for x=l: X

y=1:Y

d=sqr(xn1)^2-(y-n2)^2);

h(x,y)=|/(+exp(-(dd0)^(-n);

lowpass(x,y)=b2(x, y). h(x,y)

4.指数高通滤波的主要代码:

for x=l: X

for y=I: Y

d=sqrt(x-nl)^2-(y-n2)^2);

h(x, y=1/(1+exp(-(d/do)"(n))

lowpass(x, y)=b2(x,y).h(x,y)

d

四、运行结果

h1傅里叶掀谱

图1:傅里叶频谱

Fig2低通滤器

「ig3傅叶低诵漓波结果

图2:理想低通滤波器

图3:傅里叶低通滤波结果

ng2高通派波器

Fig3傅里叶高通滤波结果

图4:理想高通滤波器

图5:傅里叶高通滤波结果

Fig2巳沃斯低通滤波器

Fug3巴特斯低迫迥结朱

图6:巴特沃斯低通滤波器

图7:巴特沃斯低通滤波结果

hg2巴特沃圩高通滤波器

Fig3巴特沃斯高通滤)果

图8:巴特沃斯高通滤波器

图9:巴特沃斯高通滤波结果

c2指数高通滤波答

ˉg3指数高通滤结果

WER

图10:指数高通滤波器

图11:指数高通滤波结果

【实例截图】

【核心代码】

你可能感兴趣的:(matlab遥感代码)