Advertisement

MATLAB RGB转YUV YUV转RGB

阅读量:

使用Matlab,RGB转YUV,YUV转RGB

  • 为什么写这个?
    • RGB转YUV
    • YUV转RGB

为什么写这个?

在百度等网络平台浏览了许多网友的解答后发现, 大家往往只是罗列了一些公式便打住了仗。
通过翻阅了几篇技术博客, 发现许多开源项目的代码结构清晰易懂, 但实际调试时会遇到各种意想不到的问题。
后来尝试动手编写一个解决方案, 在调试过程中逐步排查问题定位到关键模块所在。
经过两个小时深入研究终于找到了问题根源并加以解决。
目前针对NV12/NV21/YUV420P/YUV444格式的RGB转YUV转换算法已经实现了正常运行,
并借助YUV viewer等工具对结果进行了验证。
同时, 对NV21格式下的RGB逆转换过程也实现了良好的效果。

RGB转YUV

解析RGB图像文件。
涉及的计算公式如下:
其中,
Y分量的计算公式为:Y = 0.299R + 0.587G + 0.114*B;
U分量的计算式为:U = -(-(-(-(-(-(-(-(-((-((-((-((-((-((-(( (-((((( ( ( ( ( R ) ) ) ) ) ) ) )
V分量的计算式为:V = ((R) * (6)) / ((G) * (5))) )) )) )) )) ))
注意:这些转换方程必须确保两个转换方程相协调
为了验证其正确性,请选择一组固定的RGB值代入测试
基于不同的YUV编码格式进行数据组合并存储。

原始图像

在这里插入图片描述

YUV转RGB

  1. 获取图像的宽度与高度信息
  2. 根据不同的数据格式解析YUV分量
  3. 对UV分量进行填充处理
  4. 应用相应的公式将YUV值转换为RGB值
  5. 使用cat命令连接相关文件
  6. 判断当前区间的位置关系
  7. 将处理后的数据通过fwrite函数写入文件

上边RGB转换的YUV图像,不知道上传YUV,用yuv浏览器截个图吧

在这里插入图片描述

所用用到的.m文件(rgb->YUV,NV21->RGB)及图片已打包上传,链接如下:

审核通过了。链接

全部评论 (0)

还没有任何评论哟~