MATLAB数字图像处理基本操作及空域滤波
matlab滤波函数详解

matlab滤波函数详解Matlab作为一种广泛应用于数值计算和数据处理的软件,提供了许多用于信号处理和图像处理的函数。
其中,滤波函数是其中非常重要的一部分,它们在许多应用中都起着关键的作用。
本文将详细介绍Matlab中常见的滤波函数,包括它们的用途、参数设置、使用方法和示例。
一、滤波函数概述滤波函数主要用于对信号进行滤波处理,以消除噪声、突出信号特征或实现其他特定的处理目标。
在Matlab中,常见的滤波函数包括低通、高通、带通、带阻等类型,它们可以根据不同的应用需求选择。
滤波器通常由一组数学函数组成,用于对输入信号进行加权和叠加,以达到滤波的目的。
二、低通滤波函数低通滤波函数用于消除高频噪声,保持低频信号的完整性。
在Matlab中,常用的低通滤波函数包括lfilter和filter等。
lfilter函数适用于线性滤波器,而filter函数适用于任意滤波器设计。
低通滤波函数的参数包括滤波器系数、输入信号和采样率等。
通过调整滤波器系数,可以实现不同的滤波效果。
三、高通滤波函数高通滤波函数用于消除低频噪声,突出高频信号特征。
在Matlab 中,常用的高通滤波函数包括hilbert和highpass等。
hilbert函数适用于频谱分析和高频信号提取,而highpass函数则适用于消除低频噪声。
高通滤波函数的参数包括滤波器系数、采样率和信号类型等。
通过调整滤波器系数,可以实现不同的高通效果。
四、带通滤波函数带通滤波函数用于选择特定频率范围内的信号进行过滤。
在Matlab中,常用的带通滤波函数包括bandpass和butter等。
bandpass函数适用于设计带通滤波器,而butter函数则适用于连续时间滤波器设计。
带通滤波函数的参数包括带外抑制值、带宽和采样率等。
通过调整带宽参数,可以实现不同的带通效果。
五、其他滤波函数除了以上三种常见的滤波函数外,Matlab还提供了其他一些滤波函数,如带阻、限幅、防混叠等类型。
使用MATLAB进行信号处理与滤波

使用MATLAB进行信号处理与滤波信号处理与滤波是数字信号处理领域中的重要技术,而MATLAB是一种广泛应用于信号处理的工具。
本文将介绍如何使用MATLAB进行信号处理与滤波,包括信号采样、信号重构、频谱分析以及常用的滤波器设计和应用。
首先,我们先了解一下信号处理的基本概念。
信号处理是对信号进行采样、重构、滤波、增强、压缩等操作的过程。
信号可以是连续的或离散的,常常通过采样将连续信号转换为离散信号进行处理。
在MATLAB中,可以使用`plot`函数来绘制信号的波形图。
假设有一个正弦信号,我们可以通过以下代码绘制其波形图:```matlabfs = 1000; % 采样率为1000Hzt = 0:1/fs:1; % 时间向量,从0到1sf = 10; % 正弦信号的频率为10Hzx = sin(2*pi*f*t); % 构造正弦信号plot(t, x); % 绘制波形图xlabel('Time (s)'); % x轴标签ylabel('Amplitude'); % y轴标签title('Sinusoidal Signal'); % 图片标题```这段代码中,首先定义了采样率`fs`、时间向量`t`和信号频率`f`,然后使用`sin`函数构造了正弦信号`x`,最后通过`plot`函数绘制出信号的波形图。
在进行信号处理时,经常需要进行频谱分析来研究信号的频率特性。
MATLAB 提供了多种函数来计算信号的频谱,其中最常用的是`fft`函数。
以下代码演示了如何计算信号的频谱,并绘制频谱图:```matlabFs = 1000; % 采样率为1000HzT = 1/Fs; % 采样间隔L = 1000; % 信号长度为1000t = (0:L-1)*T; % 时间向量x = sin(2*pi*50*t) + 0.5*sin(2*pi*120*t); % 构造含有两个频率成分的信号Y = fft(x); % 对信号进行傅里叶变换P2 = abs(Y/L); % 计算双边频谱P1 = P2(1:L/2+1); % 取单边频谱P1(2:end-1) = 2*P1(2:end-1); % 幅度归一化f = Fs*(0:(L/2))/L; % 频率向量plot(f,P1); % 绘制频谱图title('Single-Sided Amplitude Spectrum of x(t)'); % 图片标题xlabel('Frequency (Hz)'); % x轴标签ylabel('Amplitude'); % y轴标签```这段代码中,首先定义了采样率`Fs`、采样间隔`T`、信号长度`L`和时间向量`t`,然后使用两个正弦信号相加的方式构造了含有两个频率成分的信号`x`,接着使用`fft`函数对信号进行傅里叶变换得到频谱`Y`,最后根据频谱进行幅度归一化并绘制频谱图。
如何利用Matlab技术进行数字滤波

