Listing 1
function yuv=mrgb2yuv(rgb) % mrgb2yuv Convert from RGB colorspace to YUV colorspace. % mrgb2yuv(rgb) will convert the triplets in 'rgb' to YUV triplets. % 'rgb' may contain an N X 3 matrix of triplets or an M X N X 3 array % of triplets. % Copyright (C) 2003, Jeff Perry % jsp Created Tue Sep 16 18:22:52 CDT 2003 if ndims(rgb)==2 % SMTPE-240M Y'PbPr yuv(:,1) = 0.2122.*rgb(:,1) + 0.7013.*rgb(:,2) + 0.0865.*rgb(:,3); yuv(:,2) = -0.1162.*rgb(:,1) - 0.3838.*rgb(:,2) + 0.5000.*rgb(:,3); yuv(:,3) = 0.5000.*rgb(:,1) - 0.4451.*rgb(:,2) - 0.0549.*rgb(:,3); elseif ndims(rgb)==3 % SMTPE-240M Y'PbPr yuv(:,:,1) = 0.2122.*rgb(:,:,1) + 0.7013.*rgb(:,:,2) + 0.0865.*rgb(:,:,3); yuv(:,:,2) = -0.1162.*rgb(:,:,1) - 0.3838.*rgb(:,:,2) + 0.5000.*rgb(:,:,3); yuv(:,:,3) = 0.5000.*rgb(:,:,1) - 0.4451.*rgb(:,:,2) - 0.0549.*rgb(:,:,3); else error 'The input must be either N X 3 or M X N X 3'; end