(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Простой хромакей по цветовой компоненте RGB

Источник: habrahabr
hasalex

Все чаще и чаще нам на глаза попадается использование хромакея в самых неожиданных местах. Долго свербила мысль попробовать реализовать что-то свое. Подумав некоторое время и, зайдя с дальнего и не самого простого варианта с использованием модели HSL, сходу что-то универсальное реализовать не получилось. Надо сказать, это "некоторое" время весьма прилично затянулось. И тут совершенно неожиданно пришла в голову мысль попробовать с простого варианта, просто отбросив одну из компонент и по ее значению сделать альфа-канал. За основу был взят зеленый канал, как один из наиболее часто используемых в подобных задачах. 
Ход мыслей был таков:
- всего имеем 256 градаций каждого канала
- все, что, примерно, ниже 30-го значения, можно отнести к "черному" зеленому
- вариант, где зеленая составляющая является доминирующей, почти наверняка является зеленым цветом (тут еще есть градации серого, близкого к серому и пр.)

Имея наобум взятое изображение из интернета


и аналогично взятый фон


(не знаю кому принадлежит)

идем реализовывать алгоритм для 24-битного изображения и 8-битной маски (альфа-канала):

byte const black_threshold = 30;

byte* chroma_p = chroma_data;
byte* alpha_p = alpha_data;

for (int counter = 0; counter < size; ++counter)
{
  byte b = *chroma_p++;
  byte g = *chroma_p++;
  byte r = *chroma_p++;

  // определим, зеленый ли пиксел перед нами
  if (g > r && g > b)
  {
    // если этот зеленый достаточно черный, то оставим его нетронутым в маске
    if (g < black_threshold)
      *alpha_p++ = 255;
    else
    {
      // вычислим разницу между компонентами для определения яркости маски
      byte m = g - max(r, b);
      *alpha_p++ = 255 - m;
    }
  }
}

Запускаем, получаем:

маска

и по маске наложенное изображение на наш фон

В итоге наша реализация показывает довольно неплохой, но очень грубый результат. В частности, мы видим на полученном изображении зеленый туман. Вглянем на гистограмму маски:

Видим, что основная часть маски в области прозрачности лежит в интервале 17-100. Поэтому растянем интервал значений 100-255 на интервал 0-255, "убив" тем самым пелену и получим вот такую гистограмму

и вот такую маску, более похожую на необходимую нам

.

В результате мы избавились от ненужной нам пелены

,

но видим оставшийся ореол вокруг маски и зеленую "засветку" тона, которая у нас естественно смотрелась на первоначальном зеленом фоне и совсем инородно смотрится на нашем новом фоне. В целом результат обошелся дешево, но остается ряд вопросов. Как бороться с ореолом? Можно попробовать сузить маску сверткой, или попробовать как-то иначе растянуть гистограмму маски. А вот как бороться с засветом я пока не знаю, поэтому для дальнейщей работы пищи достаточно. Критика, советы и рекомендации приветствуются. Так же буду признателен ссылкам на подобные работы, в том числе их реализацию при помощи GPU, OpenCV и пр.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 13.11.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
IBM Domino Messaging Client Access License Authorized User License + SW Subscription & Support 12 Months
ZBrush 4R6 Win Commercial Single License ESD
Zend Studio Commercial License 1 Year Free Upgrades
ABBYY Lingvo x6 Многоязычная Домашняя версия, электронный ключ
Quest Software. TOAD for SQL Server Xpert Edition
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование в AutoCAD
Компьютерный дизайн - Все графические редакторы
Компьютерные книги. Рецензии и отзывы
Мир OLAP и Business Intelligence: новости, статьи, обзоры
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100