在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3240|回复: 1

[求助] 求助!Matlab YUV420转RGB程序,哪位能帮我转成C或者verilog

[复制链接]
发表于 2012-6-18 15:12:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x




  1. RGB=imread('Sunset.jpg'); %读入后便是一个RGB矩阵 width,height原始图象的宽度和高度
  2. [width height]=size(RGB(:,:,1));

  3. yuv=zeros(width,height,3,'uint8'); %建立1个width*height大小的三维空矩阵,全0,每个元素用8bit数据存储,把这个值赋给yuv
  4. Y=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给Y
  5. yuv=rgb2ycbcr(RGB); %调用内部函数rgb2ycbcr,初步处理,转化RGB的值为YcbCr颜色空间,并把数据存储在yuv里面
  6. Y=yuv(:,:,1); %把yuv第1个矩阵值,赋给亮度Y空间
  7. U=zeros(width/2,height/2,'uint8'); %建立1个(width/2)*(height/2)大小的空矩阵,把这个值赋给色度U
  8. V=zeros(width/2,height/2,'uint8'); %建立1个(width/2)*(height/2)大小的空矩阵,把这个值赋给色度V
  9. U(:,:)=yuv(1:2:(width-1),1:2:(height-1),2);%从第一个字节开始隔2取1 由于每个像素均保留了U分量
  10. %V(:,:)=yuv(1:2:(width-1),1:2:(height-1),3);%从第一个字节开始隔2取1 由于每个像素均保留了V分量
  11. V(:,:)=yuv(2:2:width,1:2:(height-1),3);%从第一个字节开始隔2取1 由于每个像素均保留了V分量
  12. YY=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给YY
  13. UU=zeros(width,height,'uint8'); %建立1个width*height大小的空矩阵,把这个值赋给UU
  14. VV=zeros(width,height,'uint8');%建立1个width*height大小的空矩阵,把这个值赋给VV
  15. frame=1
  16. YY(:,:)=Y(:,:,frame); %读取亮度Y某个特定的区域值给YY frame是选择那个区域,这里我们取

  17. UU(1:2:width-1,1:2:height-1)=U(:,:,frame);
  18. UU(1:2:width-1,2:2:height)=U(:,:,frame);
  19. UU(2:2:width,1:2:height-1)=U(:,:,frame);
  20. UU(2:2:width,2:2:height)=U(:,:,frame);%并非每个像素均保留了U分量,故还要插值,这里直接用邻近的赋值了,最后恢复到width*height个%同上
  21. VV(1:2:width-1,1:2:height-1)=V(:,:,frame);
  22. VV(1:2:width-1,2:2:height)=V(:,:,frame);
  23. VV(2:2:width,1:2:height-1)=V(:,:,frame);
  24. VV(2:2:width,2:2:height)=V(:,:,frame);
  25. %YY,UU,VV转置并合并成三维数组
  26. YUV=cat(3,YY,UU,VV);
  27. RGB=ycbcr2rgb(YUV); %逆转换,YUV→RGB
  28. imshow(RGB) %显示转换后的图片

  29. %RGB=imread( 'test.bmp ');
  30. %YUV=rgb2ycbcr(RGB);
  31. %转成YUVRGB= ycbcr2rgb(YUV);%转成RGB%RGB(:,:,1)为R分量矩阵%RGB(:,:,2)为G分量矩阵%RGB(:,:,3)为B分量矩阵%YUV(:,:,1)为Y分量矩阵%YUV(:,:,2)为U分量矩阵%YUV(:,:,3)为V分量矩阵%公式 Y = 0.2990*R + 0.5780*G + 0.1140*B + 0%公式 U = 0.5000*R - 0.4187*G - 0.0813*B + 128%公式 V = -0.1687*R - 0.3313*G + 0.5000*B + 128





复制代码
发表于 2012-6-20 17:11:43 | 显示全部楼层
自己在网上找一个C的或是Verilog的嘛!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-29 08:37 , Processed in 0.029164 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表