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

来源:互联网 发布:软件方案文档 编辑:程序博客网 时间:2024/05/22 14:20

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

贴我的matlab程序代码:

clc, clear, close allimg_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);    endendWeightMatrix=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    endendfigure(1);subplot(121);imshow(img_gray);%显示灰度图subplot(122);imshow(img_undist);%显示灰度模糊图

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

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

原创粉丝点击