OPENCV学习笔记3-7_RGB->YCbCr

色彩空间用数学方式来描述颜色集合,常见的2个基本色彩模型是RGB,YUB.

? RGB - Used in computer graphics

? YCbCr - Used in video compression

1.1 YCbCr

YCbCr 则是在世界数字组织视频标准研制过程中作为ITU - R BT.601 建议的一部分,其实是YUV经过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致,Cb,Cr 同样都指色彩,只是在表示方法上不同而已。YCbCr或Y‘CbCr色彩空间通常会用于影片中的影像连续处理,或是数字摄影系统中,其中Y是指亮度(luma)分量(灰阶值),Cb指蓝色色度分量,而Cr指红色色度分量。

医学研究证明,人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。

RGB is not very efficient (有效)in terms of(就......而言) bandwidth(带宽) as (因为)all the three components have to be present in equal bandwidth to produce(produce) any color. So an RGB based frame buffer(帧缓冲器) must have same pixel depth(像素深度) and display resolution for each RGB component.

YCbCr easy to get rid of(摆脱) some redundant color information(冗余的颜色信息), it is used in image and video compression standards like JPEG, MPEG1, MPEG2 and MPEG4.

YCbCr主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。

  • 4:4:4 – In this, there is no sub-sampling of the chroma components(色度分量的子采样), and can be as well referred and used(被引用和使用) directly as a RGB image. High-end cameras  devices use this format to not lose any data.
  • 4:2:2 – The chroma components(色度分量) are horizontally sub-sampled (被水平次采样) and their resolution (解析度,分辨率)is halved (减半)as compared to(与x相比) the luminance counterpart (亮度对应)in this scheme(该方案). High-end digital video formats and still images(静态图像)generally employ(采用,employment 雇佣)this scheme.
  • 4:2:0 – In this variant(变种), the chroma components are sub-sampled by a factor of 2, both horizontally as well as vertically(水平方向和垂直方向), thus (因此)reducing to a factor (因子)of a quarter(1/4). The standard video compression MPEG uses this scheme。

1.2  YCbCr - RGB Color Format Conversion

For standard definition TV applications (SDTV) the following equation describes the color conversion from RGB to YCbCr (according to ITU-R BT.601):

To recover an RGB color from a YCbCr color, the following inverse matrix is used:

The possible range(可能范围) of values for chrominance and luminance(色度和亮度值) reserves(保留) some footroom and headroom(空间和余量), which is necessary to provide some space for overshooting(过冲), e.g.( 例如) in combination with(结合) analog video equipment. In many cases the complete possible range (完整可能范围)of 8 bit is used, this full-range color format is used for JPEG images.

The conversion of RGB colors into full-range YCbCr colors is described by the following equation(8-bit RGB to 8-bit YCbCr):

These equations can be implemented in fixed-point arithmetic as follows:

y = (77 × r + 150 × g + 29 × b)/256

cb = (-43 × r - 85 × g + 128 × b + 32768)/256

cr = (128 × r - 107 × g - 21 × b + 32768)/256

The other way round(另一方面), to convert a full-range YCbCr color into RGB is described by the following equation:

For high definition TV (HDTV), different coefficients(系数) are used. The possible range of values is identical to the SDTV, to provide the necessary footroom and headroom.

The following equation describes the color conversion from RGB to YCbCr for HDTV (according to ITU-R BT.709):

This is the corresponding inverse matrix to get the RGB color components out of a YCbCr color:

时间: 2024-10-18 23:49:09

OPENCV学习笔记3-7_RGB->YCbCr的相关文章

Opencv学习笔记(六)SURF学习笔记

原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. 看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习. SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高.它和SIFT的主要差别是图像多尺度空间的构建方法不同. 在计算视觉领域,尺度空间被象征性的表述

opencv学习笔记(四)投影

opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: 1 #include <cv.h> 2 #include <highgui.h> 3 using namespace std; 4 using namespace cv; 5 int main() 6 { 7 IplImage * src = cvLoadImage("cat.png", 0); //强制转化读取图像为灰度图 8 cvShowImage("灰度图像", s

OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)

昨天刚刚考完编译原理,私心想着可以做一些与考试无关的东西了.一直想做和图像处理相关的东西,趁这段时间有空学习一下OpenCV,搭建环境真是一件麻烦的事情,搞了近三个小时终于OK了.先来张图: 大致描述一下步骤吧: 一.安装前准备 1.VS2012(网上看到很多用的VS2010,但是基本不影响) 2.OpenCV 安装包(我下载的是最新的2.4.9) 二.安装OpenCV 1.解压OPenCV 说是安装,其实就是解压,OpenCV的Windows安装程序就是一个自解压程序: 这里我解压到C:\Pr

opencv学习笔记(03)——遍历图像(迭代器法)

1 #include <opencv2\highgui\highgui.hpp> 2 #include <opencv2\imgproc\imgproc.hpp> 3 #include <opencv2\core\core.hpp> 4 5 void colorReduce(cv::Mat& img, int div=64); 6 7 8 int main() 9 { 10 cv::Mat img_orginal = cv::imread("F:\\i

OpenCV学习笔记[3]Java Demo人脸识别

OpenCV学习笔记:Java Demo人脸识别 [简介] 我记得在很久以前,CSDN似乎搞过一个活动,给一个橘子林的照片,让程序计算相片里有多少个橘子.之所以对这个问题记忆犹新,是因为在专业学习初期,相比于排序遍历搜索等简单算法而言,"图像识别"算法一直是难以理解的东西,而我偏偏又痴迷于此,不管自己多么无知,对于令我迷惑的问题总是充满着解决的渴望. 通过对OpenCV的初步了解,我发现图像识别的很多问题都可以用它方便的解决,本次将是一个来自官方的人脸识别的实例,我们提供图像,使用内置

OpenCV 学习笔记(模板匹配)

OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够高时,就认为找到了我们的目标. 在 OpenCV 中,提供了相应的函数完成这个操作. matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像 minMaxLoc 函数:在给定的矩阵中寻找最大和最小值,并给出它们的位置 在具体介绍这两个函数之前呢,我们还要介绍一个概念,就是如何来评价两

openCV学习笔记(2)--cvCreateTrackbar

int cvCreateTrackbar( const char* trackbar_name, //滑动条的名称 const char* window_name, //窗口的名称,滑动条不会遮挡图像 int* value, //当滑动条被拖到时,OpenCV会自动将当前位置所代表的值传给指针指向的整数 int count, //滑动条所能达到的最大值 CvTrackbarCallback on_change //可选的回调函数,回调函数可参见http://wapedia.mobi/zhtrad

OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 2013-03-23 17:44 16963人阅读 评论(28) 收藏 举报 分类: 机器视觉(34) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] KAZE系列笔记: OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 OpenCV学习笔记(28)KA

OpenCV学习笔记[5]FLANN特征匹配

OpenCV学习笔记:FLANN特征匹配 本次给出FLANN特征匹配的Java实现. [简介] 特征匹配记录下目标图像与待匹配图像的特征点(KeyPoint),并根据特征点集合构造特征量(descriptor),对这个特征量进行比较.筛选,最终得到一个匹配点的映射集合.我们也可以根据这个集合的大小来衡量两幅图片的匹配程度. 特征匹配与模板匹配不同,由于是计算特征点集合的相关度,转置操作对匹配影响不大,但它容易受到失真.缩放的影响. [特征匹配] FeatureMatching.java: imp

opencv学习笔记(04)——ROI

ROI的用法:1.直接相加:2.掩码法 #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <opencv2\core\core.hpp> int main() { cv::Mat img_original = cv::imread("F:\\images\\boldt.jpg"); cv::Mat logo = cv::imre