устойчивый алгоритм для поверхностной реконструкции от 3D облака точек?

Создание проекта окон форм. В форму Form1 добавьте комбинированный список (comboBoxAnimals), текстовое поле (txtTimes) и кнопку (button1). см. изображение в качестве ссылки.

Form1.cs может иметь такой код:

using System;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            comboBoxAnimals.Items.Add("dog");
            comboBoxAnimals.Items.Add("cat");
            comboBoxAnimals.Items.Add("mouse");
            comboBoxAnimals.SelectedIndex = 1;

            txtTimes.Text = "1";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string selectedAnimal = comboBoxAnimals.SelectedItem.ToString();

            int times = int.Parse(txtTimes.Text);
            var message = string.Concat(Enumerable.Repeat(selectedAnimal, times));
            MessageBox.Show(message);
        }
    }
}

enter image description here

Это далеко не идеальный пример, но я надеюсь, вы поняли идею.

61
задан Đēēpak 29 November 2014 в 13:47
поделиться

6 ответов

Я столкнулся с этой дилеммой уже несколько месяцев и провел исчерпывающее исследование.

Алгоритмы

В основном есть 2 категории алгоритмов: вычислительная геометрия и неявные поверхности.

] Вычислительная геометрия

Они подгоняют сетку к существующим точкам.

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

] Ball Pivoting запатентован IBM. Кроме того, он не подходит для облаков точек с переменной плотностью точек.

Неявные функции

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

Методы в этой категории различаются в основном разными использовались неявные функции.

Пуассон , и MPU Хоппе - самые известные алгоритмы в этой категории. Если вы новичок в этой теме, я рекомендую прочитать диссертацию Хоппе, она очень пояснительная.

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

Реализации

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

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

Взгляните на эту реализацию Пуассона, и после этого поделитесь со мной своим опытом по этому поводу.

Также: здесь - несколько высокопроизводительных алгоритмов, в том числе реконструкция поверхности.

CGAL - известная трехмерная библиотека, но она бесплатна только для бесплатных проектов. Meshlab - известное приложение с GPL.

Также (добавлено в августе 2013 г.): Библиотека PCL имеет модуль , посвященный реконструкции поверхности, и находится в активной разработке (и является частью Google Summer of Code). Модуль поверхности содержит несколько различных алгоритмов восстановления. PCL также имеет возможность оценивать нормали поверхности, если вы не предоставили их вместе с вашими точечными данными, эту функцию можно найти в модуле функций . PCL выпускается в соответствии с условиями лицензии BSD и является программным обеспечением с открытым исходным кодом, оно бесплатное для коммерческого и исследовательского использования.

93
ответ дан 24 November 2019 в 17:14
поделиться

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

3
ответ дан 24 November 2019 в 17:14
поделиться

Возможно, вас заинтересуют Альфа-формы .

0
ответ дан 24 November 2019 в 17:14
поделиться

Вы можете начать изучать недавние работы в этой области - в настоящее время что-то вроде Быстрая MLS-реконструкция с точечной выборкой поверхностей с потоковой передачей с низким объемом памяти Джанмауро Куккуру, Энрико Гоббетти Фабио Мартон, Ренато Пахарола и Руджеро Пинтус. Его цитаты могут помочь вам довольно быстро просмотреть всю литературу.

5
ответ дан 24 November 2019 в 17:14
поделиться

Хотя это не представление сетки, бывший коллега порекомендовал мне эту ссылку к исходному коду метода тонкой пластины сплайна:

Ссылка

Кто-нибудь пробовал?

4
ответ дан 24 November 2019 в 17:14
поделиться

Если вы хотите провести прямые эксперименты с различными алгоритмами реконструкции поверхностей, то вам следует попробовать MeshLab, систему mesh-процессинга, она имеет открытый исходный код и содержит реализации многих из ранее цитированных алгоритмов реконструкции поверхностей, например:

  • Poisson Surface Recon
  • a couple of MLS based approach,
  • a ball pivoting implementation
  • a variant of the Curless volume based approach
  • a Delaunay based techniques (Alpha shapes and Voronoi filtering)
  • tools for computing normals from scattered point set
  • and many other tools for comparing/measuring/cleaning/simplifying the result meshhes.

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

11
ответ дан 24 November 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: