高斯模糊matlab
时间: 2023-11-04 11:00:44 浏览: 200
利用MATLAB实现高斯模糊
高斯模糊是一种常用的图像处理方法,通过使用高斯函数生成一个权重矩阵,将该矩阵与原图像进行卷积操作,从而实现图像的模糊效果。在Matlab中,可以使用以下代码实现高斯模糊:
```matlab
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);%显示灰度模糊图
```
该代码首先读取图像,然后将其转换为灰度图像。接下来,设定高斯模糊半径,生成一个权重矩阵WeightMatrix,使其满足高斯分布的特性,并通过除以矩阵元素之和使其之和等于1。然后,遍历原图像的所有像素,对于边缘像素不进行处理,其他像素则取其周围3*3范围内的像素灰度值与权重矩阵对应元素相乘并求和,得到模糊后的像素值。最后,使用imshow函数分别显示原图和模糊后的图像。
阅读全文