如何利用Matlab技术进行数字滤波数字滤波是一种广泛应用于信号处理和图像处理中的技术。
而Matlab作为一种强大的数学软件工具,在数字滤波方面也有很高的应用价值。
本文将介绍如何利用Matlab技术进行数字滤波,从概念到具体实现,帮助读者更好地掌握这一技术。
一、数字滤波的基本概念数字滤波是一种对数字信号进行处理的技术,通过改变信号的频率特性或时域特性,达到去除或强调信号中某些成分的目的。
数字滤波可以分为无限长脉冲响应(IIR)滤波器和有限长脉冲响应(FIR)滤波器两种。
二、Matlab中数字滤波的基本函数在Matlab中,数字滤波可以使用一些基本函数实现。
其中最常用的是fir1和filter函数。
fir1函数用于设计FIR滤波器的滤波器系数,而filter函数用于对信号进行滤波处理。
三、设计FIR滤波器FIR滤波器是一种非递归滤波器,其系统函数是有限长的。
在Matlab中,可以使用fir1函数对FIR滤波器的系数进行设计。
fir1函数的输入参数包括滤波器阶数、截止频率以及窗函数类型等。
通过调节这些参数,可以设计出不同的FIR滤波器。
四、对信号进行滤波处理在得到FIR滤波器的系数后,可以使用filter函数对信号进行滤波处理。
filter函数的输入参数包括滤波器系数和待滤波的信号等。
通过调用filter函数,可以对信号进行低通滤波、高通滤波或带通滤波等操作。
五、实例演示为了更好地理解如何利用Matlab进行数字滤波,下面将通过一个实例对其进行演示。
假设有一个包含高频噪声的信号,我们希望去除这些噪声,得到清晰的信号。
首先,我们使用fir1函数设计一个低通滤波器。
假设我们希望截止频率为1kHz,滤波器阶数为100。
通过调用fir1函数,得到该滤波器的系数。
接下来,我们生成一个包含高频噪声的信号,并加上一些正弦波成分。
我们将这个信号输入到filter函数中,利用之前得到的滤波器系数进行滤波处理。
最终,我们可以得到去除了噪声的清晰信号。
如何使用Matlab进行信号处理和滤波

如何使用Matlab进行信号处理和滤波信号处理和滤波在工程领域中扮演着重要的角色,它们可以帮助我们从一系列的数据中提取有用的信息,并消除噪声。
Matlab作为一种强大的工具,提供了丰富的函数和工具箱,可以方便地进行信号处理和滤波。
本文将介绍如何使用Matlab进行信号处理和滤波的基本方法,并使用实例进行演示。
一、Matlab的信号处理工具箱Matlab的信号处理工具箱是一个强大的工具集,它包含了许多用于处理各种类型信号的函数和算法。
通过引入信号处理工具箱,我们可以方便地处理音频、图像和视频信号,并进行频域分析、滤波和解调等操作。
在Matlab中,可以使用命令"toolbox"来查看已安装的工具箱,对于信号处理,我们需要确保已经安装了"Signal Processing Toolbox"。
如果没有安装,可以通过访问Matlab官方网站下载并安装。
二、信号处理的基本操作1. 读取和显示信号在进行信号处理之前,首先需要将信号加载进Matlab中。
可以使用函数"audioread"来读取音频信号,例如读取一个.wav格式的音频文件:```[x,Fs] = audioread('audio.wav');```其中,x是音频信号的数据,Fs是信号的采样率。
读取完成后,可以使用函数"soundsc"来播放信号,并使用函数"plot"来绘制信号的波形图:```soundsc(x,Fs);plot(x);```2. 频谱分析频谱分析可以帮助我们了解信号的频率特性。
在Matlab中,可以使用函数"fft"进行快速傅里叶变换(FFT),将信号从时域转换到频域。
例如,对于上文中读取的音频信号x,可以使用以下代码计算其频谱:```X = fft(x);```频谱的结果是一个复数向量,表示信号在不同频率上的幅值和相位。
《数字图像处理(实验部分)》实验5_空域滤波.

