1.3 Lab空间
Lab色彩空间是基于生理特征的颜色系统,与设备无关,即采用数字化的方法描述人的视觉感知。L表示亮度,取值范围为0~100,表示从黑~白;a分量取值范围为 -128~127,表示从绿~红;b分量取值范围为 -128~127,表示从蓝~黄。

Lab色彩空间致力于感知均匀性,它的L分量密切匹配人类亮度感知。因此,可以被用来通过修改a和b分量的输出色阶来做精确的颜色平衡,或使用L分量来调整亮度对比。
Lab色彩空间所描述的色域是最大的,因此Lab色彩空间存在大量色彩超出人类视域范围,甚至无法在物理世界再现。同时,RGB等色彩空间的设备依赖性也使得Lab色彩空间无法直接与其他色彩空间进行转换。
1.4 HSV空间
HSV色彩空间是根据颜色的直观特性色调(H,Hue)、饱和度(S,Saturation)和亮度(V,Value)建立的色彩模型。由于H、S、V可以构成锥形坐标系,所以HSV模型通常也称为六角锥体模型(Hexcone Model)。


色调H:图像色彩信息,描述光谱颜色所在位置。采用角度度量,取值范围为0°~360°。若从红色开始按逆时针方向计算:红色为0°,绿色为120°,蓝色为240°,互补色之间相差180°;
饱和度S:图像纯度信息,描述颜色接近光谱色的程度。采用比例值度量,取值范围为0~1。颜色通常可看作某种光谱色与白色的混合结果,饱和度越高,光谱色所占比例越大,颜色越接近光谱色,表现为颜色深;饱和度越低,光谱色所占比例越小,颜色越远离光谱色,表现为颜色浅。饱和度为0时,表现出颜色仅有灰度;
亮度V:图像亮度信息,描述色彩的明亮程度。采用比例值度量,取值范围为0~1。对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。
1.5 CMY(CMYK)空间
CMYK色彩空间是一种减色模式色彩空间,常用于彩色印刷。CMYK是基于C(Cyan)、M(Megenta)、Y(Yellow)和K(Black)四种颜色叠加而成的,由于在实际应用中青色(Cyan)、洋红色(Megenta)和黄色(Yellow)叠加很难形成真正的黑色(Black),而是褐色,因此引入黑色K(Black)强化暗调,加深暗部色彩。
CMYK与RGB根本的区别在于CMYK采用减色色彩模式——当阳光照射到一个物体上时,物体将吸收一部分光线并反射剩下的光线,反射的光线就是所看见的物体颜色,即减色色彩模式。因此,CMYK色彩模式更接近于真实效果,尽管不如RGB模式下的色彩多,但更适合印刷。
02
色彩空间转换原理
尽管RGB是日常生活中彩色视频图像最常用的图像格式,但RGB格式图像将色调、亮度和饱和度综合在一起,细节上难以进行数字化调整,因此在科学研究中通常采用YUV(YCbCr)或灰度图格式,掌握RGB与YUV(YCbCr)/灰度图之间的转换原理有利于后续数字图像处理分析。
2.1 RGB与YUV转换原理
RGB与YUV依据以下公式进行转换:
RGB转为YUV:
Y = 0.299*R + 0.587*G + 0.114*B
U = – 0.169*R – 0.331*G + 0.5*B + 128
V = 0.5*R – 0.419*G – 0.081*B + 128
YUV转为RGB:
R = Y + 1.402*(V-128)
G = Y – 0.344*(U-128) – 0.714*(V-128)
B = Y + 1.772*(U-128)
通过Matlab对转换算法进行验证:

Matlab转换代码:
%**********************************************************************
% ——————————————————————-
% Company: Cascatrix
% Engineer: Carson
%
% Create Date: 2023/02/11
% Design Name: rgb_yuv
% Module Name: rgb_yuv
% Tool Versions: v1.0
% Description: Convert RGB888 into YUV
%——————————————————————-
%*********************************************************************/
clear;clear all;clc;
% Load image
image_in = imread(cascatrix.jpg);
% Seperate R G B
image_r = int16(image_in(:,:,1));
image_g = int16(image_in(:,:,2));
image_b = int16(image_in(:,:,3));
% Get image size
[row,col,n] = size(image_in);
% Calculate Y U V
image_y = 0.299*image_r + 0.587*image_g + 0.114*image_b;
image_u = – 0.169*image_r – 0.331*image_g + 0.5*image_b + 128;
image_v = 0.5*image_r – 0.419*image_g – 0.081*image_b + 128;
% Recover R G B
image_out_r = image_y + 1.402*(image_v – 128);
image_out_g = image_y – 0.344*(image_u – 128) – 0.714*(image_v – 128);
image_out_b = image_y + 1.772*(image_u – 128);
% Output processed RGB image
image_out = cat(3,image_out_r,image_out_g,image_out_b);
% Display before/after processed image
figure(1)
subplot(121);
imshow(uint8(image_in)), title(Image in);
subplot(122);
imshow(uint8(image_out));title(Image out);
% Display Y U V
figure(2)
subplot(131);
imshow(uint8(image_y)),title(Image Y);
subplot(132);
imshow(uint8(image_u)),title(Image U);
subplot(133);
imshow(uint8(image_v)),title(Image V);
Matlab代码将输出结果:
1. 转换前/后图像对比:

2. Y、U、V三通道图像显示:

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别 https://www.yhzz.com.cn/a/4507.html