图像处理中频率符合matlab代码
时间: 2024-02-12 17:28:45 浏览: 82
当涉及图像处理中的频率操作时,MATLAB提供了许多函数和工具箱。以下是一些常见的MATLAB代码示例,用于图像频率处理:
1. 傅里叶变换(Fourier Transform):
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转为灰度图像
img_fft = fft2(double(img_gray)); % 对图像进行傅里叶变换
img_fft_shifted = fftshift(img_fft); % 将零频分量移到图像中心
% 显示原始图像和频谱
figure;
subplot(1, 2, 1);
imshow(img_gray);
title('原始图像');
subplot(1, 2, 2);
imshow(log(1 + abs(img_fft_shifted)), []);
title('频谱');
```
2. 高通滤波(High-pass Filtering):
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转为灰度图像
img_fft = fft2(double(img_gray)); % 对图像进行傅里叶变换
img_fft_shifted = fftshift(img_fft); % 将零频分量移到图像中心
% 定义高通滤波器
[rows, cols] = size(img_gray);
center_row = floor(rows / 2) + 1;
center_col = floor(cols / 2) + 1;
cutoff_freq = 50; % 截止频率
highpass_filter = ones(rows, cols);
highpass_filter(center_row-cutoff_freq:center_row+cutoff_freq, center_col-cutoff_freq:center_col+cutoff_freq) = 0;
% 应用高通滤波器
img_fft_shifted_filtered = img_fft_shifted .* highpass_filter;
img_fft_filtered = ifftshift(img_fft_shifted_filtered);
img_filtered = real(ifft2(img_fft_filtered));
% 显示原始图像和滤波结果
figure;
subplot(1, 2, 1);
imshow(img_gray);
title('原始图像');
subplot(1, 2, 2);
imshow(uint8(img_filtered));
title('滤波结果');
```
3. 低通滤波(Low-pass Filtering):
```matlab
img = imread('image.jpg'); % 读取图像
img_gray = rgb2gray(img); % 转为灰度图像
img_fft = fft2(double(img_gray)); % 对图像进行傅里叶变换
img_fft_shifted = fftshift(img_fft); % 将零频分量移到图像中心
% 定义低通滤波器
[rows, cols] = size(img_gray);
center_row = floor(rows / 2) + 1;
center_col = floor(cols / 2) + 1;
cutoff_freq = 50; % 截止频率
lowpass_filter = zeros(rows, cols);
lowpass_filter(center_row-cutoff_freq:center_row+cutoff_freq, center_col-cutoff_freq:center_col+cutoff_freq) = 1;
% 应用低通滤波器
img_fft_shifted_filtered = img_fft_shifted .* lowpass_filter;
img_fft_filtered = ifftshift(img_fft_shifted_filtered);
img_filtered = real(ifft2(img_fft_filtered));
% 显示原始图像和滤波结果
figure;
subplot(1, 2, 1);
imshow(img_gray);
title('原始图像');
subplot(1, 2, 2);
imshow(uint8(img_filtered));
title('滤波结果');
```
这些示例代码演示了傅里叶变换以及高通滤波和低通滤波的应用。你可以根据你的具体需求进行修改和调整。
阅读全文