图像处理 - 色彩空间转换

色彩空间转换的含义与原理

       色彩空间转换是指将一种颜色模型或表示方式中的颜色数据映射到另一种颜色模型中的过程。色彩空间(Color Space)本质上是一个三维坐标系统,每个点都表示图像中的某种颜色。在实际应用中,由于不同的色彩空间在不同的处理任务中具有不同的优势,因此色彩空间的转换被广泛应用于图像处理、计算机视觉、图像压缩、视频编码等领域。

       色彩空间的转换通常依赖于对颜色分量的加权和计算,具体的实现过程会依赖于原色彩空间和目标色彩空间的定义。转换的目的是简化或优化处理流程,通常是在不同的颜色感知特征和应用需求之间找到平衡。

示例图像

以下面的RGB图像作为示例:

                         图1  RGB示例图像 

常见的色彩空间及转换

下面是几种常见的色彩空间及其转换过程、表示含义和应用场景。

1、RGB色彩空间 

1.1、定义

    RGB色彩空间基于人眼的感知原理,它使用三种原色(红色、绿色、蓝色)作为颜色的基本成分。图像中的每个颜色可以通过RGB三个通道的强度值来表示,常用于显示设备如计算机屏幕、相机传感器等。

1.2、各通道表示

  • R:红色通道的强度
  • G:绿色通道的强度
  • B:蓝色通道的强度
  •                图2  R、G、B各通道图像
  • 如图2所示,为RGB图像中各个通道的图像。

        RGB色彩空间是最常见的色彩空间,用于显示设备。它的缺点是难以与人眼感知的色彩一致,因此在色彩处理(如色调、饱和度、亮度)时可能会有不方便之处。

1.3、应用场景

  • 显示设备(显示器、电视)
  • 摄像头图像采集
  • 数字图像处理

2、HSV色彩空间 

1.1、定义

      HSV色彩空间通过色相、饱和度和明度来表示颜色,具有更好的直观性,符合人类对颜色的感知方式。它常用于图像处理中的颜色提取、目标追踪、分割等任务。

​​

图3  HSV图像 

1.2、各通道表示

  • H:色相(Hue),表示颜色的种类或色调,通常用角度(0°到360°)表示。例如,0°表示红色,120°表示绿色,240°表示蓝色。
  • S:饱和度(Saturation),表示颜色的纯度,值为0到1。0表示灰色,1表示最纯的颜色。
  • V:明度(Value),表示颜色的亮度,值范围为0到1。0表示黑色,1表示最亮的颜色。

                 图4  H、S、V各通道图像 

1.3、转换过程

  • 计算RGB的最大值和最小值。
  • 计算亮度(V)为最大值。
  • 如果最大值和最小值相同(即图像为单色),则色调(H)为0,饱和度(S)为0。
  • 如果最大值和最小值不同,计算色调(H)和饱和度(S):
    • 计算差值(max - min)。
    • 计算饱和度(S)为(max - min)/ max。
    • 根据哪个颜色通道的值最大,确定色调(H)。

1.4、应用场景

  • 颜色分割(如基于颜色的物体识别)
  • 图像增强和修正(如调整图像的色调或饱和度)
  • 图像分析与计算机视觉

3、Lab色彩空间 

1.1、定义

      Lab色彩空间是基于国际照明委员会(CIE)提出的模型,目的是描述人类视觉感知到的颜色。Lab空间具有设备无关性,不依赖于显示设备或照明条件,因此常用于颜色管理和色彩匹配。

​​

           图5   LAB图像 

1.2、各通道表示

  • L:亮度(Lightness),表示颜色的明亮程度,范围从0到100。
  • a:红绿轴(从绿色到红色的范围),负值表示绿色,正值表示红色。
  • b:黄蓝轴(从蓝色到黄色的范围),负值表示蓝色,正值表示黄色。

                      图6  L、A、B各通道图像 

1.3、转换过程

  • 将RGB值标准化到[0, 1]范围内。
  • 使用以下公式将RGB转换为XYZ色彩空间:
    • X = 0.412453R + 0.357580G + 0.180423B
    • Y = 0.212671R + 0.715160G + 0.072169B
    • Z = 0.019334R + 0.119193G + 0.950227B
  • 将XYZ转换为Lab:
    • L = 116f(Y/Yn) - 16 (对于Y/Yn > 0.008856时,L = 116 * Y/Yn - 16,否则L = 903.3 * Y/Yn)
    • a = 500 * (f(X/Xn) - f(Y/Yn))
    • b = 200 * (f(Y/Yn) - f(Z/Zn))
    • 其中f(x)是辅助函数,对于x > 0.008856时,f(x) = x^(1/3),否则f(x) = (7.787x + 4/29)
    • Xn, Yn, Zn是XYZ色彩空间的白色参考点,通常是D65标准光源的值。

1.4、应用场景

  • 精确颜色匹配和色彩管理(例如在印刷和设计中)
  • 图像处理中的颜色差异检测
  • 高精度的图像质量控制

4、YCbCr色彩空间 

1.1、定义

      YCbCr色彩空间常用于视频编码、视频压缩及图像格式(如JPEG)。它将图像的亮度信息(Y)与色度信息(Cb和Cr)分离,这样可以优化图像存储和传输。

​​

  图7    YCbCr图像

1.2、各通道表示

  • Y:亮度(Luma),表示图像的亮度部分,通常取值范围为0到255。
  • Cb:蓝色差分量(Chrominance),表示蓝色与亮度的差异,通常为-128到+127。
  • Cr:红色差分量(Chrominance),表示红色与亮度的差异,通常为-128到+127。

               图8   Y、Cb、Cr各通道图像

1.3、转换过程

  • RGB -> YCbCr: 使用以下公式进行转换:
  • Y = 0.299R + 0.587G + 0.114B
  • Cb = -0.1687R - 0.3313G + 0.5B + 128
  • Cr = 0.5R - 0.4187G - 0.0813B + 128

1.4、应用场景

  • 视频压缩(如MPEG、H.264)
  • 图像编码(如JPEG)
  • 视频信号的处理与传输


总结

       色彩空间转换在图像处理和计算机视觉中有着广泛的应用。每种色彩空间的选择和转换都有其特定的用途和优势:

  • RGB:适合用于显示设备,易于理解,但不适合直接进行颜色分析。
  • HSV/HSL:更接近人眼对颜色的感知,适用于图像分割、目标追踪等应用。
  • Lab:设备无关,适用于高精度颜色管理和色彩匹配。
  • YCbCr:适用于视频压缩和编码,能有效减少数据量。

不同色彩空间间的转换能够帮助我们更好地处理和优化图像数据,使得图像分析和处理任务更高效。

% --- RGB 颜色空间立方体 ---
subplot(2, 2, 1);
[X, Y, Z] = ndgrid(linspace(0, 1, 10), linspace(0, 1, 10), linspace(0, 1, 10));
scatter3(X(:), Y(:), Z(:), 50, [X(:), Y(:), Z(:)], 'filled');
xlabel('R (Red)');
ylabel('G (Green)');
zlabel('B (Blue)');
title('RGB 颜色空间');
axis([0 1 0 1 0 1]);
grid on;

% --- HSV 颜色空间立方体 ---
subplot(2, 2, 2);
% 将 RGB 转换为 HSV,并取值范围 [0, 1]
[H, S, V] = ndgrid(linspace(0, 1, 10), linspace(0, 1, 10), linspace(0, 1, 10));
% 将 H, S, V 合并为 MxNx3 的矩阵,符合 hsv2rgb 函数的要求
HSV = cat(4, H, S, V);
HSV = reshape(HSV, [], 3); % 将其变为 Mx3 矩阵
% 使用 hsv2rgb 转换
rgb = hsv2rgb(HSV);
% 显示转换后的 RGB 值
scatter3(H(:), S(:), V(:), 50, rgb, 'filled');
xlabel('H (Hue)');
ylabel('S (Saturation)');
zlabel('V (Value)');
title('HSV 颜色空间');
axis([0 1 0 1 0 1]);
grid on;

% --- LAB 颜色空间立方体 ---
subplot(2, 2, 3);
% 创建 LAB 空间,L 在 [0, 100] 范围内,a 和 b 在 [-128, 128] 范围内
[L, a, b] = ndgrid(linspace(0, 100, 10), linspace(-128, 128, 10), linspace(-128, 128, 10));
% 将 LAB 数据合并为 Mx3 矩阵
LAB = cat(4, L, a, b);
LAB = reshape(LAB, [], 3); % 转换为 Mx3 矩阵
% 将 LAB 转换为 RGB 用于显示
rgb = lab2rgb(LAB);
scatter3(L(:), a(:), b(:), 50, rgb, 'filled');
xlabel('L (Lightness)');
ylabel('a (Green-Red)');
zlabel('b (Blue-Yellow)');
title('LAB 颜色空间');
axis([0 100 -128 128 -128 128]);
grid on;

% --- CIELAB 颜色空间立方体 ---
subplot(2, 2, 4);
% CIELAB 与 LAB 实际上是相同的,因此使用相同的数据
% 在这个例子中,我们直接使用 LAB 空间,显示的是 CIELAB 立方体
scatter3(L(:), a(:), b(:), 50, rgb, 'filled');
xlabel('L (Lightness)');
ylabel('a (Green-Red)');
zlabel('b (Blue-Yellow)');
title('CIELAB 颜色空间');
axis([0 100 -128 128 -128 128]);
grid on;

% 调整整体布局
sgtitle('不同颜色空间的 3D 立方体');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web——sqliabs靶场——第十三关——报错注入+布尔盲注

发现是单引号加括号闭合的 尝试联合注入 发现不太行,那尝试报错注入。 测试报错注入 unameadmin) and updatexml(1,0x7e,3) -- &passwdadmin&submitSubmit 爆数据库 unameadmin) and updatexml(1,concat(0x7e,database(),0x7e),3) -- &passwdadmin&a…

大语言模型中Softmax函数的计算过程及其参数描述

文章目录 概要Softmax的定义 概要 **Softmax 作用:**主要用于自注意层,作用是将输出映射成区间在(0,1)的值,并且做了归一化,所有元素的和累加起来等于1。 **Softmax使用场景:**Llama-7B模型中,其在自注意层…

Jmeter中的断言(三)

9--MD5Hex断言 功能特点 数据完整性验证:验证响应数据的 MD5 哈希值是否符合预期。简单配置:只需提供预期的 MD5 哈希值即可。灵活配置:可以设置多个断言条件,满足复杂的测试需求。 配置步骤 添加 MD5Hex 断言 右键点击需要添加…

后端开发如何高效使用 Apifox?

对于后端开发者来说,日常工作中少不了接口的设计、调试和文档编写。你是否也曾因接口文档更新不及时、测试工具分散而头疼不已?Apifox,这款全能型工具,或许能成为你的效率神器! Apifox究竟有哪些功能能帮助后端开发者…

JMeter监听器与压测监控之 InfluxDB

1. 简介 在本文中,我们将介绍如何在 Kali Linux 上通过 Docker 安装 InfluxDB,并使用 JMeter 对其进行性能监控。InfluxDB 是一个高性能的时序数据库,而 JMeter 是一个开源的性能测试工具,可以用于对各种服务进行负载测试和性能监…

操作系统基础——针对实习面试