《数字图像处理(实验部分)》教案实验五:空域滤波1.实验目的1.掌握MATLAB 的基本操作。
2.了解数字图像处理在MATLAB中的基本处理过程。
3.学习空域滤波的原理,观察算法处理结果2.实验设备2.1.PC 兼容机一台;操作系统为WindowsWindowsXP。
2.2.数字图像处理开发环境:MATLAB软件3.实验原理中值滤波:采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波空域滤波4.实验步骤.1 打开MA TLAB开发环境.2点击MA TLAB窗口上File菜单,选择New-〉M—File,在弹出的Edit编辑器内输入如下程序:clear;close all;I0=imread('abao.bmp');I0=rgb2gray(I0);I=imnoise(I0,'salt & pepper',0.02); % 叠加密度为0.02的椒盐噪声。
I_Filter1=medfilt2(I,[3 3]); %窗口大小为3×3的中值滤波I2=I;I3=I;x=[1 1 1;1 1 1;1 1 1];%3x3平滑模板y=[-1 -2 -1;0 0 0;1 2 1];%3x3锐化模板h=y;[n m]=size(I);for i=2:1:n-1for j=2:1:m-1sumx=0;sumy=0;for p=1:1:3for q=1:1:3h(p,q)=(1/9)*(I(i+(p-2),j+(q-2))); sumx=sumx+h(p,q)*x(p,q);%平滑h(p,q)=(1/4)*(I(i+(p-2),j+(q-2))); sumy=sumy+h(p,q)*y(p,q);%锐化endendI2(i,j)=sumx;if sumy<1I3(i,j)=255-sumy;%去除灰度为0的黑色背景elseI3(i,j)=sumy;endendendI4=I;z=[1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1];%7x7平滑模板k=z;[n m]=size(I);for i=4:1:n-3for j=4:1:m-3sumz=0;for p=1:1:7for q=1:1:7k(p,q)=(1/49)*(I(i+(p-4),j+(q-4))); sumz=sumz+k(p,q)*z(p,q);endendI4(i,j)=sumz;endendfigure(1);subplot(2,3,1),imshow(I0);title('原始图');subplot(2,3,2),imshow(I);title('加噪声图');subplot(2,3,3),imshow(I_Filter1);title('MATLAB自带3x3中值滤波图');subplot(2,3,4),imshow(I2);title('3x3平滑图');subplot(2,3,5),imshow(I3);title('3x3锐化图');subplot(2,3,6),imshow(I4);title('7x7平滑图');.3将该程序保存,并点击工具栏中Run按钮,程序会自动运行,并显示出结果。
如何进行MATLAB图像处理

