迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > MATLAB >

MATLAB 图像低通滤波器

作者:迹忆客 最近更新:2023/03/19 浏览次数:

本文将讨论使用 MATLAB 中的 fspecial() 函数为图像创建 2D 低通滤波器。

在 MATLAB 中使用低通滤波器平滑图像

图像中存在两个频率级别。图像中的边缘和噪声代表高频分量,平滑区域代表低频分量。

高频分量具有高强度等级或高对比度,低频分量具有低强度等级或低对比度。

假设图像有锐利的边缘或噪声,我们想要对其进行平滑处理。在这种情况下,我们必须创建一个低通滤波器,允许低频分量或像素通过并阻止高频分量或像素,从而降低图像中像素的强度水平。

假设图像具有平滑或低对比度区域,并且我们想要锐化它。在这种情况下,我们必须创建一个高通滤波器,允许高频分量或像素通过并阻止低频分量或像素,从而提高图像中像素的强度级别。

我们可以使用不同种类的滤波器来制作低通或高通滤波器。

MATLAB 的 fspecial() 函数可用于制作二维低通或高通滤波器。创建过滤器后,我们可以使用 imfilter()filter2() 函数将其应用于给定图像。

fspecial() 函数根据不同的过滤器有不同的语法。可用的 fspecial() 过滤器及其语法如下所示。

Filter_object = fspecial(type)
Filter_object = fspecial('average',hsize)
Filter_object = fspecial('disk',radius)
Filter_object = fspecial('gaussian',hsize,sigma)
Filter_object = fspecial('laplacian',alpha)
Filter_object = fspecial('log',hsize,sigma)
Filter_object = fspecial('motion',len,theta)
Filter_object = fspecial('prewitt')
Filter_object = fspecial('sobel')

第一个语法是 fspecial() 函数的基本语法,第一个语法之后的六个滤波器是用于平滑图像的低通滤波器,最后两个滤波器是用于锐化图像边缘的高通滤波器给定的图像。我们必须传递过滤器的类型或过滤器名称来制作该特定类型的过滤器。

一些过滤器也有可选参数,但如果我们只传递过滤器名称,该函数将使用可选参数的默认值。我们还可以使用它们的特定语法设置过滤器的可选参数,这在第一个语法之后显示。

例如,在平均滤波器的情况下,我们可以使用上面列出的第二种语法设置滤波器大小,可以是正整数或两个元素的向量。

如果我们将 hsize 设置为正整数或缩放器,过滤器将是一个方阵。如果我们将 hsize 设置为两个元素的向量,第一个元素将表示行数,第二个元素将表示过滤矩阵的列数。

第三种语法用于根据给定的半径创建圆形平均滤波器或圆盘滤波器,可以是正整数,默认设置为 5。第四种语法用于创建高斯滤波器 size hsizesigma,表示标准偏差,默认情况下,其值设置为 0.5

我们还可以使用 MATLAB 中的 imgaussfilt()imgaussfilt3() 函数来创建高斯滤波器并将其应用于给定图像。第五个语法用于根据 alpha 创建 laplacian 过滤器,设置 Laplacian 的形状,默认值为 0.2

第六个语法用于根据滤波器大小 hsizesigma 创建高斯滤波器的拉普拉斯滤波器,表示标准差。

第七个语法用于创建运动过滤器,以根据 len 指定的运动长度来平滑包含相机线性运动的图像,其默认值为 9,运动角度以度为单位由 theta 指定。角度为逆时针方向,默认值为 0。

第八个语法创建一个高通滤波器,以使用垂直梯度增强水平边缘的强度级别。如果我们想创建一个过滤器来增强垂直边缘,我们可以对输出过滤器矩阵进行转置。

最后一个语法与倒数第二个语法相同;唯一的区别是最后一个语法用于使用平滑效果创建过滤器。例如,让我们使用 fspecial() 函数创建平均过滤器,以去除图像中存在的椒盐噪声。

请参阅下面的代码。

clc
clear

Input_image = imread('eight.tif');
Noisy_image = imnoise(Input_image,'salt & pepper',0.03);
h = fspecial('average');
Smoothed_image = filter2(h, Input_image);
imshowpair(Noisy_image,Smoothed_image,'montage')

输出:

平均滤波器

在上面的代码中,我们使用 imnoise() 函数将椒盐噪声放入给定图像中,我们使用 filter2() 函数将平均滤波器应用于噪声图像。我们使用 imshowpair() 函数来显示噪声和平滑图像以进行比较。

我们可以在上面的输出中看到,使用平均滤波器对右侧图像进行了平滑处理。我们可以对图像应用不同的过滤器来检查结果。

我们还可以使用 imfilter() 函数在给定图像上应用过滤器。filter2()imfilter() 之间的区别在于它们在给定图像上应用过滤器的算法。

imfilter() 使用双精度和浮点运算来计算输出图像的像素值,filter2() 采用给定图像和过滤器矩阵的 2D 卷积,将旋转 180 度找到输出像素值。我们可以尝试这两个函数并比较它们的结果。

我们还可以设置 imfilter() 函数的一些选项,例如输入数组的填充选项、输出矩阵的大小和卷积选项。我们还可以在 filter2() 函数的情况下设置输出过滤数据的形状,默认情况下设置为 same,但我们也可以将其设置为 full 以获得完整的 2D 过滤数据和 valid 对于不使用零填充边计算的数据。

查看此链接了解有关 filter2() 函数的更多详细信息。查看此链接以获取有关 imfilter() 函数的更多详细信息。

上一篇:MATLAB corr2() 函数

下一篇:MATLAB 图像扩张

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MATLAB 中注释多行

发布时间:2023/04/23 浏览次数:111 分类:MATLAB

可以使用注释块方法或 MATLAB 编辑器在 MATLAB 中注释多行。

MATLAB 最大索引

发布时间:2023/04/23 浏览次数:192 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 max() 函数从数组及其索引中查找最大值。

MATLAB 索引超出矩阵尺寸

发布时间:2023/04/23 浏览次数:103 分类:MATLAB

要解决索引超出矩阵索引的问题,请检查你要获取或替换数据的索引。

MATLAB 检查变量类型

发布时间:2023/04/23 浏览次数:92 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 class() 和 whos 函数检查给定变量的类型。

MATLAB vs Octave

发布时间:2023/04/23 浏览次数:74 分类:MATLAB

我们可以说 Octave 是 MATLAB 的免费版本。

MATLAB MAT 文件

发布时间:2023/04/23 浏览次数:89 分类:MATLAB

可以使用 MAT 文件在 MATLAB 中存储和加载格式化的数据。

MATLAB asv 文件

发布时间:2023/04/23 浏览次数:180 分类:MATLAB

.asv 文件是 MATLAB 生成的自动保存文件,因此在计算机崩溃时你不会丢失数据。

MATLAB 三元运算符

发布时间:2023/04/23 浏览次数:130 分类:MATLAB

MATLAB 中没有三元运算符,因此你必须使用标准格式。

MATLAB & vs &&

发布时间:2023/04/23 浏览次数:134 分类:MATLAB

在 MATLAB 中,&是逻辑与运算符,&&也是表现出短路行为的逻辑运算符。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便