首页 > 其他分享 >YUV420 转RGB图像

YUV420 转RGB图像

时间:2024-04-19 10:22:20浏览次数:18  
标签:char int 图像 unsigned YUV420 RGB ImageWidth 格式

 YUV420 转RGB图像

          在数字图像处理种YUV格式也是我们经常遇到,与RGB一样也是一种编码格式,开始主要用于电视系统以及模拟视频领域。YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。如果没用UV信息,只有Y信息,也可以进行成像不过只是黑白的,这样就能很好解决彩色电视与黑白电视的兼容问题,与RGB相比,YUV占用带宽较少,目前摄像头输出格式普遍采用YUV格式。

 

 

YV12和YU12格式属于YUV420格式,其中Cr和Cb分别代表U,V分量 ,其存储格式是先排Y分量再分别排UV分量。

UV先后顺序不一样。YV12格式为YYYYYVVVVVVUUUUU, YU12为YYYYUUUUUUUVVVVVVV,可以用如下所图表示:

 

                                                                              

 

                                                                               

 

 1 void ConvertYUV420SPToRGB(unsigned char *Src, unsigned char *Dest, int ImageWidth, int ImageHeight)
 2 {
 3     int total = ImageWidth * ImageHeight;
 4     unsigned char *ybase = Src;
 5     unsigned char *ubase = &Src[total];
 6     unsigned int index = 0;
 7     for (int y = 0; y < ImageHeight ; y++) {
 8         for (int x = 0; x < ImageWidth; x++) {
 9             //YYYYYYYYVUVU
10             u_char Y = ybase[x + y * ImageWidth];
11             u_char U = ubase[y / 2 * ImageWidth + (x / 2) * 2 + 1];
12             u_char V = ubase[y / 2 * ImageWidth + (x / 2) * 2];
13  
14             Dest[index++] = Y + 1.402* (V - 128); //R
15             Dest[index++] = Y - 0.34413 * (U - 128) - 0.71414 * (V - 128); //G
16             Dest[index++] = Y + 1.772 * (U - 128); //B
17         }
18     }
19 }

太亮或者边界会出现失真,效果不理想,原因是G分量有可能出现负值,并没有考虑到边界问题,阈值处理输出范围RGB 【0,255】。

 

原文链接:https://blog.csdn.net/weixin_42730667/article/details/97233856

标签:char,int,图像,unsigned,YUV420,RGB,ImageWidth,格式
From: https://www.cnblogs.com/Jack-Elvis/p/18145234

相关文章

  • C# 中图像和 OnnxRuntime.Tensor 的互转
    因毕设需要,尝试了将PyTorch模型转为ONNX然后用C#做推理,记录一下经验。总的来说,C#对深度学习的支持远不如Python,缺少很多必要的库,不少代码需要自己编写。思路毕设做的是image-to-image的low-level视觉任务,因此需要3个主要步骤:从硬盘读取图片并转成张量(imageto......
  • 图像简单处理
    需求:对上面多张这样的图像,将成员识别出来,读取本周活跃值。生成一张全部由成员组成的大图思路:使用OpenCVSharp进行目标区域边框检测,根据大小过滤目标区域。使用Tesseract对指定位置进行文字识别(貌似识别精度不高,有乱码。)主要代码usingSystem;usingSystem.Collections.Gener......
  • A7-100T的图像处理开发板
    深圳市飞录科技有限公司一:概述   开发板主控采用XilinxArtix-7系列FPGA,型号为XC7A100T-2FGG676C,具有100KLUTs,240个DSP,芯片集成了LVDS、DDR3,6.6GSerdes等控制器。XilinxArtix-7作为中规模FPGA的典范,选用28nm工艺,性能与解决方案非常成熟,在通信及图像市场的应用非常广......
  • Splice方法的图像化理解
    splice在英语中的意思是拼接,在实际的代码使用中,splice就在数组中起到了一个拼接的作用使用方法splice(x,y,a,b,c,...)其中x、y为数字,a、b、c为新添加的项,意思是从数组的第x项开始删除y项,并在其中添加a、b、c...,其中x、y必填,abc可不填图像理解现在让我们将splice方法想象成一......
  • WPF/C#实现图像滤镜优化方案:打造炫目视觉体验!
    原因:我之所以想做这个项目,是因为在之前查找关于C#/WPF相关资料时,我发现讲解图像滤镜的资源非常稀缺。此外,我注意到许多现有的开源库主要基于CPU进行图像渲染。这种方式在处理大量图像时,会导致CPU的渲染负担过重。因此,我将在下文中介绍如何通过GPU渲染来有效实现图像的各种滤镜效果......
  • 基于直方图相似性的图像分类算法FPGA实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览MATLAB测试结果:    FPGA测试结果:   上述仿真图中,红色XX表示图像读取完毕。因此输出XX。当图像输出完成之后,最下面的相似性指标 same1输出为11226,same2输出为67584.即图1和图2相似性较强,图1和图3相似性较弱。 2.算法运行软件版本vi......
  • 医疗诊断中图像识别技术还有哪些潜在的应用价值呢
    医疗诊断中,图像识别技术的潜在应用价值远不止于目前已经实现的领域。除了之前提到的医学影像分析、手术辅助和药物研发等方面的应用,图像识别技术在医疗诊断中还有以下潜在的应用价值:病理学研究:在病理学领域,图像识别技术可以自动化处理和分析数字化的病理学图像。通过对细胞、组......
  • 使用OpenCV来实现读取一个目录下的所有图像,然后将它们调整大小为1920x1080像素,并保存
    使用OpenCV来实现读取一个目录下的所有图像,然后将它们调整大小为1920x1080像素,并保存的步骤如下:安装OpenCV库:如果你还没有安装OpenCV库,可以通过pip安装:pipinstallopencv-python编写Python脚本:importosimportcv2defresize_images_in_directory(source_dir,target......
  • 【图像增强】双平台直方图均衡化(DPHE)
    一、平台直方图平台直方图均衡是对直方图均衡的一种修正方法。首先选择一个合适的平台阈值T,对统计直方图进行如下修正:如果某灰度级的直方图值大于平台阈值T,将其直方图值置为T,如果其直方图值小于平台阈值T,则保持不变。\[\begin{cases}P_{t}(k)=T,ifp(k)>T\\P_{t}(k)=p(k),p(......
  • 【图像增强】平台直方图均衡(PHE)
    一、传统直方图均衡直方图均衡主要是增强背景和噪声,而平台直方图均衡主要是增强目标,抑制背景和噪声。但是,平台直方图均衡存在如下两个缺点:(1)在图像非常均匀时(如对着均匀黑体),图像灰度级分布非常集中。如果采用平台直方图均衡,灰度级将拉得过开,图像的噪声将变得很大,会严重影响......