文档库 最新最全的文档下载
当前位置:文档库 › 中值滤波matlab代码

中值滤波matlab代码

中值滤波matlab代码

中值滤波是一种常用的数字图像处理方法,可以有效地消除噪声并平滑图像。以下是用MATLAB实现中值滤波的代码。

输入参数:

img:原始图像

N:滤波器大小(正方形)

输出参数:

out:滤波后的图像

示例代码:

function out = median_filter(img, N)

[rows,cols] = size(img); %获取图像大小

img = padarray(img,[N N],'replicate'); %对图像进行边缘填充

out = zeros(rows,cols); %初始化输出图像

for i = 1+N:rows+N %对图像进行遍历

for j = 1+N:cols+N

patch = img(i-N:i+N,j-N:j+N); %获取当前位置的滤波窗口

out(i-N,j-N) = median(patch(:)); %取窗口中的中值作为当前位置的输出值

end

end

end

使用方法:

img = imread('test.jpg'); %读取图像

img_gray = rgb2gray(img); %将图像转换为灰度图

out = median_filter(img_gray, 5); %对图像进行中值滤波,并设置

滤波器大小为5

imshow(out); %显示滤波后的图像

以上是中值滤波MATLAB代码的实现过程。通过调整滤波器大小,可以得到不同程度的平滑效果。

中值滤波原理及MATLAB实现

中值滤波原理及MATLAB实现 摘要:图像是一种重要的信息源,通过图像处理可以帮助人们了解信息的内涵。本文将纯净的图像加入椒盐噪声,然后采用中值滤波的方法对其进行去噪。中值滤波是一种常用的非线性信号处理技术,在图像处理中,它对滤除脉冲干扰噪声最为有效。文章阐述了中值滤波的原理、算法以及在图像处理中的应用。MATLAB 是一种高效的工程计算语言,在数据处理、图像处理、神经网络、小波分析等方面都有广泛的应用。 关键词:图像,中值滤波,去噪,MATLAB 1.引言 20世纪20年代,图像处理首次得到应用。上个世纪60年代中期,随着计算机科学的发展和计算机的普及,图像处理得到广泛的应用。60年代末期,图像处理技术不断完善,逐渐成为一个新兴的学科。图像处理中输入的是质量低的图像,输出的是改善质量后的图像。 为了改善图像质量,从图像中提取有效信息,必须对图像进行去噪预处理。根据噪声频谱分布的规律和统计特征以及图像的特点,出现了多种多样的去噪方法。经典的去噪方法有:空域合成法,频域合成法和最优合成法等,与之适应的出现了许多应用方法,如均值滤波器,中值滤波器,低通滤波器,维纳滤波器,最小失真法等。这些方法的广泛应用,促进数字信号处理的极大发展,显著提高了图像质量。 2.中值滤波 在图像滤波中,常用的方法是线性滤波技术和非线性滤波技术,线性滤波以其完美的理论基础,数学处理简单、易于采用和硬件实现等优点,一直在图像滤波领域中占有重要的地位。线性滤波对加性高斯噪声有较好的平滑作用,但对脉冲信号和其它形式的高频分量抑制效果较差,且模糊信号边缘。非线性滤波是基于对输入信号序列的一种非线性投影关系,常把某一特定的噪声近似为零而保留信号的重要特征,一定程度上克服线性滤波器的不足,非线性滤波早期运用较多的是中值滤波器,其应用于多维信号处理时,对窄脉冲信号具有良好的抑制能力,但中值滤波器对中拖尾(如均匀分布噪声)和短拖尾分布噪声(如高斯噪声),滤波性能较差,且拖尾越短,其滤波能力越差。

matlab 滤波器代码