如何进行MATLAB图像处理一、引言图像处理是计算机视觉和图像分析领域中的重要任务之一。
而MATLAB是一种强大的数学计算软件,也被广泛应用于图像处理。
本文将介绍如何使用MATLAB进行图像处理,并探讨一些常见的图像处理技术。
二、图像处理基础在开始使用MATLAB进行图像处理之前,我们需要了解一些基础知识。
一个图像通常由像素组成,每个像素都有一个灰度值或者RGB(红绿蓝)三个通道的值。
图像的处理可以分为两个主要方面:空间域处理和频域处理。
1. 空间域处理空间域图像处理是指直接对图像的像素进行操作,常见的处理方法包括亮度调整、对比度增强和图像滤波等。
MATLAB提供了一系列函数和工具箱来进行这些处理。
例如,要调整图像的亮度,可以使用imadjust函数。
该函数可以通过调整输入图像的灰度值范围,实现亮度的增强或者降低。
下面是一个简单的例子:```matlabI = imread('image.jpg'); % 读取图像J = imadjust(I,[0.2 0.8],[0 1]); % 调整亮度范围imshow(J); % 显示图像```2. 频域处理频域图像处理是指将图像从空间域转换到频域进行处理,常见的处理方法包括傅里叶变换和滤波等。
MATLAB提供了fft和ifft等函数来进行频域处理。
例如,要对图像进行傅里叶变换,可以使用fft2函数。
该函数将图像转换为频率域表示,可以进一步进行滤波等处理。
下面是一个简单的例子:```matlabI = imread('image.jpg'); % 读取图像F = fft2(I); % 傅里叶变换F = fftshift(F); % 频率域中心化imshow(log(1 + abs(F)),[]); % 显示频率域图像```三、图像处理技术了解了图像处理的基础知识后,我们可以探索一些常见的图像处理技术。
以下将介绍几个常用的技术,并给出相应的MATLAB代码示例。
图像增强—空域滤波实验报告

图像增强—空域滤波实验报告篇一:5.图像增强—空域滤波 - 数字图像处理实验报告计算机与信息工程学院验证性实验报告一、实验目的进一步了解MatLab软件/语言,学会使用MatLab对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。
了解几种不同滤波方式的使用和使用的场合,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。
二、实验要求(1)学生应当完成对于给定图像+噪声,使用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声,进行滤波处理;能够正确地评价处理的结果;能够从理论上作出合理的解释。
(2)利用MATLAB软件实现空域滤波的程序: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) IBM-PC计算机系统(2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片四、实验内容与步骤a) 调入并显示原始图像Sample2-1.jpg 。
在Matlab中进行图像处理的基本步骤和方法

