帮我用python写五个可以用于水下图像增强的代码,并优化
时间: 2024-05-15 21:20:07 浏览: 64
1. 增强对比度
```python
import cv2
def enhance_contrast(image):
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 直方图均衡化
equalized = cv2.equalizeHist(gray)
# 转换回彩色图像
result = cv2.cvtColor(equalized, cv2.COLOR_GRAY2BGR)
return result
```
优化:使用OpenCV内置的直方图均衡化函数,避免手动计算直方图。
2. 去除噪声
```python
import cv2
def remove_noise(image):
# 中值滤波
blurred = cv2.medianBlur(image, 5)
return blurred
```
优化:使用OpenCV内置的中值滤波函数,避免手动计算滤波器。
3. 增强亮度
```python
import cv2
import numpy as np
def enhance_brightness(image, value):
# 转换为HSV格式
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 增加亮度
hsv[:,:,2] = np.clip(hsv[:,:,2] + value, 0, 255)
# 转换回BGR格式
result = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
return result
```
优化:使用NumPy的广播机制,避免循环遍历像素。
4. 增强饱和度
```python
import cv2
import numpy as np
def enhance_saturation(image, value):
# 转换为HSV格式
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 增加饱和度
hsv[:,:,1] = np.clip(hsv[:,:,1] + value, 0, 255)
# 转换回BGR格式
result = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
return result
```
优化:使用NumPy的广播机制,避免循环遍历像素。
5. 增强锐度
```python
import cv2
def enhance_sharpness(image):
# 模糊处理
blurred = cv2.GaussianBlur(image, (0, 0), 3)
# 锐化处理
sharpened = cv2.addWeighted(image, 1.5, blurred, -0.5, 0)
return sharpened
```
优化:使用OpenCV内置的高斯滤波和图像融合函数,避免手动计算卷积核和权重。
阅读全文