用matlab设计滤波器 1.切比雪夫型 切比雪夫1型 高通 2.高通滤波器 function y=highp(x,f1,f3,rp,rs,Fs) %高通滤波 %使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半%即,f1,f3的值都要小于Fs/2 %x:需要带通滤波的序列 % f 1:通带截止频率 % f 2:阻带截止频率 %rp:边带区衰减DB数设置 %rs:截止区衰减DB数设置 %FS:序列x的采样频率 % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值 % Fs=2000;%采样率 % wp=2*pi*f1/Fs; ws=2*pi*f3/Fs; % 设计切比雪夫滤波器; [n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs); [bz1,az1]=cheby1(n,rp,wp/pi,'high'); %查看设计滤波器的曲线 [h,w]=freqz(bz1,az1,256,Fs); h=20*log10(abs(h)); figure;plot(w,h);title('所设计滤波器的通带曲线');grid on; y=filter(bz1,az1,x); end 下面是高通滤波器的例子 fs=2000; t=(1:fs)/fs; ff1=100; ff2=400; x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t); figure; subplot(211);plot(t,x); subplot(212);hua_fft(x,fs,1); %------高通测试 z=highp(x,350,300,0.1,20,fs); figure; subplot(211);plot(t,z);

matlab一维中值滤波函数

matlab一维中值滤波函数 一维中值滤波函数是一种常用的信号处理方法,它可以有效地去除信号中的噪声,使得信号更加平滑和清晰。在Matlab中,我们可以利用内置的中值滤波函数来实现这一功能。 中值滤波是一种非线性滤波方法,它的原理是将信号中的每个数据点替换为它周围邻近点的中值。通过这种方式,中值滤波可以有效地去除由于噪声引起的异常值,而不会对信号的整体形态造成明显的改变。 在Matlab中,我们可以使用medfilt1函数来进行一维中值滤波操作。该函数的基本语法如下: y = medfilt1(x, w) 其中,x是待滤波的一维信号,w是滤波窗口的大小。滤波窗口的大小决定了中值滤波的效果,一般情况下,窗口大小越大,滤波效果越明显,但也会导致信号的平滑度降低。 下面我们通过一个具体的例子来演示一维中值滤波函数的使用。 假设我们有一个包含噪声的一维信号x,我们希望去除其中的噪声。首先,我们可以使用plot函数将原始信号绘制出来,以便观察信号的特征。 ```matlab

x = sin(0:0.1:10) + 0.5*randn(1, 101); plot(x); ``` 运行上述代码后,我们可以看到绘制出了一个包含噪声的正弦信号。接下来,我们可以利用medfilt1函数对信号进行中值滤波处理。我们选择窗口大小为5,在滤波后将结果绘制出来。 ```matlab y = medfilt1(x, 5); hold on; plot(y); ``` 运行上述代码后,我们可以看到绘制出了经过中值滤波处理后的信号。 通过比较原始信号和滤波后的信号,我们可以清楚地看到滤波后的信号变得更加平滑,噪声得到了有效的去除。 除了一维中值滤波函数medfilt1之外,Matlab还提供了其他一些相关的函数,如二维中值滤波函数medfilt2和自适应中值滤波函数adpmedian等。这些函数可以根据具体的应用场景选择合适的滤波方法。

Matlab中的图像滤波方法与实例分析

Matlab中的图像滤波方法与实例分析引言 图像滤波是数字图像处理中的一项重要技术,用于降低图像噪声、平滑图像以及增强图像细节。在Matlab中,有多种图像滤波方法可供选择。本文将对这些方法进行介绍和实例分析。 一、线性滤波方法 1. 均值滤波 均值滤波是一种最简单的线性平滑滤波方法。其基本思想是用邻域内像素的平均值替代当前像素的值。在Matlab中,可使用imfilter函数实现均值滤波。下面是一个示例: ``` I = imread('example.jpg'); filtered_img = imfilter(I, fspecial('average', 3)); ``` 2. 中值滤波 中值滤波是一种非线性滤波方法,在处理含有椒盐噪声等图像时表现出较好的效果。它的原理是用中值取代邻域内的元素值。在Matlab中,使用medfilt2函数可以实现中值滤波。下面是一个示例: ``` I = imread('example.jpg'); filtered_img = medfilt2(I);

``` 二、非线性滤波方法 1. 双边滤波 双边滤波是一种非线性滤波方法,可以同时平滑图像和保留边缘信息。它的核心思想是考虑像素的空间距离和像素值的差异。在Matlab中,可使用bfilter2函数实现双边滤波。下面是一个示例: ``` I = imread('example.jpg'); filtered_img = bfilter2(I, 3, 25, 10); % 参数可根据需要自行调整 ``` 2. 自适应中值滤波 自适应中值滤波是一种根据像素邻域内像素值的分布特性动态调整滤波窗口大小的方法。在Matlab中,可使用adpmedian函数实现自适应中值滤波。下面是一个示例: ``` I = imread('example.jpg'); filtered_img = adpmedian(I, 5); % 参数可根据需要自行调整 ``` 三、时域滤波方法 1. Laplace滤波

