matlab中自带了rgb转ycbcr的函数rgb2ycbcr.m,但是没有rgb2ycgcr.m,自己根据如下公式实现了该转换,以下代码可参考Github。

[ Y C g C r ] = [ 16 128 128 ] + [ 65.481 128.553 24.966 − 81.085 112 − 30.915 112 − 93.768 − 18.214 ] ∗ [ R G B ] \begin{bmatrix} Y \\ C_g \\ C_r \end{bmatrix} = \begin{bmatrix} 16 \\ 128 \\ 128 \end{bmatrix} + \begin{bmatrix} 65.481 & 128.553 & 24.966 \\ -81.085 & 112 & -30.915 \\ 112 & -93.768 & -18.214 \end{bmatrix} * \begin{bmatrix} R \\ G \\ B \end{bmatrix} ⎣⎡​YCg​Cr​​⎦⎤​=⎣⎡​16128128​⎦⎤​+⎣⎡​65.481−81.085112​128.553112−93.768​24.966−30.915−18.214​⎦⎤​∗⎣⎡​RGB​⎦⎤​

代码如下,

function ycgcr = rgb2ycgcr(rgb)
% function ycgcr = rgb2ycgcr(rgb)
% convert rgb image to ycgcr image
% Inputs:
%   rgb    - rgb image
%
% Outputs:
%   ycgcr  - ycgcr image% reshape image to 2d matrix
rgb = im2double(rgb);
[m, n, p] = size(rgb);
rgb_2d = reshape(rgb, m*n, p);
% convert parameters
origT = [65.481 128.553 24.966;...-81.085 112 -30.915; ...112 -93.768 -18.214];
origOffset = [16; 128; 128];
origOffset_2d = repmat(origOffset, 1, m*n);
% rgb to ycgcr
ycgcr = origOffset_2d + origT*rgb_2d';
ycgcr = ycgcr';
ycgcr = reshape(ycgcr, m, n, p);
end

同理,matlab中自带了rgb转hsv的函数rgb2hsv.m,但是没有rgb2hsi.m,自己根据如下代码实现了该转换。

function hsi = rgb2hsi(rgb)
% function hsi = rgb2hsi(rgb)
% Convert rgb image to hsi image.
% i = (r + g + b)/3
% s = 1 - min(r, g, b)/i
% h = arccos(0.5*(2r - g - b)/sqrt((r - g)^2 + (r - b)(g - b)))
% Inputs:
%   rgb   - rgb image
%
% Outputs:
%   hsi   - hsi image% seperate r, g, b
rgb = im2double(rgb);
r = rgb(:, :, 1);
g = rgb(:, :, 2);
b = rgb(:, :, 3);% implement the conversion
i = (r + g + b)/3;
s = 1 - (min(min(r, g), b)./i);
h = acos(0.5*(2*r - g - b)./sqrt((r - g).^2 + (r - b).*(g - b)));% concatenate h, s, i
hsi = cat(3, h, s, i);

matlab实现rgb转ycgcr以及rgb转hsi相关推荐

  1. matlab rgb 到 ycgcr,基于混合肤色模型的快速人脸检测算法

    摘   要: 提出了一种基于混合肤色模型" title="肤色模型">肤色模型" title="肤色模型">肤色模型" ...

  2. 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释

    废话不说,先上图, 实现方式:matlab 实现功能: 实验目标 了解图像颜色空间的转换关系. 了解图像的文件结构. 实验内容 完成如下颜色空间的转换.(4 Points) RGB -> YIQ ...

  3. MATLAB App Designer 特别篇:RGB颜色提取器

    在大家的要求下,我将RGB颜色提取器App化了,并做出了以下几个改进: 保留小数位数标准化 颜色格式多样化: 支持16进制码及HSV格式 数据输出标准化: 其他的用法可以看之前GUI版本的相关文章: ...

  4. 计算不同色域下的RGB与YUV 以及 RGB与XYZ互转公式

    关于写这篇文章的原因: 本人也是摸索了很长时间才弄懂其中的原理,里面涉及的知识点太多了, 比如色彩空间, 比如Gamma, 里面还会涉及到很多的协议, 比如 BT601  BT709, BT2020, ...

  5. matlab怎么读取指定坐标的RGB值

    所用函数为impixel. 我处理的是二维图,所以我用的是impixel(I,xi,yi)(如果要用到其他参数直接在matlab官网的support下找document或者在matlab的命令行输入i ...

  6. matlab灰色图像直方图和彩色图像RGB三个通道直方图

    之前文章说过灰度图像实现及彩色图像RGB分开. 1. 图像灰度直方图 灰度直方图是将数字图像中所有像素按灰度值的大小,统计每种像素值出现的频率.灰度直方图描述了一幅图像的绘图统计信息,主要应用于图像分 ...

  7. MATLAB如何采用0~1的RGB值设置字体颜色?

    Problem: 在MATLAB中,如何采用0~1的RGB值设置字体颜色? 目前做一个GUI,遇到动态改变字体颜色的这点需求,而且变为自己想要的颜色 这样会带来两个小问题: 不能采用预设颜色值的方式实 ...

  8. 在MATLAB中利用经典配色的RGB数值去作图

    1.引言 在发表期刊和论文时,图表的重要程度是不言而喻的,对理工科方向来说更加重要.利用MATLAB作图是我们大部分时候的选择,但是在作图时存在两个问题. 一是我们不会去挑选经典的配色去做图,尝尝去选 ...

  9. java bmp rgb数组_将RGB数据写入BMP位图文件

    CFile file; //定义一个文件对象 _ASSERTE(file.Open(CString("E:\\94.bmp"), CFile::modeRead));//打开文件 ...

最新文章

  1. eureka同步原理_Eureka工作原理
  2. 微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法
  3. Longest Y 字符串,货仓选址模型(600)
  4. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)
  5. IDEA入门(一):简介、安装
  6. leaving target processor paused”错误怎么解决
  7. sql如何遍历几百万的表_SQL Server中遍历表中记录的方法
  8. mysql 实时恢复_MySQL实时在线备份恢复方案:Replication+LVM Snapsho
  9. 如何制作bt种子文件
  10. CSS文字选中样式和文字闪烁效果
  11. linux命令之文件和目录操作
  12. GMail为什么可以屹立不倒?
  13. 51单片机使用超声波进行测距
  14. 端口渗透——21端口FTP
  15. nexus5 博通芯片WIFI详解 (3)
  16. MFC radio button 设置默认选中
  17. C++统计文件夹中文件个数
  18. layui 输入框添加自定义图标
  19. 【游戏开发实战】(完结)使用Unity制作像天天酷跑一样的跑酷游戏——第七篇:游戏界面的基础UI
  20. Pytorch - 分布式通信原语(附源码)

热门文章

  1. 【Netty】原理分析:ChannelHandlerContext
  2. 直播类的项目学习汇总
  3. 计算机TAT证书是哪个等级,计算机等级考试(国家)-三级网络技术分类模拟64
  4. 【复习笔记】集成运放
  5. 浦发、农行、工行JAVA开发岗面试题汇总!
  6. 腾讯数据安全最佳实践 PBD介绍
  7. NLP 结巴分词词性映射关系
  8. 华为笔记本MateBook X Pro 2020+OpenCore +引导黑苹果EFI配置文件适用macOS Monterey和Big Sur
  9. Microsoft Excel 教程:如何在 Excel 中创建公式并使用内置函数执行计算?
  10. Cucumber读书笔记