Nano Hash - криптовалюты, майнинг, программирование

Какова наиболее эффективная структура Octree для реконструкции?

Я закодировал полную реализацию октодерева без особой оптимизации для трехмерной реконструкции, однако древовидная структура содержит слишком много указателей и не может поддерживать более 256^3 вокселей.

Теоретически, для недревовидной структуры, если бы я использовал vector<bool>, который использует ~ 1 бит на воксель, это было бы более приемлемым, потому что недревовидная структура могла бы поддерживать 2k^3 с 8 ГБ памяти.

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

  1. Не нужно сохранять каждый воксель, так как уплотнение позволяет сжимать близлежащие воксели с одинаковым значением.

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

  3. Октодерево должно иметь довольно низкое соотношение узел/воксель.

Для полного октодерева номер узла может быть рассчитан как (s^3 -1) / 7. s — это разрешение объема, которое является степенью числа 2. Например, если s = 4, мне потребуется 1 + 8 = 9 узлов в октодереве для представления сетки вокселов 4x4x4.

Кто-нибудь знает о реализации октодерева на С++, которая соответствует этим спецификациям?


  • Такие вещи, как правило, выполняются с использованием графических процессоров в наши дни, вы можете адаптировать методы, используемые там, для улучшения вашего кода, хорошей отправной точкой является докторская работа Сирила Крассина: maverick.inria.fr/Membres/Cyril.Crassin/thesis 23.01.2013
  • Почему бы вам просто не оптимизировать текущую реализацию? Листовые узлы, например, не нуждаются в указателе на дочерние узлы, что экономит память. Также вы можете использовать разреженное октодерево. Я не знаю, как выглядит ваша реализация октодерева, но если вы хотите, чтобы она была эффективной с памятью, почему вы используете векторы? 256^3 — довольно низкое значение. 07.02.2013
  • не уверен, что понимаю вопрос, но я думаю, что вы можете использовать дерево массивов 09.06.2013

Ответы:


1

Я думаю, что октодеревья — это то, что нужно, но дочерние узлы следует создавать только в случае необходимости (установлен хотя бы один воксель). Кроме того, следует использовать сжатие. Часто соседние воксели имеют одинаковые значения, и поэтому компрессия RLE работает хорошо. Это объясняется в этой диссертации http://www.terathon.com/voxels/.

18.06.2013
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..