...

четверг, 13 июня 2013 г.

[Из песочницы] Окрашивание изображений



Здравствуй, Хабрахабр. Сегодня мы будем раскрашивать.

Что здесь будет? Будет поиск цветного изображения со схожими цветами по черно-белому и метод переноса цвета с первого на второе.



Поиск цветного изображения




Что у нас есть? Допустим, у нас есть куча цветных изображений и одно черно-белое, мы хотим из этой кучи выбрать одно, которое по цветам лучше всего подходит нашему черно-белому (если бы они, цвета, у него были). Каждое изображение на выборах будет представлять его сигнатура.

Сигнатура — это 128 чисел с плавающей запятой, они получаются из гистограммы канала l (яркость) изображения (из цветовой модели lab), нормализованной к единице, то есть сумма всех 128 чисел равна единице (нормализация нужна для того, чтобы убрать влияние размера изображения на сигнатуру). Схематично получение сигнатуры изображения выглядит так:


Подобный подход описан в [2], там есть и другие варианты сигнатур и экспериментальные результаты. Теперь у каждого цветного изображения есть сигнатура, и у черно-белого она тоже есть, как мы выберем изображение? Вычислим корреляцию между сигнатурой нашего бесцветного подопытного и цветных кандидатов, по наибольшему значению получим победителя. Корреляция, кстати, вычисляется вот так:





Здесь H1 и H2 — сигнатуры, N=128 — число элементов сигнатуры. Если d=1, то максимальное совпадение, -1 – максимальное различие, 0 – нет корреляции.

На этом этапе у нас уже есть черно-белое изображение и изображение-источник цвета, назовем его так. На первой картинке это левое и правое изображения, осталось получить центральное.


Перенос цвета с цветного на черно-белое




Этапы переноса цвета следующие:

1. Накладываем на изображение-источник цвета сетку 15х15, в каждой ячейке берем случайный пиксель (это называется jittered sampling)

2. Рассматриваем окрестность это пикселя в размере 25х25, вычисляем математическое ожидание и дисперсию.

После первых двух шагов мы получаем с цветного изображения 225 образцов цвета, каждый из которых характеризуется следующим: двумя значениями каналов a и b; мат. ожиданием и дисперсией.

15х15 и 25х25 получены в ходе экспериментов.

3. Попиксельно обходим наше черно-белое изображение, вычисляем дисперсию и мат. ожидание, сравниваем с образцами, с наиболее подходящего образца переносим значения цветовых каналов a и b.

Этот метод придумал Welsh с товарищами, подробнее можно почитать у него [1].


В результате этих нехитрых манипуляций получаются вполне себе цветные картинки:



Ну и как же без рыжего кота:




Выводы




Ну, достоинства тут очевидны, руками ничего не делаем, все само красиво происходит, а недостатки? Для изображений, где основных тонов не два-три, а много больше, результаты могут получиться сильно неадекватные, устраняется это очень просто на словах и очень сложно на деле: применение распознавания, например, при использовании метода SURF и контурного анализа для поиска машинки, можно вместо:


получить гораздо более правдоподобную картину:



но это уже совсем другая история.


P.S.




Я буду крайне признателен за альтернативные подходы к окрашиванию в комментариях, хотя бы на уровне идей.

Использованные источники:

1 Welsh, T., Transferring color to greyscale images

2 Vieira, L. F. M. at al. Fully automatic coloring of grayscale images


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


Комментариев нет:

Отправить комментарий