Тема: Chroma Keying?
Показать сообщение отдельно
Старый 04.12.2010, 23:21
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 4  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Как оказалось, можно и в RGB очень хорошо вырезать. Вот:
Код:
<languageVersion : 1.0;>

kernel GreenScreenKeying
<
    namespace : "ChromaKeying";
    vendor : "Vadim BELLinSKY, feat. by i.o. ;)";
    version : 2;
    description : "Green screen keying with key-color supression";
>
{

    parameter float threshold
    <
        minValue:       float(0.0);
        maxValue:       float(3.0);
        defaultValue:   float(1.80);
    >;
    
    parameter float factor
    <
        minValue:       float(0.0);
        maxValue:       float(50.0);
        defaultValue:   float(2.00);
    >;
    
    parameter float supressFactor
    <
        minValue:       float(0.0);
        maxValue:       float(10.0);
        defaultValue:   float(1.60);
    >;
    

    input image4 src;
    output pixel4 dst;


    void evaluatePixel()
    {
        dst = sampleNearest( src, outCoord() );
        
        float valueMatch = clamp( 1.0 - factor * (dst.g * threshold - dst.r - dst.b), 0.0, 1.0 );

        dst.a = valueMatch;
        dst.r *= valueMatch;
        dst.g *= pow( valueMatch, supressFactor );
        dst.b *= valueMatch;
    }
}
По-моему вырезает если не идеально, то почти идеально ))
Несколько картинок, взятых в гугле с первой страницы с зеленым фоном, вырезались отлично.
Жду ответа.

Добавлено через 2 часа 26 минут
все-таки не совсем отлично..


Последний раз редактировалось i.o.; 04.12.2010 в 23:47.