как удалить фоновое изображение и получить переднее изображение

существует два изображения

сопроводительный текст http://bbs.shoucangshidai.com/attachments/month_1001/1001211535bd7a644e95187acd.jpg сопроводительный текст http://bbs.shoucangshidai.com/attachments/month_1001/10012115357cfe13c148d3d8da.jpg каждый - фоновое изображение, другой - фотография человека с тем же фоном, тот же размер, что я хочу сделать, удаляют фон второго изображения и дистиллируют профиль человека только. общепринятая методика, вычитают первое изображение из второго, но моя проблема состоит в том, если цвет износа человека схож фону. результат вычитает, ужасно. я не могу получить профиль всех людей. у кого есть хорошая идея удалить фон, дают мне некоторый совет. заранее спасибо.

14
задан Hannes Ovrén 21 January 2010 в 09:42
поделиться

5 ответов

Если у вас хорошая оценка фона изображения, вычитая его с изображением с человеком, является хорошим первым шагом. Но это только первый шаг. После этого вам приходится сегментировать образ, то есть вы должны разделить изображение на «фоновом режиме» и «передний план» пикселей, с такими как эти ограничения:

  1. в областях переднего плана, средняя разница от фонового изображения должна быть высокой
  2. В фоновых областях средняя отличие от фонового изображения должно быть низким
  3. , область должны быть гладкими. Длина наброски и кривизна должны быть минимальными.
  4. Границы областей должны иметь высокий контраст в исходном изображении

, если вы математически склонны, эти ограничения могут быть идеально смоделированы с функционалом Mumford-Shah. Смотрите здесь для получения дополнительной информации.

Но вы, вероятно, можете адаптировать другие алгоритмы сегментации к проблеме.

Если вы хотите быструю и простую (но не идеальную) версию, вы можете попробовать это:

  • вычтете два изображения
  • найти самую высокую последовательную «BLOB» пикселей с разницей фона переднего плана больше, чем некоторые порог. Это первая грубая оценка для «у человека зоны» на изображении переднего плана, но сегментация не соответствует критериям 3 и 4 выше.
  • Найдите план крупнейшего BLOB ( Отредактируйте: Обратите внимание, что вам не нужно начинать с контура. Вы также можете начать с большего количества многоугольников, так как шаги будут автоматически сокращать его на Оптимальное положение.)
  • Теперь пройдите через каждую точку наброски и сгладить контур. Т.е. для каждой точки найдите точку, которая сводит к минимуму формулу: C1 * L - C2 * G, где l - длина наброски многоугольника, если точка были перемещены здесь, а G - градиент в том, что точка будет перемещена, C1 / C2 являются константами для контроля процесса. Переместите точку на эту позицию. Это имеет эффект сглаживания контурного многоугольника в областях низкого градиента в исходном изображении, сохраняя его привязанные к высокому градиентам в исходном изображении (то есть видимые границы человека). Вы можете попробовать разные выражения для L и G, например, с учетом длины и кривизны, а G также может взять градиент на фоне и вычтенные изображения во внимание.
  • Вам, вероятно, придется повторно нормализовать наброски многоугольника, то есть, убедитесь, что точки на контур регулярно проводятся. Либо это, либо убедиться, что расстояния между точками остаются регулярными в шаге раньше. («Геодезические змеи»)
  • Повторите последние два шага до тех пор, пока конвергенция

Теперь у вас есть наброски многоугольника, который касается видимой границы фона человека и продолжается плавно, где граница не видна или имеет низкий контрастность. Смотрите «змеи» ( E.G. Здесь ) для получения дополнительной информации.

17
ответ дан 1 December 2019 в 13:33
поделиться
121 --- 2487630-

Опубликуйте фото на Craigslist и скажите им, что вы заплатите 5 долларов за кого-то, чтобы сделать это.

Гарантировано, вы получите хиты за считанные минуты.

-2
ответ дан 1 December 2019 в 13:33
поделиться

Одной из техники, которую я считаю, является общим, является использование модели смеси . Захватите ряд фоновых рамок и для каждого пикселя построить модель смеси для его цвета.

Когда вы применяете кадр с человеком в нем, вы получите некоторую вероятность того, что цвет является передним планом или фоном, учитывая плотности вероятности в модели смеси для каждого пикселя.

После того, как у вас есть p (пиксель - это передний план) и p (пиксель - это фон), вы могли бы просто порог нанесение вероятности.

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

Однако, если человек носит одежду, которые визуально неразведали от фона, очевидно, ни одна из методов, описанных выше, не будет работать. Вам либо нужно получить другой датчик (например, IR или UV) или иметь довольно сложный «человек-модель», который мог бы «добавить» ноги в правильном положении, если она найдет то, что он думает, это торс и голова.

Удачи в проекте!

1
ответ дан 1 December 2019 в 13:33
поделиться

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

-3
ответ дан 1 December 2019 в 13:33
поделиться

Низкочастотный фильтр (размытие) изображений перед их вычитанием. Затем используйте этот разностный сигнал в качестве маски для выделения интересующих пикселей. Широкоформатный фильтр игнорирует мелкие (высокочастотные) элементы, которые в итоге вырезают "ужасные" области внутри интересующего объекта. Он также уменьшит выделение шумов и несоосность на уровне пикселов (высокочастотная информация).

Кроме того, если у вас более двух кадров, введение гистерезиса времени позволит вам сформировать более стабильные регионы, представляющие интерес с течением времени.

4
ответ дан 1 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: