资源描述:
《matlab图像颜色空间转换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Matlab图像颜色空间转换实验内容用matlab软件编程实现下述任务:读入彩色图像,提取其中的R、G、B颜色分量,并展示出来。我们学习了多种表示图像的颜色空间,请编写程序将图像转换到YUV、YIQ、YCrCb、HIS、CMY等颜色空间,并展示出来。颜色空间的转化关系参考以下公式:原始图片三个色调分量YUV与RGB之间的转换Y=0.229R+0.587G+0.114BU=-0.147R-0.289G+0.436BV=0.615R-0.515G-0.100BYIQ与RGB之间的转换Y=0.299R+0.587G+0.114BI=0.596
2、R-0.275G-0.321BQ=0.212R-0.523G+0.311BYCrCb与RGB之间的转换Y =0.2990R+0.5870G+0.1140BCr=0.5000R-0.4187G-0.0813B+128Cb=-0.1687R-0.3313G+0.5000B+128HSI与RGB之间的转换I=(R+G+B)/3H=arccos{0.5*((R-G)+(R-B))/((R-G)^2+(R-B)(G-B))^0.5}S=1-[min(R,G,B)/I]CMY与RGB之间的转换心得体会查阅了很多资料,并且学习了关于matlab实现图
3、像颜色空间转换的过程。不同的颜色空间在描述图像的颜色时侧重点不同。如RGB(红、绿、蓝三原色)颜色空间适用于彩色监视器和彩色摄像机,HSI(色调、饱和度、亮度)更符合人描述和解释颜色的方式(或称为HSV,色调、饱和度、亮度),CMY(青、深红、黄)、CMYK(青、深红、黄、黑。)主要针对彩色打印机、复印机等,YIQ(亮度、色差、色差)是用于NTSC规定的电视系统格式,YUV(亮度、色差、色差)是用于PAL规定的电视系统格式,YCbCr(亮度单一要素、蓝色与参考值的差值、红色与参考值的差值)在数字影像中广泛应用。近年来出现了另一种颜色空间
4、lαβ,由于其把亮度和颜色信息最大限度的分离,在该颜色空间可以分别处理亮度或颜色而不相互影响。通过这次实验,实现了五种颜色空间的转换,看到了不同的绚丽结果,掌握了一些基本的知识。程序clearrgb=imread('G:LearningMultiMedia666.jpg');rgb2hsi(rgb);rgb_r=rgb(:,:,1);rgb_g=rgb(:,:,2);rgb_b=rgb(:,:,3);[n,m]=size(rgb);zero=zeros(n,m/3);Y=0.229*rgb_r+0.587*rgb_g+0.114*
5、rgb_b;U=-0.147*rgb_r-0.289*rgb_g+0.436*rgb_b;V=0.615*rgb_r-0.515*rgb_g-0.100*rgb_b;I=0.596*rgb_r-0.275*rgb_g-0.321*rgb_b;Q=0.212*rgb_r-0.523*rgb_g+0.311*rgb_b;Cr=0.5*rgb_r-0.4187*rgb_g-0.0813*rgb_b+128;Cb=-0.1687*rgb_r-0.3313*rgb_g+0.5*rgb_b+128;I=(rgb_r+rgb_g+rgb_b)/3;R
6、=cat(3,Y,zero,zero);G=cat(3,zero,U,zero);B=cat(3,zero,zero,V);RGB=cat(3,Y,Cr,Cb);%通过修改参数的值可以显示各种颜色空间的效果imshow(RGB);subplot(2,2,1),imshow(R),title('红色分量');subplot(2,2,2),imshow(G),title('绿色分量');subplot(2,2,3),imshow(B),title('蓝色分量');subplot(2,2,4),imshow(RGB);HIS:function
7、hsi=rgb2hsi(rgb)%提取单通道分量rgb=im2double(rgb);r=rgb(:,:,1);g=rgb(:,:,2);b=rgb(:,:,3);%实现转换num=0.5*((r-g)+(r-b));den=sqrt((r-g).^2+(r-b).*(g-b));theta=acos(num./(den+eps));H=theta;H(b>g)=2*pi-H(b>g);H=H/(2*pi);num=min(min(r,g),b);den=r+g+b;den(den==0)=eps;S=1-3.*num./den;H(S
8、==0)=0;I=(r+g+b)/3;hsi=cat(3,H,S,I);imshow(hsi);CMY:functionhsi=rgb2CMY(rgb)rgb=im2double(rgb);r=rgb(:,