pytorch 傅里叶变换 高通滤波
时间: 2023-11-03 17:56:50 浏览: 454
PyTorch提供了torch.fft包来进行傅里叶变换。要对图像进行傅里叶变换,首先需要将其转换为频域表示。然后,可以应用不同的滤波器来处理频域图像,以实现高通滤波。
下面是一个使用PyTorch进行傅里叶变换和高通滤波的示例代码:
```python
import torch
import torchvision.transforms.functional as F
# 加载图像并进行傅里叶变换
image = Image.open('lena_sp.jpg').convert("L")
image_tensor = F.to_tensor(image)
fft_image = torch.fft.fftshift(torch.fft.fft2(image_tensor))
# 创建高通滤波器
rows, cols = image_tensor.shape[-2:]
center_row, center_col = rows // 2, cols // 2
filter = torch.ones_like(image_tensor)
cutoff = 30 # 设置滤波器的截止频率
filter[center_row - cutoff:center_row + cutoff, center_col - cutoff:center_col + cutoff] = 0
# 应用滤波器
filtered_image = fft_image * filter
# 进行逆傅里叶变换,取实部作为最终图像
filtered_image = torch.fft.ifft2(torch.fft.ifftshift(filtered_image))
filtered_image = filtered_image.abs()
# 显示结果
plt.imshow(filtered_image, cmap='gray')
plt.axis('off')
plt.show()
```
相应的
阅读全文