资源描述:
《几种颜色模型的转换--lxs》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1颜色模型:所谓颜色模型就是指某个三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。颜色模型的用途是在某个颜色域内方便的指定颜色,由于每一个颜色域都是可见光的子集,所以任何一个颜色模型都无法包含所有的可见光。在大多数的彩色图形显示设备一般都是使用红、绿、蓝三元色,我们的真实感图形学中的主要的颜色模型也是RGB模型,但是红、绿、蓝颜色模型用起来不太方便,它与直观的颜色概念如色调、饱和度和亮度等没有直接的联系。2RGB向HSI模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。基本要求
2、是将RGB中的亮度因素分离,将色度分解为色调和饱和度,并用角向量表示色调,如图2所示。2.RGB转换至HSI的几种常见方法下图列出几种常用的RGB-HSI转换公式:Matlab算法实现:标注:这里是采用算法1,几何推导法实现的%将RGB图像转换为HSI图像%显示HSI图像%直方图均衡化HSI图像%将HSI图像转换回RGB图像functionrgbtohsi(x)F=imread('123.jpg');%%相对路径下的文件图片F=im2double(F);r=F(:,:,1);g=F(:,:,2);b=F(:,:,3);t
3、h=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转换为HSI2:显示HS
4、I图像3:HSI转换为RGB图像4:色调均衡5:饱和度均衡6:亮度均衡7:HSI均衡输入您的选择:');switchchoicecase1figure,imshow(F),title('RGB图像');figure,imshow(hsi),title('HSI图像');case2figure,imshow(F),title('RGB图像');figure,imshow(H),title('Hue图像');figure,imshow(S),title('饱和度图像');figure,imshow(I
5、),title('亮度图像'); case3C=hsitorgb(hsi);figure,imshow(hsi),title('HSI图像');figure,imshow(C),title('RGB图像');case4RV=cat(3,HE,S,I);C=hsitorgb(RV);figure,imshow(hsi),title('HSI图像');figure,imshow(F),title('RGB图像');figure,imshow(C),title('RGBImage-HueEqualized');case5RV
6、=cat(3,H,SE,I);C=hsitorgb(RV);figure,imshow(hsi),title('HSI图像');figure,imshow(F),title('RGB图像');figure,imshow(C),title('RGB饱和度均衡');case6RV=cat(3,H,S,IE);C=hsitorgb(RV);figure,imshow(hsi),title('HSI图像');figure,imshow(F),title('RGB图像');figure,imshow(C),title('RGB亮度
7、均衡');case7RV=cat(3,HE,SE,IE);C=hsitorgb(RV);figure,imshow(hsi),title('HSI图像');figure,imshow(F),title('RGB图像');figure,imshow(C),title('RGBHSI均衡');otherwisedisplay('选择错误');endend%函数,将HSI图像转换为RGB图像functionC=hsitorgb(hsi)HV=hsi(:,:,1)*2*pi;SV=hsi(:,:,2);IV=hsi(:,:,3)
8、;R=zeros(size(HV));G=zeros(size(HV));B=zeros(size(HV));%RGSectorid=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