YUV 格式简介

YCbCr其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。

人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。

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

4:2:0 表示每4个像素有4个亮度分量,2 个色度分量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最常用格式

4:2:2 表示每4个像素有4个亮度分量,4个色度分量(YYYYCbCrCbCr),是DVD、数字电视、HDTV 以及其它消费类视频设备的最常用格式

4:4:4表示全像素点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。

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

其中YCbCr 4:2:0 比较常用,其含义为:

每个点保存一个 8bit 的亮度值(也就是Y值),每 2x2 个点保存一个 Cr 和Cb 值,图像在肉眼中的感觉不会起太大的变化。

原来用 RGB(R,G,B 都是 8bit unsigned) 模型,每个点需要 8x3=24 bits

 4:2:2需要 8+(8/2)+(8/2)= 16bit

4:2:0仅需要 8+(8/4)+(8/4)=12bits,平均每个点占12bits。

这样就把图像的数 据压缩了一半。

 

1:
图文详解YUV420数据格式_avcoder的博客-CSDN博客http://blog.csdn.net/jinghao666666/article/details/50738343

NV12、NV21(属于YUV420)

NV12和NV21属于YUV420格式,是一种   two-plane   模式,即   Y和UV   分为两个Plane,但是    UV(CbCr)为交错存储,而不是分为三个plane。

其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00

http://m.blog.csdn.net/article/details?id=10945143http://m.blog.csdn.net/article/details?id=10945143

2:

YUV格式有两大类:planar和packed。

对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。

对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。

YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

 与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,

没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。

并且,YUV不像RGB那样要求三个独立的视频信号同时传输,所以用YUV方式传送占用极少的频宽。

YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,

关于其详细原理,可以通过网上其它文章了解,这里我想强调的是     如何根据其采样格式来从码流中还原每个像素点的YUV值,

因为只有正确地还原了每个像素点的YUV值,才能通过YUV与RGB的转换公式提取出每个像素点的RGB值,然后显示出来。

    用三个图来直观地表示采集的方式吧,以  黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。

先记住下面这段话,以后提取每个像素的YUV分量会用到。

    1. YUV 4:4:4采样,每一个Y对应一组UV分量。

    2. YUV 4:2:2采样,每两个Y共用一组UV分量。

    3. YUV 4:2:0采样,每四个Y共用一组UV分量。

2.  存储方式

    下面我用图的形式给出常见的YUV码流的存储方式,并在存储方式后面附有取样每个像素点的YUV数据的方法,其中,Cb、Cr的含义等同于U、V。

(1) YUVY 格式 (属于YUV422)

YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,

其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。

(2) UYVY 格式 (属于YUV422)

UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。

(3) YUV422P(属于YUV422)

 YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,

然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。

其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。

比如,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。

(4)YV12,YU12格式(属于YUV420)

YU12和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。

其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。

注意,上图中,Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00,其他依次类推。

(5)NV12、NV21(属于YUV420)

NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。

其提取方式与上一种类似,即Y'00、Y'01、Y'10、Y'11共用Cr00、Cb00      。   YUV420 planar数据, 以720×488大小图象YUV420 planar为例,

其存储格式是: 共大小为(720×480×3>>1)字节,分为三个部分:Y,U和V

Y分量:    (720×480)个字节 

U(Cb)分量:(720×480>>2)个字节

V(Cr)分量:(720×480>>2)个字节

三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。

即YUV数据的0--720×480字节是Y分量值,         

720×480--720×480×5/4字节是U分量   

720×480×5/4 --720×480×3/2字节是V分量。

4 :2: 2 和4:2:0 转换:

最简单的方式:

YUV4:2:2 ---> YUV4:2:0  Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。

YUV4:2:0 ---> YUV4:2:2  Y不变,将U和V信号值的每一行分别拷贝一份形成连续两行数据。

在YUV420中,一个像素点对应一个Y,一个4X4的小方块对应一个U和V。

对于所有YUV420图像,它们的Y值排列是完全相同的,

因为只有Y的图像就是灰度图像。YUV420sp与YUV420p的数据格式它们的UV排列在原理上是完全不同的。

420p它是先把U存放完后,再存放V,也就是说UV它们是连续的。而420sp它是UV、UV这样交替存放的。(见下图) 有了上面的理论,

我就可以准确的计算出一个YUV420在内存中存放的大小。 width * hight =Y(总和) U = Y / 4   V = Y / 4 。

所以YUV420 数据在内存中的长度是 width * hight * 3 / 2,假设一个分辨率为8X4的YUV图像,它们的格式如下图:

                      YUV420sp格式如下图           

                        YUV420p数据格式如下图

旋转90度的算法:

public static void rotateYUV240SP(byte[] src,byte[] des,int width,int height)

 {

  int wh = width * height;

  //旋转Y

  int k = 0;

  for(int i=0;i<width;i++) {

   for(int j=0;j<height;j++)

   {

               des[k] = src[width*j + i];   

         k++;

   }

  }

  for(int i=0;i<width;i+=2) {

   for(int j=0;j<height/2;j++)

   {

               des[k] = src[wh+ width*j + i];

               des[k+1]=src[wh + width*j + i+1];

         k+=2;

   }

  }

 }

YV12和I420的区别       

一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,

如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。      

在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。

即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。

但是这里需要注意的是,虽然YV12也是(4:2:0),但是YV12和I420的却是不同的,在存储空间上面有些区别。

如下: YV12 : 亮度(行×列) + U(行×列/4) + V(行×列/4)

I420 : 亮度(行×列) + V(行×列/4) + U(行×列/4)

可以看出,YV12和I420基本上是一样的,就是UV的顺序不同。

继续我们的话题,经过第一次数据压缩后RGB24->YUV(I420)。这样,数据量将减少一半,为什么呢?呵呵,这个就太基础了,我就不多写了。

同样,如果是RGB24->YUV(YV12),也是减少一半。但是,虽然都是一半,如果是YV12的话效果就有很大损失。

然后,经过X264编码后,数据量将大大减少。将编码后的数据打包,通过RTP实时传送。到达目的地后,将数据取出,

进行解码。完成解码后,数据仍然是YUV格式的,所以,还需要一次转换,这样windows的驱动才可以处理,就是YUV2RGB24。

YUY2      是 4:2:2         [Y0 U0 Y1 V0]

yuv420p    和 YUV420    的区别 在存储格式上有区别

yuv420p:yyyyyyyy uuuuuuuu vvvvv yuv420: yuv yuv yuv

YUV420P      ,Y,U,V三个分量都是平面格式,分为I420和YV12。I420格式和YV12格式的不同处在U平面和V平面的位置不同。

在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YUV);但YV12则是相反(即:YVU)。

YUV420SP   ,   Y  分量平面格式,UV打包格式, 即NV12。 NV12与NV21类似,U 和 V 交错排列,不同在于UV顺序。

I420:  YYYYYYYY UU VV     =>YUV420P

YV12: YYYYYYYY VV UU     =>YUV420P

NV12: YYYYYYYY UVUV      =>YUV420SP

NV21: YYYYYYYY VUVU      =>YUV420SP

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
处理器内核 ● ARM Cortex A9@800MHz - 32KB L1 I-Cache,32KB L1 D-Cache - 256KB L2 Cache 视频编码 ● H.264 Baseline Profile编码 ● H.264 Main Profile编码 ● H.264 High profile编码 ● MPEG4 SP编码 ● MJPEG/JPEG Baseline编码 视频编码处理性能 ● H.264编码可支持最大分辨率为 1600万像素 ● H.264多码流实时编码能力: - 1080P@30fps+D1@30fps+CIF@30fps +QVGA@30fps+1080P JPEG抓拍 2fps - 720P@60fps+D1@30fps+CIF@30fps+ QVGA@30fps+720P JPEG抓拍2fps ● 支持JPEG抓拍3M Pixels@15fps~16M Pixels@2fps ● 支持MP EG4 S P编码,支持最大 960H实时 ● CBR/VBR/ABR码率控制,16kbit/ s~40Mbit/s ● 编码帧率支持1/16~60fps ● 编码码流支持VUI信息 ● 支持对感兴趣区域高质量编码 (ROI) ● 提供彩转灰编码功能 智能视频分析 ● 集成智能分析加速引擎,支持智能 运动侦测、周界防范、人脸检测、 镜头保护等多种智能分析应用 视频与图形处理 ● 支持de-interlace、图像增强、边缘 增强、3D去噪等前处理功能 ● 视频、图形输出抗闪烁处理 ● 视频1/8~16x缩放功能 ● 图形 1/4~4x缩放功能 ● 8个区域的前端OSD叠加 ● 2层(视频层、图形层)视频后端 硬件图像叠加 ● 4个区域的视频遮盖 Hi3516 芯片主要特点 ISP ● 支持3A功能,3A的控制用户可调节 ● 支持WDR、强光抑制、背光补偿、 gamma、色彩增强 ● 支持坏点校正、去噪、数字防抖 ● 提供ISP相关API,可供客户调节ISP 效果 ● 提供 PC端sensor与ISP tuning tools 音频编解码 ● 通过软件实现多协议语音编解码 ● 协议支持G.711、ADPCM、G.726 ● 支持回波抵消功能 安全引擎 ● 硬件AES/DES/3DES加解密算法 ● 数字水印技术 视频接口 ● 输入 - 支持支持8/10/12/14/16 bit RGB Bayer输入,时钟频率最高150MHz - 支持BT.601,数据格式可支持:YUV 422 - 支持BT.656,数据格式可支持:YUV 422 - 支持BT.1120协议输入,支持内嵌同 步,外置同步两种模式,数据格式 为:YUV422,频率≥150MHz - 支持与A p t i n a、OV、SONY 、 Altasens等主流高清CMOS对接 - 支持与sharp、松下高清CCD对接 - 支持与960H CCD sensor对接 - 支持1 6 M @ 2 f p s ; 5 M @ 5 f p s; 3M@1 5 f p s ; 1 0 8 0 P@3 0 f p s ; 720P@60fps视频输入能力 - 支持双sensor输入 ● 输出 - 支持一路CVBS输出,同时提供1个 BT.656输出 - 提供1个BT.1120视频输出接口,用 于外扩HDMI或SDI接口,最高性能 1080P@30fps 音频接口 ● 2个标准I2S接口 ● 集成1个Audio codec,支持8/16bit语 音输入和输出 ● 支持通过I2S接口外接Audio codec, 支持8/16bit语音输入和输出 外围接口 ● 4个UART接口 ● IR接口、I2C接口、SPI主从接口、 GPIO接口、PWM接口 ● 1个PCIe 1.1接口,支持EP/RC; ● 2个SDIO2.0接口,最大支持32GB ● 2个USB 2.0 HOST接口,支持Hub功能 ● GMAC接口,支持RGMI I和MI I模 式;支持10/100Mbit/s 全双工或半 双工模式,1000M 全双工模式,支 持QoS 外部存储器接口 ● DDR2/3 SDRAM接口 - 32/16bit DDR2/DDR3@500MHz - 最大容量支持1GB ● SPI Nor Flash接口 - 1、2、4bit SPI Nor Flash ● NAND Flash接口 - 8bit数据位宽 - 支持SLC、MLC;1bit、4bit、8、 24bit ECC - 支持8GB以上容量器件 ● 可选择从Nor Flash或NAND Flash启动 SDK ● 提供基于Linux 2.6.32 SDK包 ● 提供H.264的高性能PC解码库 芯片物理规格 ● 功耗 - 1000mW典型功耗 - 支持多级省电模式 工作电压 - 内核电压为1.0V - IO电压为3.3V/PCIe 2.5V,容限电压 为5V - DDR2/3 SDRAM接口电压为1.8/1.5V - 工作环境温度为-20℃~+85℃ 封装 - FC-CSP封装, 441 pin - 0.65mm管脚间距,15mm×15mm The right silicon for your next BIG idea Hi3516 功能框图 Hi3516 单sensor IPC解决方案 Hi3516 双sensor IPC解决方案 安防监控行业在经历从传统模拟 CCTV向DVR数字监控转型的同时,网 络化、高清化、智能化也逐渐融入到 发展趋势中,行业对高清IPCamera的 需求也日趋明确与强烈。Hi3516为针 对高清IPCamera产品应用开发的一款 专业高端SOC芯片,其1080P@30fps H264多码流编码性能、优异的ISP和编 码视频质量、高性能的智能加速引擎 等特性,在满足客户差异化IPCamera 产品功能、性能、图像质量要求的同 时,可大大降低ebom成本 32/16bit DDR2/DDR3 @500MHz SD/MMC GMAC PHY 2 PORT USB NAND Flash SPI NOR Flash× 2 AXI bus Hi3516 PCIe 1.1 AES/DES/ 3DES/SHA RTC I2C UART ×4 GPIO s IR I2S× 2 PWM× 4 Video Subsystem H.264 HP/MPEG4/ MJPEG/JPEG ARM Subsystem A9@800MHz (32KB/32KB,256KB L2 Cache) Flash I/F I2C USB 2.0 Host× 2 GMAC SSP × 2 NANDC Image Subsystem IVS ENGINE VPP+TDE ISP
### 回答1: YUV格式的图像通常是用于视频处理的,其中Y表示亮度分量,U和V表示颜色分量。这种图像格式在计算机视觉、数字信号处理、视频压缩等领域中广泛使用。下面介绍几种常见的打开YUV格式图像的方法。 1. 使用视频播放器:常见的视频播放器如Potplayer、VLC等都支持打开YUV格式的图像文件,只需将文件拖动到播放器窗口即可打开。 2. 使用Matlab:Matlab是一种常见的科学计算软件,也可以用于图像处理。在Matlab中打开YUV格式图像需要使用`yuvread()`函数,该函数可以读取和显示YUV格式的文件。 3. 使用Python:Python是一种常见的编程语言,也可以用于图像处理。使用Python打开YUV格式图像需要使用相应的库,如OpenCV或PyAV等,同时需要编写相应的代码实现图像的读取和显示。 无论是使用视频播放器、Matlab还是Python,打开YUV格式图像都需要注意一些细节。例如,需要确定图像的尺寸和颜色空间,不同的YUV格式可能会有不同的解码方式,需要根据具体的需要进行相应的设置和调整。 ### 回答2: YUV是一种用于存储图像或视频的格式,在计算机图形和多媒体处理中应用广泛。下面是一个简单的步骤,告诉您如何打开YUV格式的图像。 首先,您需要一个图像查看器或多媒体播放器,它支持YUV格式。一些常见的软件包括VLC媒体播放器、PotPlayer、Photoshop和FFmpeg工具等。 其次,确保您已经将需要打开的YUV文件保存在计算机的某个位置。通常,YUV图像文件的扩展名为.yuv。 接下来,打开您选择的图像查看器或多媒体播放器。对于VLC媒体播放器,您只需点击"媒体"菜单中的"打开文件"选项,然后选择要打开的YUV文件。 对于PotPlayer,您可以使用类似的方法。单击"文件"菜单,然后选择"打开"选项,找到YUV文件并点击"打开"。 如果您想使用Photoshop打开YUV文件,可以选择文件菜单中的"打开"选项,并选择YUV文件。在打开对话框中,您还可以选择将其打开为灰度图像、RGB图像或其他特定颜色空间的图像。 另外,您还可以使用FFmpeg工具在命令行中打开YUV文件。您可以编写一个简单的命令,指定输入文件和所需的输出格式。例如,"ffmpeg -s 1920x1080 -i input.yuv output.png"可以将YUV文件转换为PNG图像。 最后,一旦您成功打开了YUV格式的图像文件,您可以使用相应的软件进行浏览、编辑、处理或转换等操作,以满足您的需要。 总而言之,打开YUV格式图像需要一个支持该格式的软件,并根据软件的指导打开文件。 ### 回答3: YUV格式是一种用于存储彩色图像的文件格式,常用于视频压缩和流媒体传输。要打开YUV格式的图像,可以按照以下步骤进行。 首先,需要一个支持YUV格式的图像编辑软件或播放器。常见的软件包括Adobe Premiere、VirtualDub和VLC媒体播放器等。在电脑上安装这些软件后,可以直接打开YUV文件。 另外,还可以通过使用YUV转换工具将YUV文件转换为其他常见的图像格式,例如JPEG或PNG。这些转换工具可以在互联网上找到,并且有多个免费和付费的选项可供选择。 打开YUV格式图像时,可以选择加载整个图像或者仅选择加载其中的部分区域。然后,可以使用软件提供的功能来编辑图像,如调整亮度和对比度、改变颜色饱和度、添加滤镜效果等。 需要注意的是,YUV格式图像通常由分为亮度(Y)和色度(UV)两个分量组成,因此在查看或编辑YUV图像时,确保正确理解和处理这些分量是非常重要的。 总结起来,要打开YUV格式图像,可以通过使用支持YUV格式的软件或转换工具,或者将文件转换为其他常见的图像格式来实现。在打开和处理YUV图像时,需要注意其分量的特性,以便正确对图像进行查看和编辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值