Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YIQ颜色空间_简述RGB颜色

YIQ颜色空间_简述RGB颜色

作者头像
全栈程序员站长
发布于 2022-11-17 08:27:57
发布于 2022-11-17 08:27:57
2.9K00
代码可运行
举报
运行总次数:0
代码可运行

首先,我们先来了解下有关颜色的基本概念

一、色彩的基本概念

1、彩色的三要素 亮度:即人眼对光的明亮程度的感受。 色调:人眼能看到的颜色种类,与光的波长有关 饱和度:颜色深浅程度。与各种颜色混入白光的比例有关。 以上 色调 + 饱和度 = 色度

2、三基色原理 三基色可以通过适当比例的混合组成自然界中任何一种颜色

由于人眼对于红绿蓝三种色光最为敏感,并且由这三种颜色能组成的颜色范围最广,故一般选用RGB作为三基色

但是,三基色并不是唯一的,只要满足任何一种颜色都不能由其他两种颜色合成即可组成三基色。例如,我们还可以用黄色,品红,青色组成三基色。

3、亮度的组成

4、常用的四种颜色空间

  • A、RGB颜色空间 RGB彩色空间利用相加混合法将三个彩色分量按照不同的比例叠加,最终就可以在屏幕中显现出各种颜色。

任意的彩色光F都有一个配色的公式:F = r[R]+g[G]+b[B] 式中r,g,b为系数,r+g+b=1。故,知其二便可唯一确定色调。

  • B、YUV颜色空间 研究表面,人眼对于亮度的敏感度远大于对于颜色细节的敏感度,因此,才彩色电视机系统中不采用RGB颜色空间,一般为以下的空间:

采用YUV颜色空间的好处有:

a、解决了彩色电视机和黑白电视机的兼容问题(因为黑白电视机只需要提取信号中的Y信号即可显示出来)

b、可以节省传输带宽 一般情况下,数字化后的 Y:U:V = 8:4:4或者Y:U:V = 8:2:2,即亮度信号Y需要8比特表示,UV需要4个或者2个比特表示,我们知道,RGB颜色空间下,需要24比特来表示一个颜色,而利用YUV则仅需要16比特或者12比特,达到压缩的目的。

在PAL制下,白光亮度Y和红绿蓝三色光的关系可以用以下公式表示: Y = 0.222R + 0.707G + 0.071B 在NTSC制下,Y=0.299R+0.587G+0.114B

色差U,即蓝基色分量与亮度的差值信号,可以用以下公式表示: U = k1(B – Y) 色差V,即红基色分量与亮度的差值信号,可以用以下公式表示: V = k2(R – Y) 通常,k1 = 0.493,k2 = 0.877

YUV颜色空间与RGB颜色空间的转换

  • C、YIQ颜色空间

如上图所示,YIQ颜色空间被NTSC制的彩色电视机使用。 其中Y还是亮度信号,用👇公式表示: Y = 0.299R + 0.587G + 0.114B

I代表人眼敏感的色彩色差信号,用👇公式表示: I = 0.596R – 0.275G – 0.321B’

Q代表人眼不敏感的色差信号,用👇公式表示: Q = 0.212R – 0.523G + 0.311B

  • D、HSI颜色空间(HSI) 色调H,饱和度为S,光强为V

上图为博客:https://www.cnblogs.com/faith0217/articles/4264652.html 中的内容

二、编程实现提取图像中一点的RGB颜色值,并实现RGB转换为YUV,YIQ,HIS。

以下程序利用python实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import math
import numpy as np
from PIL import Image

imgpath = 'C:/Users/11037/Desktop/7.jpg'  #图片路径

m_yuv = np.mat([[0.299,0.587,0.114],[-0.299,-0.587,0.886],[0.701,-0.587,-0.114]])
m_yiq = np.mat([[0.299,0.587,0.114],[0.596,-0.274,-0.322],[0.211,-0.524,0.312]])

def rgb2yuv(need_rgb):
	ans = list([int(i) for i in m_yuv*need_rgb])
	return ans

def yuv2rgb(need_yuv):
	m = m_yuv.I
	ans = list([int(i) for i in m*need_yuv])
	return ans

def rgb2yiq(need_rgb):
	ans = list([int(i) for i in m_yiq*need_rgb])
	return ans

def yiq2rgb(need_yiq):
	m = m_yiq.I
	ans = list([int(i) for i in m*need_yiq])
	return ans

'''
def rgb2hsi(need_rgb:np.mat): 
	rgb = list(need_rgb)
	r,g,b = int(rgb[0]),int(rgb[1]),int(rgb[2])
	theta = math.acos((((r-g)+(r-b))/2)/math.sqrt((r-g)**2+(r-b)*(g-b)))
	print('theta',theta)
	if b<=g:
		h = theta
	else:
		h = 360-theta
	s = 1-3*min(r,g,b)/(r+g+b)
	i = (r+g+b)/3
	return (h,s,i)
'''

img = Image.open(imgpath)
img = np.array(img)
print(img.shape)
x = int(input('请输入x:'))
y = int(input('请输入y:'))

