2

Как сегментировать 2D-изображение в капли одинаковых значений эффективно? Данный вход представляет собой n массив целых чисел, который включает оттенок для не серого пикселя и яркость серых пикселей.Как эффективно сегментировать 2D-изображения в областях/блоках одинаковых значений?

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

ответ

3

Я бы декодирую, в colourspace и числе пикселей, использует метод видения (вероятно, meanshift) и высококлассный результат.

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

Вы можете использовать заливку для последующего сглаживания краев, если вам нужна плавность.

Еще несколько мыслей (в ответ на ваш комментарий).

1) Вы смешались, когда вы сбрасывали диск? y [i] = (x [2i] + x [2i + 1])/2 Это должно устранить шум.

2) Как быстро вы хотите, чтобы это было?

3) Вы пробовали динамический meanshift (также Google для динамического х для всех алгоритмов х)

+0

+1 для идеи. На самом деле это первая вещь, которую я пробовал, но 1. Мое первоначальное изображение маленькое (100x100), и я хочу сохранить размер blob и 2. Когда он набирает шум, он усиливается. В реальных ситуациях с большим количеством градиентов это было бы хорошей идеей. – 2008-12-10 09:19:56

+0

1. Я не смешивался во время опроса вниз, но я поместил Gaussian blur на все изображение, чтобы уменьшить крошечный шум заблаговременно. 2. У меня нет конкретной цели, но быстрее означает более частое обновление для роботов. 3. Нет, звук намного круче, чем наводнение. – 2008-12-10 11:02:15

0

Что я сейчас:

  1. Сделайте буфер того же размера, что и для ввода изображение, инициализированное до UNSEGMENTED.
  2. Для каждого пикселя в изображении, где соответствующее значение буфера не UNSEGMENTED, наводнения буфера, используя значение пикселя.

    a. Проверка границ наводнения выполняется путем проверки, находится ли пиксель в пределах EPSILON (в настоящее время установлен 10) значения исходного пикселя.

    b. Flood filling algorithm.

Возможная проблема:

проверка Границы 2.a., называется много раз в алгоритме заливки. Я мог бы превратить его в поиск, если бы я мог предварительно просчитать границу с использованием обнаружения края, но это может добавить больше времени, чем текущая проверка.

private boolean isValuesCloseEnough(int a_lhs, int a_rhs) { 
    return Math.abs(a_lhs - a_rhs) <= EPSILON; 
} 

Возможные Enhancement:

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

2

Не уверен, что, если она слишком эффективна, но вы можете попробовать использовать Kohonen neural network (или, самоорганизующуюся карту; SOM) для группировки одинаковых значений, где каждый пиксель содержит исходный цвет и положение, и только цвет используется для группировки Kohohen.

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

Есть также Hopfield Networks. Они могут быть искажены в группировку из того, что я читаю.

0

Check Eyepatch (eyepatch.stanford.edu). Он должен помочь вам на этапе расследования, предоставив множество возможных фильтров для сегментации.

0

Альтернативой наводнению является алгоритм connnected-components. Таким образом,

  1. Недорого классифицируйте свои пиксели. например делить пиксели в цветовом пространстве.
  2. Запуск куб.см, чтобы найти сгустки
  3. Сохраняют сгустки значительных размеров

Этот подход широко используется в ранних подходах зрения. Например, в оригинальной работе «Blobworld: A System for Region-Based Image Indexing and Retrieval».