При переносе сложного промышленного объекта в цифру — например, турбины или архитектурного памятника — традиционное 3D-сканирование часто упирается в бюджет и логистику. Мы решаем эту задачу с помощью фотограмметрии: по серии обычных фотографий восстанавливаем точную трёхмерную геометрию. Результат — плотное облако точек, полигональная сетка и текстурированная 3D-модель, готовая к CAD, VR или рендеру. Экономия бюджета по сравнению с лазерным сканированием достигает 70% (на примере проекта цифрового двойника цеха — сэкономили существенную сумму). За 5+ лет мы реализовали 20+ таких проектов для промышленности, строительства и геймдева. Например, для цифрового двойника производственного цеха обработали 1500 снимков с дрона за 8 часов, получив точность 1.5 мм.
Проблемы, которые решаем
Низкое качество исходных снимков. Клиенты часто присылают фото, сделанные на смартфон с неравномерным освещением и малым перекрытием. Это приводит к пробелам в облаке точек и искажениям геометрии. Мы компенсируем это алгоритмической фильтрацией и адаптивным подбором параметров SfM.
Нестабильное освещение и блики. Блестящие и зеркальные поверхности — классическая боль фотограмметрии. Для них применяем кросс-поляризацию или мультиэкспозицию, а на этапе обработки — маскирование бликов с помощью нейросетевых детекторов.
Огромные объёмы данных. Для большого объекта (цех, здание) количество фото достигает 2000–3000. Обработка такого набора без оптимизации занимает сутки. Мы внедряем распределённые вычисления (Ray, Dask) и квантизацию облаков точек, сокращая время до часов.
Почему фотограмметрия эффективнее лазерного сканирования?
Лазерные сканеры точнее (до 0.1 мм), но они дороги и требуют доступа к объекту. Фотограмметрия даёт сопоставимую точность (0.5–3 мм) для большинства задач, при этом стоимость оборудования в 10 раз ниже, а съёмку можно проводить с дрона. Для цифровых двойников зданий и памятников это оптимальный выбор. Получите консультацию, чтобы оценить, подойдёт ли фотограмметрия для вашего проекта.
Как настроить SfM пайплайн?
Photogrammetry пайплайн состоит из двух этапов: SfM и MVS. Разберём настройку на примере COLMAP и OpenMVS.
Шаг 1: Извлечение и сопоставление признаков Используйте SuperPoint вместо SIFT — он лучше работает на гладких поверхностях:
import pycolmap from pathlib import Path def run_sfm_reconstruction(images_dir: str, output_dir: str) -> dict: """Полный SfM пайплайн через COLMAP""" image_path = Path(images_dir) output_path = Path(output_dir) output_path.mkdir(exist_ok=True) database_path = output_path / 'database.db' # Извлечение признаков pycolmap.extract_features(database_path, image_path, sift_options={'max_num_features': 8192}) # Сопоставление признаков pycolmap.match_exhaustive(database_path) # Инкрементальная реконструкция maps = pycolmap.incremental_mapping( database_path=database_path, image_path=image_path, output_path=output_path ) reconstruction = maps[0] # largest map return { 'num_cameras': len(reconstruction.cameras), 'num_images': len(reconstruction.images), 'num_3d_points': len(reconstruction.points3D) } Шаг 2: Плотная реконструкция OpenMVS даёт баланс скорости и качества:
import subprocess def run_dense_reconstruction(sfm_output: str, output_dir: str): """Плотная реконструкция через OpenMVS""" subprocess.run([ 'InterfaceCOLMAP', '-i', sfm_output, '-o', f'{output_dir}/scene.mvs' ], check=True) subprocess.run([ 'DensifyPointCloud', '-i', f'{output_dir}/scene.mvs', '--resolution-level', '1', '--number-views', '5' ], check=True) subprocess.run([ 'ReconstructMesh', '-i', f'{output_dir}/scene_dense.mvs', '--quality', '3' ], check=True) subprocess.run([ 'TextureMesh', '-i', f'{output_dir}/scene_dense_mesh.mvs' ], check=True) Шаг 3: Постобработка в Open3D
import open3d as o3d import numpy as np def process_point_cloud(pcd_path: str) -> dict: pcd = o3d.io.read_point_cloud(pcd_path) pcd_clean, _ = pcd.remove_statistical_outlier(nb_neighbors=20, std_ratio=2.0) pcd_clean.estimate_normals( o3d.geometry.KDTreeSearchParamHybrid(radius=0.05, max_nn=30) ) mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson( pcd_clean, depth=9 ) density_threshold = np.quantile(densities, 0.05) mesh = mesh.select_by_index(np.where(densities > density_threshold)[0]) return { 'num_vertices': len(mesh.vertices), 'num_triangles': len(mesh.triangles), 'bounding_box': mesh.get_axis_aligned_bounding_box() } Что влияет на точность реконструкции?
Точность зависит от трёх факторов: качества снимков, перекрытия и алгоритмов. Даже при идеальных фото COLMAP может дать 1–3 мм, а Reality Capture — 0.5–2 мм. Для повышения точности до 0.1 мм используем лазерное сканирование, но фотограмметрия достаточна для 95% задач. Закажите аудит фото — мы определим ожидаемую точность.
Какой пайплайн выбрать: COLMAP или Reality Capture?
Если бюджет ограничен — ставим open-source COLMAP + OpenMVS. Он бесплатен, гибок, но требует программирования. Для коммерческих проектов с жёсткими сроками Reality Capture даёт ту же точность в 2 раза быстрее. Многие клиенты выбирают гибрид: COLMAP для предобработки, Reality Capture для финальной сборки. Закажите разработку индивидуального пайплайна под ваши задачи.
Требования к фотографиям
Качество реконструкции напрямую зависит от входных фото:
| Параметр | Рекомендация |
|---|---|
| Перекрытие кадров | 70–80% |
| Минимальное количество фото | 30–50 |
| Оптимальное количество | 100–300 |
| Угол между снимками | 15–30° |
| Освещение | Равномерное, без резких теней |
| Разрешение | 12 MP+ |
| Глубина резкости | Максимальная (f/8–f/16) |
Точность и время обработки
| Метод | Точность (мм) | Время (100 фото, CPU) |
|---|---|---|
| COLMAP + OpenMVS | 1–3 | 30–120 мин |
| Meshroom (AliceVision) | 1–5 | 45–90 мин |
| Reality Capture | 0.5–2 | 15–30 мин |
| Metashape (Agisoft) | 0.5–2 | 20–60 мин |
Что входит в работу
- Аудит исходных фото и консультация по съёмке.
- Проектирование пайплайна под вашу задачу.
- Реализация SfM + MVS с калибровкой и фильтрацией.
- Построение mesh, текстурирование, экспорт в требуемые форматы (PLY, OBJ, FBX, GLTF).
- Документация по воспроизведению результата.
- Обучение вашей команды работе с пайплайном.
- Техническая поддержка 3 месяца.
Сроки ориентировочно
| Применение | Срок проекта |
|---|---|
| Пайплайн обработки фотосессий | 3–5 недель |
| Автоматическая фотостудия с роботом | 8–14 недель |
| Система для инспекции/документации | 6–10 недель |
Точная стоимость рассчитывается после аудита ваших данных и требований. Свяжитесь с нами — мы оценим проект и предложим оптимальное решение.







