图像色彩空间YUV和RGB的差别

假如是200万像素的sensor,是不是RGB一个pixel是2M,YUV是1M?

linchare Post at 2007-1-30 0:36:12
首先,200万象素的sensor,就是有2M个pixel;
    YUV是电视传输用的名词,一个亮度信号(Y),两个色差信号(U分量、V分量)
    YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL)。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的带宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是通过RGB输入信号来创建的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面—色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。 


    在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(点耦合器件)摄像机,它把摄得的彩色图像信号,经分色、分别放大校正得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y、B-Y,最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这就是我们常用的YUV色彩空间。 

    YUV (YCrCb)和4:2:2, 4:1:1, 4:2:0
  是指亮度信号Y和红/蓝色差信号的抽样格式. 在dv中, ntsc是4:1:1, pal采用4:2:0. 注意, 4:2:0并非蓝色差信号采样为0,而是和4:1:1相比,在水平方向上提高1倍色差采样频率,在垂直方向上以Cr/Cb间隔的方式减小一半色差采样.
[br]<p align=right><font color=red>+5 RD币</font></p>


linchare Post at 2007-1-30 0:38:36
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
  而与我们电脑相关的地方,就是目前的显示器大都是采用了RGB颜色标准,这就是为什么它对我们来说这么重要了。
  在显示器上,是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的,目前的电脑一般都能显示32位颜色,约有一百万种以上的颜色。如果说它所显示的颜色还不能完全吻合自然界中的某种色彩的话,那已经几乎是我们肉眼所不能分辩出来的了。 

RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好象有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和(两盏灯的亮度嘛!),越混合亮度越高,即加法混合。

  有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在软件中设定颜色就容易理解了.

  红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。
  红、绿、蓝三个颜色通道每种色各分为255阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色数值相同时为无色彩的灰度色,而三色都为255时为最亮的白色,都为0时为黑色。

YUV和RGB是两种不同的颜色空间。一般来说,用YUV的话,可以节省存储空间,且对视频编解码有利。不过LCD直接接收的格式基本都是RGB的,在DSP或者类似控制器里面有专门的YUV到RGB的转换电路。

RGB是由YUV进行矩阵计算得到的,其效果要比S端子和CVBS好很多.是目前电脑显示器上主要用的视频接口(VGA),但毕竟还是模拟信号,所以以后的主流都是TMDS(最小差分信号传输)信号的DVI接口和HDMI接口.毕竟数字才是未来吗,呵呵...而这些接口之间有些是可以很轻松的进行转换的,所以使用的时候我们根据需要可以进行必要的改进.

YUV和YCbCr是有区别的。YUV是基于RGB进行转化的,一般用于传统的电视,YCbCr是基于YUV的移位,一般用于数字视频

发布了0 篇原创文章 · 获赞 3 · 访问量 7万+
展开阅读全文

C#缩放图片后,左边缘颜色失真的问题

12-12

各位大侠,我使用C#来缩放图片后,图片左边缘总是有颜色失真的问题,尝试了一天没有能够解决,请各位帮忙看看问题在哪儿?谢谢。 图片如下(放大了截的图,失真看得比较明显): ![原始图纯蓝](https://img-ask.csdn.net/upload/201712/12/1513073727_863477.jpg) ![缩放后左边缘颜色失真](https://img-ask.csdn.net/upload/201712/12/1513073745_467122.jpg) 代码是这样的: ``` public Image MatchCanvas(Image srcImage, float widthSize, float heightSize) { float INCH_PER_MM = 0.0393701F; // 1毫米0.0393701英寸,因为传入的目标widthSize和heightSize是以毫米为单位的。 // 目标图片像素,输入是mm,转换成inch,再乘以分辨率,输入是mm,转换成inch,再乘以分辨率 int dstWidth = Convert.ToInt32(widthSize * PdfVariable.INCH_PER_MM * srcImage.HorizontalResolution); int dstHeight = Convert.ToInt32(heightSize * PdfVariable.INCH_PER_MM * srcImage.VerticalResolution); // 原始图片像素 int srcWidth = srcImage.Width; int srcHeight = srcImage.Height; // new一个Bitmap就是目标图片 Bitmap newImage = new Bitmap(dstWidth, dstHeight); newImage.SetResolution(srcImage.HorizontalResolution, srcImage.VerticalResolution); Graphics g4Image = Graphics.FromImage(newImage); // 设置图片质量 g4Image.InterpolationMode = InterpolationMode.HighQualityBicubic; g4Image.SmoothingMode = SmoothingMode.HighQuality; g4Image.Clear(Color.White); /* 根据对齐方式设置各项偏移量 * srcWidthOff 和 srcHeightOff 是源图片偏移量,如果源图片尺寸大于画布,则需要偏移 * dstWidthOff 和 dstHeightOff 是画布偏移量,如果源图片尺寸小于画布,则需要偏移 * widthRage 和 heightRange 是指作画的长宽 */ int srcWidthOff = 0, srcHeightOff = 0, dstWidthOff = 0, dstHeightOff = 0; int widthRange = 0, heightRange = 0; int srcWidthRange = 0, srcHeightRange = 0, dstWidthRange = 0, dstHeightRange = 0; // 底边为准等比缩放 // 以width为准对齐,先算出缩放比例,然后再看hight,等比例缩放后,有两种情况: // 1,不够显示,原图片中上下裁剪相同尺寸 // 2,足够显示,原图片Y轴居中放置 srcWidthRange = srcWidth; dstWidthRange = dstWidth; int needHeight = (int)(srcHeight * (float)((float)dstWidth / (float)srcWidth)); if (needHeight < dstHeight) { // 足够显示 srcHeightRange = srcHeight; dstHeightOff = (dstHeight - needHeight) / 2; dstHeightRange = needHeight; } else { // 不够显示 capHeight是能够显示的原始图片像素数 int capHeight = (int)(dstHeight * (float)((float)srcWidth / (float)dstWidth)); srcHeightOff = (srcHeight - capHeight) / 2; srcHeightRange = capHeight; dstHeightRange = dstHeight; } rectangle srcRect = new Rectangle(srcWidthOff, srcHeightOff, srcWidthRange, srcHeightRange); Rectangle dstRect = new Rectangle(dstWidthOff, dstHeightOff, dstWidthRange, dstHeightRange); try { g4Image.DrawImage(srcImage, dstRect, srcRect, System.Drawing.GraphicsUnit.Pixel); } catch (ArgumentException ex) { Trace.TraceError(ex.Message); } finally { g4Image.Dispose(); } return newImage; } ``` 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览