matlab 数据滤波处理

matlab数据滤波处理 在MATLAB中,数据滤波可以使用不同的方法和函数来实现。下面是几种常见的数据滤波处理方法: 1.移动平均滤波(Moving Average Filter): 移动平均滤波是一种简单的滤波方法,通过计算数据序列中相邻数据点的平均值来平滑数据。可以使用smoothdata函数实现移动平均滤波。 示例: 创建示例数据 data=randn(1,100);100个随机数 应用移动平均滤波 smoothed_data=smoothdata(data,'movmean',5);使用移动窗口大小为5的移动平均 2.中值滤波(Median Filter): 中值滤波是一种非线性滤波方法,将每个数据点替换为相邻数据点的中值。可以使用medfilt1函数进行中值滤波处理。 示例: 创建示例数据 data=randn(1,100);100个随机数 应用中值滤波 smoothed_data=medfilt1(data,5);使用窗口大小为5的中值滤波 3.低通滤波器(Low-pass Filter): 低通滤波器可以滤除高频噪声,保留信号的低频成分。MATLAB中可以使用filter函数设计和应用数字低通滤波器。 示例: 创建示例数据 data=randn(1,100);100个随机数 设计低通滤波器 fc=0.1;截止频率 fs=1;采样频率

[b,a]=butter(5,fc/(fs/2));设计5阶巴特沃斯低通滤波器 应用低通滤波器 smoothed_data=filter(b,a,data); 以上示例中的滤波方法和参数可以根据数据的特性和需求进行调整。使用不同的滤波方法可能需要更多的参数调整和信号处理知识。根据具体情况,可以选择合适的滤波方法来平滑或处理数据。

matlab 一维中值滤波 -回复

matlab 一维中值滤波-回复 Matlab一维中值滤波 中值滤波是一种常用的信号处理技术,用于去除信号中的噪声。它的基本原理是用信号中某一点周围邻域内的中值来代替该点的原始值。中值滤波能够有效地抑制脉冲噪声等离群点,并且不会模糊信号的边缘。 在Matlab中,一维中值滤波可以通过内置函数medfilt1来实现。medfilt1函数将输入信号中的每个点作为中心,取其邻域内的值,并计算其中位数作为该点的输出值。 下面我们将详细介绍如何在Matlab中进行一维中值滤波。 1. 引入信号数据 首先,我们需要引入一个一维的信号数据。这个信号可以是从实验中收集到的,也可以是从文件中读取的。在这里,我们简化问题,使用Matlab 中的randn函数生成一个随机信号。 MATLAB n = 1000; 信号长度 noise = 0.1 * randn(1, n); 产生随机噪声信号

signal = sin(2*pi*(1:n)/50) + noise; 构造包含噪声的信号 plot(1:n, signal); title('原始信号'); 这段代码定义了信号的长度和随机噪声的强度。然后使用sin函数生成了一个正弦信号,并加上了随机噪声。最后,用plot函数将信号绘制出来。 2. 进行一维中值滤波 接下来,我们使用medfilt1函数对信号进行一维中值滤波。medfilt1函数有两个必要的输入参数,即输入信号和滤波窗口大小。滤波窗口大小是一个正奇数,表示中心点及其左右相等数量的点。 MATLAB filtered_signal = medfilt1(signal, 5); 对信号进行一维中值滤波figure; subplot(2,1,1); plot(1:n, signal); title('原始信号'); subplot(2,1,2); plot(1:n, filtered_signal);

