对上面的图像进行增强,完成以下内容: (1)复制图像,先对图像进行降噪处理;(中值滤波、高斯滤波均可) (2)对滤波后的图像,进行锐化; (3)将原图像和锐化的图像进行叠加,得到增强后的图像。 (4)同时显示,原图像,平滑的图像、锐化的图像和增强后的图像。
时间: 2024-10-28 20:08:34 浏览: 8
在计算机视觉和图像处理领域,要对图像进行上述增强操作,你可以按照以下步骤进行:
1. **复制图像并降噪**:
- 使用Python的OpenCV库(`cv2`),首先读取原始图像,然后创建图像副本。
```python
import cv2
original_img = cv2.imread('original_image.jpg')
noisy_img = original_img.copy()
```
对于降噪,可以采用中值滤波器或高斯滤波器。例如,使用高斯滤波器:
```python
kernel_size = 5 # 可调整大小
blurred_img = cv2.GaussianBlur(noisy_img, (kernel_size, kernel_size), 0)
```
2. **图像锐化**:
- 锐化通常通过卷积核实现,比如 Sobel 或者 Laplacian 算子。
```python
sobel_kernel = np.array([[-1, -2, -1], [0, 0, 0], [1, 2, 1]]) # Sobel算子
edges_img = cv2.filter2D(blurred_img, -1, sobel_kernel)
```
3. **图像叠加**:
- 将处理过的图像与原始图像按特定权重叠加,以获得增强效果。这可以简单地用 alpha blending 实现。
```python
alpha = 0.7 # 强度控制,0.0-1.0之间
enhanced_img = cv2.addWeighted(original_img, 1, edges_img, alpha, 0)
```
4. **显示结果**:
- 使用matplotlib或OpenCV显示所有图像:
```python
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=2, ncols=2)
axs[0, 0].imshow(original_img)
axs[0, 0].set_title('Original Image')
axs[0, 1].imshow(blurred_img, cmap='gray')
axs[0, 1].set_title('Blurred Image')
axs[1, 0].imshow(edges_img, cmap='gray')
axs[1, 0].set_title('Edges Image')
axs[1, 1].imshow(enhanced_img)
axs[1, 1].set_title('Enhanced Image')
plt.show()
```
阅读全文