matlab中图像频率域除去高斯噪声
时间: 2023-08-23 18:33:47 浏览: 98
在MATLAB中,可以使用离散傅里叶变换(DFT)将图像转换到频率域,然后使用滤波器来消除高斯噪声。以下是一个简单的步骤:
1. 读取图像并将其转换为灰度图像
```
img = imread('image.jpg');
gray_img = rgb2gray(img);
```
2. 应用高斯滤波器来添加高斯噪声
```
noisy_img = imnoise(gray_img,'gaussian',0,0.1);
```
3. 对图像进行DFT变换
```
f = fft2(noisy_img);
f_shift = fftshift(f);
```
4. 创建一个滤波器,例如理想低通滤波器或巴特沃斯低通滤波器
```
[M, N] = size(noisy_img);
H = ones(M,N);
cutoff = 50;
for i=1:M
for j=1:N
dist = sqrt((i-M/2)^2 + (j-N/2)^2);
if dist > cutoff
H(i,j) = 0;
end
end
end
```
5. 将滤波器应用于频率域的图像
```
g_shift = f_shift .* H;
```
6. 将滤波后的图像转换回空间域
```
g = ifftshift(g_shift);
filtered_img = real(ifft2(g));
```
7. 显示原始图像、带噪声的图像和滤波后的图像
```
subplot(1,3,1), imshow(gray_img), title('Original Image');
subplot(1,3,2), imshow(noisy_img), title('Noisy Image');
subplot(1,3,3), imshow(filtered_img), title('Filtered Image');
```
注意:滤波器的选择和参数需要根据具体情况进行调整。
阅读全文