FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别

1.3 Lab空间

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

FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别

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)。

FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别
FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别

色调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对转换算法进行验证:

FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别

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. 转换前/后图像对比:

FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别

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

FPGA数字图像处理基础:色彩空间转换(Verilog)-fpga颜色识别

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

上一篇 2023-04-11 01:33:21
下一篇 2023-04-11 01:37:56

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。