请选择 进入手机版 | 继续访问电脑版

Hello Mat

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

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

[复制链接]

1140

主题

1315

帖子

57

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
21760
发表于 2016-10-30 21:49:55 | 显示全部楼层 |阅读模式
编写RGB到YCbCr颜色空间的函数程序如下:
  1. function im1 = rgb2ycbcr(im)
  2. % 转化矩阵
  3. T = [65.481,128.553,24.966;
  4.     -37.797,-74.203,112.0;
  5.     112.0,-93.786,-18.214];  % 矩阵系数
  6. Ta = [16;128;128];

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

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

  1. function im1 = ycbcr2rgb(im)
  2. % 转化矩阵
  3. T = [65.481,128.553,24.966;
  4.     -37.797,-74.203,112.0;
  5.     112.0,-93.786,-18.214];  % 矩阵系数
  6. Ta = [16;128;128];

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

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

  15. R = -Tb(1,1) + TT(1,1).* Y + TT(1,2).*Cb + TT(1,3).*Cr;
  16. G = -Tb(2,1) + TT(2,1).* Y + TT(2,2).*Cb + TT(2,3).*Cr;
  17. B = -Tb(3,1) + TT(3,1).* Y + TT(3,2).*Cb + TT(3,3).*Cr;
  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. %% YCbCr -->  RGB
  27. clc,clear,close all  % 清理命令区、清理工作区、关闭显示图形
  28. warning off       % 消除警告
  29. feature jit off      % 加速代码运行
  30. im = imread('coloredChips.png');
  31. im1 = rgb2ycbcr(im);    % RGB转化为YCbCr
  32. figure('color',[1,1,1])
  33. subplot(121),imshow(im1,[]);title('YCbCr')
  34. im2 = ycbcr2rgb(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, 2022-12-3 11:37 , Processed in 0.188993 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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