Hello Mat

 找回密码
 立即注册
查看: 4680|回复: 0

图像YUV与RGB空间相互转换与MATLAB实现

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2016-10-30 21:53:15 | 显示全部楼层 |阅读模式
编写RGB到YUV颜色空间的函数程序如下:
  1. function im1 = rgb2yuv(im)
  2. % 转化矩阵
  3. T = [0.299,0.587,0.114;
  4.     -0.147,-0.289,0.436;
  5.     0.615,-0.515,-0.100]; % 矩阵系数
  6. Ta = [0;0;0];

  7. R = im(:,:,1);  % R
  8. G = im(:,:,2);  % G
  9. B = im(:,:,3);  % B
  10. R = im2double(R); % 转化为double类型
  11. G = im2double(G); % 转化为double类型
  12. B = im2double(B); % 转化为double类型

  13. Y = Ta(1,1) + T(1,1).* R + T(1,2).*G + T(1,3).*B;
  14. U = Ta(2,1) + T(2,1).* R + T(2,2).*G + T(2,3).*B;
  15. V = Ta(3,1) + T(3,1).* R + T(3,2).*G + T(3,3).*B;
  16. im1(:,:,1) = Y;
  17. im1(:,:,2) = U;
  18. im1(:,:,3) = V;
  19. im1 = im2uint8(im1);  % 类型转换
  20. 调用该函数,程序如下:
  21. %% RGB --> YUV
  22. clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
  23. warning off       % 消除警告
  24. feature jit off      % 加速代码运行
  25. im = imread('coloredChips.png');
  26. figure('color',[1,1,1])
  27. subplot(121),imshow(im,[]);title('RGB')
  28. im1 = rgb2yuv(im);    % RGB转化为YUV
  29. subplot(122),imshow(im1,[]);title('YUV')
复制代码

编写YUV到RGB颜色空间的函数程序如下:

  1. function im1 = yuv2rgb(im)
  2. % 转化矩阵
  3. T = [0.299,0.587,0.114;
  4.     -0.147,-0.289,0.436;
  5.     0.615,-0.515,-0.100]; % 矩阵系数
  6. Ta = [0;0;0];

  7. TT = inv(T);   % 求逆矩阵
  8. Tb = TT*Ta;

  9. Y = im(:,:,1);  % Y
  10. U = im(:,:,2);  % U
  11. V = im(:,:,3);  % V
  12. Y = im2double(Y); % 转化为double类型
  13. U = im2double(U); % 转化为double类型
  14. V = im2double(V); % 转化为double类型

  15. R = -Tb(1,1) + TT(1,1).* Y + TT(1,2).*U + TT(1,3).*V;
  16. G = -Tb(2,1) + TT(2,1).* Y + TT(2,2).*U + TT(2,3).*V;
  17. B = -Tb(3,1) + TT(3,1).* Y + TT(3,2).*U + TT(3,3).*V;
  18. R = mat2gray(R); % 灰度值 转化为 0 - 1之间
  19. G = mat2gray(G); % 灰度值 转化为 0 - 1之间
  20. B = mat2gray(B); % 灰度值 转化为 0 - 1之间
  21. im1(:,:,1) = R;  
  22. im1(:,:,2) = G;
  23. im1(:,:,3) = B;
  24. im1 = im2uint8(im1);  % 类型转换
  25. 调用该函数,程序如下:
  26. %% YUV -->  RGB
  27. clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
  28. warning off       % 消除警告
  29. feature jit off      % 加速代码运行
  30. im = imread('coloredChips.png');
  31. im1 = rgb2yuv(im);    % RGB转化为YUV

  32. figure('color',[1,1,1])
  33. subplot(121),imshow(im1,[]);title('YUV')
  34. im2 = yuv2rgb(im1);
  35. subplot(122),imshow(im2,[]);title('RGB')
复制代码

算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-11-22 18:51 , Processed in 0.213439 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表