matlab把图像分别变成0.5cpd的图片
时间: 2023-12-12 17:02:23 浏览: 182
要把图像变成0.5cpd的图片,可以使用matlab中的fft2函数进行傅里叶变换,然后将低频部分保留,高频部分截断。
以下是实现的代码:
1. 读取图片
```matlab
img = imread('image.jpg'); % 读取图片
```
2. 将图像转换为灰度图
```matlab
gray_img = rgb2gray(img); % 将图像转换为灰度图
```
3. 对图像进行傅里叶变换
```matlab
fft_img = fft2(double(gray_img)); % 对图像进行傅里叶变换
```
4. 计算频率域
```matlab
fft_img_shift = fftshift(fft_img); % 将零频移到中心
[M, N] = size(fft_img_shift); % 获取图像的大小
u = 1:M;
v = 1:N;
idx = find(u > M/2);
u(idx) = u(idx) - M;
idy = find(v > N/2);
v(idy) = v(idy) - N;
[V, U] = meshgrid(v, u);
D = sqrt(U.^2 + V.^2); % 计算频率域
```
5. 将高频部分截断,只保留低频部分
```matlab
D0 = 0.5; % 设置截断半径为0.5
H = double(D <= D0); % 生成理想低通滤波器
G = H .* fft_img_shift; % 低通滤波
```
6. 对滤波后的图像进行傅里叶逆变换
```matlab
g = real(ifft2(ifftshift(G))); % 傅里叶逆变换
```
7. 显示滤波后的图像
```matlab
imshow(uint8(g)); % 显示滤波后的图像
```
运行以上代码,即可将原始图像变成0.5cpd的图片。可以根据需要修改截断半径D0来调整滤波效果。
阅读全文