testrgb = np.mat(img[x,y]).T
rgb2 = rgb2yuv(testrgb)
print('需要转换的rgb为:\n',testrgb)
print('rgb转yuv:',rgb2)
print('yuv转rgb:',yuv2rgb(np.mat(rgb2).T))

Jetbrains全家桶1年46,售后保障稳定

三、利用OpenCV转换RGB为HSV,YUV

1、代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import math
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

imgpath = '' #图片路径

img = cv.imread(imgpath)

imggray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
imghsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)
imgyuv = cv.cvtColor(img,cv.COLOR_BGR2YUV)

plt.subplot(221),plt.imshow(img),plt.title('img')
plt.subplot(222),plt.imshow(imggray),plt.title('imggray')
plt.subplot(223),plt.imshow(imghsv),plt.title('imghsv')
plt.subplot(224),plt.imshow(imgyuv),plt.title('imgyuv')

plt.show()

效果:


若发现错误请给予指出,谢谢~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/219103.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
颜色空间
HSV(Hue, Saturation, Value)是根据颜色的直观特性由 A. R. Smith 在 1978 年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
为为为什么
2022/08/10
2.2K0
颜色空间
OpenCV图像处理专栏一 | 盘点常见颜色空间互转
今天是OpenCV传统图像处理算法的第一篇,我们来盘点一下常见的6种颜色空间互转算法,并给出了一些简单的加速方案,希望可以帮助到学习OpenCV图像处理的同学。这6种算法分别是:
BBuf
2019/12/09
1.3K0
音视频知识体系(基础篇3)----图像颜色空间
我们从视频的信号表示方法开始讲起,逐步深入到视频压缩编码的原理。我们主要从下面几个要点来讲解或者加深记忆。
jerrypxiao
2021/02/04
2K0
数字视频基础知识
一、光和颜色 1 光和颜色 可见光是波长在380 nm~780 nm 之间的电磁波,我们看到的大多数光不是 一种波长的光,而是由许多不同波长的光组合成的。如果光源由单波长组成,就 称为单色光源。该光源具有能量,也称强度。实际中,只有极少数光源是单色的, 大多数光源是由不同波长组成,每个波长的光具有自身的强度。这称为光源的光 谱分析。 颜色是视觉系统对可见光的感知结果。研究表明,人的视网膜有对红、绿、 蓝颜色敏感程度不同的三种锥体细胞。红、绿和蓝三种锥体细胞对不同频率的光 的感知程度不同,对不同亮度的感知程度也不同。 自然界中的任何一种颜色都可以由R,G,B 这3 种颜色值之和来确定,以这 三种颜色为基色构成一个RGB 颜色空间。
lcyw
2022/06/10
8050
数字视频基础知识
Task03 彩色空间互转
图像彩色空间互转在图像处理中应用非常广泛,而且很多算法只对灰度图有效;另外,相比RGB,其他颜色空间(比如HSV、HSI)更具可分离性和可操作性,所以很多图像算法需要将图像从RGB转为其他颜色空间,所以图像彩色互转是十分重要和关键的。
致Great
2020/04/30
6630
深入探索视频帧中的颜色空间—— RGB 和 YUV
接触前端音视频之后,需要掌握大量音视频和多媒体相关的基础知识。在使用 FFmpeg + WASM 进行视频帧提取时,涉及到视频帧和颜色编码等相关概念。本文将对视频帧中的颜色空间进行介绍。 一、视频帧 对于视频,我们都知道是由一系列的画面在一个较短的时间内(通常是 1/24 或 1/30 秒)不停地下一个画面替换上一个画面形成连贯的画面变化。这些画面称之为视频帧。 对于视频帧,在现代视频技术里面,通常都是用 RGB 颜色空间或者 YUV 颜色空间的像素矩阵来表示。在 ffmpeg 里面,我们可以看到源码 li
用户1097444
2022/06/29
2K0
深入探索视频帧中的颜色空间—— RGB 和 YUV
CV学习笔记(三):色彩空间
在这一篇文章中,我们将会学习使用一下OpenCV中色彩空间的转换函数,我们这里说的色彩空间是说的使用多种颜色(通常指三种以上),来表示颜色的方法,像是我们平时所说的RGB,HSV,YUV,YCRCB,都是色彩空间模型。OpenCV也很方便的封装了很多的色彩空间函数。下面我们一起来实践一下(以下所有试验都根据下图完成,我截取的Windows自带的壁纸^_^)
云时之间
2020/01/18
6940
CV学习笔记(三):色彩空间
讲解python 图像数据类型及颜色空间转换
在计算机视觉和图像处理领域,图像数据类型和颜色空间转换是非常重要的概念。Python 提供了强大的库和工具,用于读取、操作和转换图像数据。本文将深入探讨Python中的图像数据类型,以及如何进行常见的颜色空间转换。
大盘鸡拌面
2023/12/20
5540
颜色空间系列4: RGB和YDbDr颜色空间的转换及优化算法
颜色空间系列代码下载链接:http://files.cnblogs.com/Imageshop/ImageInfo.rar (同文章同步更新)
用户1138785
2019/09/11
1.1K0
颜色空间系列4: RGB和YDbDr颜色空间的转换及优化算法
05: 颜色空间转换
学习如何进行图片的颜色空间转换,视频中追踪特定颜色的物体。图片等可到文末引用处下载。
CodecWang
2021/12/07
8030
05: 颜色空间转换
图像的表示(2):YCbCr 怎么来的?必看这篇颜色空间发展简史丨音视频基础
在前面的文章《图像的表示(1)》里,我们提出了一个问题:从我们眼睛看见的『画面』,到我们用手机、电脑所处理的『图像数据』,其中经历了什么?从这个问题出发,我们探讨了『图像的定义是什么』和『图像成像的原理是什么』这两个问题,接下来我们继续探讨下个问题:『怎样对图像进行数学描述』。全文分为如下几节内容:
关键帧
2022/06/13
2K0
图像的表示(2):YCbCr 怎么来的?必看这篇颜色空间发展简史丨音视频基础
YCbCr与YUV的区别
yuv色彩模型来源于rgb模型,该模型的特点是将亮度和色度分离开,从而适合于图像处理领域。
lcyw
2022/06/10
1.7K0
YUV简介
在电脑图形中我们常会遇到RGB颜色。RGB中的红绿蓝直接分别对应了可见光的部分。 RGB值能建立一个精确的数字坐标系统,称作颜色空间(color space)。红色部分定义了坐标系中的一个轴。 其次是绿色和蓝色。如下图所示。所有有效的RGB值都在这个颜色空间里。
全栈程序员站长
2022/09/13
1.1K0
YUV简介
数字视频基础知识---颜色空间
在显示器发明之后,从黑白显示器发展到彩色显示器,人们开始使用发出不同颜色的光的荧光粉(CRT,等离子体显示器),或者不同颜色的滤色片(LCD),或者不同颜色的半导体发光器件(OLED和LED大型全彩显示牌)来形成色彩,无一例外的选择了Red,Green,Blue这3种颜色的发光体作为基本的发光单元。通过控制他们发光强度,组合出了人眼睛能够感受到的大多数的自然色彩。 不过这里面的YUV TO RGB的算法,效率实在是低,因为里面有了浮点运算,解一帧176*144的图像大概需要400ms左右,这是无法忍受的,如果消除浮点运算,只需要10ms左右,效率的提升真是无法想象.所以大家还是避免在手机上面进行浮点运算.
lcyw
2022/06/10
7480
数字视频基础知识---颜色空间
【AI PC端算法优化】七,一步步优化RGB和YUV互转算法
继续学习指令集优化的知识,今天来讨论一个图像颜色空间转换经常碰到的一个问题即RGB和YUV图像的颜色空间转换,我们从原理介绍和普通实现开始,然后介绍一些优化方法并引入SSE指令集来优化这个算法的速度。
BBuf
2020/05/21
1.9K0
【AI PC端算法优化】七,一步步优化RGB和YUV互转算法
基于OpenCV的彩色空间互转
图像彩色空间互转在图像处理中应用非常广泛,而且很多算法只对灰度图有效;另外,相比RGB,其他颜色空间(比如HSV、HSI)更具可分离性和可操作性,所以很多图像算法需要将图像从RGB转为其他颜色空间,所以图像彩色互转是十分重要和关键的。
Datawhale
2020/06/23
2.7K0
Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
注:本文所有内容的讲解视频已发布到:https://space.bilibili.com/386691571
荣仔_最靓的仔
2021/02/02
2.8K0
Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
CV学习笔记(三):色彩空间
在这一篇文章中,我们将会学习使用一下OpenCV中色彩空间的转换函数,我们这里说的色彩空间是说的使用多种颜色(通常指三种以上),来表示颜色的方法,像是我们平时所说的RGB,HSV,YUV,YCRCB,都是色彩空间模型。OpenCV也很方便的封装了很多的色彩空间函数。下面我们一起来实践一下(以下所有试验都根据下图完成,我截取的Windows自带的壁纸^_^)
云时之间
2020/02/19
5300
色彩空间与像素格式
颜色是不同波长的光对人眼刺激产生的色彩感觉。色彩空间(Color Space)是颜色的数学表示,根据不同的表示方法分为不同的色彩模型。最常用的色彩模型有三类:RGB(用于计算机图形学), YUV(用于视频系统), CMYK(用于彩色印刷)。后文对色彩空间与色彩模型的叫法不作区分。本文仅讨论视频图像处理领域常用的RGB色彩空间和YUV色彩空间。
叶余
2019/04/02
1.3K0
色彩空间与像素格式
Python实现RGB与HSI颜色空间的互换
这是这学期数字图像处理课的第一份作业好久没懂python手都快生了,调了好久才搞出来。 HSI颜色模型是一个满足计算机数字化颜色管理需要的高度抽象模拟的数学模型。HIS模型是从人的视觉系统出发,直接使用颜色三要素–色调(Hue)、饱和度(Saturation)和亮度(Intensity,有时也翻译作密度或灰度)来描述颜色。
AI那点小事
2020/04/18
5.4K0
相关推荐
颜色空间
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档