弱光图像增强python
时间: 2023-06-20 21:03:07 浏览: 75
弱光图像增强是一种常见的计算机视觉任务,可以通过各种方法来实现。Python中有很多库可以用来实现弱光图像增强,比如OpenCV、Pillow、scikit-image等。
其中,OpenCV是一个强大的计算机视觉库,可以用来实现各种图像增强算法。下面是一个简单的例子,使用OpenCV来实现弱光图像增强:
```python
import cv2
# 读取图像
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
# 增强图像
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
img_enhanced = clahe.apply(img)
# 保存结果
cv2.imwrite('output.jpg', img_enhanced)
```
在这个例子中,我们使用了OpenCV中的CLAHE算法来实现弱光图像增强。首先,我们读取了一张灰度图像,然后使用CLAHE算法对图像进行增强,最后保存结果。需要注意的是,CLAHE算法的参数可以根据具体情况进行调整,比如clipLimit和tileGridSize等参数。
除了OpenCV,Pillow和scikit-image也提供了一些图像增强算法,可以根据具体情况选择合适的库和算法来实现弱光图像增强。
相关问题
弱光图像增强python代码
以下是一个简单的弱光图像增强Python代码示例,使用OpenCV库:
``` python
import cv2
# 加载图像
img = cv2.imread('input_image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 应用CLAHE(对比度有限自适应直方图均衡化)算法
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl_img = clahe.apply(gray)
# 显示原始图像和增强后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Enhanced Image', cl_img)
# 等待按键
cv2.waitKey(0)
```
此代码使用CLAHE算法增强图像。您可以调整 `clipLimit` 和 `tileGridSize` 参数以获得更好的结果。
水下图像增强算法python
水下图像增强算法可以采用以下几种方法:
1. 去雾:水下图像中往往存在雾化现象,可以使用去雾算法将图像中的雾去除,使图像更加清晰。
2. 白平衡:水下图像中颜色偏差较大,可以使用白平衡算法来调整图像的颜色,使其更加真实。
3. 对比度增强:水下图像中的对比度较弱,可以使用对比度增强算法来增强图像的对比度,使其更加清晰。
以下是使用Python实现的一些水下图像增强算法:
1. 去雾
```python
import cv2
import numpy as np
def dehaze(img, t_min=0.1, A_max=1):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
gray = cv2.GaussianBlur(gray, (21, 21), 0)
h, w = img.shape[:2]
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
v = hsv[:, :, 2]
atm_light = np.percentile(v, 99)
t = np.zeros((h, w))
for i in range(h):
for j in range(w):
if v[i, j] < t_min*atm_light:
t[i, j] = 1
else:
t[i, j] = 1 - A_max * (v[i, j] - t_min*atm_light) / (atm_light*(1-t_min))
t = cv2.medianBlur(t.astype(np.float32), 5)
result = np.zeros(img.shape, dtype=np.float32)
for i in range(3):
img_i = img[:, :, i].astype(np.float32)
img_i = (img_i - atm_light) / np.maximum(t, 0.1) + atm_light
result[:, :, i] = np.uint8(np.clip(img_i, 0, 255))
return result
```
2. 白平衡
```python
import cv2
import numpy as np
def white_balance(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
hist, bins = np.histogram(gray.flatten(), 256, [0, 256])
cdf = hist.cumsum()
cdf_normalized = cdf / cdf.max()
cdf_m = np.ma.masked_equal(cdf, 0)
cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())
cdf = np.ma.filled(cdf_m, 0).astype('uint8')
img_eq = cdf[gray]
img_eq = cv2.cvtColor(cv2.merge((hsv[:, :, 0], img_eq, hsv[:, :, 2])), cv2.COLOR_HSV2BGR)
return img_eq
```
3. 对比度增强
```python
import cv2
def contrast_stretching(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
min_val = gray.min()
max_val = gray.max()
a = 255 / (max_val - min_val)
b = 255 - a * max_val
result = cv2.convertScaleAbs(img, alpha=a, beta=b)
return result
```
以上是一些简单的水下图像增强算法的Python实现。如果需要更加高级的增强算法,建议使用专业的水下图像增强软件或者库。
阅读全文