python opencv对数暗部增强
时间: 2023-05-19 16:02:46 浏览: 358
可以使用cv2.normalize()函数将图像的像素值进行对数变换,然后再进行增强处理。具体实现可以参考以下代码:
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 对数变换
img_log = (np.log(img + 1) / np.log(10)) * 255
# 归一化
cv2.normalize(img_log, img_log, 0, 255, cv2.NORM_MINMAX)
# 增强处理
img_exp = cv2.equalizeHist(np.uint8(img_log))
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Enhanced Image', img_exp)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关问题
用python试验不同Gamma参数对图像矫正的效果
在Python中,我们可以使用OpenCV库进行图像校正,特别是在处理高动态范围(HDR)图像或低光照条件下,常常会用到伽马校正(Gamma Correction)。伽马校正是一种非线性变换,通过调整图像的亮度值,使之看起来更自然。
Gamma参数通常是一个小数,大于0小于1,其作用类似于对数函数。当Gamma小于1时,它会让暗部变得更亮;当Gamma大于1时,则会使亮部变暗。例如,你可以通过以下步骤实验不同的Gamma值:
1. 导入必要的库:
```python
import cv2
import numpy as np
```
2. 加载图像并计算原始灰度直方图:
```python
image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE)
hist, _ = np.histogram(image.flatten(), bins=256, range=(0, 256))
```
3. 定义一个函数来应用不同的伽马校正:
```python
def apply_gamma_correction(image, gamma):
table = np.array([((i / 255.0) ** (1.0 / gamma)) * 255 for i in np.arange(0, 256)]).astype("uint8")
return cv2.LUT(image, table)
```
4. 应用不同的Gamma值并观察效果:
```python
gammas_to_test = [0.5, 1.0, 1.5, 2.0] # 可以尝试不同的伽马值
for gamma in gammas_to_test:
corrected_image = apply_gamma_correction(image, gamma)
cv2.imshow(f"Gamma: {gamma}", corrected_image)
cv2.waitKey(0) # 等待用户按键
cv2.destroyAllWindows()
```
阅读全文