首页 > 其他分享 >YUV

YUV

时间:2024-03-22 14:57:25浏览次数:14  
标签:存储 像素 色度 128 YUV 分量

YUV

YUV是一种颜色编码方式,通常用于数字视频和图像处理中。它将颜色信息分解成亮度(Y)和色度(U和V)两个分量

  • Y表示亮度(Luminance),即灰度信息,决定了图像得明暗程度。
  • U和V表示色度(Chromminance),用于描述图像得色彩信息和饱和度。U表示蓝色得色度,V表示红色得色度。
    YUV常用于视频压缩中,因为人眼对亮度得敏感度高于对色度得敏感度,所以可以通过减少色度信息来实现较高得压缩率,而不明显减少图像质量。

YUV数据格式

YUV的数据格式可以有多种,其中最常见的是YUV444、YUV422和YUV420。这些数字表示每个像素对应的Y、U和V分量的取样率。
YUV444:每个像素都有一个Y、U和V的分量,分辨率最高,但文件大小也最大。
YUV422:每两个像素共享一个U和V分量,Y分量每个像素都有,但U和V分量的取样率降低了一半。
YUV420:每四个像素共享一个U和V分量,Y分量每个像素都有,但U和V分量的取样率进一步降低。

YUV的数据格式

在YUV色彩空间中,数据通常以平面(planar)或者交错(interleaved)的方式划分。这两种方式的区别在于如何排列Y、U和V分量的数据。

  • 平面排列:Y分量的数据按照从左上角到右下角的顺序连续存储,每个像素都有对应的Y值。U和V分量的数据也按照从左上角到右下角的顺序连续存储,但每个像素的U和V值分别存储在各自的平面中。这种方式使得对Y、U和V分量的独立处理变得容易。
  • 交错排列:YUV分量的数据交错存储在一起,每个像素的Y、U和V值依次排列,通常是先存储一个像素的Y值,然后是对应的U值,最后是V值,然后再依次存储下一个像素的YUV值。这种情况可能会提高内存访问的效率,但对于独立处理Y、U和V分量则不够方便。

YUV和RGB的转换公式

ITU-R BT.601标准

R = Y + 1.402 * (V - 128)
G = Y - 0.34414 * (U - 128) - 0.71414 * (V - 128)
B = Y + 1.772 * (U - 128)
Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.147 * R - 0.289 * G + 0.436 * B + 128
V = 0.615 * R - 0.515 * G - 0.100 * B + 128

ITU-RBT.709

R = Y + 1.5748 * (V - 128)
G = Y - 0.1873 * (U - 128) - 0.4681 * (V - 128)
B = Y + 1.8556 * (U - 128)
Y = 0.2126 * R + 0.7152 * G + 0.0722 * B
U = -0.0999 * R - 0.3360 * G + 0.4360 * B + 128
V = 0.6150 * R - 0.5586 * G - 0.0563 * B + 128

标签:存储,像素,色度,128,YUV,分量
From: https://www.cnblogs.com/doubleconquer/p/18089466

相关文章

  • 基于SDL的yuv视频播放
    ##1基于SDL的yuv视频播放YUV的播放涉及到创建窗口和创建线程,在窗口中传入YUV码流数据,以达到播放视频的目的。##2代码例子#include<stdio.h>#include<string.h>#include<SDL.h>//自定义消息类型#defineREFRESH_EVENT(SDL_USEREVENT+1)//请求画面刷......
  • YUV与RGB转换公式(BT601、BT709、BT2020)
    1、在图像处理中经常需要对图像数据进行转换,最常见的莫过于YUV2RGB。并且这个转化在不同的标准下有不同的转化公式。2、如果公式不匹配,则会导致转换后的图像效果有偏差。3、full_range下Y\U\V的取值范围都为[0,255];limit_range(也叫part_range)下Y的取值范围为[16,235],UV的......
  • 【YUV】YUV图像基本处理
    YUV简介YUV是一种色彩编码模型,也叫YCbCr,Y:明亮度U(Chromosnnance):色度V:浓度(Chroma)YUV编码模型的图像一般不能直接用于显示,需要转换为RGB(RGBA)编码模型,才能够正常显示图像2.YUV的几种采样方式YUV图像主流的采样方式:YUV4:4:4:每一个Y分量对于一对UV分量,每像素......
  • Macos arm64 ffmpeg h264 还原成yuv
    首先编译ffmpeg由于编译很多依赖尝试了三天果断放弃~使用brewbrewinstallffmpegbrewinfoffmpegcmakelist.txtcmake_minimum_required(VERSION3.20)project(ffmpeg_baseC)set(CMAKE_C_STANDARD11)set(FFMPEG_DIR/usr/local/Cellar/ffmpeg/6.1.1_3)include_......
  • 如何渲染最原始的yuv视频数据?
    一.整体思路我们在用纹理增加细节那篇文章中提到过,要将图片渲染在屏幕上,首先要拿到图片的像素数组数据,然后将像素数组数据通过纹理单元传递到片段着色器中,最后通过纹理采样函数将纹理中对应坐标的颜色值采样出来,然后给最终的片段赋予颜色值。现在换成了yuv视频,我们应该如何处......
  • x264 yuv to h264 c99
    如何编译引入x264参考这里正式编码#include<stdint.h>#include<x264.h>#include<stdio.h>#include<unistd.h>#include<fcntl.h>#include<stdlib.h>#include<string.h>#defineCLEAR(x)(memset((&x),0,sizeof(x)))#def......
  • python 播放 yuv
    mp4toyuvffmpeg-ivideo1.mp4video1.yuv使用python直接播放yuvimportcv2importnumpyasnpdefplay_yuv(file_path,width,height):yuv_file=open(file_path,'rb')frame_size=int(width*height*3/2)whileTrue:frame_......
  • SDL2+SDL_Thread+SDL_Event实现yuv文件的播放
    一、概述上一节使用单线程播放了YUV文件。在一个线程中播放yuv文件逻辑看起来简单,但是会产生一些问题。如:视频卡顿、无响应等问题。本节在上一节的基础上对播放YUV文件的代码进行改造,加入SDL_Event和SDL_Thread。使SDL_Thread现成发出命令时刷新YUV视频帧。等收到结束命......
  • SDL播放YUV数据
    一、概述上一节使用SDL2在窗口上显示了一张图片,本节使用SDL2播放YUV420P数据。YUV420P一帧数据的长度=width*height*3/2二、代码示例下面这段示例代码读取YUV数据和现实YUV数据都是在同一个线程中的。播放是能播放,但是会很卡,不一会儿就会出现无响应的情况。下一节......
  • Android端如何实现拉取RTSP/RTMP流并回调YUV/RGB数据然后注入轻量级RTSP服务?
    技术背景我们在对接开发Android平台音视频模块的时候,遇到过这样的问题,厂商希望拉取到海康、大华等摄像机的RTSP流,然后解码后的YUV或RGB数据回给他们,他们做视频分析或处理后,再投递给轻量级RTSP服务模块或RTMP推送模块,实现处理后的数据,二次转发,本文以拉取RTSP流,解析后再注入轻量级RTS......