X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fm%2Fimage%2Frgb2ntsc.m;fp=octave_packages%2Fm%2Fimage%2Frgb2ntsc.m;h=bb8b803062b922535ecf95d5b0120c730b24fe66;hp=0000000000000000000000000000000000000000;hb=1c0469ada9531828709108a4882a751d2816994a;hpb=63de9f36673d49121015e3695f2c336ea92bc278 diff --git a/octave_packages/m/image/rgb2ntsc.m b/octave_packages/m/image/rgb2ntsc.m new file mode 100644 index 0000000..bb8b803 --- /dev/null +++ b/octave_packages/m/image/rgb2ntsc.m @@ -0,0 +1,67 @@ +## Copyright (C) 1994-2012 John W. Eaton +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## . + +## -*- texinfo -*- +## @deftypefn {Function File} {} rgb2ntsc (@var{rgb}) +## Transform a colormap or image from RGB to NTSC. +## @seealso{ntsc2rgb} +## @end deftypefn + +## Author: Tony Richardson +## Created: July 1994 +## Adapted-By: jwe + +function yiq = rgb2ntsc (rgb) + + if (nargin != 1) + print_usage (); + endif + + ## If we have an image convert it into a color map. + if (ismatrix (rgb) && ndims (rgb) == 3) + is_image = true; + Sz = size (rgb); + rgb = [rgb(:,:,1)(:), rgb(:,:,2)(:), rgb(:,:,3)(:)]; + ## Convert to a double image. + if (isinteger (rgb)) + C = class (rgb); + low = double (intmin (C)); + high = double (intmax (C)); + rgb = (double (rgb) - low) / (high - low); + endif + else + is_image = false; + endif + + if (! ismatrix (rgb) || columns (rgb) != 3) + error ("rgb2ntsc: argument must be a matrix of size Nx3 or NxMx3"); + endif + + ## Convert data + trans = [ 0.299, 0.596, 0.211; + 0.587, -0.274, -0.523; + 0.114, -0.322, 0.312 ]; + + yiq = rgb * trans; + + ## If input was an image, convert it back into one. + if (is_image) + yiq = reshape (yiq, Sz); + endif + +endfunction