【实例简介】
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:指数高通滤波结果
【实例截图】
【核心代码】