Task06 Вадим Бенкевич НИИЧАВО#135
Closed
vb002 wants to merge 3 commits into
Closed
Conversation
Member
|
Скажите пожалуйста будете ли доделывать |
added 2 commits
May 18, 2026 00:45
Member
|
10/10 баллов 👍 |
|
|
||
| // TODO 4001 подвиньте вершины в среднюю координату среди всех точек которые в ней зачлись | ||
| // Считаю нечестное среднее (считаю среднее для двух точек при слиянии), но зато обновляю триангуляцию. Интересно насколько сильно это отличается от честного усреднения. | ||
| // Я бы предположил, что вряд ли это можно заметить. |
Member
There was a problem hiding this comment.
Да, тоже так думаю, надежнее всего проверить посмотрев на результат с/без (т.н. ablations), еще приятнее делать "честный" вариант тем что это делает алгоритм более легко интерпретируемым - помогает при анализе проблем
| // Я бы предположил, что вряд ли это можно заметить. | ||
| // TODO 4002 поэкспериментируйте со значением MERGE_THRESHOLD_RADIUS_KOEF, есть ли интересности? какое значение вы бы предложили использовать в условной финальной версии? | ||
| // Небольшое изменение порога (0.1 -> 0.5) резко снижает количество треугольников (84000->34000). По качеству модели сложно что-либо сказать (она выглядит плохо | ||
| // при любом значении :) ). А дальше даже увеличение в 100 раз не дает такого сильного выигрыша (34000->24000) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
// Убедитесь что название PR соответствует шаблону:
// Task06 <ИмяНаРусском> <ФамилияНаРусском> <ВУЗ>
// Проверьте что обе ветки PR - task06 (отправляемая из вашего форкнутого репозитория и та в которую вы отправляете PR)
Перечислите идеи и коротко обозначьте мысли которые у вас возникали по мере выполнения задания (так же комментарии и мысли прямо в коде пишите по мере выполнения задания)
Перечислите успешно выполненные TODO (ставя 'x' внутри квадратных скобок), если какие-то в попробовали сделать, приложили существенное количество усилий но не вышло - расскажите об этоим
TODO 1001 запустите test_mesh_min_cut/DepthMapsToPointClouds и убедитесь что облака точек построенные по картам глубины выглядят правдоподобно
TODO 1002 запустите test_mesh_min_cut/FromAllDepthMaps и убедитесь что полигональные модели построенные по картам глубины выглядят правдоподобно и например для DATASET_DIR=saharov32, DATASET_DOWNSCALE=4, CAMERAS_LIMIT=5 выглядит похоже на это:
TODO 2001 appendToTriangulation(): реализуйте нормальную проверку объединять ли точку с уже добавленной ранее (с учетом r и MERGE_THRESHOLD_RADIUS_KOEF)
TODO 2002 добавьте проверку - не опирается ли треугольник на одну из фиктивных вершин (лежащих на гранях вспомогательного bounding box), можете для этого использовать bb_min и bb_max, или добавьте явный флаг в каждую вершину
TODO 2003 некоторые треугольники выглядят темными в результирующей модели, проблема уходит если выключить в MeshLab освещение (кнопка желтой лампочка - Light on/off) которое учитывает нормаль, которая строится с учетом порядка вершин треугольника (по часовой стрелке или против)
TODO 2004 подумайте и напишите тут какие вершины бывают без камер вообще? почему мы их пропускаем? что и почему случится если убрать это пропускание?
Пропускаем фиктивные вершины ббокса, которые добавили, чтобы гарантировать, что все интересующие нас ячейки не содержат бесконечную вершину (специальную вершину, которую cgal использует для упрощения реализации алгоритма триангуляции). Если пропускание убрать, придется как-то обрабатывать пересечение луча с бесконечными треуголниками
TODO 2005 изменится ли что-то если сильно увеличить пропускные способности ребер от истока? (т.е. сделать пропускную способность из истока равной бесконечности?)
Нет, потому что эти ребра нам не интересны с точки зрения восстановления поверхности, а чем больше их пропускная способность, тем выше шансы, что они не попадут в минимальный разрез (т.е. они и так не попадали, а с бесконечными весами и тем более).
TODO 3001 сделайте пропускные способности на ребрах не единичными а затухающими тем сильнее чем ближе к поверхности
TODO 3002 сделайте соединение со стоком в ячейке не сразу за вершиной, а на небольшом углублении (пропорционально размеру точки)
TODO 3500 Weak support: реализуйте идею из jancosek2011 - Multi-View Reconstruction Preserving Weakly-Supported Surfaces
TODO 4001 подвиньте вершины в среднюю координату среди всех точек которые в ней зачлись
TODO 4002 поэкспериментируйте со значением MERGE_THRESHOLD_RADIUS_KOEF, есть ли интересности? какое значение вы бы предложили использовать в условной финальной версии?
TODO 4003 добавьте усреднение цветов среди всех склеившихся вершин, приложите скриншот с/без усреднения
TODO 5001 как в целом можно ускорить реализацию? есть ли идеи? попробуйте это сделать (и запишите какого ускорения получилось добиться, а так же изменился ли результат)
TODO 5002 а не рапараллелить ли? если будете распараллеливать - убедитесь что вы заменили triangulation.incident_cells() на triangulation.incident_cells_threadsafe()
TODO 5003 не слишком ли часто вызывается triangulation.locate()? может оно тормозит? (поиск ячейки содержащей заданную точку)
TODO 5004 CGAL::do_intersect() проверяет луч и треугольник на пересечение абсолютно точно, и это надежно, но медленно. А что если мы грубо будем проверять пересечения (самописным простым кодом на float-ах)? А когда пересечение не факт что произошло - ну что же, пусть этому лучу не повезло, будем надеяться это не сильно изменит результат? Попробуйте и сравните скорость и результат.
Приложите скриншоты результатов (тех что понравились больше всего, или может в концепте "сделал такое-то изменение, разница результата очень впечатлила, вот скрин ДО, вот скрин ПОСЛЕ!")
Если вы пробовали ускорять - расскажите о попытках и какое это давало ускорение, а так же насколько менялся результат
// Создайте PR.