
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.86] |
![]() |
|
Сообщ.
#1
,
|
|
|
Нужна помощь по сабжу. Никак не пойму в чем дело. Переаожу в YUV так:
![]() ![]() #define GetYValue(pix) ceil(GetRValue(pix)*.299 + GetGValue(pix)*.587+GetBValue(pix)*.114) #define GetUValue(pix) ceil(GetRValue(pix)*-.169 + GetGValue(pix)*-.332 +GetBValue(pix)*.5+128.) #define GetVValue(pix) ceil(GetRValue(pix)*.5+128. - GetGValue(pix)*0.419-GetBValue(pix)*0.0813) А обратно: ![]() ![]() ##define YUV(Y,U,V) (0x0) | ((byte)ceil( Y + (1.4075 * (V - 128)) )&0xFF) \ | ((byte)ceil( Y - (0.3455 * (U - 128) + 0.7169 * (V - 128)) )<<8) \ | ((byte)ceil( Y + (1.7790 * (U - 128)) )<<16) Однако глючит на черных областях + траблы с красным ![]() |
Сообщ.
#2
,
|
|
|
Вот что нашлось у меня на диске по этому вопросу :
![]() ![]() RGB to YUV Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16 V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128 U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128 YUV to RGB B = 1.164(Y - 16) + 2.018(U - 128) G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) R = 1.164(Y - 16) + 1.596(V - 128) и еще Код: R = Y + (1.4075 * (V - 128)); G = Y - (0.3455 * (U - 128) - (0.7169 * (V - 128)); B = Y + (1.7790 * (U - 128); Y = R * .299 + G * .587 + B * .114; U = R * -.169 + G * -.332 + B * .500 + 128.; V = R * .500 + G * -.419 + B * -.0813 + 128.; Код: YUV.Y := trunc( 0.299*RGB.R + 0.587*RGB.G + 0.114*RGB.B) ; YUV.U := (RGB.R - YUV.Y) div 2 +128 ; YUV.V := (RGB.B - YUV.Y) div 2 +128 ; RGB.R := YUV.Y + (YUV.U shl 1 - 256) ; RGB.B := YUV.Y + (YUV.V shl 1 - 256) ; RGB.G := trunc( ( YUV.Y - 0.299*RGB.R - 0.114*rgb.b ) / 0.587 ) ; Y - это и есть яркость а также ссылка http://semmix.pl/color/models/emo110.htm |
Сообщ.
#3
,
|
|
|
Цитата Crait @ ![]() ![]() R = Y + (1.4075 * (V - 128)); G = Y - (0.3455 * (U - 128) - (0.7169 * (V - 128)); B = Y + (1.7790 * (U - 128); Y = R * .299 + G * .587 + B * .114; U = R * -.169 + G * -.332 + B * .500 + 128.; V = R * .500 + G * -.419 + B * -.0813 + 128.; Этот я и использую ![]() |
Сообщ.
#4
,
|
|
|
Писец (харек такой
![]() ![]() |
Сообщ.
#5
,
|
|
|
Цитата NoeR @ YUV? Кодировка цвета такая. Пришла из цветного телевидения/видеозаписи. а что это такое ? |
Сообщ.
#6
,
|
|
|
А РГБ ?
![]() |
Сообщ.
#7
,
|
|
|
Цитата NoeR @ Это другая кодировка цвета.А РГБ ? Есть еще CMYK - эта из полиграфии. |
Сообщ.
#8
,
|
|
|
Никто не знает... Жаль пришлось отключить
![]() Добавлено YUV или YCrCb ![]() Цитата В нем Y — яркостная составляющая, а Cr, Cb — компоненты, отвечающие за цвет (хроматический красный и хроматический синий). За счет того, что человеческий глаз менее чувствителен к цвету, чем к яркости, появляется возможность архивировать массивы для Cr и Cb компонент с большими потерями и, соответственно, большими коэффициентами сжатия. Подобное преобразование уже давно используется в телевидении. На сигналы, отвечающие за цвет, там выделяется более узкая полоса частот. ![]() |
Сообщ.
#9
,
|
|
|
Спасибо что обьеснили
![]() |
Сообщ.
#10
,
|
|
|
Скажите плиз а если преобразовать с RGB в YUV и обратно RGB изображение идентичное начальному?
Добавлено trainerСкажите плиз а если преобразовать с RGB в YUV и обратно RGB изображение идентичное начальному? |
Сообщ.
#11
,
|
|
|
В идеале - да. Собственно, именно это делается в телевидении. Видеокамера - RGB, телесигнал - YUV, телевизор - опять RGB.
|