Нахождение радиуса r перекрывающейся сферы (ий) в трехмерном изображении


9

Моя текущая проблема:

  • У меня есть входное трехмерное двоичное изображение (трехмерная матрица, которая имеет только 0 и 1), которое состоит из случайных чисел сферы с радиусом r.
  • Мы не знаем, сколько сфер есть на изображении.
  • Все сферы имеют одинаковый радиус r, но мы не знаем радиус r.
  • Сферы повсюду на изображении и могут перекрывать друг друга.
  • Пример изображения приведен ниже.

Мое требование:

  • какой радиус r?

В настоящее время я просто сглаживаю изображение, чтобы избавиться от оси z и выполнить обнаружение краев, и я пытаюсь с помощью преобразования Hough, используя: http://rsbweb.nih.gov/ij/plugins/hough-circles.html

Однако, с помощью Hough Transform я вижу, что переменные минимальный радиус, максимальный радиус и количество кругов должны быть указаны. Я попробовал несколько попыток ниже:

известный радиус

неизвестный радиус

При правильных параметрах, Hough Transform может замечать круги просто отлично. Но в реальном приложении я не знаю, сколько там сфер, и попытка программы угадать минимальный и максимальный радиус кажется неосуществимой. Есть ли другие способы сделать это?

Ссылка: /math/118815/finding-radius-r-of-the-overlappable-spheres-in-3d-image


Отредактируйте свой вопрос и добавьте описание формата входного изображения.

Формат входного изображения - двоичное трехмерное изображение.
Карл

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

Нет, сферы могут перекрывать друг друга. В простейшем случае ни одна сфера не перекрывается вообще, но это не всегда так.
Карл

Ответы:


9

Более простое решение и гораздо более эффективный в вычислительном отношении по сравнению с преобразованием Хафа состоит в использовании преобразования расстояния:

  • Найдите поверхность ваших сфер (то есть пикселей, которые имеют значение 1 и имеют хотя бы один соседний 0 пикселей);
  • Вычислить преобразование расстояния относительно поверхности сфер, но ограничить вычисление только пикселями, которые являются внутренними по отношению к сферам. Результатом будет карта расстояний;
  • Радиус будет точно максимальным значением в вашей карте расстояний.

Другое преимущество этого решения по сравнению с преобразованием Хафа состоит в том, что оно обеспечивает гораздо более точное значение радиуса.


Но если две сферы перекрываются, разве максимум не будет большим расстоянием от дальней стороны одной сферы до другой стороны другой сферы?
эндолит

1
@endolith Нет, поскольку значение преобразования расстояния данного пикселя (воксела) в данном случае соответствует расстоянию до ближайшей поверхности сферы.
Alceu Costa

3

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

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

Учитывая этот радиус, у вас, похоже, осталась проблема, поэтому я больше не буду писать.

Я вижу, что объяснение преобразования Хафа в Википедии также указывает на то, что его можно использовать для поиска трехмерных объектов на трехмерных изображениях, при условии, что эти объекты можно параметризовать, что, безусловно, может быть сфера.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.