matlab光滑函数代码

MATLAB光滑函数代码 一、引言 在MATLAB中,光滑函数是一类常用的数学工具,它们提供了处理并光滑噪声信号 的功能。这些函数可以有效地对信号进行平滑处理,以便更好地识别信号的趋势和结构。本文将介绍MATLAB中常用的光滑函数代码,并提供详细的示例和应用场景。 二、常用的光滑函数 2.1 平均值滤波 平均值滤波是一种简单的光滑函数,它通过计算信号中一定长度窗口内的均值来光滑信号。MATLAB提供了函数smoothdata来实现平均值滤波。 下面是一个使用平均值滤波的示例代码: data = [1, 1, 2, 4, 3, 6, 5, 8, 10, 9]; smoothed_data = smoothdata(data,'movmean',3); 2.2 中值滤波 中值滤波是一种常用的非线性滤波方法,它通过对信号中一定长度窗口内的数据进行排序,然后取中间值作为光滑后的数值。MATLAB中的medfilt1函数可以实现中 值滤波。 以下是一个中值滤波的示例代码: data = [1, 1, 2, 4, 3, 6, 5, 8, 10, 9]; smoothed_data = medfilt1(data,3); 2.3 Savitzky-Golay滤波 Savitzky-Golay滤波是一种基于多项式拟合的光滑函数方法。它通过在信号上进 行多项式拟合来提取信号的趋势,并利用拟合结果对信号进行光滑处理。MATLAB 中的sgolayfilt函数可以实现Savitzky-Golay滤波。 以下是一个使用Savitzky-Golay滤波的示例代码:

data = [1, 1, 2, 4, 3, 6, 5, 8, 10, 9]; smoothed_data = sgolayfilt(data,3,5); 三、光滑函数的应用场景 光滑函数在数据处理和信号处理中有广泛的应用,以下是一些常见的应用场景: 3.1 信号去噪 光滑函数可以有效地去除信号中的噪声,使得信号更加清晰和易于分析。例如,在环境监测中,通过对传感器数据应用光滑函数,可以去除测量中的噪声,得到更准确的监测结果。 3.2 数据平滑 光滑函数可以平滑数据中的波动和突变,使得数据更加平稳。这在金融数据分析和经济预测中尤为重要。通过对股票价格、汇率等数据应用光滑函数,可以更好地识别趋势和周期性。 3.3 信号特征提取 光滑函数可以提取信号中有用的特征,帮助理解信号的结构和组成。在图像处理中,光滑函数可以提取图像中的边缘和纹理特征,用于对象识别和图像分割。 3.4 数据插值 光滑函数可以用于数据插值,即通过已有数据点估计缺失数据点的值。在地理信息系统和测绘学中,光滑函数可以用于地形高程数据的插值,从而得到连续的地形表面。 结论 光滑函数是MATLAB中常用的数学工具,它们提供了处理并光滑噪声信号的功能。 本文介绍了平均值滤波、中值滤波和Savitzky-Golay滤波等常用的光滑函数,并 介绍了它们的应用场景。通过应用光滑函数,可以去噪、平滑数据、提取信号特征和插值等。希望本文能为读者在MATLAB中使用光滑函数提供一些参考和帮助。

自适应中值滤波代码matlab

自适应中值滤波代码matlab 自适应中值滤波是一种常用的图像处理方法,可以有效地去除图像中的噪声。本文将介绍如何使用MATLAB实现自适应中值滤波,并对其原理进行解析。 自适应中值滤波是一种非线性滤波方法,它可以根据图像的不同区域对每个像素进行滤波处理。与传统的中值滤波方法不同,自适应中值滤波方法可以根据像素的邻域灰度值的分布情况来动态地调整滤波窗口的大小,从而更好地保留图像的细节信息。 在MATLAB中,可以使用medfilt2函数来实现自适应中值滤波。该函数的语法格式如下: B = medfilt2(A,[m n]) 其中,A表示待滤波的图像,[m n]表示滤波窗口的大小。在自适应中值滤波中,滤波窗口的大小会根据像素的邻域灰度值的分布情况进行调整。 下面我们将通过一个实例来演示如何使用MATLAB实现自适应中值滤波。 假设我们有一张带有噪声的图像,我们首先读入该图像并显示出来:```matlab A = imread('noisy_image.jpg');

imshow(A); ``` 接下来,我们可以使用medfilt2函数对该图像进行自适应中值滤波:```matlab B = medfilt2(A,[3 3]); imshow(B); ``` 在上述代码中,我们使用了一个3x3的滤波窗口对图像进行滤波处理。可以根据实际情况调整滤波窗口的大小。 通过对比原始图像和滤波后的图像,我们可以清楚地看到滤波后的图像中的噪声明显减少,图像的细节信息得到了较好的保留。 自适应中值滤波是一种非常实用的图像处理方法,它可以在去除噪声的同时保持图像的细节信息。MATLAB提供了方便的函数来实现自适应中值滤波,可以根据实际情况选择合适的滤波窗口大小。 需要注意的是,自适应中值滤波方法对噪声的去除效果受到滤波窗口大小的影响。如果滤波窗口过小,可能无法有效去除噪声;如果滤波窗口过大,可能会模糊图像的细节信息。因此,在使用自适应中值滤波方法时,需要根据实际情况选择合适的滤波窗口大小。 自适应中值滤波是一种常用的图像处理方法,它可以有效地去除图

利用Matlab进行机器视觉与图像处理的技巧与方法

利用Matlab进行机器视觉与图像处理的技巧 与方法 导语: 机器视觉与图像处理是当今科学技术领域中备受关注的热门研究方向。利用Matlab这一功能强大的软件平台,可以实现诸多机器视觉与图像处理的任务。本文将介绍如何利用Matlab进行机器视觉与图像处理,包括图像读取与显示、图像增强与滤波、图像分割与对象检测等多个方面的技巧与方法。 一、图像读取与显示 在进行机器视觉与图像处理的任务之前,首先需要将图像从外部文件读取到Matlab中,并进行显示。Matlab提供了丰富的函数来实现这一过程。其中, `imread`函数用于读取图像文件,`imshow`函数用于显示图像。例如,下面的代码演示了如何读取名为“image.jpg”的图像文件,并将其显示在Matlab窗口中:``` image = imread('image.jpg'); imshow(image); ``` 二、图像增强与滤波 图像增强与滤波是图像处理的重要任务,可以提升图像的质量与清晰度。Matlab提供了多种图像增强与滤波的函数,如直方图均衡化`histeq`函数、图像平滑滤波`imfilter`函数等。下面通过一个例子来演示如何利用Matlab进行图像增强与滤波: ```

image = imread('image.jpg'); enhanced_image = histeq(image); %直方图均衡化 smoothed_image = medfilt2(enhanced_image); %中值滤波 imshow(smoothed_image); ``` 三、图像分割与对象检测 图像分割是将图像划分为不同的区域或对象的过程,是机器视觉与图像处理的 核心任务之一。Matlab提供了多种图像分割的函数,如基于阈值的分割`im2bw`函数、基于边缘的分割`edge`函数等。下面通过一个例子来演示如何利用Matlab进行 图像分割与对象检测: ``` image = imread('image.jpg'); gray_image = rgb2gray(image); %将彩色图像转为灰度图像 binary_image = im2bw(gray_image, 0.5); %基于阈值的二值分割 edges = edge(binary_image, 'Canny'); %Canny边缘检测 imshow(edges); ``` 四、图像特征提取与描述子匹配 图像特征提取与描述子匹配是机器视觉与图像处理中的关键任务,可以用于对 象识别、运动跟踪等应用。Matlab提供了多种图像特征提取与描述子匹配的函数,如SIFT(尺度不变特征变换)算法的`sift`函数、SURF(加速稳健特征)算法的

