rgb与hsi空间详解及其相互转化(python+opencv)

这篇具有很好参考价值的文章主要介绍了rgb与hsi空间详解及其相互转化(python+opencv)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果图: 原图----------- rgb->hsi ----------- 加入噪声后hsi->rgb
rgb与hsi空间详解及其相互转化(python+opencv)
实现代码:rgb图片到hsi图片并加入噪声的相互转化

1. 彩色图像的颜色空间

对于单色(灰度)图像而言,其每个像素的亮度用一个数值表示即可;而彩色图像的每个像素包含了颜色信息,每个像素的光强度和色度须用3个数值描述。彩色图像的颜色空间也称为颜色模型或彩色系统,用于对颜色进行描述和说明。常用的颜色空间包括RGB颜色空间和HSI颜色空间。

1.1 RGB颜色空间

白光通过玻璃棱镜会出现紫色到红色的连续彩色谱。光由多种色谱构成,在颜色空间中理论上可以选取多种颜色。人眼中有大量对红、绿、蓝3种颜色敏感的锥状体细胞,因此,我们常用红色(Red,R)、绿色(Green,G)、蓝色(Blue,B)组成的RGB颜色空间表达彩色图像的信息。这3种原色的混合色基本覆盖了人类的色彩空间,从而满足了人类的色彩体验。面向硬件设备的RGB颜色空间主要用于电视机、算机等电子系统感知、表示和显示图像。例如,电视机通常使用红、绿、蓝三原色混合的加色,每种原色都会刺激眼睛的3种颜色受体中的一种。
RGB颜色空间基于三维直角坐标系,包括R、G、B3个原始光谱分量,如图2-1所示。RGB颜色空间中的R、G、B3个分量的值分别描述了红色、绿色、蓝色的亮度值。为了方便描述,我们将3个分量都进行归一化处理,使得三元组中的每个数值均表示红色、绿色、蓝色三者的比例。在图2-1中,原点(0,0,0)代表黑色,点(1,1,1)代表白色,点(1,0,0)代表红色(R),点(0,1,0)代表绿色(G),点(0,0,1)代表蓝色(B)。
rgb与hsi空间详解及其相互转化(python+opencv)

1.2. HSI颜色空间

当描述物体颜色时,我们也常用HSI颜色空间,旨在接近人类视觉感知颜色的方式。HSI颜色空间包含3个分量,分别是色调(Hue,H)、饱和度(Saturation,S)和亮度(Intensity,I),如图2-3所示。HSI颜色空间圆柱体的横截面称为色环,色环更加清晰地展示了色调和饱和度两个参数,如图2-4所示。色调H由角度表示,其反映了该颜色最接近哪个光谱波长。在色环中,0°表示红色光谱,120°表示绿色光谱,240°表示蓝色光谱。饱和度S由色环的圆心到颜色点的半径表示,距离越长表示饱和度越高,颜色越鲜明。在图2-3中,亮度I由颜色点到圆柱底部的距离表示。在HSI颜色空间圆柱体中,圆柱体底部圆心表示黑色,顶部圆心表示白色。
rgb与hsi空间详解及其相互转化(python+opencv)
rgb与hsi空间详解及其相互转化(python+opencv)
这个是HSI空间专业的定义,大概基本没咋看懂,其实通俗来讲就是:
色调H(Hue): 与光波的波长有关,它表示人的感官对不同颜色的感受,如红色、绿色、蓝色等,它也可表示一定范围的颜色,如暖色、冷色等。
饱和度S(Saturation): 表示颜色的纯度,纯光谱色是完全饱和的,加入白光会稀释饱和度。饱和度越大,颜色看起来就会越鲜艳,反之亦然。
亮度I(Intensity): 对应成像亮度和图像灰度,是颜色的明亮程度。

2. RGB颜色空间与HSI颜色空间之间的转换

2.1 RGB颜色空间转换到HSI颜色空间

给定一幅RGB颜色空间格式的图像,将图像的R分量、G分量、B分量分别进行归一化处理。在RGB颜色空间中,位于空间位置(x,y)的像素点的颜色用该像素点的R分量R(x,y)、G分量G(x,y)和B分量B(x,y)3个数值表示。在HSI颜色空间中,位于空间位置(x,y)的像素点的H分量H(x,y)、S分量S(x,y)、I分量I(x,y)可分别由式(2-1)~式(2-3)计算得到。
rgb与hsi空间详解及其相互转化(python+opencv)
rgb与hsi空间详解及其相互转化(python+opencv)

2.2 HSI颜色空间转换到RGB颜色空间

