对HSI进行色度平衡调节,使得图片趋于稳定
时间: 2024-02-05 12:14:45 浏览: 30
对 HSI 图像进行色度平衡调节的方法有很多,以下是一种简单的方法:
```python
def chroma_balance(img, percent=0.01):
# 将图像转换为 HSI 色彩空间
hsi_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV_FULL)
h, s, i = cv2.split(hsi_img)
# 将饱和度 s 排序,取最小和最大的 percent% 个像素
sorted_s = np.sort(s.ravel())
low_s = sorted_s[int(len(sorted_s) * percent)]
high_s = sorted_s[int(len(sorted_s) * (1 - percent))]
# 将饱和度在 [low_s, high_s] 范围内的像素的饱和度值进行拉伸
s_stretch = np.uint8((s - low_s) * 255.0 / (high_s - low_s))
s_stretch[s_stretch < 0] = 0
s_stretch[s_stretch > 255] = 255
# 合并 HSI 通道
hsi_stretch = cv2.merge((h, s_stretch, i))
# 将图像转换回 BGR 色彩空间
bgr_stretch = cv2.cvtColor(hsi_stretch, cv2.COLOR_HSV2BGR_FULL)
return bgr_stretch
```
以上代码中,`chroma_balance` 函数接收一张 BGR 格式的图像以及一个百分比参数 `percent`,将图像转换为 HSI 色彩空间,然后根据饱和度的分布情况,对饱和度在排名前 `percent` 和排名后 `percent` 的像素的饱和度值进行拉伸,最后将 HSI 通道合并并转换回 BGR 格式。这样做可以使得图像的色彩更加平衡,趋于稳定。