将蔬菜 RGB图像转换到 HSI空间,变换 HSI空间各通道值,看图像效果 。 同时,分别对 三通道直方图均衡化与单独 I通道直方图均衡化对比相关结果
时间: 2023-12-01 16:08:37 浏览: 72
从RGB转化到HSI色空间
4星 · 用户满意度95%
好的,下面是将 RGB 图像转换到 HSI 空间,变换各通道值并观察效果的代码实现。
```python
import cv2
import numpy as np
# 读取彩色图像
img = cv2.imread('vegetables.jpg')
# 将图像转换到 HSI 空间
hsi = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 对 HSI 空间各通道进行变换
h, s, i = cv2.split(hsi)
h = (h + 50) % 180
s = cv2.add(s, 50)
i = cv2.multiply(i, 1.5)
hsi_transformed = cv2.merge((h, s, i))
# 将图像转换回 RGB 空间并显示效果
rgb_transformed = cv2.cvtColor(hsi_transformed, cv2.COLOR_HSV2BGR)
cv2.imshow('Transformed', rgb_transformed)
# 三通道直方图均衡化
equalized = cv2.equalizeHist(img)
cv2.imshow('Equalized', equalized)
# 单独对 I 通道进行直方图均衡化
h, s, i = cv2.split(hsi)
i_equalized = cv2.equalizeHist(i)
hsi_equalized = cv2.merge((h, s, i_equalized))
rgb_equalized = cv2.cvtColor(hsi_equalized, cv2.COLOR_HSV2BGR)
cv2.imshow('I Equalized', rgb_equalized)
# 等待用户关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我首先使用 `cv2.cvtColor()` 函数将 RGB 图像转换到 HSI 空间,并对 HSI 空间的各通道进行了变换,包括调整 H 通道的值,增加 S 通道的值,以及放大 I 通道的值。然后使用 `cv2.equalizeHist()` 函数对三通道直方图和单独 I 通道的直方图进行了均衡化处理,并将处理后的图像显示出来。
运行以上代码,您将会看到将蔬菜 RGB 图像转换到 HSI 空间后,经过各通道值的变换后的效果,以及三通道直方图和单独 I 通道的直方图均衡化处理后的效果。需要注意的是,由于 OpenCV 中的 `cv2.cvtColor()` 函数将 HSI 空间的 H 通道值映射到了 0-180 的范围,所以在对 H 通道进行变换时,需要进行取模运算。
阅读全文