HSI颜色空间中,假设图像的S分量和I分量的值在[0,1]区间内,位于空间位置(x,y)的像素点的颜色用该像素点的H分量H(x,y)、S分量S(x,y)、I分量I(x,y)3个数值表示,则在RGB颜色空间中,位于空间位置(x,y)的像素点的R分量R(x,y)、G分量G(x,y)和B分量B(x,y)可分别由以下公式计算得到。
rgb与hsi空间详解及其相互转化(python+opencv)
最后放上之前猫猫图转换的代码链接:
rgb图片到hsi图片并加入噪声的相互转化文章来源地址https://www.toymoban.com/news/detail-445781.html

到了这里,关于rgb与hsi空间详解及其相互转化(python+opencv)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PIL、OpenCV、numpy处理图像格式的相互转化方式

    OpenCV读取图像后返回的是一个代表图像的NumPy数组,采用的格式是 H×W×C,通道顺序为BGR 使用matplotlib绘图时,可以读取tesnor和numpy数据类型,图片通道顺序为RGB,且尺寸为(H,W,C)。 使用np.array(image)和np.asarray(image)可以将 PIL Image 图像转换成 numpy 数组。 使用Image.fromarray(np.uint8(i

    2024年02月07日
    浏览(37)
  • opencv 图像色彩空间转化

    今天看了b站贾志刚的课,觉得不错,特地做学习笔记来和小伙伴分享 贾志刚的这个好像是2.0版本,30小时的,语言更加精炼,适合初级入门学习 第一节是常规安装   看他的步骤装就行了,记得配置完点应用再点确定,我第一次就是 没点然后就失败了,又得重配置一次 第二节就是基

    2024年02月22日
    浏览(35)
  • MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)

    1.颜色模型定义 2.各颜色模型简介 3.颜色模型的转换 颜色模型 :某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。例如,RGB颜色模型就是三维直角坐标颜色系统的一个单位正方体。颜色模型的用途是在某个颜色域内方便地指定颜色。由于每一个颜色域都

    2024年02月06日
    浏览(69)
  • C++ opencv HSV颜色空间转换+RGB三通道提升亮度

    #include iostream #include iomanip #includeopencv2//opencv.hpp using namespace std; using namespace cv; //函数adjustBrightness用于图片增加亮度 void adjustBrightness(cv::Mat image, int targetBrightness) {     // 获取图像的通道数     int channels = image.channels();     // 计算调整亮度的因子     float factor = 1.0f;     if

    2024年03月09日
    浏览(42)
  • 【Python OpenCV格式转换:RGB与BGR互转】

    【Python OpenCV格式转换:RGB与BGR互转】 图像处理中颜色空间的转换是一个重要的问题。其中,RGB与BGR是最常见的两种格式,而OpenCV是最流行的图像处理库之一。在OpenCV中,我们可以轻松地将RGB和BGR格式之间进行转换。 下面是如何使用Python OpenCV将RGB格式转换为BGR格式的代码示例

    2024年02月13日
    浏览(35)
  • Python OpenCV调整图像亮度对比度及RGB色彩

    python通过opencv库调整图像的步骤: 1. 读取图像 直接通过cv2库读取图像,可以读取jpg, png等格式 2. 调整图像亮度及对比度 OpenCV提供 convertScaleAbs 函数来调整对比度和亮度,可以直接调用该函数 如果只调整RGB颜色通道,则可以忽略此步骤 3. 分离出图片的B,R,G颜色通道 使用

    2024年02月03日
    浏览(33)
  • C# 图像处理之灰色图转化为RGB图像

    咨询通义千问的“C# 图像处理之灰色图转化为RGB图像”结果,看看如何: 在C#中,可以使用Image类来处理图像。要将灰色图像转换为RGB图像,可以按照以下步骤进行操作: 1.创建一个灰色图像对象。  2.将灰色图像转换为RGB图像。 3.获取灰色图像的像素数据。 4.创建一个RGB图像

    2024年02月12日
    浏览(27)
  • 高德地图与百度地图坐标相互转化

    1. WGS-84原始坐标系 ,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用; 2. GCJ-02坐标系 ,又名“火星坐标系

    2024年02月16日
    浏览(32)
  • Java中LocalDateTime/DateTime与Date相互转化(java中时间转化)

    LocalDateTime是JDK1.8出现的新特性,解决线程不安全的问题,但是当前很多的相关插件或者使用较低版本的时候,会依旧使用Date的情况,这个时候就需要两者之间的相互转化 新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。 其次,新AP

    2024年02月15日
    浏览(32)
  • liftOver 不同版本基因组文件相互转化

    大家好,我是邓飞。前一段时间有小伙伴在星球提问:想将不同版本的SNP数据合并,不想重新call snp,想把绵羊的V2和V4版本的数据合并,具体来说,是V2转为V4然后与V4合并。 我建议用 liftOver 软件进行处理,并许诺写篇博客介绍一下。 还有小伙伴想把1.2的参考基因组,变为

    2024年02月07日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包