3

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

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

Позвольте мне объяснить мою проблему. Я сегментировал изображение .jpg и вырезал некоторые его области. Затем я сохраняю результат как .png с помощью маски. Результат такой же (черная часть на самом деле прозрачная, я сделал ее черной, чтобы лучше видеть проблему);

enter image description here

Как вы можете видеть на картинке, есть некоторые несущественные области. Мне нужно избавиться от этих нерелевантных областей. Потому что я хочу, чтобы передний план был гладким. С первого взгляда я применил гауссовское размытие к маске и сохранил изображение как .png, снова. Но результат не удовлетворяет, как вы можете себе представить. Я полагаю, что эта ситуация необходима более твердое решение, чем я пытался.

Редактировать 1: Я использовал спектральный матирование. Но это не помогает. Лучший результат, который я могу получить, - вот что:

enter image description here

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

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

+0

Пожалуйста, объясните, как выполняется сегментация. Кажется, вы сегментируете, используя абсолютные значения цвета, игнорируя градиент. – Daniel

+0

Да, вы отчасти правы. Он основан на цветовой подобии узла. Я минимизирую энергию Гиббса. Как вы, возможно, знали, алгоритмы вырезания алгоритмов Boykov и Jolly's (2001) работают очень хорошо. Но в завершенном результате, как вы видите, есть всего несколько небольших проблем. –

+1

@ Erdi Вы используете 4-связный график сетки или 8-контактный? Вы могли бы рассмотреть более высокую степень связности, как это предлагает http://www.cs.cornell.edu/People/vnk/papers/BK-ICCV03.pdf или http://pub.ist.ac.at/~vnk/papers /KB-ICCV05.pdf – Shai

ответ

5

Вы не хотите просто «гасить-размыть» результат, вы хотите мягкую сегментацию a.k.a matting. В качестве первой остановки для матирования изображений я бы рекомендовал Levine Rav-Acha и Lischinski Spectral Matting. Здесь вы найдете код Matlab (я использовал его в прошлом - очень впечатляющие результаты).

+0

Я включил код Spectral Matting в свой проект, но результаты явно не так хороши. Прежде всего, это очень медленно. (в среднем 6 мин для файла изображения 1000х500). Кроме того, есть некоторые проблемы с точностью переднего плана. В большинстве случаев он включает в себя другие нерелевантные части результата. Как вы понимаете, это не помогает ситуации. Есть ли что-то еще, чтобы применить изображение выше. Я не знаю, может быть, какой-то крайний фиксатор, более гладкий край? –

+1

@ Erdiİzgi вы можете попробовать алгоритм матирования, предложенный в статье [GrabCut] (http://cvg.ethz.ch/teaching/cvl/2012/grabcut-siggraph04.pdf) в разделе 4. – Shai

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