【matlab】:matlab中 RGB到YUV的转变
2016-03-19 13:32
423 查看
写这篇文章之前,首先我们得确定什么是RGB,什么是YUV
RGB代表着 红色,绿色,蓝色三种颜色
其中分别是这么分别出来的,值都是在0-255之前,其中越接近于0颜色越显得黑,越紧接近于255,越显得颜色上的白。从0-255的各个区段,显示出了各种不同的颜色。
想要查看具体颜色的分类,需要自己去查表
然后是YUV
其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度
很简单的描述他们之间的转换关系只需要一个公式即可
YUV(256 级别) 可以从8位 RGB 直接计算:
Y = 0.299 R + 0.587 G + 0.114 B
U = - 0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
下面是写出来的代码:
RGB代表着 红色,绿色,蓝色三种颜色
其中分别是这么分别出来的,值都是在0-255之前,其中越接近于0颜色越显得黑,越紧接近于255,越显得颜色上的白。从0-255的各个区段,显示出了各种不同的颜色。
想要查看具体颜色的分类,需要自己去查表
然后是YUV
其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度
很简单的描述他们之间的转换关系只需要一个公式即可
YUV(256 级别) 可以从8位 RGB 直接计算:
Y = 0.299 R + 0.587 G + 0.114 B
U = - 0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
下面是写出来的代码:
#include <iostream> using namespace std; int main(){ float r,g,b,y,u,v; while(1){ cin>>r>>g>>b; y = 0.299*r+0.587*g+0.114*b; u = -0.1687*r-0.3313*g+0.5*b+128; v = 0.5*r - 0.4187*g-0.0813*b+128; cout<<y<<" "<<u<<" "<<v<<endl; } return 0; }
相关文章推荐
- Windows下用Matlab加载caffemodel做图像分类
- matlab练习程序(TV模型图像修复)
- numpy和matlab计算协方差矩阵的不同(matlab是标准的,numpy相当于转置后计算)
- MATLAB与C混合编程
- GMM的EM算法实现
- 【Matlab】图像裁剪函数imcrop的原点、长度、宽度问题
- 【Matlab】函数imread的返回值
- 【matlab】:matlab如何实现切分图片并保存?
- Matlab从图像中选取矩形区域
- 数据挖掘-全面的MAC上matlab安装libsvm
- Matlab中K-means聚类算法的使用(K-均值聚类)
- 【MATLAB】用MATLAB绘制奥运五环
- 【MATLAB】用MATLAB绘制奥运五环
- 利用cuda加速MATLAB程序
- MATLAB读写Excel
- Matlab读取CSV文件
- 数据挖掘-SVM(支持向量机)的matlab基础DEMO详细注解
- matlab基础语法笔记(二)
- Matlab的regionprops详解
- kd树简介 在matlab下VLFeat中的kd-tree使用