python opencv 图像增强使用1.直方图均衡化图像增强算法2.对数图像增强3.幂次图像增强分别编写出对应代码
时间: 2024-11-06 16:24:16 浏览: 54
数字图像处理学习笔记(十一)——用Python代码实现图像增强之线性变换、对数变换、幂律变换、分段线性变换、灰度级分层、直方图均衡化、平滑滤波器、锐化滤波器
在Python中,OpenCV是一个强大的计算机视觉库,可以用于图像处理和分析。下面我将为你展示如何使用OpenCV实现三种常见的图像增强方法:
1. **直方图均衡化**:
```python
import cv2
import numpy as np
def histogram_equalization(image_path):
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
eq_img = cv2.equalizeHist(img)
return eq_img
# 使用示例
image = histogram_equalization('input_image.jpg')
cv2.imwrite('output_histogram_equalized.jpg', image)
```
2. **对数图像增强**:
```python
def log_transform(image_path):
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
log_img = cv2.addWeighted(img, 4, cv2.GaussianBlur(img, (5, 5), 0), -4, 128) # 对数增强的一种变种
return log_img
# 使用示例
image = log_transform('input_image.jpg')
cv2.imwrite('output_log_transformed.jpg', image)
```
3. **幂次图像增强**:
```python
def power_transform(image_path, alpha=0.5): # 通常alpha值范围在0~1之间
img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
img_power = cv2.pow(img.astype('float32'), alpha)
img_power = img_power.clip(0, 255).astype('uint8') # 确保结果在0-255范围内
return img_power
# 使用示例
image = power_transform('input_image.jpg', 0.7)
cv2.imwrite('output_power_transformed.jpg', image)
```
阅读全文