问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

通过RGB或YUV改变图像的色度和饱和度

创作时间:
作者:
@小白创作中心

通过RGB或YUV改变图像的色度和饱和度

引用
CSDN
1.
https://blog.csdn.net/u013066730/article/details/129768155

本文介绍了通过RGB和YUV两种颜色空间来调整图像的色度和饱和度的方法。文章内容包括具体的数学公式、代码实现以及效果展示,具有一定的技术深度和实用性。

1.RGB调整饱和度

通过RGB改变图像的饱和度,参数r的范围一般为(-1,+5)。

公式:

B = B + (B-(R+G)/2)*r;
G = G + (G-(R+B)/2)*r;
R = R + (R-(B+G)/2)*r;

效果图:

2.YUV介绍

在YUV空间,Y代表亮度,U和V(又称CR和CB)代表色度偏红和偏紫。要改变饱和度需要将U和V同比例地增加和减少。

2.1 YUV调整饱和度(有缺陷,颜色会有点偏移)

通过YUV改变图像的饱和度,这里的r的范围一般为(0, 5)。如果r为1,则表示不改变图像数据。

公式如下:

Y = Y;
U = U*r;
V = V*r;

注意:这里的U和V的范围是(-128, 128)。如果UV的范围是0-255或16-240,那么就需要先减去128。

效果图:

2.2 YUV调整色相

通过YUV改变图像的色相(Cb即为U,Cr即为V),UV的范围是(-128, 128)。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%调节色度
% U' = (U-128) x Cos(H) + (V-128) x Sin(H)
% V' = (V-128) x Cos(H) - (U-128) x Sin(H)
H1=120;
H1=H1/180*pi;
for i=1:m
   for j=1:n 
       Cb1(i,j) =(Cb1(i,j)-128)*sin(H1) +(Cr1(i,j)-128)*cos(H1)+128;
       Cr1(i,j) =(Cr1(i,j)-128)*sin(H1) -(Cb1(i,j)-128)*cos(H1)+128;
   end
end
H2=60;
H2=H2/180*pi;
for i=1:m
   for j=1:n 
       Cb2(i,j) =(Cb2(i,j)-128)*sin(H2) +(Cr2(i,j)-128)*cos(H2)+128;
       Cr2(i,j) =(Cr2(i,j)-128)*sin(H2) -(Cb2(i,j)-128)*cos(H2)+128;
   end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2.3 调整对比度

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
C1=0.5;
C2=2;
for i=1:m
   for j=1:n 
       temp = (Y1(i,j)-128)*C1 + 128;
       Y1(i,j) = min(max(temp, 0), 255);
   end
end
 
for i=1:m
   for j=1:n 
       temp = (Y2(i,j)-128)*C2 + 128;
       Y2(i,j) = min(max(temp, 0), 255);
   end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

原文链接:通过RGB或YUV改变图像的色度和饱和度_rgb怎么改饱和度-CSDN博客

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号