Jaroslav Hajek highegg at gmail.com
Mon Aug 4 03:26:49 CDT 2008


On Mon, Aug 4, 2008 at 6:55 AM, bharat pathak <bharat at arithos.com> wrote:
> I have written a function to convert rgb to ycbcr. if I call this function
> with rgb matrix being 512x512x3 then it takes 2.4 seconds to execute
> this code. what is the way in which I can make this run faster?
>
> I have also attached the main program where this function is called.
>
> #######################################################################
>
> function ycbcr = rgb2ycbcr(rgb)
>
>     red = rgb(:,:,1);
>     grn = rgb(:,:,2);
>     blu = rgb(:,:,3);
>
>     y   = round((77*red  + 150*grn  + 29*blu)/256)  + 16;
>     cb  = round((-44*red - 87*grn   + 131*blu)/256) + 128;
>     cr  = round((131*red - 110*grn  - 21*blu)/256)  + 128;
>
>     ycbcr(:,:,1) = y;
>     ycbcr(:,:,2) = cb;
>     ycbcr(:,:,3) = cr;
>
> endfunction
>
>

ycbcr = round (reshape (rgb, [], 3) * ([77, 150, 29; -44, -87, 131;
131, -110, -21]/256).');
ycbcr += ones (rows(ycbcr), 1) * [16,128,128]; % or [16,128,128]/256
as soren suggested.
ycbcr = reshape (ycbcr, size (rgb));

regards

> _______________________________________________
> Help-octave mailing list
> Help-octave at octave.org
> https://www.cae.wisc.edu/mailman/listinfo/help-octave
>
>



-- 
RNDr. Jaroslav Hajek
computing expert
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz


More information about the Help-octave mailing list