将
BGR 格式的
图像 转换为HSI
格式需要经过
以下 步骤:
1. 将
BGR 图像 转换为
RGB 图像。
2. 将
RGB 图像 转换为HSI
图像。
下面是
Python代码
实现:
pythonimport cv2import numpy as np# 加载BGR 图像img_bgr= cv2.imread('image.jpg')# 将BGR 图像 转换为RGB 图像img_rgb= cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)# 获取RGB三个通道R, G, B = img_rgb[:,:,0], img_rgb[:,:,1], img_rgb[:,:,2]# 计算亮度I = np.mean(img_rgb, axis=2)# 计算饱和度S = 1 - (3 / (R + G + B + 1e-6)) * np.min([R, G, B], axis=0)# 计算色调H = np.zeros_like(I)mask = (R == B) & (G == B)H[mask] = 0mask = (R >= G) & (G >= B)H[mask] = np.arccos((0.5 * ((R - G) + (R - B))) / (np.sqrt((R - G) 2 + (R - B) * (G - B)) + 1e-6))mask = (G > R) & (R >= B)H[mask] = 2 * np.pi - np.arccos((0.5 * ((R - G) + (G - B))) / (np.sqrt((R - G) 2 + (G - B) * (B - R)) + 1e-6))mask = (G >= B) & (B > R)H[mask] = 2 * np.pi + np.arccos((0.5 * ((G - R) + (G - B))) / (np.sqrt((G - R) 2 + (G - B) * (B - R)) + 1e-6))H /= 2 * np.pi# 将HSI图像合并为一个三通道图像img_hsi = np.zeros_like(img_rgb)img_hsi[:,:,0] = Himg_hsi[:,:,1] = Simg_hsi[:,:,2] = I# 显示HSI图像cv2.imshow('HSI Image', img_hsi)cv2.waitKey(0)cv2.destroyAllWindows()
其中,`img_
bgr`是
BGR 格式的
图像,`img_
rgb`是
RGB 格式的
图像,`H`、`S`和`I`分别是HSI
图像的色调、饱和度和亮度。最后将它们合并为一个三通道
图像`img_hsi`,并显示出来。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1178.html