python实现提取彩色图像HSI分量并对红色部分的亮度进行增强
时间: 2023-08-20 13:05:01 浏览: 96
python实现图像增强
3星 · 编辑精心推荐
首先,需要将彩色图像转换为HSI模型。HSI模型分别表示色相(Hue)、饱和度(Saturation)和亮度(Intensity),可以通过以下代码实现:
```python
import cv2
import numpy as np
# 读取彩色图像
img = cv2.imread('color_image.jpg')
# 转换为HSI模型
img_hsi = cv2.cvtColor(img, cv2.COLOR_BGR2HSV_FULL)
# 分离H、S、I通道
h_channel, s_channel, i_channel = cv2.split(img_hsi)
```
接着,可以对亮度(I通道)进行增强。这里使用对数变换方法实现:
```python
# 对数变换增强亮度
i_log = np.log(i_channel.astype(np.float32) + 1)
i_log = (i_log - np.min(i_log)) / (np.max(i_log) - np.min(i_log)) * 255
i_log = i_log.astype(np.uint8)
```
最后,将增强后的亮度通道与原来的色相和饱和度通道合并,转换回BGR模型即可。
```python
# 合并H、S、I通道
img_hsi_enhanced = cv2.merge([h_channel, s_channel, i_log])
# 转换为BGR模型
img_enhanced = cv2.cvtColor(img_hsi_enhanced, cv2.COLOR_HSV2BGR_FULL)
# 显示增强后的图像
cv2.imshow('Enhanced Image', img_enhanced)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
完整代码示例:
```python
import cv2
import numpy as np
# 读取彩色图像
img = cv2.imread('color_image.jpg')
# 转换为HSI模型
img_hsi = cv2.cvtColor(img, cv2.COLOR_BGR2HSV_FULL)
# 分离H、S、I通道
h_channel, s_channel, i_channel = cv2.split(img_hsi)
# 对数变换增强亮度
i_log = np.log(i_channel.astype(np.float32) + 1)
i_log = (i_log - np.min(i_log)) / (np.max(i_log) - np.min(i_log)) * 255
i_log = i_log.astype(np.uint8)
# 合并H、S、I通道
img_hsi_enhanced = cv2.merge([h_channel, s_channel, i_log])
# 转换为BGR模型
img_enhanced = cv2.cvtColor(img_hsi_enhanced, cv2.COLOR_HSV2BGR_FULL)
# 显示增强后的图像
cv2.imshow('Enhanced Image', img_enhanced)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文