%将RGB图像转换为HSI图像

% 显示HSI图像

%直方图均衡化HSI图像

%将HSI图像转换回RGB图像

function rgbtohsi(x)

F=imread(x);

F=im2double(F);

r=F(:,:,1);

g=F(:,:,2);

b=F(:,:,3);

th=acos((0.5*((r-g)+(r-b)))./((sqrt((r-g).^2+(r-b).*(g-b)))+eps));

H=th;

H(b>g)=2*pi-H(b>g);

H=H/(2*pi);

S=1-3.*(min(min(r,g),b))./(r+g+b+eps);

I=(r+g+b)/3;

hsi=cat(3,H,S,I);

HE=H*2*pi;

HE=histeq(HE);

HE=HE/(2*pi);

SE=histeq(S);

IE=histeq(I);

choice=input('1:RGB 转换为 HSI\n2:显示HSI图像\n3:HSI转换为RGB图像\n4:色调均衡\n5:饱和度均衡\n6:亮度均衡 \n7:HSI均衡\n 输入您的选择 :');

switch choice

case 1

figure,imshow(F),title('RGB 图像');

figure, imshow(hsi),title('HSI 图像');

case 2

figure,imshow(F),title('RGB 图像');

figure, imshow(H),title('Hue 图像');

figure, imshow(S),title('饱和度图像');

figure, imshow(I),title('亮度图像');

case 3

C=hsitorgb(hsi);

figure,imshow(hsi),title('HSI 图像');

figure, imshow(C),title('RGB 图像');

case 4

RV=cat(3,HE,S,I);

C=hsitorgb(RV);

figure,imshow(hsi),title('HSI 图像');

figure,imshow(F),title('RGB 图像');

figure, imshow(C),title('RGB Image-Hue Equalized');

case 5

RV=cat(3,H,SE,I);

C=hsitorgb(RV);

figure,imshow(hsi),title('HSI 图像');

figure,imshow(F),title('RGB 图像');

figure, imshow(C),title('RGB 饱和度均衡');

case 6

RV=cat(3,H,S,IE);

C=hsitorgb(RV);

figure,imshow(hsi),title('HSI 图像');

figure,imshow(F),title('RGB 图像');

figure, imshow(C),title('RGB 亮度均衡');

case 7

RV=cat(3,HE,SE,IE);

C=hsitorgb(RV);

figure,imshow(hsi),title('HSI 图像');

figure,imshow(F),title('RGB 图像');

figure, imshow(C),title('RGB HSI 均衡');

otherwise

display('选择错误');

end

end

%函数,将HSI图像转换为RGB图像

function C=hsitorgb(hsi)

HV=hsi(:,:,1)*2*pi;

SV=hsi(:,:,2);

IV=hsi(:,:,3);

R=zeros(size(HV));

G=zeros(size(HV));

B=zeros(size(HV));

%RG Sector

id=find((0<=HV)& (HV<2*pi/3));

B(id)=IV(id).*(1-SV(id));

R(id)=IV(id).*(1+SV(id).*cos(HV(id))./cos(pi/3-HV(id)));

G(id)=3*IV(id)-(R(id)+B(id));

%BG Sector

id=find((2*pi/3<=HV)& (HV<4*pi/3));

R(id)=IV(id).*(1-SV(id));

G(id)=IV(id).*(1+SV(id).*cos(HV(id)-2*pi/3)./cos(pi-HV(id)));

B(id)=3*IV(id)-(R(id)+G(id));

%BR Sector

id=find((4*pi/3<=HV)& (HV<2*pi));

G(id)=IV(id).*(1-SV(id));

B(id)=IV(id).*(1+SV(id).*cos(HV(id)-4*pi/3)./cos(5*pi/3-HV(id)));

R(id)=3*IV(id)-(G(id)+B(id));

C=cat(3,R,G,B);

C=max(min(C,1),0);

end

