[theora] YCbCr <-> RGB conversion question
Ondrej Certik
ondrej at certik.cz
Mon Jun 15 18:02:52 PDT 2009
Hi,
I coded some routines for YCbCr <-> RGB conversion, both using
floating point numbers and using integer arithmetics, code is
attached.
Let's say I want to convert from RGB to YCbCr and back. First the
integer arithmetics:
In [1]: from colors import *
In [2]: a = [255, 0, 255]
In [3]: RGB2YCbCr(a)
Out[3]: (107, 202, 222)
In [4]: YCbCr2RGB(RGB2YCbCr(a))
Out[4]: array([255, 1, 255])
As you can see, the G component was increased from 0 to 1. Those
routines are the same as here:
http://msdn.microsoft.com/en-us/library/ms893078.aspx
Now let's try floating point conversions:
In [3]: RGB2YCbCr_precise(a)
Out[3]: array([106, 202, 222], dtype=uint8)
In [4]: YCbCr2RGB_precise(RGB2YCbCr_precise(a))
Out[4]: array([255, 0, 254], dtype=uint8)
This time the B component was decreased by 1... Those floating point
routines were done by me, and I followed the theora spec.
So my questions are:
* does anyone here have a code, that can convert back and forth
without loosing precision?
* does it make sense for those routines to work back and forth exactly?
I am new to this, so I am not sure what the common practise is, but it
seems weird to me, that if I convert the picture from YCbCr to RGB and
back couple times, the image will slowly deteriorate.
Ondrej
-------------- next part --------------
A non-text attachment was scrubbed...
Name: colors.py
Type: text/x-python
Size: 2639 bytes
Desc: not available
Url : http://lists.xiph.org/pipermail/theora/attachments/20090615/9541fd47/attachment.py
More information about the theora
mailing list