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