Форум программистов, компьютерный форум CyberForum.ru

Преобразование из YCbCr в RGB - C++

Восстановить пароль Регистрация
 
panotnap
30 / 30 / 4
Регистрация: 24.09.2014
Сообщений: 242
21.03.2016, 02:11     Преобразование из YCbCr в RGB #1
ЧЯДнТ? Формула? Код? Цветовое пространство?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define BYTE uchar
 
void MainWindow::yuv_rgb(BYTE* array, BYTE Y) 
    {
    BYTE Cr, Cb;
    float redF, greenF, blueF;
    for(uint n= 0,  Cr= 16; Cr < 240; Cr++)
        for(int     Cb= 16; Cb < 240; Cb++, n+= 4) 
            {
            redF=   255/219*(Y-16) +                                                255/112*0.701*(Cr-128);
            greenF= 255/219*(Y-16) -        255/112*0.886*(0.114/0.587)*(Cb-128) -  255/112*0.701*(0.299/0.587)*(Cr-128);
            blueF=  255/219*(Y-16) +        255/112*0.886*(Cb-128);
            array[n + 0]= (BYTE)blueF;
            array[n + 1]= (BYTE)greenF;
            array[n + 2]= (BYTE)redF;
            array[n + 3]= 0;    //  alpha
            }
    }
С другими формулами результат визуально другой, но с такими же резкими градиентами...

Получившиеся изображения при Y= 16, 128, 235.
Изображения
   
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2016, 02:11     Преобразование из YCbCr в RGB
Посмотрите здесь:

Стего в RGB!!! C++ Builder
Из colordialog в RGB C++ Builder
C++ Builder RGB в INT
C++ Builder RGB в INT
Visual C++ RGB в C++
Переход из RGB в HSV Visual C++
C++ RGB компоненты изображения
C++ Преобразование bitmap в YCbCr и обратно
Преобразование изображения из цветовой модели RGB в модель HSL C++
Преобразование визуальных данных из формата RGB в YUV (4:2:0) C++ Builder
Восстановление изображения по RGB C++ Builder
Visual C++ BMP в массив из RGB

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panotnap
30 / 30 / 4
Регистрация: 24.09.2014
Сообщений: 242
21.03.2016, 04:39  [ТС]     Преобразование из YCbCr в RGB #2
Нашёл ответ в топике Преобразование bitmap в YCbCr и обратно

Не была выполнена следующая проверка на переполнение выходного РГБ:
C++
1
2
3
if(redF > 255)      redF= 255;      if(redF < 0)    redF= 0;
if(greenF > 255)    greenF= 255;    if(greenF < 0)  greenF= 0;
if(blueF > 255)     blueF= 255;     if(blueF < 0)   blueF= 0;
И ещё uint в цикле надо было поменять на int.
C++
1
2
for(int n= 0,   Cr= 16; Cr < 240; Cr++)
    for(int     Cb= 16; Cb < 240; Cb++, n+=4)
Yandex
Объявления
21.03.2016, 04:39     Преобразование из YCbCr в RGB
Ответ Создать тему
Опции темы

Текущее время: 06:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru