观察四种直方图的差别。
2)使用函数imread 打开一幅灰度图像(2_2.jpg),说明这幅图像直方图存在的问题。 使用函数histeq对图像进行直方图均衡,比较并记录均衡前后图像的变化
h=histeq(f, 256); figure, imshow(f); figure, imhist(f); figure, imshow(h); figure, imhist(h);
3)图像加法是把图像叠加在一起的操作,使用函数imadd将两幅图像相加。
clc;clear
f1=imread('rice.png'); %读入图像
f2=imread('cameraman.tif '); %读入图像 f3=imadd(f1,f2); figure,imshow(f3);
4)图像减法是从一幅图像中减去另一幅图像,经常被用作检测两幅图像的差别,使用函数imsubtract将两幅图像相减。下面的操作是根据一幅原始图像,生成其背景亮度图像,然后再从原图像中减去背景亮度图像,从而得到结果。
I=imread('cameraman.tif');
J=uint8(filter2(fspecial('gaussian'),I)); K=imsubtract(I,J);
subplot(121);imshow(I); subplot(122);imshow(J); figure;imshow(K,[])
5)图像间的逻辑运算主要有“与”、“或”、“非”等,把它们组合起来可以构成其他逻辑运算。
当我们对灰度级进行逻辑操作时,像素值作为一个二进制数来处理,逻辑操作按位进行。“与”和“或”运算通常用作模板,即通过这些操作可以从一幅图像中提取子图像,更加突出子图像的内容。下面的“与”和“或”运算通过逐点进行。 A=zeros(128);
A(40:67,60:100)=1; B=zeros(128); B(50:80,40:70)=1; C=and(A,B); D=or(A,B); E=not(B); F=xor(A,B);
subplot(231);imshow(A);title('A图') subplot(232);imshow(B);title('B图')
subplot(233);imshow(C);title('A和B相与图') subplot(234);imshow(D);title('A和B相或图') subplot(235);imshow(E);title('B取反图') subplot(236);imshow(F);title('A和B异或图')
实验三 图像增强——空域滤波
一、实验目的
进一步了解MatLab软件/语言,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。
了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
二、实验要求
应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。
三、实验内容与步骤
a) 调入并显示原始图像
b) 利用imnoise 命令在图像原始图像上加入高斯(gaussian) 噪声 c)利用预定义函数fspecial 命令产生平均(average)滤波器
??1?1?1???19?1? ?????1?1?1??d)采用3x3的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进
行处理并观察不同噪声水平下,上述滤波器处理的结果;
e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。
f)利用imnoise 命令在图像Sample2-1.jpg 上加入椒盐噪声(salt & pepper) g)重复c)~ e)的步骤
h)输出全部结果并进行讨论。
四、 思考题/问答题
(1) 简述高斯噪声和椒盐噪声的特点。
(2) 结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?
(3) 结合实验内容,定性评价滤波窗口对去噪效果的影响?
五、 实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像。
六、源程序
I=imread('electric.tif');
J = imnoise(I,'gauss',0.02); %添加高斯噪声 %J = imnoise(I,'salt & pepper',0.02); %添加椒盐噪声 ave1=fspecial('average',3); %产生3×3的均值模版
ave2=fspecial('average',5); %产生5×5的均值模版 K = filter2(ave1,J)/255; %均值滤波3×3 L = filter2(ave2,J)/255; %均值滤波5×5 M = medfilt2(J,[3 3]); %中值滤波3×3模板 N = medfilt2(J,[4 4]); %中值滤波4×4模板 imshow(I);
figure,imshow(J); figure,imshow(K); figure,imshow(L); figure,imshow(M); figure,imshow(N);
实验四 图像的傅立叶变换
一、实验目的
1、了解图像变换的意义和手段; 2、熟悉傅里叶变换的基本性质; 3、热练掌握FFT方法及应用;
4、通过实验了解二维频谱的分布特点;
5、通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换及滤波锐化和复原处理;
6 、了解理想、巴特沃兹、高斯等不同滤波器的结构及滤波效果。
二、实验原理
1应用傅立叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像处理技术的人来说,把时间用在学习和掌握博里叶变换上是很有必要的。
2傅立叶(Fourier)变换的定义
对于二维信号,二维Fourier变换定义为: F(u,v)?????????f(x,y)e?j2?(ux?vy)dxdy
f(x,y)?????????s?jsin? F(u,v)ej2?(ux?vy)dudv ej??co? 二维离散傅立叶变换为:
1M?1N?1?j2?(ux/M?vy/N)F(u,v)?f(x,y)e for u?0,1,2,...,M?1,v?0,1,2,...,N?1??MNx?0y?0f(x,y)???F(u,v)ej2?(ux/M?vy/N) for x?0,1,2,...,M?1,y?0,1,2,...,N?1
u?0v?0M?1N?1
图像的傅立叶变换与一维信号的傅立叶变换变换一样,有快速算法。实际上,现在有实现傅立叶变换的芯片,可以实时实现傅立叶变换。
3利用MATLAB软件实现数字图像傅立叶变换的程序: I=imread(‘原图像名.gif’); %读入原图像文件 imshow(I); %显示原图像
fftI=fft2(I); %二维离散傅立叶变换 sfftI=fftshift(fftI); %直流分量移到频谱中心 RR=real(sfftI); %取傅立叶变换的实部 II=imag(sfftI); %取傅立叶变换的虚部 A=sqrt(RR.^2+II.^2);%计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化 figure; %设定窗口
imshow(A); %显示原图像的频谱
三、实验要求
1叙述实验过程;
2提交实验的原始图像和结果图像,并对结果进行比较。
四、实验过程
1打开计算机,安装和启动MATLAB程序;程序组中“work”文件夹中应有待处理的图像文件;
2利用MatLab工具箱中的函数编制FFT频谱显示的函数; 3 a).调入、显示图像;图像存储格式应为“.gif”; b)对图像做FFT并利用自编的函数显示其频谱;
c)讨论不同的图像内容与FFT频谱之间的对应关系。
4 对频谱分别进行高斯、巴特沃兹、高斯高通和低通滤波,比较其锐化和平滑效果
5记录和整理实验报告。
五、思考题
1.傅里叶变换有哪些重要的性质?
2.图像的二维频谱在显示和处理时应注意什么?
六、源程序
%sy4_1
f=zeros(256,256); f(108:148,108:148)=1; F=fft2(f);
F1=log(1+abs(F));
subplot(131),imshow(f,[]);title('原始图像') subplot(132),imshow(F1,[]);title('频谱不移动')
subplot(133),imshow(fftshift(F1),[]);title('频谱移动到中心点') %sy4_2
f=imread('lena.bmp'); imshow(f,[]); title('?-í?');
F=fft2(f);
figure;imshow(log(1+abs(fftshift(F))),[]),title('?μà?ò??μ?×')