利用Python从skimage中读取一张图像并显示出来,画出该图的傅里叶变换,利用skimage filter实现高通低通并显示图像
时间: 2024-10-10 21:08:47 浏览: 34
首先,你需要安装`skimage`库,如果你还没有安装,可以使用以下命令安装:
```bash
pip install scikit-image
```
接下来,我们可以按照步骤来进行:
1. **读取图像**:
使用`skimage.io.imread`函数读取图片文件,例如`image.jpg`。
```python
from skimage import io
image = io.imread('image.jpg')
```
2. **显示原图**:
可以用matplotlib库来展示原始图像。
```python
import matplotlib.pyplot as plt
plt.imshow(image)
plt.show()
```
3. **傅里叶变换**:
对图像进行傅立叶变换,通常我们使用`skimage.transform.fft`。注意这将返回频率域图像,如果想要查看频谱,需要对结果进行一些处理。
```python
fft_image = np.abs(np.fft.fftshift(np.fft.fft2(image)))
```
4. **绘制傅里叶变换**:
同样用matplotlib显示傅立叶变换的结果。
```python
plt.imshow(fft_image, cmap='gray')
plt.title('Fourier Transform of the Image')
plt.show()
```
5. **滤波处理**:
`skimage.filters`模块提供了一系列滤波器,如`high_pass`(高通滤波)和`low_pass`(低通滤波)。这里我们以高通滤波为例:
```python
high_pass_filter = filters.high_pass(image, size=5) # 使用5x5的窗口大小
```
6. **显示高通滤波后的图像**:
```python
plt.imshow(high_pass_filter, cmap='gray')
plt.title('High-pass Filtered Image')
plt.show()
```
7. **低通滤波同样操作,只需替换`filters.high_pass`为`filters.low_pass`即可**。
阅读全文