matlab 数据滤波处理 -回复

matlab 数据滤波处理-回复 Matlab数据滤波处理 引言: 在科学和工程领域中,数据收集和处理是常见的任务。然而,收集到的数据通常受到各种噪声的干扰,这可能导致结果的不准确性和误解。为了解决这个问题,数据滤波处理成为一种常用的技术。Matlab作为一个功能强大的数学建模和数据分析工具,提供了各种用于数据滤波的函数和工具包,能够帮助我们有效地处理噪声并提供准确的结果。本文将介绍Matlab 中的数据滤波处理的基本原理和应用。 一、什么是数据滤波处理? 数据滤波处理是一种通过对数据进行数学操作以减少或消除噪声的技术。它是信号处理的一个重要分支,广泛应用于各种领域,如通信、音频处理、图像处理等。数据滤波的目标是保留数据中有价值的信息并去除噪声和干扰。 二、Matlab中的数据滤波函数 Matlab提供了许多用于数据滤波的函数和工具包,包括滑动平均滤波、中值滤波、巴特沃斯滤波等。这些函数和工具包提供了不同类型的滤波方

法和参数,以满足不同应用场景的需求。 1. 滑动平均滤波 滑动平均滤波是一种简单且常用的滤波方法,用于去除高频噪声。该方法通过计算数据序列中固定长度的子序列的均值来平滑数据。在Matlab中,可以使用函数smoothdata实现滑动平均滤波。 示例代码: data = [1, 2, 3, 4, 5, 3, 2, 1]; 原始数据 filtered_data = smoothdata(data, 'movmean', 3); 滑动平均滤波figure; plot(data, 'b-', 'LineWidth', 2); hold on; plot(filtered_data, 'r-', 'LineWidth', 2); legend('原始数据', '滤波后的数据'); xlabel('样本点'); ylabel('数值'); title('滑动平均滤波'); 2. 中值滤波 中值滤波是一种非线性滤波方法,可以有效地去除椒盐噪声和其他非高斯噪声。该方法通过将每个数据点替换为它周围窗口中的中值来平滑数据。在Matlab中,可以使用函数medfilt1实现中值滤波。

数字图像处理-平均滤波与中值滤波(含MATLAB代码)

数字图像处理实验二 15生医 一、实验内容 产生教材104页题图4.18〔右图〕所示的二值图像〔白为1,黑为0〕,编程实现习题4.18所要求的处理〔3x3的平均滤波和中值滤波〕功能〔图像四周边界不考虑,处理结果按四舍五入仍取0或1〕,显示处理前后的图像,比较其异同。 二、运行环境 MATLAB R2014a 三、运行结果及分析 1. 四种不同的窗的3x3平均滤波 ①在 MATLAB 图形窗界面进行放大可以看出四者之间的差异: 4领域与8邻域之间没有明显差异,但是加权与未加权之间的差异较为明显,表达在: 加权后每个矩形块的四个尖角部分都被保留了下来4邻域平均滤波后图 像8邻域平均滤波后图像 4邻域加权平均滤波后图像8邻域加权平均滤波后图像

〔图像四周边界不考虑〕,而未加权的尖角处黑色变为白色。 ②原因分析: 加权后尖角处原来白色的点〔1〕进行计算3/5=0.6四舍五入后值为1,保持白色,原来黑色的点〔0〕进行计算2/5=0.4四舍五入后值为0,保持黑色;而未加权尖角处无论原来是黑色还是白色,进行计算 2/4=0.5四舍五入后值为1,所以原先的黑色〔0〕也变成了白色〔1〕。 ③下列图为放大后的截图: 2.中值滤波与原图像的比照