在Matlab中进行图像处理的基本步骤和方法图像处理是一门涉及数字图像的处理技术和方法的学科,它可以帮助我们从图像中获取有用的信息,并改进图像的质量。
Matlab是一种广泛应用于科学和工程领域的高级计算机语言和环境,也是图像处理的重要工具之一。
本文将介绍在Matlab中进行图像处理的基本步骤和方法。
一、图像的读取和显示在开始进行图像处理之前,我们首先需要读取和显示图像。
在Matlab中,可以使用imread函数读取图像文件,该函数会返回一个包含图像像素值的矩阵。
通过imshow函数可以将图像显示在Matlab的图像窗口中。
同时,也可以使用imwrite函数将处理后的图像数据保存为图像文件。
二、图像的预处理在进行一系列的图像处理操作之前,通常需要对图像进行预处理,以提高后续处理步骤的效果。
常见的图像预处理方法包括灰度化、降噪、增强对比度等操作。
1. 灰度化灰度化是将彩色图像转化为灰度图像的过程。
在Matlab中,可以使用rgb2gray 函数将彩色图像转化为灰度图像。
灰度图像只有一个通道,每个像素的值表示了该像素的亮度。
2. 降噪图像中常常存在各种噪声,如高斯噪声、椒盐噪声等。
为了提高图像质量和后续处理的准确性,可以使用图像降噪方法来减少这些噪声的影响。
Matlab中提供了一些常用的降噪函数,如medfilt2、wiener2等,可以根据实际需求选择合适的方法来降噪。
3. 增强对比度对比度是指图像中不同亮度之间的差异程度。
当图像的对比度较低时,图像细节会变得不明显。
为了提高图像的可视化效果,可以使用一些增强对比度的方法。
例如,可以使用imadjust函数对图像的像素值进行调整,以拉伸图像的灰度级范围。
三、图像的滤波滤波在图像处理中起到了非常重要的作用,可以用来平滑图像、提取图像的边缘等。
在Matlab中,提供了多种滤波函数,可以根据需求选择合适的滤波方法。
1. 均值滤波均值滤波是一种常见的平滑滤波方法,可以用来消除图像中的高频噪声。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 MATLAB数字图像处理基本操作及空域滤波实验目的1、了解有关数字图像处理的基本概念,熟悉Matlab软件中关于数字图像处理的基本命令,掌握利用Matlab软件进行数字图像处理的简单方法。
2、了解并掌握直方图统计方法以及分段线性拉伸、直方图均衡等亮度调整算法,通过观察对这些运算建立感性认识。
3、掌握空域滤波中常用的平滑和锐化滤波器。
实验内容1. 观察各类图像的直方图;操作LUT灰度对照表,进行分段线性拉伸;采用直方图均衡方法对低对比度的图像进行对比度增强。
2.掌握图像模板卷积运算的实质,认识各种模板的处理效果;3. 掌握邻域平均及中值滤波降噪方法的特点,认识其功能及适用场合;4. 掌握拉普拉斯算子、Sobel算子、Prewitt算子和Isotropic算子的特点,认识其功能及适用场合。
实验原理1、数字图像以一定的格式存放在计算机的存储器中(如磁盘),常见的格式有BMP,TIF,PCX等等,要进行数字图像处理,第一项工作就是把图像读到计算机的内存中,以便进行进一步的处理。
在Matlab中,函数imread()完成此项工作。
下面一小段Matlab语句即可实现将图像“rice.tif”显示在一个图像窗口的左边,将其轮廓图显示在该窗口的右边。
I=imread('rice.tif');subplot(1,2,1);imshow(I)subplot(1,2,2);imcontour(I);这里,imread(‘rice.tif’)将磁盘上的图像文件rice.tif读入内存变量I中,subplot(1,2,1)生成一个可以横向放置2幅图像的窗口,并设置下一显示位置在左边,imshow(I)显示图像I,subplot(1,2,2)准备下一图像的显示位置,imcontour(I)生成图像I 的轮廓并显示在窗口的右边。
数字图像一般可分为二值图、灰度图和真彩图等几类。
bw=imread('text.tif');bw2=imcomplement(bw);subplot(1,2,1),imshow(bw)subplot(1,2,2),imshow(bw2)这里函数imcomplement(bw)完成对二值图像text.tif(bw)的求补运算。
(即原来黑的变白的,原来白的变黑的。
)该函数也可以用于灰度图像,此时图像的数据被255减。
在Matlab中,函数imresize(X,M,method)可用来改变图像的大小,其中X表示图像,实数M>0是放大倍数,method用来选择计算数据的方法,其可取值及意义分别为:“nearest”—最近邻插值法,“bilinear”—双线性插值法,“bicubic”—双三次插值法。
下面这段程序调整图像的大小:I=imread('circuit.tif');J=imresize(I,1.25);imshow(I)figure,imshow(J)也可以指定目标图像的大小,此时imresize()的调用格式为:Y=imresize(X,[320,480])其中[320,480]表示将图像的大小调整为320 480。
函数imrotate对图像进行旋转操作,我们看如下的程序段:I=imread('cameraman.tif');J=imrotate(I,-15,'bilinear');K=imrotate(I,-15,'bilinear','crop');imshow(I)figure,imshow(J)figure,imshow(K)注意右边的图像是由参数“crop”实现的,该参数表示将旋转后的图像取与原图像相同的中心部分输出。
2、直方图的定义图象的灰度直方图是一个函数,表示数字图象中每一灰度级与该灰度级出现的频数(即具有这一灰度级的象素数目)间的对应关系:P b N b M()()=M 为一幅图象所包含的象素总数;N (b )为图象中灰度值为b 的象素总数。
通常,以灰度值b 为横坐标,N (b )为纵坐标。
直方图是图象中象素灰度值的一阶概率分布密度的一种近似。
3、对比度增强对比度增强又称为点运算,逐点改变输入图象的每一象素的灰度,而各象素的位置不改变,一般用来拓宽图象的灰度范围。
(1) 灰度变换法(LUT 对照)典型的对比度拉伸灰度变换关系如图1所示,其对应关系如下:g f f a f a g a f b f b g b f L a b =≤<-+≤<-+≤<⎧⎨⎪⎩⎪αβγ0()()式中,f 、g 分别表示输入及输出图象,α、β、γ为折线段的斜率,a 、b 决定低、中、高灰度级的范围。
选择不同的α、β、γ、 a 、b 、g a 及g b 数值,可得到各种各样的灰度拉伸效果。
灰度变换前后的灰度变化范围是不变的,对一部分灰度区域的扩张(感兴趣区)都是以其它区域的压缩为代价的。
可见,输出和输入图象之间各点的灰度是按照一定的映射关系相联系的,这种映射关系在计算机中则是通过一个查照表(look-up table ,即LUT )实现的。
通过LUT 对照改变了图象中不同灰度特性趋于的对比度或反差(contrast ),达到改善视觉效果的目的。
(2) 直方图均衡直方图均衡(histogram equalization )就是通过点运算使输入图像的灰度分布较为均匀,使图像具有较好的视觉效果。
设r, s 分别为原图和新图的灰度,ϕr (r ), ϕs (s )分别为原图及新图的概率密度函数,则均衡变换为原图像的累积分布函数:图1. 典型的对比度拉伸灰度变换关系s T r r r r==⎰()ϕ()0对于离散图像,均衡转换公式为:∑∑=====kj jkj j r k k nM Lr P r T s 0max)()(其中,L max 指图像中的最大灰度值(对于灰度图像就是255)。
下面给出直方图均衡化增强图像对比度的MA TLAB 程序: I=imread(‘原图像名.gif); % 读入原图像 J=histeq(I); %对原图像进行直方图均衡化处理 Imshow(I); %显示原图像Title(‘原图像’); %给原图像加标题名Figure ;imshow(J); %对原图像进行屏幕控制;显示直方图均衡化后的图像 Title(‘直方图均衡化后的图像’) ; %给直方图均衡化后的图像加标题名Figure; subplot(1,2,1) ;%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图Imhist(I,64); %将原图像直方图显示为64级灰度 Title(‘原图像直方图’) ; %给原图像直方图加标题名 Subplot(1,2,2); %作第2幅子图Imhist(J,64) ; %将均衡化后图像的直方图显示为64级灰度 Title(‘均衡变换后的直方图’) ; %给均衡化后图像直方图加标题名处理后的图像直方图分布更均匀了,图像在每个灰度级上都有像素点。
从处理前后的图像可以看出,许多在原始图像中看不清楚的细节在直方图均衡化处理后所得到的图像中都变得十分清晰。
4、图像平滑和锐化的空间域方法都可表示为模板卷积的形式。
如可将邻域平均处理看作一个作用于图象f (m ,n )的低通滤波器,该滤波器的脉冲响应为H (r , s ),用离散卷积表示如下:1, ,2 ,1 ,0, ),(),(),(-=--=∑∑-=-=N n m s r H s n r m f n m f k k r llsk 、l 由邻域大小决定,一般取k =l =1(即3⨯3窗口);H (r , s)为加权函数,称为掩模(mask )或模板。
这种离散卷积运算等价于用模板中心点逐一对准每一象素f (m , n ),然后将模板元素和它所“压上”的图象元素对应相乘,再求和,其结果就是该中心点象素平滑后的输出(,)fx y 。
图像锐化也可以用类似的方法表示。
常用的平滑模板算子有:123111111121111111 , 121 , 242 ,91016111111121⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥===⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦H H H 4511101/4011101 , 1/411/48211101/40⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦H H用于锐化或检测边缘的常用模板算子有:拉普拉斯算子:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----010141010Sobel 算子:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡121000121 101202101------Prewitt 算子:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡111000111 101101101------Isotropic 算子:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡121000121 101202101------ 实验步骤1.读入图像“moon.tif ”,将其显示在一个可以显示2幅图像的窗口中的左边,求出“moon.tif ”的轮廓,并将其显示在上述窗口的右边。
2.读入图像“cameraman.tif ”,将该图像显示在一个可以显示4幅图像(两行两列)的左上角显示该图像;求出该图像的补图像,将结果显示在右上角;将原图分别顺时针旋转45度和逆时针旋转45度,前者保持输出图像大小不变,后者保持图像完全显示,将结果分别显示在左下角和右下角。
3.读入图像“cameraman.tif ”,将其分别放大到1.5倍(用“bilinear ”方法)和2.6倍(用“bicubic ”方法),显示在不同的图像窗口中。
4.读入图像“moon.tif”,将其放大2倍,并将结果用BMP格式以“moon1.bmp”为文件名,写入磁盘。
(用imwrite命令,该命令的用法请用help imwrite查看)5.读入图像“pout.tif”,对获取的数字图像进行分段线性拉伸,参数自己任意给出。
6、显示“pout.tif”的原图、经过均衡化处理过的图像及相应直方图。
7.对图像“cameraman.tif”采用实验原理中给出的算子进行各种增强和平滑处理并显示结果。
实验思考题1.直方图是什么概念?它反映了图像的什么信息?2.直方图均衡化是什么意思?它的主要用途是什么?3.邻域平均和中值滤波各适用于那些图像平滑处理?4.拉普拉斯算子、Sobel算子、Prewitt算子和Isotropic算子进行图像增强处理时各自的特点是什么?实验报告要求1.给出图像处理的源程序和结果。
2.对实验结果进行简要分析。
例程:1、f=imread('cameraman.tif');subplot(1,2,1);imshow(f);subplot(1,2,2);imcontour(f);2、f=imread('cameraman.tif');subplot(2,2,1);imshow(f);subplot(2,2,2);imshow(imcomplement(f));subplot(2,2,3);imrotate(f,45,'bilinear','crop'); subplot(2,2,4);imrotate(f,-45,'bilinear','loose');3、f=imread('cameraman.tif');imshow(imresize(f,1.5,'bilinear')); figure;imshow(imresize(f,2.6,'bicubic'));4、f=imread('moon.tif');imwrite(imresize(f,2),'moon1.bmp');5、6、f=imread('pout.tif');f1=histeq(f);imshow(f);figure,imhist(f,64);figure,imshow(f1);figure,imhist(f1,64);[m,n]=size(f);f2=double(f);for i=1:mfor j=1:nif f2(i,j)<70f3(i,j)=0.5*f2(i,j);else if f2(i,j)>=70 & f2(i,j)<160 f3(i,j)=4*(f2(i,j)-70)+35; else if f2(i,j)>=160f3(i,j)=0.5*f2(i,j)+215; endendendendendfigure,imshow(f3,[]);7、f=double(imread('cameraman.tif'));h1=[1 1 1;1 1 1;1 1 1]./9;h2=[1 1 1;1 2 1;1 1 1]./10;h3=[1 2 1;2 4 2;1 2 1]./16;h4=[1 1 1;1 0 1;1 1 1]./8;h5=[0 0.25 0;0.25 1 0.25;0 0.25 0]./2; lap=[0 -1 0;-1 4 -1;0 -1 0];sobel1=[1 0 -1;2 0 -2;1 0 -1];sobel2=sobel1';prewitt1=[1 0 -1;1 0 -1;1 0 -1];prewitt2=prewitt1';isot1=[1 0 -1;1.414 0 -1.414;1 0 -1]; isot2=isot1';subplot(3,4,1);imshow(imfilter(f,h1),[]); subplot(3,4,2);imshow(imfilter(f,h2),[]); subplot(3,4,3);imshow(imfilter(f,h3),[]); subplot(3,4,4);imshow(imfilter(f,h4),[]); subplot(3,4,5);imshow(imfilter(f,h5),[]); subplot(3,4,6);imshow(imfilter(f,lap),[]); subplot(3,4,7);imshow(imfilter(f,sobel1),[]); subplot(3,4,8);imshow(imfilter(f,sobel2),[]); subplot(3,4,9);imshow(imfilter(f,prewitt1),[]); subplot(3,4,10);imshow(imfilter(f,prewitt2),[]); subplot(3,4,11);imshow(imfilter(f,isot1),[]); subplot(3,4,12);imshow(imfilter(f,isot2),[]);。