rgb转hsi matlab,Matlab实现HSI与RGB转换 | 学步园相关推荐

  1. 颜色空间直方图matlab,使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图 | 学步园...

    %author sagittariusboy All right reserved 2013年7月28日 14:58:11 org = imread('laaa.jpg'); %org = imrea ...

  2. matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园

    这是源博客的出处,鄙人转过来是为了更好的保存!供大家一起学习!已将原始的博客的文章的位置附在上面! 至于代码的完整性和可运行性需要大家去自己考量! %MatLab角点检测程序harris. ori_i ...

  3. MATLAB递归将数字一个个输出,数米粒个数和每个米粒面积的matlab算法实现(递归)。 | 学步园...

    使用Matlab软件自带的rice.png图片进行处理. 不知道使用的函数利用help function-name 或者 lookfor function-name 查看 这里是实现的主要代码段 %T ...

  4. matlab写出函数表达式,matlab 由状态空间表达式求传递函数 笔记 | 学步园

    1 内容 有一个两输入两输出线性系统 ,求该系统的传递函数表达式子. 2 求解 2.1 相关函数 状态空间表达式的传递函数用ss2tf函数来求解 函数原型 [b,a] = ss2tf(A,B,C,D, ...

  5. matlab clabel函数用法,CLabel的用法 | 学步园

    DDX_Control(pDX, IDC_STATIC_CONNSTATE, m_labConnState); IDC_STATIC_CONNSTATE  是某静态控件的ID,设置这个静态控件的控制变 ...

  6. matlab radiogroup,RadioGroup和CheckBox的使用 | 学步园

    1.布局文件: android:layout_width="fill_parent" android:layout_height="fill_parent" a ...

  7. matlab怎么计算行列式,Matlab 线性代数(一)–行列式与方程组求解 | 学步园

    1. %用克莱姆法则求解方程组 clear n=input('方程个数=') A=input('系数矩阵A=') b=input('常数列向量b=') if((size(A)~=[n,n])|(siz ...

  8. 部分选主元matlab,部分选主元的Doolittle分解 | 学步园

    步骤: 假设用紧凑格式的Doolittle法已经完成了第 r-1 (1<=r<=n) 步分解,第 r 步分解,首先在数组 A 的第 r 列主对角元以下(含主对角元) 选主元,具体步骤: 1 ...

  9. 用matlab对图像进行边缘填充,matlab中的图像边界填充函数 | 学步园

    padarray 功能:填充图像或填充数组. 用法:B = padarray(A,padsize,padval,direction) A为输入图像,B为填充后的图像, padsize给出了给出了填充的 ...

  10. hsi和rgb的转换,以及hsi和rgb的补色变换 matlab代码

    版权声明:<–本博客所有内容均为自己在学习工作中的总结.摘录等-- --转载请注明出处-- --如有侵权请联系删除–>https://blog.csdn.net/ai359005521/a ...

最新文章

  1. 如何实现对ELK各组件的监控?试试Metricbeat
  2. 零元学Expression Blend 4 ndash; Chapter 21 以实作案例学习MouseDragElementBehavior
  3. java 张量运算,博客 | Tensorflow_01_运算符与张量值
  4. jQuery之ajax的跨域获取数据
  5. 彩虹六号服务器显示,彩虹六号怎么看自己在什么服务器 | 手游网游页游攻略大全...
  6. 什么是spring_Spring 源码第三弹!EntityResolver 是个什么鬼?
  7. 1主5从mysql数据库_MySQL主从复制虽好,能完美解决数据库单点问题吗?
  8. linux系统平均价格,简单认识Linux系统平均负载
  9. CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔
  10. flash 音乐 html代码,用html为flash页面添加音乐
  11. mysql的建表语句_三种常用的MySQL建表语句
  12. 计算机数字模拟仿真软件,实时数字仿真系统
  13. 使用html制作一个网页
  14. 直播、录屏软件OBS Studio下载安装操作教程
  15. beetl模板使用场景_Beetl模板引擎入门教程
  16. PCB通孔类焊盘封装
  17. 51花样流水灯c语言程序,51单片机花样流水灯程序
  18. 经验分享 针式打印机经典案例分析
  19. arcgis人口空间化_基于遥感和GIS的人口数据空间化研究进展及案例分析
  20. 本周之后Win11 变成beta通道只能更新22000.176而没办法更新Dev的解决办法 your PC does not meet the hardware system

热门文章

  1. python中 for in 用法_python中for in的用法详解
  2. 机器学习--红酒质量检测分析(包含数据集,直接可用)
  3. python 人民币兑美元汇率_人民币汇率转换(python人民币和美元转换)
  4. 机器学习-准确率、灵敏度、特异度、PPV、NPV、F1计算方法
  5. 【Linux系统开发】Study210开发板刷安卓系统
  6. 金蝶凭证序时簿在哪_金蝶KIS旗舰版外购入库单序时簿界面没有凭证的按钮
  7. 图文并茂搭建STM32开发环境
  8. 计算机京东账户安全退出,京东账号如果提示存在风险该怎么解除?
  9. 【定制Android系统】Android O 修改吉字节为GB
  10. 沙雕动画资源素材大全/小白零基础快速入门沙雕动画/三天快速上手开始制作沙雕动画/