Matlab图像颜色空间转换

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab图像颜色空间转换

实验内容

用matlab软件编程实现下述任务:

读入彩色图像,提取其中的R、G、B颜色分量,并展示出来。

我们学习了多种表示图像的颜色空间,请编写程序将图像转换到YUV、YIQ、YCrCb、HIS、CMY等颜色空间,并展示出来。

颜色空间的转化关系参考以下公式:

原始图片

三个色调分量

YUV与RGB之间的转换

Y=0、229R+0、587G+0、114B

U=-0、147R-0、289G+0、436B

V=0、615R-0、515G-0、100B

YIQ与RGB之间的转换

Y=0、299R+0、587G+0、114B

I=0、596R-0、275G-0、321B

Q=0、212R-0、523G+0、311B

YCrCb与RGB之间的转换

Y = 0、2990R + 0、5870G + 0、1140B


Cr = 0、5000R - 0、4187G - 0、0813B + 128

Cb = -0、1687R - 0、3313G + 0、5000B + 128

HSI与RGB之间的转换

I=(R+G+B)/3

H=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之间的转换

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡B G R Y M C 111

心得体会

查阅了很多资料,并且学习了关于matlab 实现图像颜色空间转换的过程。不同的颜色空间在描述图像的颜色时侧重点不同。如RGB(红、绿、蓝三原色)颜色空间适用于彩色监视器与彩色摄像机,HSI(色调、饱与度、亮度)更符合人描述与解释颜色的方式(或称为HSV,色调、饱与度、亮度),CMY(青、深红、黄)、CMYK(青、深红、黄、黑。)主要针对彩色打印机、复印机等,YIQ(亮度、色差、色差)就是用于NTSC 规定的电视系统格式,YUV(亮度、色差、色差)就是用于PAL 规定的电视系统格式,YCbCr(亮度单一要素、蓝色与参考值的差值、红色与参考值的差值)在数字影像中广泛应用。近年来出现了另一种颜色空间lαβ,由于其把亮度与颜色信息最大限度的分离,在该颜色空间可以分别处理亮度或颜色而不相互影响。

通过这次实验,实现了五种颜色空间的转换,瞧到了不同的绚丽结果,掌握了一些基本的知识。

程序

clear

rgb=imread('G:\Learning\MultiMedia\666、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 * 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=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 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==0)=0;

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

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

相关文档
最新文档