图像处理之YUV颜色空间

目录

1 YUV颜色空间简介

2 RGB与YUV相互转换

3 提取YUV分量

4 应用

5 演示Demo

5.1 开发环境

5.2 功能介绍

5.3 下载地址

参考


1 YUV颜色空间简介

        YUV也是常用的颜色空间之一,它由一个代表亮度(Luminance)的Y分量和两个代表色度(Chrominance)的U和V组成。由于人类视网膜上的杆细胞要多于锥细胞,所以人眼对亮度的敏感程度要高于色度,也就是说,人眼对于亮暗的分辨能力要高于对颜色变化的分辨能力。基于此原理,在视频传输的时候,可以舍弃一部分UV分量,来减少带宽,同时也不会太影响图像质量。

        U和V也合起来称为C分量,有些文档也会用“YC”或“YCbCr”来代指“YUV”,意思是一样的,都是指YUV颜色空间。U分量(也就是Cb分量),通常表示蓝色与黄色的差异。在YUV颜色空间中,U分量的数值范围通常是从-128到+127。正值倾向于表示黄色,而负值倾向于表示蓝色。V分量(也就是Cr分量),通常表示红色与绿色的差异。与U分量类似,V分量的数值范围也是从-128到+127。正值倾向于表示红色,而负值倾向于表示绿色。

2 RGBYUV相互转换

        目前手机端的视频处理或者 Camera 实时处理数据大都是 YUV 信号流,因此我们只有了解 YUV 颜色空间 与 RGB 颜色空间 的关系,才能做出一些基于视频和 Camera 的特效。

        下面使用C语言编程实现RGB与YUV的转换

#include"TRGB2YUV.h"
#include"Commen.h"
#include<stdlib.h>
#include<math.h>

void RGB2YUV(unsigned char R, unsigned char G, unsigned char B, int *Y, int* U, int*V)
{
        *Y = (299 * R + 587 * G + 114 * B) / 1000;
        *U = (-147 * R - 289 * G + 436 * B) / 1000;
        *V = (615 * R - 515 * G - 100 * B) / 1000;
};

void YUV2RGB(int Y, int U, int V, unsigned char * R, unsigned char * G, unsigned char *B)
{
        *R = CLIP3((100 * Y + 114 * V)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值