1、数字图像处理:RGB 与 HSI 模型转换 Matlab 程序im1=imread(Fig6.30(01).jpg);im3=im1;im1=im2double(im1);m,n,q=size(im1);% 获取图像的 RGB 3 个通道R=im1(:,:,1);G=im1(:,:,2);B=im1(:,:,3);% 改变通道来观察图像figure,subplot(1,3,1),imshow(cat(3,R*0.5,G,B),title(R通道减半);set(gcf,outerposition,get(0,screensize);set(gcf,NumberTitle,off,Name,改变通
2、道来观察图像);subplot(1,3,2),imshow(cat(3,R,G*2,B),title(G通道翻倍);subplot(1,3,3),imshow(cat(3,R,G,zeros(m,n),title(B通道为 0);% 观察 HSI通道图像% 因系统没有 rgb2hsi函数,只有 rgb2hsv函数,所以自己编写程序实现H=zeros(m,n);S=H;for i1=1:mfor i2=1:nnumerator=0.5*(R(i1,i2)-G(i1,i2)+R(i1,i2)-B(i1,i2);denominator=sqrt(R(i1,i2)-G(i1,i2)2+(R(i1,i2
3、)-B(i1,i2)*(G(i1,i2)-B(i1,i2);theta=acos(numerator/denominator)*180/pi;if(B(i1,i2)=G(i1,i2)H(i1,i2)=theta;elseH(i1,i2)=360-theta;endmin1=min(R(i1,i2),G(i1,i2);min1=min(B(i1,i2),min1);S(i1,i2)=1-3/(R(i1,i2)+G(i1,i2)+B(i1,i2)*min1;endendI=(R+G+B)/3;figure,subplot(1,3,1),imshow(H,),title(色度图 H);set(gcf
4、,outerposition,get(0,screensize);set(gcf,NumberTitle,off,Name,HSI通道图像);subplot(1,3,2),imshow(S),title(饱和度图 S);subplot(1,3,3),imshow(I),title(强度图 I);% 从 HSI转换回 RGB模型并观察图像,系统也不自带 hsi2rgb,仅自带 hsv2rgbim2=zeros(m,n,3);for i1=1:mfor i2=1:nvalue1=I(i1,i2)*(1+S(i1,i2)*cos(H(i1,i2)/cos(pi/3-H(i1,i2)/180*pi);
5、value2=I(i1,i2)*(1-S(i1,i2);switch (floor(H(i1,i2)/120)case 0im2(i1,i2,1)=value1;im2(i1,i2,2)=3*I(i1,i2)-R(i1,i2)-B(i1,i2);im2(i1,i2,3)=value2;case 1H(i1,i2)=H(i1,i2)-120;im2(i1,i2,1)=value2;im2(i1,i2,2)=value1;im2(i1,i2,3)=3*I(i1,i2)-R(i1,i2)-G(i1,i2);case 2H(i1,i2)=H(i1,i2)-240;im2(i1,i2,1)=3*I(i1
6、,i2)-G(i1,i2)-B(i1,i2);im2(i1,i2,2)=value2;im2(i1,i2,3)=value1;endendend% 模型转换完毕,显示图像figure,subplot(1,2,1),imshow(im1),title(原图);set(gcf,outerposition,get(0,screensize);set(gcf,NumberTitle,off,Name,原图与 HSI转 RGB通道图像对比);subplot(1,2,2),imshow(im2),title(HSI转 RGB通道图像);% 给图像添加噪声im3=imnoise(im3,salt R=im3(:,:,1);G=im3(:,:,2);B=im3(:,:,3);R=medfilt2(R);G=medfilt2(G);B=medfilt2(B);im4=cat(3,R,G,B);figure,subplot(1,3,1),imshow(im1),title(原图);set(gcf,outerposition,get(0,screensize);set(gcf,NumberTitle,off,Name,图像对比);subplot(1,3,2),imshow(im3),title(加入椒盐噪声后图像);subplot(1,3,3),imshow(im4),title(中值滤波后图像);