第一篇:数字图像处理上机实验(02091008)
数字图像处理上机作业
数字图像处理上机作业
1.产生右图所示亮块图像 f1(x,y)(128×128大小,暗处=0,亮处=255),对其进行FFT:
(1)同屏显示原图f1和FFT(f1)的幅度谱图;
图像:
(2)若令f2(x,y)=(-1)f1(x,y),重复以上过程,比较二者幅度谱的异同,简述理由;(3)若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较。
x+y
结论:不同点:f2的频谱是对f1频谱的移位,它时f1的频谱从原点(0,0)移到了中心(64,64),而得到了一个完整的频谱。
相同点:频谱的实质没有改变,幅度等都没有发生变化。
(3)若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较。
源程序:f1=zeros(128,128);for i=38:1:90 for j=58:1:70 f1(i,j)=255;end end figure(1)subplot(1,2,1);imshow(f1);subplot(1,2,2);imshow(fft2(f1));% f2(x,y)=(-1)^(x+y)* f1(x,y)for i=1:1:128 for j=1:1:128 f2(i,j)=(-1)^(i+j)*f1(i,j);end end figure(2);subplot(1,3,1);imshow(f2);f3=imrotate(f2,-45,'bilinear');%将f2顺时针旋转45度 subplot(1,3,2);imshow(fft2(f2));%显示f2的频谱 subplot(1,3,3);imshow(fft2(f3));%显示f3的频谱
结论:均衡化后的直方图并非完全均匀分布的原因:因为图像的像素个数和灰度等级均为离散值,而且均衡化后使灰度级并归。
2.对256256大小、256级灰度的数字图像lena进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
源代码: figure(1);fid=fopen('d:imglena.img','r');data=(fread(fid,[256,256],'uint8'))';subplot(2,2,1)imagesc(data);colormap(gray);title('LENA','Color','r');subplot(2,2,2);imshow(fft2(data));s=fftshift(fft2(data));[M,N]=size(s);%分别返回s的行数到M中,列数到N中 n=2;%对n赋初值 %GLPF滤波,d0=5,15,30(程序中以d0=30为例)d0=30;%初始化d0 n1=floor(M/2);%对M/2进行取整 n2=floor(N/2);%对N/2进行取整 for i=1:M for j=1:N d=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离 h=1*exp(-1/2*(d^2/d0^2));%GLPF滤波函数
s(i,j)=h*s(i,j);%GLPF滤波后的频域表示 end end s=ifftshift(s);%对s进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数 s=uint8(real(ifft2(s)));subplot(2,2,3);%创建图形图像对象 imshow(s);p=fftshift(fft2(data));[M,N]=size(p);%分别返回p的行数到M中,列数到N中 n=2;%对n赋初值 %GLPF滤波d1=30 d1=30;%初始化d1 n3=floor(M/2);%对M/2进行取整 n4=floor(N/2);%对N/2进行取整 for i=1:M for j=1:N dd=sqrt((i-n3)^2+(j-n4)^2);%点(i,j)到傅立叶变换中心的距离 h1=1-exp(-1/2*(dd^2/d1^2));%GHPF滤波函数
p(i,j)=h1*p(i,j);%GHPF滤波后的频域表示 end end p=ifftshift(p);%对p进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数 p=uint8(real(ifft2(p)));subplot(2,2,4);%创建图形图像对象 imshow(p);
3.对给定的两种128128、256级灰度的数字图像(图像磁盘文件名分别为Fing_128.img(指纹图)和Cell_128.img(显微医学图像)进行如下处理:
(1)对原图像进行直方图均衡化处理,同屏显示处理前后图像及其直方图,比较异同,并回答为什么数字图像均衡化后其直方图并非完全均匀分布。
异同:由于原图像中目标物的灰度主要集中于低亮度部分,而且象素总数比较多,经过直方图均衡后,目标物的所占的灰度等级得到扩展,对比度加强,使整个图像得到增强。
数字图像均衡化后其直方图并非完全均匀分布的原因:由于原图像中目标物的灰度主要集中于低亮度部分,而且象素总数比较少,而所占的灰度等级比较多,因此图像的对比度比较好,亮度比较大,整体图像清晰。经过直方图均衡后,目标物的所占的灰度等级被压缩,对比度减弱,反而使目标物变的难以辨认。
数字图像均衡化后,其直方图并非完全均匀分布,这是因为图像的象素个数和灰度等级均为离散值;而且均衡化使灰度级并归,因此,均衡化后,其直方图并非完全均匀分布。
源代码: figure(1);fid=fopen('D:imgcell_128.img','r');
%打开无格式文件 data1=(fread(fid,[128,128],'uint8'))';%将打开的文件读入到data1 subplot(4,2,1);
%将figure(1)分成4*2的8个子窗口, data11=uint8(data1);imshow(data11);%图象显示
title('CELL','Color','b');
%加标题 subplot(4,2,2);title('原图像直方图');imhist(data11);subplot(4,2,3);
%取第二个子窗口
data2=uint8(data1);%将灰度图象转换成uint8格式 b=histeq(data2);
%直方图均衡化
imshow(b,256);
%显示均衡化图象,256可缺省 title('均衡化','Color','b');
subplot(4,2,4);imhist(b);title('均衡化后图像直方图');subplot(4,2,5)fid=fopen('d:imgfing_128.img','r');%打开无格式文件
data3=(fread(fid,[128,128],'uint8'))';%将打开的文件读入到data3 data31=uint8(data3);
%将灰度图象转换成uint8格式 imshow(data31);
%显示灰度图象 title('FING','Color','b');subplot(4,2,6)imhist(data31);title('原图像直方图');subplot(4,2,7);
data4=uint8(data3);%将灰度图象转换成uint8格式 d=histeq(data4);
%直方图均衡化
imshow(d,256);
%显示均衡化图象,256可缺省 title('均衡化','Color','b');
subplot(4,2,8);imhist(d);title('均衡化后原图像直方图');(2)对原图像加入高斯噪声,用4-邻域平均法平滑加噪声图像(图像四周边界不处理,下同),同屏显示原图像、加噪图像和处理后的图像。
① 不加门限;
② 加门限 T2f(m,n),(其中f(m,n)
1N2f(i,j))
ij
源代码: % CELL figure(2);fid=fopen('D:imgcell_128.img','r');
%打开无格式文件
data1=(fread(fid,[128,128],'uint8'))';%将打开的文件读入到data1 I=uint8(data1);I1=imnoise(I,'gaussian');%加乘性噪声 H1=[0 1 0;1 0 1;0 1 0]/4;%4×4领域模板 J=imfilter(I,H1);%领域平均
subplot(2,4,1),imshow(I);%显示图像I title('原图像');subplot(2,4,2),imshow(I1);title('加噪声后图像');subplot(2,4,3),imshow(J);
%不加门限平滑 title('不加门限平滑后图像');%加门限后滤波
T= 2*sum(I1(:))/128^2;im_T = zeros(128,128);for i = 1:128
for j = 1:128
if abs(I1(i,j)J(i,j))>T
im_T(i,j)= J(i,j);
else
im_T(i,j)= I1(i,j);
end
end end subplot(2,4,8);imshow(im_T);title('加门限后');4.(1)用Laplacian锐化算子(分1和2两种情况)对256256大小、256级灰度的数字图像lena进行锐化处理,显示处理前、后图像。
源代码:
%laplacian算子锐化
I=imread('D:imgLENA256.bmp');% 读入原图像 figure(1);subplot(1,3,1);imshow(I);title('原始图像');L=fspecial('laplacian');L1=[0-1 0;-1 5-1;0-1 0];L2=[0-2 0;-2 9-2;0-2 0];LP1=imfilter(I,L1,'replicate');% α=1时的拉普拉斯算子 LP2=imfilter(I,L2,'replicate');% α=2时的拉普拉斯算子
subplot(1,3,2);imshow(LP1);title('Laplacian算子α=1锐化图像');subplot(1,3,3);imshow(LP2);title('Laplacian算子α=2锐化图像');
(2)若令
g1(m,n)f(m,n)2f,g2(m,n)4f(m,n)[f(m1,n)f(m1,n)f(m,n1)f(m,n1)
f(m,n1)f(m,n1)]
则回答如下问题:
① f(m,n)、g1(m,n)和g2(m,n)之间有何关系? ② g2(m,n)代表图像中的哪些信息? ③ 由此得出图像锐化的实质是什么?
①因为g2(m,n)2f(m,n),所以f(m,n)、g1(m,n)和g2(m,n)之间有以下关系:
g1(m,n)f(m,n)g2(m,n)
②g2(m,n)代表了原图像中的二阶梯度信息;g1(m,n)是边缘增强后的数字图像; ③由此可以得出:图像锐化的实质是将原图像与梯度信息叠加(梯度信息所占的比例由,相当于对目标物的边缘进行了增强。的大小决定,值越大则梯度信息所占的比例越大)
5.分别利用Roberts、Prewitt和Sobel边缘检测算子,对256256大小、256级灰度的数字图像lena进行边缘检测,显示处理前、后图像。图像:
源代码:
I=imread('D:imgLENA256.bmp');% 读入原图像 figure(1)%Roberts梯度法锐化
subplot(2,2,1);imshow(I);title('原始图像');J=double(I);[IX,IY]=gradient(J);%计算梯度 A=sqrt(IX.*IX+IY.*IY);subplot(2,2,2);imshow(A,[]);title('Roberts梯度法锐化图像');%Prewitt算子锐化
S=imfilter(I,fspecial('Prewitt'));subplot(2,2,3);imshow(S);title('Prewitt算子锐化图像');%Sobel算子锐化
S=imfilter(I,fspecial('sobel'));subplot(2,2,4);imshow(S);title('Sobel算子锐化图像');
6、学习数字图像处理课程的心得体会,该课程在哪些方面需要改进,对该课程或者任课老师有哪些意见或建议。
通过对数字图像处理课程的认真学习,在课堂听课和课余实践中了解了数字图像的基础知识,培养了一定的软件编程能力,在努力完成课堂作业的同时,发现了对图像方面的兴趣。老师认真负责,布置合理的作业。但希望能够通过更加丰富的授课方式,提高更多人学习该门课程的兴趣和主动性。也同样希望老师能够加强点名和作业的验收,督促学生更加认真的学习知识。
第二篇:数字图像处理上机报告
练习一 常用MATLAB图像处理命令
一、练习目的
1、熟悉并掌握MATLAB工具的使用;
2、实现图像的读取、显示、代数运算和简单变换。
二、练习环境
Windows操作系统
Matlab 6.5或以上应用软件
三、练习内容
1、图像文件的读写
(1)imread函数用来实现图像文件的读取。输入以下程序:
A=imread('文件名.扩展名');%用imread函数来读入图像 注:设置路径 imshow(A);%用imshow函数来显示图像 得到的结果如图:
(2)imfinfo函数用来查询图像文件信息。输入以下程序:
info=imfinfo('文件名.扩展名');% 用imfinfo函数查询图像文件信息 得到: info =
Filename: '文件名.扩展名'
(4)imshow函数用来显示图像。
刚才介绍imread函数时已使用此函数。
(5)colorbar函数将颜色条添加到坐标轴对象中。输入以下程序:
RGB=imread('***');%图像读入
I=rgb2gray(RGB);%把RGB图像转换成灰度图像
imshow(I),colorbar('vert')% 将颜色条添加到坐标轴对象中
得到如图:
2、图像处理的基本操作
一、图像代数运算
(1)imadd函数实现两幅图像的相加或者给一幅图像加上一个常数。给图像每个像素都增加亮度的程序如下: I=imread('***');J=imadd(I,100);%给图像增加亮度 subplot(1,2,1),imshow(I)%填充 subplot(1,2,2),imshow(J)结果如图5。
(2)imsubtract函数实现从一幅图像中减去一个常数。输入以下程序实现从一幅图像中减去一个常数:
(3)immultiply实现两幅图像的相乘或者一幅图像的亮度缩放(图像乘以小于1或大于1的参数,比较效果)。输入以下程序:
(4)imdivide函数实现两幅图像的除法或一幅图像的亮度缩放。输入以下程序:
二、图像的空间域操作
(1)imrotate函数实现图像的旋转。输入以下程序: I=imread('***');J=imrotate(I,45);%对图像进行旋转 subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);得到图:
练习二 数字图像处理的基本操作
一、练习目的
1、练习使用MATLAB工具进行数字图像处理;
2、实现图像的边缘提取、滤波、直方图修正等操作。
二、练习环境
Windows操作系统
Matlab 6.5或以上应用软件
三、练习内容
(1)imresize函数实现图像的缩放。输入以下程序:
J=imread('文件名.扩展名');X1=imresize(J,2);%对图像进行缩放 figure,imshow(J)结果如图
(2)imcrop函数实现图像的剪切。输入以下程序: I=imread('***');I2=imcrop(I);%对图像进行剪切 subplot(填充),imshow(填充);subplot(填充),imshow(填充);如图:
图像变换
(1)fft2函数和ifft2函数分别是计算二维的FFT和反变换。输入以下程序: f=zeros(100,100);f(20:70,40:60)=1;imshow(f);F=fft2(f);% 计算二维的FFT F2=log(abs(F));%对幅值取对数 imshow(F2),colorbar
(2)dct2函数采用基于FFT的算法,用于实现较大输入矩阵的离散余弦变换。与之对应,idct2函数实现图像的二维逆离散余弦变换 输入以下程序: RGB=imread('***');I=rgb2gray(RGB);J=dct2(I);% 对I进行离散余弦变换 imshow(log(abs(J))),colorbar J(abs(J)<10)=0;K=idct2(J);% 图像的二维逆离散余弦变换 figure,imshow(I);figure,imshow(K,[0,255])得到如图:
(3)edge函数用于提取图像的边缘。输入以下程序:
RGB=imread('drum.bmp');I=rgb2gray(RGB);BW=edge(I);% 提取图像的边缘 imshow(I),figure,imshow(BW);得到图
图像增强、分割和编码
(1)imhist函数产生图像的直方图。A=imread('drum.bmp');%读入图像
B=rgb2gray(A);%把RGB图像转化成灰度图像 imshow(B);%显示灰度图像
imhist(B)%显示灰度图像的直方图 得到图
(2)histeq函数用于对图像的直方图均衡化。接上面程序:
C=histeq(B);%对图像B进行均衡化 imshow(C);%显示图像
imhist(C);%得到均衡化后的灰度直方图 得到如图
filter2函数实现均值滤波。输入以下程序:
a=imread('noise.drum.jpg');I=rgb2gray(a);imshow(I);K1=filter2(fspecial('average',3),I)/255;% 33的均值滤波 K2=补充;
% 55的均值滤波 K3=补充;
% 77的均值滤波 figure,imshow(K1);figure,imshow(K2);figure,imshow(K3);得到图
(5)medfilt2函数实现中值滤波。输入以下程序:
自查函数如何使用,并编程: 结果如图:
练习三
图像采样及图像类型转换
一、练习目的
1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、试对自选图像分别进行4和16倍剪采样,查看其剪采样效果
3、将所给图,转换成256级灰度图像,8级灰度图像和2值图像
二、练习环境
MATLAB 6.5或以上版本、WIN XP或以上计算机
三、练习内容
使用MATLAB,对图像进行减采样。
a = imread('***.JPG');b = rgb2gray(a);[wid,hei]=size(b);%4倍减抽样
quartimg = zeros(wid/2+1,hei/2+1);i1 = 1;j1 = 1;for i=1:2:wid
for j=1:2:hei
quartimg(i1,j1)= b(i,j);
j1 = j1 + 1;
end i1 = i1 + 1;j1 = 1;end figure
imshow(uint8(quartimg))练习结果如图
%16倍减抽样
编程并运行显示图像结果:
图像类型
1、练习内容
试将自选图,转换成256级灰度图像,8级灰度图像和2值图像
2、练习方法及程序
使用MATLAB,进行图像类型变换。
a = imread('***.jpg');b = rgb2gray(a);
figure imshow(b)[wid,hei]=size(b);img8 = zeros(wid,hei);img2 = zeros(wid,hei);for i=1:wid
for j=1:hei
img8(i,j)= floor(b(i,j)/32);%得到8级灰度图像
end end figure
imshow(uint8(img8),[0,7])for i=1:wid
for j=1:hei
补充;end end figure
imshow(uint8(img8),[0,2])%得到2值图像
练习结果如图
练习四
数字图像的空间域处理
一、练习目的
1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、熟悉图像相加的方法及效果
3、熟悉图像灰度扩展的方法及效果
4、熟悉图像缩放、旋转的方法及效果
二、练习环境
MATLAB 6.5或以上版本、WIN XP或以上计算机
三、练习内容 Part 1(1)选择一幅图像***.jpg,设置输入输出变换的灰度级范围,a=0.3, b=0.6, c=0.1, d=0.9;
(2)设置非线性扩展函数的参数c=2;
(3)采用灰度倒置变换函数s=255-r进行图像变换;
(4)设置二值化图像的阈值,分别为level=0.4,level=0.7参考程序如下: I=imread('***.jpg');figure;subplot(1,3,1);imshow(I);title('原图');J=imadjust(I,[0.3;0.6],[0.1;0.9]);%设置灰度变换的范围 subplot(1,3,2);imshow(J);title('线性扩展');I1=double(I);%将图像转换为double类型 I2=I1/255;%归一化此图像 C=2;K=C*log(1+I2);%求图像的对数变换 subplot(1,3,3);imshow(K);title('非线性扩展');M=255-I;%将此图像取反 figure;subplot(1,3,1);imshow(M);title('灰度倒置');N1=im2bw(I,0.4);%将此图像二值化,阈值为0.4 N2=im2bw(I,0.7);%将此图像二值化,阈值为0.7 subplot(1,3,2);imshow(N1);title('二值化阈值0.4');subplot(1,3,3);imshow(N2);title('二值化阈值0.7');练习结果与分析
(1)练习结果如图3.7所示。
Part 2 读取一幅图片,如***.jpg,设置图像旋转的角度分别为450和900,采用图形旋转函数imrotate对图像进行旋转。程序如下,结果如图3.10。
I=imread('i_lena.jpg');J=imrotate(I,45);%图像进行逆时针旋转,默认采用最近邻法进行插值处理 K=imrotate(I,90);%默认旋转出界的部分不被截出 subplot(1,3,1);imshow(I);subplot(1,3,2);imshow(J);subplot(1,3,3);imshow(K);练习结果与分析
(1)练习结果如图3.10所示。
练习五 数字图像的频域处理
一、练习目的
1、熟悉并掌握MATLAB工具的使用;
2、实现图像离散傅里叶变换并观察效果
3、实现图像离散余弦变换并观察效果
二、练习环境
Windows操作系统 Matlab 6.5或以上应用软件
三、练习内容 Part 1 选取一幅图像,进行离散傅里叶变换,再对其分别进行X轴与Y轴上的平移,得其离散傅里叶变换,观察三幅结果图。
I=imread('1.bmp');figure(1)imshow(real(I));I=I(:,:,3);fftI=fft2(I);sfftI=fftshift(fftI);%求离散傅里叶频谱
%对原始图像进行二维傅里叶变换,并将其坐标原点移到频谱图中央位置
RRfdp1=real(sfftI);IIfdp1=imag(sfftI);a=sqrt(RRfdp1.^2+IIfdp1.^2);a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;
figure(2)imshow(real(a));练习结果与分析
Part 2 选取一幅图像,进行离散傅里叶变换,再对其进行一定角度的旋转,进行离散傅里叶变换。
%构造原始图像
I = zeros(256,256);
I(88:168,124:132)= 1;%图像范围是256*256,前一值是纵向比,后一值是横向比 imshow(I)
%求原始图像的傅里叶频谱
J = fft2(I);F = abs(J);J1 = fftshift(F);figure imshow(J1,[5 50])
%对原始图像进行旋转
J = imrotate(I,90,'bilinear','crop');figure imshow(J)%求旋转后图像的傅里叶频谱
J1 = fft2(J);F = abs(J1);J2 = fftshift(F);figure imshow(J2,[5 50])练习结果与分析
1)练习结果如图4.4所示.Part 3 选取一幅图像,进行离散余弦变换,并对其进行离散余弦反变换,观察其结果。
%对***.jpg文件计算二维DCT变换 RGB = imread('***.jpg ');figure(1)imshow(RGB)I = rgb2gray(RGB);%真彩色图像转换成灰度图像 J = dct2(I);%计算二维DCT变换 figure(2)imshow(log(abs(J)),[])%图像大部分能量集中在上左角处 figure(3);J(abs(J)< 10)= 0;%把变换矩阵中小于10的值置换为0,然后用idct2重构图像 K = idct2(J)/255;imshow(K)练习结果与分析
第三篇:数字图像处理上机作业
数字图像处理上机实验题
一、产生右图所示图像 f1(m,n),其中图像大小为256×256,中间亮条为128×32,暗处=0,亮处=100。对其进行 FFT:
1、屏显示原图 f1(m,n)和FFT(f1)的幅度谱图;
2、令f2(m,n)=(-1)^(m+n)*f1(m,n),重复以上过程,比较二者幅度谱的异同,简述理由;
3、若将f2(m,n)顺时针旋转 90 度得到f3(m,n),试显示 FFT(f3)的幅度谱,并与 FFT(f2)的幅度谱进行比较;
4、若将f1(m,n)顺时针旋转 90 度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),试显示 FFT(f5)的幅度谱,并指出其与 FFT(f1)和FFT(f4)的关系;
5、若令f6(m,n)=f2(m,n)+f3(m,n),试显示 FFT(f6)的幅度谱,并指出其与 FFT(f 2)和FFT(f3)的关系,比较 FFT(f6)和FFT(f5)的幅度谱。
代码
f1=zeros(256,256);
for i =64:1:191 for j = 112:1:143 f1(i,j)= 100;
end
end
f2 = fft2(f1);
%f2(m,n)= f3
f3 =((-1)^(i+j))*f1;f4 = fft2(f3);
%f3(m,n)= f5
f5 = imrotate(f3,90,'bilinear');f6 = fft2(f5);
%f4(m,n)= f7
f7 = imrotate(f1,90,'bilinear');f8 = fft2(f7);
%f5(m,n)= f8 f9 = f1 + f7;f10 = fft2(f9);
%f6(m,n)= f2(m,n)+f3(m,n)f11 = f3 + f5;f12 = fft2(f11);
figure(1)subplot(1,2,1);imshow(abs(f1));title('原图f1');subplot(1,2,2);imshow(abs(f2));title('幅度谱fft2(f1)');figure(2)subplot(2,2,1)imshow(abs(f1));title('原图f1')subplot(2,2,2)imshow(abs(f2));title('幅度谱fft2(f1)');subplot(2,2,3);imshow(abs(f3))title('变换谱f2');subplot(2,2,4);imshow(abs(f4));title('幅度谱fft2(f2)');figure(3)subplot(2,2,1)imshow(abs(f3))title('变换谱f2');subplot(2,2,2);imshow(abs(f4));title('幅度谱fft2(f2)');subplot(2,2,3);imshow(abs(f5))title('变换谱f3');subplot(2,2,4);imshow(abs(f6));title('幅度谱fft2(f3)');figure(4)subplot(3,2,1);imshow(f7);
title('f1旋转图f4');subplot(3,2,2);imshow(abs(f8));title('幅度谱fft2(f4)');subplot(3,2,3);imshow(f9);
title('f5(m,n)=f1+f4');subplot(3,2,4);imshow(abs(f10));title('幅度谱fft2(f5)');subplot(3,2,5)imshow(abs(f1));title('原图f1');subplot(3,2,6);imshow(abs(f2));title('幅度谱fft2(f1)');figure(5)subplot(3,2,1)imshow(abs(f3))title('变换谱f2');subplot(3,2,2);imshow(abs(f4));title('幅度谱fft2(f2)');subplot(3,2,3);imshow(abs(f5))title('变换谱f3');subplot(3,2,4);imshow(abs(f6));title('幅度谱fft2(f3)');subplot(3,2,5)imshow(abs(f11))title('变换谱f6=f2+f3');subplot(3,2,6);imshow(abs(f12));title('幅度谱fft2(f6)');
figure(6)subplot(2,2,1);imshow(f9);
title('f5(m,n)=f1+f4');subplot(2,2,2);imshow(abs(f10));title('幅度谱fft2(f5)');subplot(2,2,3)imshow(abs(f11))
title('变换谱f6(m,n)=f2+f3');subplot(2,2,4);imshow(abs(f12));title('幅度谱fft2(f6)');
结果
分析
2、F2(m,n)与F1(m,n)幅度值相同,f2(m,n)=(-1)^(m+n)*f1(m,n)中,并未改变幅值。
3、FFT(f2)比FFT(f3)幅值大。
4、f5=f1+f4,即幅值相加。
5、f6=f2+f3,即幅值相加。
二、产生教材 104 页题图 4.18(右图)所示的二值图像(白为1,黑为0),编程实现习题4.18 所要求的处理(3*3 的平均滤波和中值滤波)功能(图像四周边界不考虑,处理结果按四舍五入仍取(0或1),显示处理前后的图像,比较其异同。
代码
I=[ 1,0,1,0,1,0,1,0;0,1,0,1,0,1,0,1;1,0,1,0,1,0,1,0;0,1,0,1,0,1,0,1;1,0,1,0,1,0,1,0;0,1,0,1,0,1,0,1;1,0,1,0,1,0,1,0;0,1,0,1,0,1,0,1;];J=imhist(I,2);
K=filter2(fspecial('average',3),I);K1=round(K);J1=imhist(K1,2);K2=medfilt2(I);J2=imhist(K2,2);
figure(1)subplot(2,2,1)imshow(I);title('原图像');subplot(2,2,2)imshow(J);
title('原图像直方图');subplot(2,2,3)imshow(K1);
title('3*3领域平均');subplot(2,2,4)imshow(J1);
title('领域平均图像直方图')figure(2)subplot(2,2,1)imshow(I);title('原图像');subplot(2,2,2)imshow(J);
title('原图像直方图');subplot(2,2,3)imshow(K2);title('中值滤波');subplot(2,2,4)imshow(J2);
title('中值滤波图像直方图')
结果
三、产生教材 104 页题图 4.16 所示的灰度图像(白为255,黑为0),分别加入高斯白噪声和椒盐噪声,再分别进行 3´ 3 的平均滤波和中值滤波,显示原图像、加噪图像和滤波结果图像,并比较四种滤波结果。
代码
f=zeros(256,256);for i =23:1:23
3for j=28:1:35 f(i,j)=255;
end
for j=52:1:59 f(i,j)=255;
end
for j=76:1:83 f(i,j)=255;
end
for j=100:1:107 f(i,j)=255;
end
for j=124:1:131 f(i,j)=255;
end
for j=148:1:155 f(i,j)=255;
end
for j=172:1:179 f(i,j)=255;
end
for j=196:1:203 f(i,j)=255;
end
for j=220:1:227 f(i,j)=255;
end end
g=imnoise(f,'gaussian',0.2);s=imnoise(f,'salt & pepper',0.2);k1=filter2(fspecial('average',3),g);G1=round(k1);G2=medfilt2(g);
k2=filter2(fspecial('average',3),s);S1=round(k2);S2=medfilt2(s);
figure(1)imshow(f)
title('Ô-ʼͼÏñ');figure(2)subplot(3,2,1)imshow(g)
title('¸ß˹ͼÏñ');subplot(3,2,2)imshow(s)
title('½·ÑÎͼÏñ');subplot(3,2,3)imshow(G1)
title('ƽ¾ùÂ˲¨¸ß˹ͼÏñ');subplot(3,2,5)imshow(G2)
title('ÖÐÖµÂ˲¨¸ß˹ͼÏñ');subplot(3,2,4)imshow(S1)
title('ƽ¾ùÂ˲¨½·ÑÎͼÏñ');subplot(3,2,6)imshow(S2)
title('ÖÐÖµÂ˲¨½·ÑÎͼÏñ');
结果
四、对某一灰度图像,进行如下处理:
(1)分别利用 Roberts、Prewitt和Sobel 边缘检测算子进行边缘检测;
(2)将Roberts、Prewitt和Sobel 边缘检测算子修改为锐化算子,对原图像进行锐化,同屏显示原图像、边缘检测结果和锐化后图像,说明三者之间的关系。
代码
f1=imread('C:UsershpPictures1.jpg');f2=rgb2gray(f1);k1=edge(f2,'Roberts');k2=edge(f2,'Prewitt');k3=edge(f2,'Sobel');
k4=filter2(fspecial('Prewitt'),f2);k5=filter2(fspecial('Prewitt'),f2);k6=filter2(fspecial('Sobel'),f2);
figure(1)subplot(4,2,1)imshow(f1);title('yuanshi');subplot(4,2,2)imshow(f2);title('huidu');subplot(4,2,3)imshow(k1);title('Roberts');subplot(4,2,5)imshow(k2);title('Prewitt');subplot(4,2,7)imshow(k3);title('Sobel');subplot(4,2,4)imshow(k4);title('log');subplot(4,2,6)imshow(k5);title('Prewitt');subplot(4,2,8)imshow(k6);title('Sobel');
结果
二值化。
五、编程实现教材 214 页所给图像门限化分割的迭代阈值算法,实现对某一灰度图像的代码
f1=imread('C:UsershpPictures11.jpg');f2=rgb2gray(f1);f3=f2;
zm=max(f2(:));zi=min(f2(:));k=2;
T(k)=(zm+zi)/2;while T(k)~=T(k-1);r1=find(f2<=T(k));r2=find(f2>T(k));k=k+1;
T(k)=(mean(f2(r1))+mean(f2(r2)))/2;end
r3=find(f3<=T(k));r4=find(f3>T(k));f3(r3)=0;f3(r4)=255;
figure(1)subplot(221)imshow(f1)title('原始图像');subplot(222)imshow(f2)title('灰度图像');subplot(223)imshow(f3)
title('迭代阈值算法二值化');
结果
心得体会
通过此次作业让我明白了很多,实际操作起来往往比理论所想的要复杂很多。当然,在课设的进行过程中,我还是遇到了不少问题。例如,起初由于我对句柄使用以及一些函数使用的不恰当。随着课设的进行,对matlab的的熟悉度逐步加深。
总体来说,此次的课程设计,还是较为满意的。它不但鞭策着我去巩固matlab的基础理论知识,还提高了我对matlab的实际操作运用,使得理论与实践相结合,为进一步学习matlab打下坚实的基础;同时,在实践的工程中,也让我体会到一种努力付出并得到回报的满足感觉。
第四篇:《数字图像处理》实验教案
数 字 图 像 处 理
实 验 指 导 书
信息科学与工程学院电子系
二○○六年
前
言
数字图像处理是研究数字图像处理的基本理论、方法及其在智能化检测中应用的学科,是电子信息类本科专业的专业课。
本课程侧重于数字图像的基本处理,并对图像分析的基本理论和实际应用进行系统介绍;目的是使学生系统掌握数字图像处理的基本概念、原理和实现方法,学习图像分析的基本理论、典型方法和实用技术,具备解决通信领域的图像相关问题的初步能力,为今后的研究与开发打下扎实的基础。
目
录
实验一 常用的图像文件格式与格式转换和图像矩阵的显示方实验二 实验三
法 …………………………………………………………2
傅立叶变换……………………………………………………4 图像增强及编程处理…………………………………………5
实验一 常用的图像文件格式与格式转换和图像矩阵的显示方法
1. 实验目的
熟悉Matlab语言的初步使用;
熟悉常用的图像文件格式与格式转换;
熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色); 熟悉图像矩阵的格式转换 2. 实验内容
练习图像读写命令imread和imwrite并进行图像文件格式间的转换。特别是索引图像与1,4,8,16比特图像的存储与转换。
熟悉下列模块函数 Image file I/O.imread
-Read image file.imwrite
Create and display image
imagesc
Make movie from multiframe indexed image.imshow
-Display image.subimage
-Display multiple images in single figure.truesize
-Adjust display size of image.warp
-Display image as texture-mapped surface.zoom
-Zoom in and out of image or 2-D plot.3. 实验步骤
a.Load cameraman.tif image from your hard disk(using function imread).b.Show the image in a figure window(using function image or imshow).c.Draw a brightness bar on the right side of the image(using function colorbar).d.Get image data from the current figure(axes)(using function getimage).e.Show the gray level of the image between 64 to 128(using function imagesc).f.Make a movie from a 4-D image(load mri, make the movie by immovie, then show movie by function movie).object.g.Draw the cameraman image on a cylinder(using function warp).Question: how to show the cameraman like this
Requirement: write a report to do the experiment from a to g.实验二
傅立叶变换
1.实验目的
熟悉傅立叶变换的概念和原理; 理解Fourier变换的意义。
2.实验内容
用Fourier变换算法对图像进行Fourier变换; 评价人眼对图像幅频特性和相频特性的敏感度。
3.实验步骤
<1>产生如图所示图像f1(x,y)(128×128 大小,暗处=0,亮处=255),用MATLAB中的fft2函数对其进行FFT;
<2>同屏显示原图f1和FFT(f1)的幅度谱图;
<3>若令f2(x,y)=(-1)
xy f1(x,y),重复以上过程,比较两幅图像的幅度谱的异同,简述理由;
<4>若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;
<5>评价人眼对图像幅频特性和相频特性的敏感度。
4.实验报告
<1>简述实验目的及原理;
<2>给出实验代码,并加以注释; <3>对实验现象加以说明和讨论。
实验三
图像增强及编程处理
1. 实验目的
观察数字图像增强的效果; 熟悉数字图像增强的一般方法;
掌握数字图像增强的一般方法的Matlab编程实现。2. 实验内容
使用Photoshop观察数字图像增强的效果; 练习和掌握图像增强的Matlab编程。
熟悉下列模块函数 Image enhancement.histeq
Adust imae intensity values or colormap.Image noising.imnoise
-Add noise to an image.Image filtering
medfilt2
-Perform 2-D median filtering.ordfilt2
Perform 2-D adaptive noise-removal filtering.3. 实验步骤
<1> 使用Photoshop观察数字图像增强的效果 a.对比度增强
1)在Photoshop中打开一黑白灰度图像文件。
2)在图像菜单中选直方图项,观察原始图像的直方图。
3)在图像菜单调整子菜单中选亮度/对比度项,调节对比度滑块,观察图像变化。
4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。b.灰度变换
1)在Photoshop中打开一黑白灰度图像文件。
2)在图像菜单中选直方图项,观察原始图像的直方图。3)在图像菜单调整子菜单中选反相项,观察图像变化。
4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。5)画出灰度变换曲线。
6)在编辑菜单中选返回项,恢复原始图像。
7)在图像菜单调整子菜单中阈值项,调节阈值色阶滑块,观察图像变化。
8)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。9)画出灰度变换曲线。
c.直方图均衡化
1)在Photoshop中打开一黑白灰度图像文件。
2)在图像菜单中选直方图项,观察原始图像的直方图。3)在图像菜单调整子菜单中选色调均化项,观察图像变化。
4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。
d.图像平滑
1)在Photoshop中打开一黑白灰度图像文件。
2)在图像菜单中选直方图项,观察原始图像的直方图。
3)在滤镜菜单模糊子菜单中选进一步模糊项,观察图像变化。
4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。5)在编辑菜单中选返回项,恢复原始图像。
6)在滤镜菜单模糊子菜单中选高斯模糊项,观察图像变化。
7)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。8)在Matlab Help菜单中, 选Demos项。
9)打开ToolboxesImage Processing项,选Noise Reduction Filtering,并运行。
10)选图像Blood、噪声类型Salt & Pepper、滤波器类型Median、邻域3x3,比较原始图像、受噪声污染图像、滤波后图像。11)改变参数,重做(10)。
12)选其他图像,重做(10)-(11)。
13)思考何种滤波器对抑制何种类型噪声更有效,邻域大小对抑制噪声效果及图像模糊程度的影响。
<2> 图像增强的Matlab编程
a.Load cameraman.tif image from your hard disk(using function imread).b.Show the image in a figure window.c.Show the histogram of the image(using function imhist).d.Enhance the contrast of the image using histogram equalization.e.Show the histogram of the image after processing.f.Compare the qualities of two images and makes a discussion about them.g.Add noises, such as gaussian, salt&pepper, speckle noise into the image respectively.Compare with the influence of the different Means and Variance.h.Remove the added noise from the image by function medfilt2, ordfilt2 and wiener2 respectively.Compare the qualities of the original images with the processed images and discuss the effect of the methods.Requirement:
Write a report to do the experiment.Make sure the report includes the discussion about the experiment.If the report just is a copy from others, the report will have a zero mark.
第五篇:数字图像处理实验一
实验报告
一、实验原理
1.调用imread函数将图像文件读入图像数组(矩阵)
A=imread(filename,fmt)2.调用imwrite函数将图像文件写入图像数组(矩阵)
imwrite(a,filename,fmt)3.调用imshow函数显示图像
Imshow(I,N)
4.图像的灰度平均值。调用ave=mean2(I)计算图像的均值 5.协方差矩阵。调用Cfg=COV(f,g)计算图像f和图像g的协方差矩阵 图像的灰度标准差。调用SD=STD2(I)的灰度标准差 7.图像的相关系数。调用函数rfg=CORR2(f,g)计算大小相等的两幅图像f和g的相关系数
二、图像及统计数据
原图像的平均灰度值= 77.5170
灰度标准差= 44.2095 灰度图像的平均灰度值= 74.4516
灰度标准差=37.1236 反白图像的平均灰度值= 180.5484
灰度标准差= 37.1236 灰度图像和反白图像的相关系数是
三、程序
I=imread('football.jpg');subplot(2,2,1);imshow(I);J=rgb2gray(I);subplot(2,2,2);imshow(J);Ave=mean2(J)Ave =
74.4516 SD=std2(double(J))SD =
37.1236 s=size(J);all_white=255*ones(s(1),s(2));all_white_uint8=uint8(all_white);K=imsubtract(all_white_uint8,J);subplot(2,2,3);imshow(K);imwrite(K,'football_iverse.jpg');
四、思考题
1.图像统计特征让我们更加了解图像的变换,使图像处理更加方便 2.五、心得体会
这次试验,我学会了使用marlab中的图像处理工具箱中的函数,对每个图像处理函数的功能都有了深入的认识。同时,我掌握了MATLAB的基本应用方法,对图像文件的读/写的方法有了初步认识。总之这次试验让我对MATLAB的图像处理有了一点学习,为更好地学习数字图像处理打下了一定的基础。