以下是实现代码:

import numpy as np import cv2

def RGB_to_HSI(img): # 将RGB图像转换为HSI图像 bgr = img / 255.0 b = bgr[:,:,0] g = bgr[:,:,1] r = bgr[:,:,2] num = 0.5 * ((r-g)+(r-b)) den = np.sqrt((r-g)**2 + (r-b)(g-b)) theta = np.arccos(num/(den + 1e-5)) H = np.zeros_like(theta) H[b<=g] = theta[b<=g] H[b>g] = 2np.pi - theta[b>g] H /= 2np.pi S = 1 - 3np.minimum(np.minimum(r,g),b)/(r+g+b+1e-5) I = (r+g+b) / 3.0 HSI = np.zeros_like(bgr) HSI[:,:,0] = H HSI[:,:,1] = S HSI[:,:,2] = I return HSI

def HSI_to_RGB(img): # 将HSI图像转换为RGB图像 H = img[:,:,0] * 2np.pi S = img[:,:,1] I = img[:,:,2] R = np.zeros_like(H) G = np.zeros_like(H) B = np.zeros_like(H) # RG sector (0 <= H < 2pi/3) idx = np.logical_and(H>=0, H<2np.pi/3) B[idx] = I[idx] * (1-S[idx]) R[idx] = I[idx] * (1 + S[idx]np.cos(H[idx])/np.cos(np.pi/3-H[idx])) G[idx] = 3I[idx] - (R[idx] + B[idx]) # BG sector (2pi/3 <= H < 4pi/3) idx = np.logical_and(H>=2np.pi/3, H<4np.pi/3) R[idx] = I[idx] * (1-S[idx]) G[idx] = I[idx] * (1 + S[idx]np.cos(H[idx]-2np.pi/3)/np.cos(np.pi/3-(H[idx]-2np.pi/3))) B[idx] = 3I[idx] - (R[idx] + G[idx]) # BR sector (4pi/3 <= H < 2pi) idx = np.logical_and(H>=4np.pi/3, H<2np.pi) G[idx] = I[idx] * (1-S[idx]) B[idx] = I[idx] * (1 + S[idx]np.cos(H[idx]-4np.pi/3)/np.cos(np.pi/3-(H[idx]-4np.pi/3))) R[idx] = 3I[idx] - (G[idx] + B[idx]) RGB = np.zeros_like(img) RGB[:,:,0] = R RGB[:,:,1] = G RGB[:,:,2] = B return (RGB255).astype(np.uint8)

导入彩色图像

img = cv2.imread('test.jpg')

RGB->HSI

hsi = RGB_to_HSI(img) hsi_img = cv2.cvtColor((hsi*255).astype(np.uint8), cv2.COLOR_HSV2BGR)

HSI->RGB

rgb = HSI_to_RGB(hsi) rgb_img = cv2.cvtColor(rgb, cv2.COLOR_BGR2RGB)

显示图像

cv2.namedWindow('RGB->HSI->RGB', cv2.WINDOW_NORMAL) cv2.resizeWindow('RGB->HSI->RGB', 900, 300) cv2.imshow('RGB->HSI->RGB', np.hstack((img, hsi_img, rgb_img))) cv2.waitKey(0) cv2.destroyAllWindows(

python实现导入一幅彩色图像利用变换公式将图像从RGB色彩空间转化到HSI色彩空间再利用分段变换公式将图像从HSI色彩空间还原到RGB色彩空间自行编写函数并在同一个窗口内分成三个子窗口来分别显示原图、RGB-HSI、HSI- RGB并注上文字标题。提示:1.RGB-HIS其中S = 0时H=0最后对H2pi进行归一化;2HSI- RGB公式见书上P112注意如果1 RGB-HIS中对H进行了归

原文地址: https://www.cveoy.top/t/topic/cE54 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录