2015-04-16 2 views
1

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

До сих пор я пробовал алгоритмы inpainting. Они не работают в моем случае, потому что мои фоновые изображения не имеют не менее 40% из них. Я имею в виду, что они терпят неудачу, когда они пытаются получить 40% изображения. (Кстати, эти изображения дали плохие результаты даже в Photoshop с инструментом для содержания.)

Во всяком случае, я отказался от попыток разобраться и решил что-то еще. В моем проекте мне не нужно заполнять 100% моего фона. Я хочу проиллюстрировать свое решение;

enter image description here

Как вы видите на изображении выше, я хочу, чтобы тянуть изображение в черной области (который является прозрачным) с минимальной коррупцией. Любые образцы кода MATLAB, техника, ключевое слово и подход были бы замечательными. Если вам нужны дополнительные объяснения, не стесняйтесь спрашивать.

ответ

3

я могу думать о двух грубых способов заполнить отверстие:

использование roifill: это заполняет пробелы в 2d изображения с сохранением плавности изображения.

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

[~, nnIdx] = bwdist(bw); 
fillImg(bw) = IMG(bw); 

хотя этот фрагмент кода работает только для серых изображений, это довольно тривиально распространите его на цветные изображения RGB.

+0

bwdist может быть работой Shai, но roifill не дает приемлемых результатов. Ну, я буду иметь в виду. Знаете ли вы какой-либо фрагмент кода, который тянет/расширяет точку до другой точки изображения? –

+2

Это довольно большое отверстие, заполняемое множеством краев, я очень сомневаюсь, что есть какой-либо способ получить приемлемый результат без специального корпуса для этого изображения. – Noremac

+0

@Noremac Вы были правы. Это очень большой - почти 40% изображения. Предложения Шая не дали многообещающего результата. К сожалению, большинство случаев в этой форме. Инструмент заполнения содержимого Adobe Photoshop даже не прошел. Я изменил свою перспективу и создал решение. Я перемещаю пиксели в отверстие с динамической скоростью. Я имею в виду, что самые близкие пиксели к сдвигу отверстий меньше, другие меняются больше. Наконец, я применил специальный 8-соседний средний фильтр. Время обработки составляет почти 2 секунды, и этот подход дает многообещающие результаты на удивление с моим делом. –

Смежные вопросы