Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Распознать картинку на фоне


Автор: MoebiusCat 10.6.2011, 13:24
Такая задача: есть фон из чередующихся вертикальных полос, белых и чёрных (возможно, с несильным шумом), белые полосы шириной p, чёрные - шириной q (оба числа изначально неизвестны). В каком-то месте на этот фон наложена (непрозрачная) grayscale картинка, скажем, фотография человека. Как её найти, желательно быстро?

У меня есть следующее решение:

    Сделать гистограмму
    Понять из неё, кто такой белый и чёрный
    "Схлопнуть" картинку вертикально (каждый столбик переходит в число)
    Найти p и q
    Создать ещё одну картинку, которая состоит только из белых и чёрных полос (только фон)
    Вычесть её из исходной и сделать результату Фурье
    Там, где был фон, останутся, в основном, только высокие частоты (а если нет шума, то и вовсе ноль) , а там, где была картинка, там будут и низкие тоже


Работает ли это? Есть ли решение лучше? 

Автор: VictorTsaregorodtsev 10.6.2011, 16:34
См работу Yamashita, Agata, Kaneko "Every Color Chromakey". Была в виде статьи в 2008 - но короткая, я её не видел (и поэтому насколько эта статья детальная - не знаю). А расширенная до главы в книге 2010г "Pattern Recognition, Recent Advances" - длинная и подробная.
И начиналось всё как раз с "полосатого" фона и работы Yamashita, Kaneko, Matsushita, Miura "Region Extraction with Chromakey Using Stripe Backgrounds" 2004г.

Автор: Newbe 12.6.2011, 15:37
Возможно немножко простоватый подход, но почему бы не попробовать просканировать изображение по вертикальным срезам(например, мат среднее по цвету всех пикселей)? Там где белые и черные полосы, число на срезе по X будет постоянным и одинаковым на всем протяжении изображения. Где будет "наложенный" участок, "среднее" будет иметь другое значение.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)