matlab高斯低通滤波函数的使用与理解(附源码)

 时间:2026-02-13 11:27:18

1、首先,在matlab文件夹页面下右键点击新建一个函数脚本,命名为gauss。

matlab高斯低通滤波函数的使用与理解(附源码)

2、鼠标左键选中刚刚创建的gauss.m函数文件,双击打开。

matlab高斯低通滤波函数的使用与理解(附源码)

3、在函数文件中,选中全部默认的信息(ctrl+A),删除(Backspace或delete键),然后复制如下代码,粘贴到gauss.m文件中:

function [image_result] =gauss (image_orign,D0)

%GULS 高斯低通滤波器

%   D0为截至频率的(相当于设置在傅里叶谱图的半径值)

if (ndims(image_orign) == 3)

%判断读入的图片是否为灰度图,如果不是则转换为灰度图,如果是则不做操作

image_2zhi = rgb2gray(image_orign);

else 

image_2zhi = image_orign;

end

image_fft = fft2(image_2zhi);%用傅里叶变换将图象从空间域转换为频率域

image_fftshift = fftshift(image_fft);

%将零频率成分(坐标原点)变换到傅里叶频谱图中心

[width,high] = size(image_2zhi);

D = zeros(width,high);

%创建一个width行,high列数组,用于保存各像素点到傅里叶变换中心的距离

for i=1:width

    for j=1:high

        D(i,j) = sqrt((i-width/2)^2+(j-high/2)^2);

%像素点(i,j)到傅里叶变换中心的距离

        H = exp(-1/2*(D(i,j).^2)/(D0*D0));

%高斯低通滤波函数

        image_fftshift(i,j)= H*image_fftshift(i,j);

%将滤波器处理后的像素点保存到对应矩阵

    end

end

image_result = ifftshift(image_fftshift);%将原点反变换回原始位置

image_result = uint8(real(ifft2(image_result)));

%real函数用于取复数的实部;

%uint8函数用于将像素点数值转换为无符号8位整数;ifft函数反傅里叶变换

matlab高斯低通滤波函数的使用与理解(附源码)

4、如果要使用这个函数,则用imread()读入图片后,选择函数处理即可。

例如,当前工作文件夹下,有待处理图片“lena.jpg”,则可通过下列代码读入图片数据,再使用gauss.m函数进行高斯低通滤波的去噪处理。

x = imread('lena.jpg');

x_result = gauss(x,160);

subplot(1,2,1);imshow(x);title('原图');

subplot(1,2,2);imshow(x_result);title('高斯低通滤波处理后图片');

1、1.在工程目录下创建gauss.m函数文件

2.在函数文件中编写高斯低通滤波函数

3.使用imread函数读取待处理图片

4.以待处理图片为gauss.m函数的输入

5.将gauss.m函数的处理结果返回值保存在图片变量中

6.将图片变量使用imshow函数展示

  • matlab怎么打开工作空间
  • matlab绘图中如何加入坐标轴名称及标题名称
  • 如何修改matlab绘图中线条的粗细
  • matlab将两张图放到一张图上怎么做
  • matlab怎么使图形上text和坐标轴文本加粗加大
  • 热门搜索
    手抄报花边图案大全 尊敬老人手抄报 三年级感恩手抄报 手抄报花边难又漂亮 与法同行手抄报内容 安全主题手抄报 爱劳动手抄报内容 消防知识手抄报图片 安全手抄报图案 关于写字的手抄报