Python实现RGB与HSI颜色空间的互换方式 您所在的位置:网站首页 pythonrgb转lab函数 Python实现RGB与HSI颜色空间的互换方式

Python实现RGB与HSI颜色空间的互换方式

#Python实现RGB与HSI颜色空间的互换方式| 来源: 网络整理| 查看: 265

概要

这是这学期数字图像处理课的第一份作业好久没懂python手都快生了,调了好久才搞出来。

HSI颜色模型是一个满足计算机数字化颜色管理需要的高度抽象模拟的数学模型。HIS模型是从人的视觉系统出发,直接使用颜色三要素–色调(Hue)、饱和度(Saturation)和亮度(Intensity,有时也翻译作密度或灰度)来描述颜色。

RGB向HSI模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。基本要求是将RGB中的亮度因素分离,通常将色调和饱和度统称为色度,用来表示颜色的类别与深浅程度。在图中圆锥中间的横截面圆就是色度圆,而圆锥向上或向下延伸的便是亮度分量的表示。 (这里直接借鉴这篇文章:OpenCV+Python--RGB转HSI的实现)

从RGB空间到HSI空间的转换有多种方法,这里仅说明最为经典的几何推导法。RGB转化成HSI的公式为:

HSI转化成RGB的公式为:

Python代码:

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/10/14 13:21 # @Author : DaiPuWei # @Site : 理学院机房 # @File : __init__.py.py # @Software: PyCharm Community Edition import cv2 import numpy as np def RGB2HSI(rgb_img): """ 这是将RGB彩色图像转化为HSI图像的函数 :param rgm_img: RGB彩色图像 :return: HSI图像 """ #保存原始图像的行列数 row = np.shape(rgb_img)[0] col = np.shape(rgb_img)[1] #对原始图像进行复制 hsi_img = rgb_img.copy() #对图像进行通道拆分 B,G,R = cv2.split(rgb_img) #把通道归一化到[0,1] [B,G,R] = [ i/ 255.0 for i in ([B,G,R])] H = np.zeros((row, col)) #定义H通道 I = (R + G + B) / 3.0 #计算I通道 S = np.zeros((row,col)) #定义S通道 for i in range(row): den = np.sqrt((R[i]-G[i])**2+(R[i]-B[i])*(G[i]-B[i])) thetha = np.arccos(0.5*(R[i]-B[i]+R[i]-G[i])/den) #计算夹角 h = np.zeros(col) #定义临时数组 #den>0且G>=B的元素h赋值为thetha h[B[i]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有