色彩转换——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即为灰度图像,很多时候为了方便,会直接利用某 ...
随机推荐
- 采购订单状态更改处理API
--PO采购订单状态更改处理API PO_Document_Control_PUB.control_document( p_api_version IN NUMBER, p_init_msg_list ...
- Android自定义View(三、深入解析控件测量onMeasure)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51490283 本文出自:[openXu的博客] 目录: onMeasure什么时候会被调用 ...
- android PM2.5监控demo开发
最近看到了这个网站是aqicn.org,是一个监控北京空气状态的网站,截图如下 好了,接下来我们利用这个网站返回的json数据来写一个监控北京空气状况尤其是PM2.5的demo. 1.布局文件如下: ...
- SQLite 删除表(http://www.w3cschool.cc/sqlite/sqlite-drop-table.html)
SQLite 删除表 SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据.索引.触发器.约束和该表的权限规范. 使用此命令时要特别注意,因为一旦一个表被删除,表中所有信息也将永 ...
- SQLite 创建表(http://www.w3cschool.cc/sqlite/sqlite-create-table.html)
SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...
- 1086. Tree Traversals Again (25)
题目如下: An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For e ...
- UNIX网络编程——原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Dat ...
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
在perference 加content Assist 可以设置快捷键 透视图与视图 透视图:Debug和java主窗口 视图:每一个小窗口就是视图 高版本的java可运行低版本的java版本 常见的 ...
- Windows自删除程序和DLL
Windows自删除程序和DLL 参照文章 http://blog.csdn.net/rxxi/article/details/741557 做了个自删除的程序SelfDelete.代码下载(我的FT ...
- svn 集成 redmine 账户验证的终极解决方案
svn 集成 redmine 账户验证的终极解决方案 赖勇浩(http://laiyonghao.com) 动机 对于大部分开发团队来说,一般都需要一套 SCM 系统,通常是 svn + redmin ...