OpenCV 实现图像增强
时间: 2024-12-30 17:34:53 浏览: 6
### 使用 OpenCV 实现图像增强
#### 线性增强
线性增强是一种简单而有效的方式,可以调整图像的对比度和亮度来改善其视觉效果。通过改变像素值的分布范围,可以使暗部更清晰,亮部更加突出。
```python
import cv2
import numpy as np
def linear_enhancement(image, alpha=1.0, beta=0):
adjusted = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
return adjusted
image = cv2.imread("../img/aa.jpg", cv2.IMREAD_GRAYSCALE)[^4]
enhanced_image = linear_enhancement(image, alpha=1.5, beta=30)
cv2.imshow('Original Image', image)
cv2.imshow('Enhanced Image', enhanced_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
此代码片段展示了如何利用 `convertScaleAbs` 函数对灰度图进行线性变换,从而达到增强的效果[^2]。
#### 非线性增强 - 对数变换
对于某些低光照条件下的图片,采用对数变换能够有效地扩展动态范围并提高细节可见度。
```python
def log_transformation(image, c=1):
transformed = c * (np.log(image + 1))
transformed = np.uint8(transformed / np.max(transformed) * 255)
return transformed
log_transformed_image = log_transformation(image)
cv2.imshow('Log Transformed Image', log_transformed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段程序实现了基本的日志转换逻辑,参数c用于控制曲线斜率。
#### 自适应直方图均衡化(CLAHE)
自适应直方图均衡化可以在保持局部特征的同时提升全局对比度,特别适用于具有复杂光照变化场景中的图像处理任务。
```python
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(image)
cv2.imshow('CLAHE Enhanced Image', cl1)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码创建了一个 CLAHE 对象,并设置了剪切限制以及网格大小,最后应用于输入图像以获得更好的视觉质量。
阅读全文