①在 MATLAB图形窗界面进行放大后可观察出: 使用3x3 方形中值滤波模板的效果与4领域、8领域加权平均滤波的 效果相同,每个矩形块的四个尖角部分都被保留了下来〔图像四周边界不考虑〕。 ②原因分析: 套用3x3方形中值滤波模板后,尖角处原来白色的点〔1〕在窗内1多于0,取中值后仍保持白色,原来黑色的点〔0〕在窗内0多于1,取中值后仍保持白色。 ③下列图为放大后的截图: 原图像中值滤波后图像

matlab频率滤波代码

matlab频率滤波代码以下是一个简单的MATLAB频率滤波代码示例: matlab. % 读取图像。 img = imread('example.jpg'); % 将图像转换为灰度图像。 gray_img = rgb2gray(img); % 计算图像的傅里叶变换。 fft_img = fft2(double(gray_img)); % 将零频率分量移到频谱的中心。 fft_img_shifted = fftshift(fft_img);

% 设定滤波器。 [M, N] = size(fft_img); R = 10; % 设定滤波器半径。 X = 0:N-1; Y = 0:M-1; [X, Y] = meshgrid(X, Y); Cx = 0.5 N; Cy = 0.5 M; low_pass_filter = double((X-Cx).^2 + (Y-Cy).^2 < R^2); % 应用滤波器。 fft_img_filtered = fft_img_shifted . low_pass_filter;

% 将频谱移回原来的位置。 fft_img_filtered_shifted = ifftshift(fft_img_filtered); % 计算逆傅里叶变换。 filtered_img = ifft2(fft_img_filtered_shifted); % 显示原始图像和滤波后的图像。 subplot(1,2,1), imshow(gray_img, []); title('原始图像'); subplot(1,2,2), imshow(abs(filtered_img), []); title('滤波后的图像'); 这段代码首先读取一张图像,然后将其转换为灰度图像。接着计算图像的傅里叶变换,并将零频率分量移到频谱的中心。然后设定一个低通滤波器,将其应用于图像的傅里叶变换。最后计算出滤

MatLab代码大全

第2章图像获取 2.3.2 二维连续傅里叶变换 例2.2 figure(1); %建立图形窗口1 [u,v] = meshgrid(-1:0.01:1); %生成二维频域网格 F1 = abs(sinc(u.*pi)); F2 = abs(sinc(v.*pi)); F=F1.*F2; %计算幅度频谱F=|F(u,v)| surf(u,v,F); %显示幅度频谱,如图2.3(b) shading interp; %平滑三维曲面上的小格 axis off; %关闭坐标系 figure(2); %建立图形窗口2 F1=histeq(F); %扩展F的对比度以增强视觉效果 imshow(F1); %用图像来显示幅度频谱,如图2.3(c) 第3章图像变换 3.4.4 二维FFT的MATLAB实现 例3.2 简单图像及其傅里叶变换 MATLAB程序: %建立简单图像d并显示之 d = zeros(32,32); %图像大小32⨯32 d(13:20,13:20) = 1; %中心白色方块大小为8⨯8 figure(1); %建立图形窗口1 imshow(d,'notruesize');%显示图像d如图3.5(a)所示 %计算傅里叶变换并显示之 D = fft2(d); %计算图像d的傅里叶变换,fft2(d) = fft(fft(d).').' figure(2); %建立图形窗口2 imshow(abs(D),[-1 5],'notruesize'); %显示图像d的傅里叶变换谱如3.5(b)所示 例3.3 MATLAB图像及其傅里叶变换谱 MATLAB程序: figure(1); load imdemos saturn2; %装入MA TLAB图像saturn2 imshow(saturn2); %显示图像saturn2如图3.6(a)所示 figure(2); S= fftshift(fft2(saturn2)); %计算傅里叶变换并移位 imshow(log(abs(S)),[ ]); %显示傅里叶变换谱如3.6(b)所示 例3.4 真彩图像及其傅里叶变换谱 MATLAB程序: figure(1); A=imread('image1.jpg'); %装入真彩图像,见图1.1(b) B=rgb2gray(A); %将真彩图像转换为灰度图像

相关文档
相关文档 最新文档