matlab把图像分别变成0.5cpd和5cpd的图片
时间: 2024-01-16 12:02:33 浏览: 176
以下是用Matlab将图像分别变成0.5cpd和5cpd的示例代码:
1. 0.5cpd的图片:
```matlab
% 读取原始图像
original_image = imread('image.jpg');
% 获取图像大小
[height, width, ~] = size(original_image);
% 计算图像中心
center = [floor(width/2)+1, floor(height/2)+1];
% 构建网格
[X, Y] = meshgrid(1:width, 1:height);
% 计算距离中心的距离
distances = sqrt((X-center(1)).^2 + (Y-center(2)).^2);
% 构建低通滤波器
low_pass_filter = distances <= width/(2*0.5);
% 进行傅里叶变换
fft_image = fftshift(fft2(original_image));
% 进行频域滤波
fft_filtered_image = fft_image .* low_pass_filter;
% 进行傅里叶逆变换
filtered_image = ifft2(ifftshift(fft_filtered_image));
% 显示结果
imshow(real(filtered_image));
```
2. 5cpd的图片:
```matlab
% 读取原始图像
original_image = imread('image.jpg');
% 获取图像大小
[height, width, ~] = size(original_image);
% 计算图像中心
center = [floor(width/2)+1, floor(height/2)+1];
% 构建网格
[X, Y] = meshgrid(1:width, 1:height);
% 计算距离中心的距离
distances = sqrt((X-center(1)).^2 + (Y-center(2)).^2);
% 构建高通滤波器
high_pass_filter = distances >= width/(2*5);
% 进行傅里叶变换
fft_image = fftshift(fft2(original_image));
% 进行频域滤波
fft_filtered_image = fft_image .* high_pass_filter;
% 进行傅里叶逆变换
filtered_image = ifft2(ifftshift(fft_filtered_image));
% 显示结果
imshow(real(filtered_image));
```
需要注意的是,这些代码只是对图像进行了简单的频域滤波,并没有考虑到图像中的高频噪声或者低频信息的重要性。在实际应用中,需要根据具体情况进行调整和优化。
阅读全文