matlab转换hsl,RGB空间与HSL空间转换matlab代码
关于RGB与HSL空间之间转换的原理,在网上很多,也很详细,这里就不做介绍了。
直接给出MATLAB代码。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% RGB空间转换到HSL空间
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [H,S,L,hsl]=rgb2hsl(img)
rgb=im2double(img);
r=rgb(:,:,1);
g=rgb(:,:,2);
b=rgb(:,:,3);
[m,n]=size(r);
%% 求 L %%
maxcolor=max(max(r,g),b);
mincolor=min(min(r,g),b);
L=(maxcolor+mincolor)/2;
H=zeros(m,n);
S=zeros(m,n);
%% 求 S %%
for i=1:m
for j=1:n
if maxcolor(i,j)==mincolor(i,j)
S(i,j)=0;
else
if L(i,j)<=0.5
S(i,j)=(maxcolor(i,j)-mincolor(i,j))/(2*L(i,j));
else
S(i,j)=(maxcolor(i,j)-mincolor(i,j))/(2-2*L(i,j));
end
end
end
end
%% 求 H %%
for i=1:m
for j=1:n
if maxcolor(i,j)==mincolor(i,j)
H(i,j)=0;
else if r(i,j)==maxcolor(i,j)
if g(i,j)>=b(i,j)
H(i,j)=60*(g(i,j)-b(i,j))/(maxcolor(i,j)-mincolor(i,j));
else
H(i,j)=60*(g(i,j)-b(i,j))/(maxcolor(i,j)-mincolor(i,j))+360;
end
else if g(i,j)==maxcolor(i,j)
H(i,j)=120+60*(b(i,j)-r(i,j))/(maxcolor(i,j)-mincolor(i,j));
else
H(i,j)=240+60*(r(i,j)-g(i,j))/(maxcolor(i,j)-mincolor(i,j));
end
end
end
end
end
%%
hsl=cat(3,H,S,L);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%HSL空间转换到RGB空间: %%%%%%%%%%%%%%%%%%%%%%%%%%%% function [R,G,B,rgb]=hsl2rgb(img_hsl) hsl=img_hsl; H=hsl(:,:,1); S=hsl(:,:,2); L=hsl(:,:,3); [m,n]=size(H); R=zeros(m,n); G=zeros(m,n); B=zeros(m,n); %% 求 R %% for i=1:m for j=1:n if S(i,j)==0 R(i,j)=L(i,j); else if L(i,j)<0.5 temp2=L(i,j)*(1.0+S(i,j)); else temp2=L(i,j)+S(i,j)-L(i,j)*S(i,j); end end temp1=2*L(i,j)-temp2; h=H(i,j)/360; temp3=h+1/3; if temp3<0 temp3=temp+1; end if temp3>1 temp3=temp3-1; end if 6*temp3<1 R(i,j)=temp1+(temp2-temp1)*6*temp3; else if 2*temp3<1 R(i,j)=temp2; else if 3*temp3<2 R(i,j)=temp1+(temp2-temp1)*(2/3-temp3)*6; else R(i,j)=temp1; end end end end end %% 求 G %% for i=1:m for j=1:n if S(i,j)==0 G(i,j)=L(i,j); else if L(i,j)<0.5 temp2=L(i,j)*(1.0+S(i,j)); else temp2=L(i,j)+S(i,j)-L(i,j)*S(i,j); end end temp1=2*L(i,j)-temp2; h=H(i,j)/360; temp3=h; if temp3<0 temp3=temp+1; end if temp3>1 temp3=temp3-1; end if 6*temp3<1 G(i,j)=temp1+(temp2-temp1)*6*temp3; else if 2*temp3<1 G(i,j)=temp2; else if 3*temp3<2 G(i,j)=temp1+(temp2-temp1)*(2/3-temp3)*6; else G(i,j)=temp1; end end end end end %% 求 B %% for i=1:m for j=1:n if S(i,j)==0 B(i,j)=L(i,j); else if L(i,j)<0.5 temp2=L(i,j)*(1.0+S(i,j)); else temp2=L(i,j)+S(i,j)-L(i,j)*S(i,j); end end temp1=2*L(i,j)-temp2; h=H(i,j)/360; temp3=h-1/3; if temp3<0 temp3=temp3+1; end if temp3>1 temp3=temp3-1; end if 6*temp3<1 B(i,j)=temp1+(temp2-temp1)*6*temp3; else if 2*temp3<1 B(i,j)=temp2; else if 3*temp3<2 B(i,j)=temp1+(temp2-temp1)*(2/3-temp3)*6; else B(i,j)=temp1; end end end end end %% rgb=cat(3,R,G,B);
matlab转换hsl,RGB空间与HSL空间转换matlab代码相关推荐
- matlab hsi颜色,RGB 颜色空间转 HSI 颜色空间的matlab程序实现
RGB 颜色空间转 HSI 颜色空间的matlab程序实现 程序实现的时候注意把RGB像素值归一化就是了,然后千千万万要根据公式来,不能大意,我之前就有theta为复数的情况,是sqrt对负数进行运算 ...
- 色彩空间转换(RGB空间与Lab空间)
颜色迁移是计算机视觉领域的一个很有趣的问题,它实际上要我们解决这么一个问题:基于图像A和图像B,合成一幅新的图像C,使其同时具有A的颜色和B的形状等遗传信息,即图像B在不改变它自身所表达的形状信息的情 ...
- 使用MFC实现将图像的RGB值转换到HSV空间,同时进行调节HSV,再将调节后的HSV值传进去转换到RGB空间实现图像在HSV空间中的色度、饱和度、亮度的调节
工程上传到了github ,之前有一版忘记推送了,现在这个链接应该是没问题的了 工程的github链接 希望能帮到你. 文章内容: 1.回顾上文 2.实验步骤&要点提示&代码分析 3. ...
- 数字图像处理与Python实现-颜色空间转换-RGB颜色空间与HSL颜色转换
RGB颜色空间与HSL颜色转换 RGB颜色空间与HSL颜色转换 1. 前言 2. RGB颜色空间与HSL颜色转换描述 3. 程序实现 1. 前言 HSL是一种将RGB色彩模型中的点在圆柱坐标系中的表示 ...
- MATLAB中颜色模型介绍级各模型之间转换(RGB、HSV、NTSC、YCbCr、HSI)
1.颜色模型定义 2.各颜色模型简介 3.颜色模型的转换 一.颜色模型定义 颜色模型:某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色.例如,RGB颜色模型就是三维直角坐标颜色系统的一个 ...
- 空间直角坐标转换成大地坐标matlab代码(附精度)
在实际生产中,通常需要进行空间直角坐标和大地坐标之间的相互转换.精度估计是大地测量数据处理的一项内容,而目前使用的的坐标转换软件中一般都没有提供空间直角坐标与大地坐标之间转换的精度.其中,空间直角坐标 ...
- SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建
接上一篇:SVPWM空间矢量调制模块的matlab仿真1:理论部分_Fantasy237的博客-CSDN博客 SVPWM空间矢量调制模块的matlab仿真2:仿真模型搭建 仿真模型 仿真模型框图如下. ...
- Unity Gamma空间和Linear空间转换代码
Gamma与Linear转换 Cg版本 个人理解 Gamma空间 当初的疑惑 线性空间 结束语 Cg版本 引自: UnityCG.cginc //--Gamma到Linear转换 inline hal ...
- Matlab颜色转换——基于RGB分量的彩色图像的颜色转换
文章目录 一.RGB颜色对照表 二.案例分析 1.将绿色转换成紫色 2.转换结果 三. 总结 最后 一.RGB颜色对照表 Matlab RGB颜色对照表(0-1之间):https://blog.csd ...
最新文章
- 教你一招---如何把桌面弄到D盘
- __block和__weak修饰符的区别
- python 反转链表
- 【[TJOI2018]异或】
- (转) 淘淘商城系列——Redis五种数据类型介绍
- C语言strstr函数实现
- 博客园的第一篇文章-----述学习编程的开始与经历
- 面试:C++实现访问者模式
- Python自动化之Django中间件
- 九、面向对象三大特征(三)—— 多态
- Chrome版本下载
- sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPath
- 摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人”
- 神经网络提取图片特征,神经网络算法识别图像
- 【Magicavoxel简易入门教程】(二) 第二章 · 自制一个NPC导出模型优化工具使用(附下载)
- 解决:ClassCastException: org.springframework.util.LinkedCaseInsensi
- Error: Can't find Python executa Error: Can'tble python, you can set the PYTHON env variable.解决办法
- nova3安装android10系统,一招搞定安卓机“久用必卡”顽疾:华为nova3i配备6GB超大运存...
- Idea中Java项目修改项目名
- 虚拟机Linux系统安装mysql8.0与Navicat连接mysql
热门文章
- drawRect方法的参数详解
- 10亿赌局,雷军输给了董明珠
- 使用iOS应用模板快速启动移动应用
- Spirits of Mystery Mac游戏介绍
- 微信自动下载app(安卓跳转默认浏览器 苹果跳转苹果商店App Store)的实现教程尽在Mindjump
- [附源码]计算机毕业设计JAVA社区空巢老人关爱服务平台
- 每天学习10句英语-第十天
- 设计模式 - 结构型设计模式小结
- HTTP1.0、1.1、2.0的关系和区别以及编码和字符集的解释
- 3,引擎预初始化(2,ue4模块初始化)(8.3大象无形)