Matlab实现HSI与RGB转换

来源:互联网 发布:微信连wifi 固件源码 编辑:程序博客网 时间:2024/05/15 23:54
%将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 choicecase 1figure,imshow(F),title('RGB 图像');figure, imshow(hsi),title('HSI 图像');case 2figure,imshow(F),title('RGB 图像');figure, imshow(H),title('Hue 图像');figure, imshow(S),title('饱和度图像');figure, imshow(I),title('亮度图像');   case 3C=hsitorgb(hsi);figure,imshow(hsi),title('HSI 图像');figure, imshow(C),title('RGB 图像');case 4RV=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 5RV=cat(3,H,SE,I);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB 饱和度均衡');case 6RV=cat(3,H,S,IE);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB 亮度均衡');case 7RV=cat(3,HE,SE,IE);C=hsitorgb(RV);figure,imshow(hsi),title('HSI 图像');figure,imshow(F),title('RGB 图像');figure, imshow(C),title('RGB HSI 均衡');otherwisedisplay('选择错误');endend%函数,将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 Sectorid=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 Sectorid=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 Sectorid=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

原创粉丝点击