matlab图像频域滤波,滤除高斯白噪声,代码
时间: 2023-08-22 12:06:40 浏览: 99
以下是一种基于频域滤波的 MATLAB 代码,可以用于滤除高斯白噪声:
```matlab
% 读取图像
img = imread('lena.jpg');
% 添加高斯白噪声
noise = imnoise(img, 'gaussian', 0.1);
% 对傅里叶变换进行中心化
f = fftshift(fft2(noise));
% 构造高斯滤波器
[m, n] = size(noise);
sigma = 10;
[x, y] = meshgrid(1:n, 1:m);
centerX = ceil(n/2);
centerY = ceil(m/2);
gFilter = exp(-((x-centerX).^2 + (y-centerY).^2) / (2*sigma^2));
% 应用滤波器
filtered = abs(ifft2(ifftshift(f .* gFilter)));
% 显示结果
figure;
subplot(1,2,1), imshow(noise), title('添加高斯白噪声的图像');
subplot(1,2,2), imshow(filtered, []), title('滤波后的图像');
```
这段代码首先读取一张图像,然后使用`imnoise`函数添加高斯白噪声。接着,将图像的傅里叶变换进行中心化,以便于后续的频域滤波操作。然后,使用高斯函数构造一个高斯滤波器,其中`sigma`参数控制滤波器的带宽。最后,将傅里叶变换与高斯滤波器相乘,再进行反傅里叶变换,得到滤波后的图像。
相关问题
Matlab滤除同频高斯白噪声
在Matlab中,可以使用以下步骤来滤除同频高斯白噪声:
1. 生成高斯白噪声信号并加到原始信号上。
```matlab
% 生成高斯白噪声
noise = randn(size(signal));
% 添加噪声
noisy_signal = signal + noise;
```
2. 使用滤波器对噪声进行滤波。可以使用Butterworth、Chebyshev、Elliptic等滤波器。
```matlab
% 滤波器设计
fs = 1000; % 采样率
fc = 100; % 截止频率
[b,a] = butter(4,fc/(fs/2),'high'); % 高通滤波器
% 滤波器应用
filtered_signal = filter(b,a,noisy_signal);
```
在上述代码中,我们使用了Butterworth高通滤波器,将截止频率设为100Hz,滤除了高斯白噪声。
3. 对滤波后的信号进行分析,验证是否滤除了同频高斯白噪声。
```matlab
% 时域分析
subplot(2,1,1);
plot(t,signal);
hold on;
plot(t,filtered_signal);
xlabel('Time (s)');
ylabel('Amplitude');
legend('Original Signal','Filtered Signal');
% 频域分析
subplot(2,1,2);
N = length(signal);
f = (0:N-1)*(fs/N);
signal_fft = abs(fft(signal));
filtered_fft = abs(fft(filtered_signal));
plot(f,signal_fft);
hold on;
plot(f,filtered_fft);
xlim([0 fs/2]);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
legend('Original Signal','Filtered Signal');
```
在上述代码中,我们将原始信号和滤波后的信号绘制在同一张图中进行比较,同时绘制了频谱图,以验证是否滤除了同频高斯白噪声。
希望这些步骤对你有所帮助!
matlab遥感影像滤波
在MATLAB中处理遥感影像时,滤波是一种常用的技术,用于改善图像质量、增强细节或去除噪声。常见的遥感影像滤波有以下几种:
1. **均值滤波**:通过计算像素周围邻域的平均值来平滑图像,适用于去除高斯白噪声。
2. **中值滤波**:对每个像素取其邻域内的像素值排序,然后选择中间的那个值作为新值,适合于去除非连续噪声如椒盐噪声。
3. **高通滤波**(如高斯滤波):主要用于模糊图像边缘、提高图像分辨率,通过特定大小的卷积核进行操作。
4. **低通滤波**(如双边滤波):既保留图像细节又减少噪声,特别适合于保持图像边缘的同时平滑部分区域。
5. **小波变换滤波**:利用小波分析对图像进行多尺度分解,可以同时进行频域滤波,适用于提取图像特征和去噪。
6. **自适应滤波**:像非局部均值滤波,它考虑了整个图像的信息,更有效地抑制噪声而不影响边缘。
应用滤波前通常需要根据实际需求选择合适的滤波器,并注意过度滤波可能会导致图像细节丢失。在MATLAB中,`imfilter`函数常用于实现各种滤波操作,而`medfilt2`和`wiener2`等函数则专用于中值滤波和维纳滤波。