目录 操作系统基础什么是操作系统?简述其主要功能请举例几种不同类型的操作系统,并简要说明它们的特点 操作系统基础 什么是操作系统?简述其主要功能 一、操作系统的定义 操作系统(Operating System,简称OS&#xff…

uni-app快速入门(十)--常用内置组件(下)

本文介绍uni-app的textarea多行文本框组件、web-view组件、image图片组件、switch开关组件、audio音频组件、video视频组件。 一、textarea多行文本框组件 textarea组件在HTML 中相信大家非常熟悉,组件的官方介绍见: textarea | uni-app官网uni-app,un…

CSS中Flex布局应用实践总结

① 两端对齐 比如 要求ul下的li每行四个,中间间隔但是需要两段对齐,如下图所示: 这是除了基本的flex布局外,还需要用到:nth-of-type伪类来控制每行第一个与第四个的padding。 .hl_list{width: 100%;display: flex;align-items…

Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现

Spring Boot Vue 基于 RSA 的用户身份认证加密机制实现 什么是RSA?安全需求介绍前后端交互流程前端使用 RSA 加密密码安装 jsencrypt库实现敏感信息加密 服务器端生成RSA的公私钥文件Windows环境 生成rsa的公私钥文件Linux环境 生成rsa的公私钥文件 后端代码实现返…

Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~

AI 驱动 3D 动画 大家好,我是石小石!随着 Web 技术的发展,Three.js 成为构建 3D 图形和动画的主流工具。与此同时,人工智能(AI)在图像处理、动作生成等领域表现出强大能力。将 AI 与 Three.js 结合&#x…

bpmn.js显示流程图

目标&#xff1a;vue2 接口返回xml - 弹窗显示流程图 - 根据需求高亮节点 一、安装依赖 npm i bpmn-js 添加上的版本是 "bpmn-js": "^11.5.0" 二、只读显示流程图 <div ref"canvas" style"width:100%;height: calc(100vh…

Vue Form表单的使用,rules格式校验网络校验,键盘按键监听

Form表单 rules格式校验 可以在validator中进行网络请求&#xff0c;实现网络校验 const formRules {userName: [{required: true, message: "用户名不能为空", trigger: blur}, {min: 5,max: 10,message: "长度必须5-10位",trigger: blur}],passWord: …

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器&#xff0c;…

TCP并发服务器

端口号快速复用函数 通过getsockopt和setsockopt函数&#xff0c;管理套接字的端口号复用设置。具体操作如下&#xff1a; getsockopt函数 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);功能&#xff1a;获取套接字的某些选项的属性。…

vue3的宏到底是什么东西?

前言 从vue3开始vue引入了宏&#xff0c;比如defineProps、defineEmits等。我们每天写vue代码时都会使用到这些宏&#xff0c;但是你有没有思考过vue中的宏到底是什么&#xff1f;为什么这些宏不需要手动从vue中import&#xff1f;为什么只能在setup顶层中使用这些宏&#xff…

无重复字符的最长子串习题分析

习题&#xff1a;&#xff08;leetcode 3 &#xff09; 给定一个字符串s&#xff0c;请你找出其中不含有重复字符的最长子串的长度。 分析&#xff1a; 对于寻找子串、数组中某部分等&#xff0c;我们可以使用滑动窗口和双指针思想来求解。 滑动窗口通常用于解决需要连续子…

Linux服务器的Tomcat9中部署War包

文章目录 Linux服务器的Tomcat9中部署War包一、引言二、部署Tomcat91、安装Tomcat91.1、下载Tomcat91.2、解压安装1.3、启动Tomcat9 2、配置环境变量&#xff08;可选&#xff09; 三、部署War包1、准备War包2、部署War包3、配置Context&#xff08;可选&#xff09; 四、启动和…

如果接口返回值图片有很长一串码,需要添加前缀

需要在前面添加前缀&#xff1a;data:image/jpeg;base64,然后将值赋值给<img :src"originalImage" /> this.tableLists.map((item)>{item.originalImage "data:image/jpeg;base64,"item.originalImage})以上方法会导致出现一个小bug&#xff0c;…

2024年11月21日Github流行趋势

项目名称&#xff1a;twenty 项目维护者&#xff1a;charlesBochet, lucasbordeau, Weiko, FelixMalfait, bosiraphael项目介绍&#xff1a;正在构建一个由社区支持的现代化Salesforce替代品。项目star数&#xff1a;21,798项目fork数&#xff1a;2,347 项目名称&#xff1a;p…

Excel——宏教程(精简版)

一、宏的简介 1、什么是宏&#xff1f; Excel宏是一种自动化工具&#xff0c;它允许用户录制一系列操作并将其转换为VBA(Visual Basic for Applications)代码。这样&#xff0c;用户可以在需要时执行这些操作&#xff0c;以自动化Excel任务。 2、宏的优点 我们可以利用宏来…