对图像astronaut.tif原图像加入高斯噪声,用滤波处理图像(图像四周边界不处理,下同),同屏显示原图像、加噪图像和处理后的图像。。
时间: 2024-05-01 11:24:08 浏览: 170
大型多视角高斯模型LGM:5秒产出高质量3D物体论文
好的,我可以给你提供Python代码来实现这个任务。首先需要导入一些必要的库,如下所示:
``` python
import numpy as np
import cv2
import matplotlib.pyplot as plt
```
然后,我们可以使用OpenCV库来读取原始图像和添加高斯噪声。具体实现如下:
``` python
# 读取原始图像
img = cv2.imread('astronaut.tif', cv2.IMREAD_GRAYSCALE)
# 添加高斯噪声
mean = 0
var = 100
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, (512, 512))
noisy_img = img + gauss
# 显示原始图像和加噪图像
plt.subplot(121), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy')
plt.xticks([]), plt.yticks([])
plt.show()
```
接下来,我们可以使用均值滤波器来处理加噪图像。具体实现如下:
``` python
# 定义一个3x3的均值滤波器
kernel = np.ones((3, 3), np.float32) / 9
# 对加噪图像进行滤波处理
filtered_img = cv2.filter2D(noisy_img, -1, kernel)
# 显示原始图像、加噪图像和处理后的图像
plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy')
plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(filtered_img, cmap='gray'), plt.title('Filtered')
plt.xticks([]), plt.yticks([])
plt.show()
```
最后,我们可以将三张图像在同一窗口显示,具体实现如下:
``` python
# 显示原始图像、加噪图像和处理后的图像
plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy')
plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(filtered_img, cmap='gray'), plt.title('Filtered')
plt.xticks([]), plt.yticks([])
plt.show()
```
完整的代码如下所示:
``` python
import numpy as np
import cv2
import matplotlib.pyplot as plt
# 读取原始图像
img = cv2.imread('astronaut.tif', cv2.IMREAD_GRAYSCALE)
# 添加高斯噪声
mean = 0
var = 100
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, (512, 512))
noisy_img = img + gauss
# 定义一个3x3的均值滤波器
kernel = np.ones((3, 3), np.float32) / 9
# 对加噪图像进行滤波处理
filtered_img = cv2.filter2D(noisy_img, -1, kernel)
# 显示原始图像、加噪图像和处理后的图像
plt.subplot(131), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(noisy_img, cmap='gray'), plt.title('Noisy')
plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(filtered_img, cmap='gray'), plt.title('Filtered')
plt.xticks([]), plt.yticks([])
plt.show()
```
希望这可以帮助到你!
阅读全文