matlab 高斯模糊非库函数实现方式

简单讲一下原理和思路:
  高斯模糊就是让一个高斯矩阵和所要模糊的矩阵相点乘(即两个矩阵对应位置的两个数相乘),然后把所得矩阵的各项之和相加,即为模糊中心点的值。
  所谓高斯矩阵就是由高斯函数(即正态分布函数)得到的矩阵。
  二维正态分布函数:
  二维正态分布函数:
  此外,要注意的是由此函数得到的矩阵之和小于1,需要均匀化,使得矩阵之和为1。

贴我的matlab程序代码:

clc, clear, close all
img_origin=imread('C:\Users\izhxxx\Desktop\论文\canny\lena.png');%读取图片文件
img_gray=rgb2gray(img_origin);%灰度化
Sigma=1.5;%σ为高斯模糊半径,半径越大模糊程度越大
for x = 1: 3  % 垂直方向
    for y = 1:3  % 水平方向
        WeightMatrix(x, y)=exp(-((x-1)^2+(y-1)^2)/(2*Sigma^2))/(2*pi*Sigma^2);
    end
end
WeightMatrix=WeightMatrix./sum(sum(WeightMatrix)) %使该3*3矩阵之和等于1
[row, col] = size( img_gray );
for i = 1: row  % 垂直方向
    for j = 1:col  % 水平方向 
        if i==1 || j==1 || i==row || j==col
            img_undist(i, j)=img_gray(i, j);%边缘未处理
        else
            miniMatrix=single(img_gray(i-1:i+1, j-1:j+1));
            img_undist(i, j)=sum(sum( miniMatrix.*WeightMatrix ));%高斯模糊
        end
    end
end
figure(1);
subplot(121);
imshow(img_gray);%显示灰度图
subplot(122);
imshow(img_undist);%显示灰度模糊图

模糊效果:
这里写图片描述

在智能车上的应用效果:
这里写图片描述

fft(快速傅里叶变换)是一种常用的信号处理技术,用于将信号从时域转换到频域。虽然MATLAB提供了现成的FFT库函数可以直接使用,但是我们也可以通过自己编写代码来实现FFT的功能。 实现FFT的关键是了解其算法过程。FFT的基本思想是将信号分解为若干个频率不同的正弦波,并将每个正弦波的频率、幅值和相位进行分析。具体过程如下: 1. 将输入信号从时域转换为复数序列。 2. 如果输入序列长度为1,则直接输出。 3. 将复数序列分成两半,并递归地对两部分分别进行FFT操作。 4. 根据旋转因子对两部分进行结合,得到结果。 5. 重复步骤3和4,直到完成FFT运算。 以下是一个用MATLAB编写的简单示例代码,演示了如何实现FFT的功能: ```matlab function X = myfft(x) n = length(x); if n == 1 X = x; return; end even = myfft(x(1:2:n)); odd = myfft(x(2:2:n)); W = exp(-2*pi*1i*(0:n/2-1)/n); t = W .* odd; X = [even + t, even - t]; end ``` 上述代码定义了一个函数`myfft`,输入参数`x`为待转换的信号序列。代码的递归部分是对输入序列进行分割和FFT运算,最后将两部分结果通过旋转因子结合得到最终结果。 虽然这段代码可以实现FFT,但是由于算法复杂度较高,不适用于大尺寸信号处理。因此,一般情况下,我们还是建议使用MATLAB提供的库函数实现FFT,以便更高效地进行信号处理任务。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值