YUV镜像,对称

YUV镜像与对称

参考资料:https://blog.csdn.net/xjhhjx/article/details/80291465

一、YUV格式

planar

先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后存储所有像素点的V

packed

每个像素点的Y、U、V是连续交叉存储的

二、YUV介绍

YUV,分为三个分量,Y表示明亮度(Luma),就是灰度值;U、V表示色度(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分量

在这里插入图片描述

(1)YUV4:4:4采样,每一个Y对应一组UV分量
(2)YUV4:2:2采样,每两个Y共用一组UV分量
(3)YUV4:2:0采样,每四个Y共用一组UV分量

三、存储方式

(1)YUVY格式(YUV422)

在这里插入图片描述

YUVY为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

四、代码实现

水平镜像

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RGB24和YUV2都是视频编码中常用的颜色空间格式,镜像是一种图像处理操作,将图像沿着垂直或水平方向翻转。 在RGB24中,图像使用红绿蓝三色通道来表示,每个像素点由24位数据组成,分别表示红、绿、蓝三种颜色的亮度。要实现RGB24的镜像,可以通过交换图像数据的位置来实现。具体步骤是,首先遍历图像的每一行,然后将每一行的像素点数据进行交换,即将第一个像素点与最后一个像素点交换位置,第二个像素点与倒数第二个像素点交换位置,以此类推,直到中间位置。这样就完成了对图像的水平镜像翻转。 YUV2是一种将彩色信号与亮度信号分离的编码格式,其中Y代表亮度信号,U和V代表色度信号。在YUV2中,每个像素的数据由16位组成,其中8位表示亮度信号Y,另外8位分别表示两个色度信号U和V。要实现YUV2的镜像,需要分别对亮度信号和色度信号进行镜像操作。步骤与RGB24类似,先对亮度信号进行水平镜像翻转,然后对色度信号进行同样的操作。 总结起来,无论是RGB24还是YUV2,要实现镜像操作都可以通过交换像素点的位置来完成。只需要遍历图像的每一行,然后对每一行的像素点数据进行交换即可。这样可以实现图像在垂直或水平方向上的镜像翻转。 ### 回答2: 要将RGB24和YUV2镜像,首先需要了解它们的格式和镜像操作的原理。 RGB24是一种颜色图像的编码格式,它使用24位来表示像素的颜色信息,每个像素由红、绿、蓝三个分量表示。而YUV2则是一种亮度和色度分离的编码格式,其中Y表示亮度分量,U和V分别表示蓝色和红色的色度分量。 针对RGB24的镜像操作,可以通过水平翻转像素的方式实现。即将一行中的像素颜色值反向存储,然后将第一行和最后一行的像素进行交换,第二行和倒数第二行的像素进行交换,以此类推。这样就能达到水平镜像的效果。 对于YUV2的镜像操作,需要分别对Y、U和V三个分量进行镜像。首先对Y分量进行水平镜像操作,然后对U和V分量进行相同的镜像操作。这样就能保持亮度分量不变,同时水平翻转色度分量,从而实现YUV2图像镜像效果。 总结起来,对于RGB24和YUV2的镜像操作都是通过水平翻转像素的方式实现的。具体实施时,可以根据每个编码格式的规则对每个分量进行处理,最终得到镜像后的图像。 ### 回答3: c rgb24 yuv2是两种不同的颜色编码格式,而镜像是一种图像处理操作,将图像水平或垂直翻转。想要实现c rgb24 yuv2镜像操作,需要先了解这两种格式的特点和对应的算法。 首先,c rgb24是一种24位的RGB颜色编码格式,每个像素由8位的红色、绿色和蓝色分量组成。实现c rgb24镜像操作时,可以通过遍历图像的每一行,将每个像素的位置进行对称交换,即将第一个像素与最后一个像素位置交换,第二个像素与倒数第二个像素位置交换,以此类推,从而实现水平镜像操作。 而yuv2是一种压缩颜色编码格式,与rgb24类似,它也包含了亮度和色度分量。实现yuv2镜像的方法与c rgb24类似,可以通过遍历图像的每一行,在每一行内,将每个亮度和色度分量的位置进行对称交换。 无论是c rgb24还是yuv2镜像操作,都可以通过嵌套循环进行实现,第一个循环遍历图像的每一行,第二个循环遍历每个像素的分量,通过交换对应的位置,实现镜像效果。需要注意的是,在进行像素位置交换时,需要使用一个临时变量来保存交换前的值。 综上所述,c rgb24 yuv2镜像操作是一种通过交换像素位置实现图像翻转的处理方法,具体实现方法可以根据对应的编码格式进行针对性的编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值