色彩转换——RGB & HSI
RGB to HSI
I=(R+G+B)/3;
S=1-3*min(R,G,B)/(R+G+B);
H = cos^(-1)((0.5*((R-G)+(R-B))) / ((R-G)^2 + (R-B)*(G-B))^(0.5))
If S = 0; H =0 ;
If B > G; H=360-H;
HSI to RGB
If 0 < H <= 120 then
B = 1/3(1-S)
R = 1/3(1+ ((S cos H) / (cos(60 -H))))
G = 1 -(B+R)
If 120 < H <= 240 then
H = H – 120
R = 1/3(1-S)
G = 1/3(1+ ((S cos H) / (cos(60 -H))))
B = 1 -(R+G)
If 240 < H <=360 then
H = H – 240
G = 1/3(1-S)
B = 1/3(1+ ((S cos H) / (cos(60 -H))))
R = 1 -(G+B)
算法参考来源: 冈萨雷斯 《数字图像处理》
function [H,S,I]=RgbToHsi(Image_Input)
Image_Input=double(Image_Input)/255;
R_Input=Image_Input(:,:,1);
G_Input=Image_Input(:,:,2);
B_Input=Image_Input(:,:,3);
I = (R_Input+G_Input+B_Input)/3.0;
[heigth,width]=size(R_Input);
S(1:heigth,1:width)=0;
H(1:heigth,1:width)=0;
for i=1:heigth
for j=1:width
temp=[R_Input(i,j),G_Input(i,j),B_Input(i,j)];
S(i,j)=1-3*min(temp)/sum(temp);
X=R_Input(i,j);
Y=G_Input(i,j);
Z=B_Input(i,j);
temp_1=((X-Y)+(X-Z)+1e-6)/(2*sqrt((X-Y).^2+(X-Z)*(Y-Z))+1e-6);
Sigma=acos(temp_1);
if(Z<=Y)
H(i,j)=Sigma/(2*pi);
else
H(i,j)=(2*pi-Sigma)/(2*pi);
end
end
end
function Image_out=HsiToRgb(H,S,I)
H_angle=H*360;
[heigth,width]=size(H);
R(1:heigth,1:width)=0;
G(1:heigth,1:width)=0;
B(1:heigth,1:width)=0;
for i=1:heigth
for j=1:width
if(S(i,j)<1e-6)
R(i,j)=I(i,j);
G(i,j)=I(i,j);
B(i,j)=I(i,j);
else
if(H_angle(i,j)>=0 && H_angle(i,j)<=120)
B(i,j)=(1-S(i,j))*I(i,j);
sigma=(H_angle(i,j)-60)*pi/180;
temp=tan(sigma)/sqrt(3);
G(i,j)=(1.5+1.5*temp)*I(i,j)-(0.5+1.5*temp)*B(i,j);
R(i,j)=3*I(i,j)-G(i,j)-B(i,j);
else
if(H_angle(i,j)>=120 && H_angle(i,j)<=240)
R(i,j)=(1-S(i,j))*I(i,j);
sigma=(H_angle(i,j)-180)*pi/180;
temp=tan(sigma)/sqrt(3);
B(i,j)=(1.5+1.5*temp)*I(i,j)-(0.5+1.5*temp)*R(i,j);
G(i,j)=3*I(i,j)-R(i,j)-B(i,j);
else
G(i,j)=(1-S(i,j))*I(i,j);
sigma=(H_angle(i,j)-300)*pi/180;
temp=(tan(sigma))/sqrt(3);
R(i,j)=(1.5+1.5*temp)*I(i,j)-(0.5+1.5*temp)*G(i,j);
B(i,j)=3*I(i,j)-R(i,j)-G(i,j);
end
end
end
end
end
Image_out(:,:,1)=R;
Image_out(:,:,2)=G;
Image_out(:,:,3)=B;
色彩转换——RGB & HSI的更多相关文章
- 色彩转换——RGB & HSL
RGB to HSL The R,G,B values are divided by 255 to change the range from 0..255 to 0..1: R' = R/255 G ...
- 色彩转换——RGB & HSV
RGB to HSV The R,G,B values are divided by 255 to change the range from 0..255 to 0..1: R' = R/255 G ...
- PhotoShop 图像处理 算法 汇总
不定期更新 ...... 直接点标题即可链接到原文. OpenCV 版:OpenCV 图像处理 图层混合算法: PS图层混合算法之一(不透明度,正片叠底,颜色加深,颜色减淡)PS图层混合算法之二(线性 ...
- Color Models (RGB, CMY, HSI)
目录 概 定义 RGB CMY CMYK HSI 相互的转换 RGB <=> CMY CMY <=> CMYK CMY > CMYK CMYK > CMY RGB ...
- RGB to HSI, HSI to RGB Conversion Calculator
The RGB color model is an additive system in which each color is defined by the amount of red, green ...
- QT 实现彩色图亮度均衡,RGB和HSI空间互相转换
从昨天折腾到今天.再折腾下去我都要上主楼了 大致和灰度图均衡是一样的,主要是不能像平滑什么的直接对R,G,B三个分量进行.这样出来的图像时没法看的.因此我们要对亮度进行均衡.而HSI彩色空间中的分量 ...
- 【转载】颜色空间-RGB、HSI、HSV、YUV、YCbCr的简介
转载自缘佳荟的博客. 颜色通常用三个相对独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间.而颜色可以由不同的角度,用三个一组的不同属性加以描述,就产生了不同的颜色空间.但 ...
- RGB 颜色空间转 HSI 颜色空间的matlab程序实现
RGB 颜色空间转 HSI 颜色空间的matlab程序实现 2014.10.20之前的内容有误,这里依据wikipedia更新了算法内容. 算法以wiki为准 https://en.wikipedia ...
- 基于RGB与HSI颜色模型的图像提取法
现实中我们要处理的往往是RGB彩色图像.对其主要通过HSI转换.分量色差等技术来提出目标. RGB分量灰度化: RGB可以分为R.G.B三分量.当R=G=B即为灰度图像,很多时候为了方便,会直接利用某 ...
随机推荐
- Java线程状态
线程跟人类一样拥有自己的生命周期,一条线程从创建到执行完毕的过程即是线程的生命周期,此过程可能在不同时刻处于不同的状态,线程状态正是这小节的主题,线程到底有多少种状态?不同状态之间是如何转化的? 对于 ...
- 在O(1)时间内删除单链表结点
给定单链表的一个结点的指针,同时该结点不是尾结点,此外没有指向其它任何结点的指针,请在O(1)时间内删除该结点. int deleteNode(LNode **head, LNode **node) ...
- 收藏了4年的Android 源码分享
Android 超过2个G的源代码集合~~几乎涵盖了所有功能效果的实现,一应俱全~~应有尽有~~ 360云盘地址:Android 各类源码集合汇总 (提取码:f930) 另外,附上Github上及自己 ...
- springMVC源码分析--国际化LocaleResolver(一)
springMVC给我们提供了国际化支持,简单来说就是设置整个系统的运行语言,然后根据系统的运行语言来展示对应语言的页面,一般我们称之为多语言.springMVC国际化机制就是可以设置整个系统的运行语 ...
- FFmpeg示例程序合集-批量编译脚本
此前做了一系列有关FFmpeg的示例程序,组成了<最简单的FFmpeg示例程序合集>,其中包含了如下项目:simplest ffmpeg player: ...
- Hessian探究(一)Hessian入门示例
一.hessian的maven信息: [html] view plain copy print? <dependency> <groupId>com.caucho</gr ...
- 物料事务处理interface与temp解析
MTL_TRANSACTIONS_INTERFACE MTL_TRANSACTIONS_INTERFACE is the interface point between non– Inventory ...
- 基于xml 实现动态加载权限功能树列表---EFSFrame企业级开发架构
在学习EFSFrame框架的过程中,感触最深的就是通过xml来实现前台与后台数据的交互,页面设计灵活,不用管后台如何写的,前台与后台的交互唯一的交互通道都是xml,在我们需要添加页面.添加规定的格式的 ...
- [asp.net]登录协同工作平台安全解决方案
[摘要]公司领导说登录验证的安全性如何保证,建议采用UKEY验证类似网银解决,调用第三方YT公司产品. 解决方案: 前端页面: <embed id="s_simnew61" ...
- 12.1、Libgdx的图像之持续性和非持续性渲染
(官网:www.libgdx.cn) Libgdx在默认情况下,渲染现成调用render()方法进行持续性渲染.频率取决于你的硬件设备. 有时候有些游戏中并不需要持续性的渲染,为了省电,可以关掉持续性 ...