2013-05-27 3 views
2

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

Когда я пытался сформировать контур, он делает это вокруг отдельного кластера. Могу ли я получить подсказку, помощь или код о том, как сформировать один общий контур. enter image description here

+1

В соответствии с вашим описанием, я думаю, вы хотите сделать изображение маски для части изображения. И изображение, которое вы показываете, не является хорошим изображением для этой операции. Возможно, вы захотите начать с оригинального (не порогового) изображения, чтобы у вас были некоторые способы маскировки этой части. В противном случае вам, возможно, придется конкретно определить, что связано или нет. –

+0

На самом деле я забыл упомянуть, выше изображение получено после некоторой обработки. Возможно, из вашего описания я должен сопоставить соответствие оригинальному изображению и применить маскировку. Я попробую это – rish

ответ

3

Функция выпуклой оболочки opencv делает практически то, что вы хотите. Он «Находит выпуклую оболочку точечного множества». См:

Я сказал "почти", потому что вы не можете вырезать прямо через нижнем левом углу.

Другой подход - сделать морфологическое расширение, N раз, пока у вас не будет только одна непрерывная белая область. Вам нужно подумать о том, как вы можете эффективно проверить, что осталось только одна белая область. Затем размывайте N раз, чтобы вернуться к чему-то примерно так же, как и оригинал (но только одна смежная форма). Затем найдите контуры. Если вы это сделали, вам нужно будет встроить изображение на более крупном черном фоне, чтобы было место для расширения. См:

+0

Благодарим за отличное решение. Оба хороши и очень благодарны. Cheers – rish

0

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

1

Вы можете использовать HoughLines, чтобы найти строки в изображении. Внешние края вам imgae должны быть самыми длинными линиями.

Возможно, объедините это с идеей расширения пользователя2151446, чтобы получить лучшие результаты.

+0

Спасибо, что хорошо работает. – rish

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