Как мы будем дорисовывать то, чего в скане нет — и что для этого нужно собрать. Три яруса, шесть инструментов, двадцать реальных сканов.
| Ярус | Вердикт | Почему |
|---|---|---|
| 1 микро-дыра на зубе | СТОИТ. Классика, без ML |
Заплатка физически не может испортить скан — она только добавляет вершины. Замерено: сдвиг исходной геометрии ровно 0.000 мм. 0.2 секунды на скан. |
| 2 десна у линии среза | НЕ РЕШАЕТСЯ заделкой дыр |
У A-01 замкнутых дыр ноль. Недостающая десна лежит ЗА открытой кромкой — контура для интерполяции нет. «Умный» дефолт тут начинает выдумывать челюсть. |
| 3 крупная утрата | НЕ СТРОИТЬ. Кейса не существует |
A-09 — не «пол-челюсти». У него все 14 зубов и самая большая площадь из 20 сканов. Он рваный, а не обрезанный. Утраты такого класса в наших данных нет ни одной. |
| признак | медиана | худший | кто |
|---|---|---|---|
| замкнутых дыр | 1 | 17 | A-09 нижняя |
| площадь дыр | 0.30 мм² | 85.6 мм² | A-09 нижняя |
| длина открытой кромки | 2724 верш. | 4296 | A-09 верхняя |
| баланс зубной поверхности Л/П | ~90 % | 30.1 % | A-09 верхняя |
| зубов на месте | 14 | 14 | у ВСЕХ 20 сканов |
Ни у одного скана нет отсутствующего зуба. Ни у одного нет утраченной половины челюсти. Ярус 3 в том виде, как он поставлен, не имеет ни одного представителя в наших данных.
A-05 верхняя: 4 дыры, все касаются зуба (0.50 / 1.58 / 2.24 / 6.21 мм²). Сегодня прод их не трогает. Новая политика требует дорисовывать — с пометкой.
Заплаточные методы не могут сдвинуть скан — по построению. Они лишь добавляют вершины к существующим. Замерено на всех: сдвиг исходных вершин 0.000 мм, сдвиг зубной поверхности 0.000 мм. Это не «мы аккуратно настроили» — это структурная гарантия.
Противоположность — пересборочные методы (Poisson): они перестраивают всю поверхность, сдвигают скан на 0.220 мм и уничтожают вершины вместе с цветом и метками зубов. Для модели, по которой меряют и ставят находки, это дисквалификация.
| инструмент | лицензия | оффлайн | CPU | время | сдвиг скана | вершины / метки | выдумано за кромкой | качество заплаты |
|---|---|---|---|---|---|---|---|---|
| прод (гейт зуба вкл) | своё | ✅ | ✅ | 2.7 с | 0.000 мм | сохранены | 0 | дыры оставлены открытыми |
| прод (гейт снят) | своё | ✅ | ✅ | 2.9 с | 0.000 мм | сохранены | только дыра | 56 складок |
| libigl harmonic / biharmonic | MPL-2 | ✅ | ✅ | 3.0–3.3 с | 0.000 мм | сохранены | только дыра | складок больше |
| MeshFix, кромка защищена | GPL-3 | ✅ | ✅ | 0.2 с | 0.000 мм | все 134 360 — 1:1 | 5.3 мм² | 8 складок |
| MeshFix, дефолт (nbe=0) | GPL-3 | ✅ | ✅ | 11 с | 0.000 мм | 1:1 | 2340 мм², вылет 9 мм | 1233 складки |
| Poisson (Open3D) | MIT | ✅ | ✅ | 102 с | 0.220 мм | УНИЧТОЖЕНЫ | 131 мм² | гладко |
Замер, который закрывает вопрос: у A-01 верхней — 0 замкнутых дыр при открытой кромке в 2669 вершин. Недостающая десна не является дырой: она лежит за кромкой, там, где сканер не достал. У заделки дыр там нет контура для интерполяции. Ни MeshFix, ни Poisson, ни libigl эту задачу не решают — они её физически не видят.
| метод | что произошло на A-01 верхней |
|---|---|
MeshFix, дефолт nbe=0 | затянул внешнюю кромку: 2913 мм² выдуманной поверхности, вылет до 14 мм. Нарисовал фальшивое нёбо. |
| Poisson | 131.5 мм² (2.69 % площади) за пределами скана, вылет 1.24 мм — «пузыри» экстраполяции. |
| MeshFix с защитой кромки | 0 новых вершин, 0 выдумано. Честно ничего не сделал — потому что делать нечего. |
nbe=0 («затянуть все границы») — дефолт,
который стоит первым в любом туториале. На челюсти он означает «нарисуй несуществующую анатомию».
Одна строка — защита самой длинной граничной петли — отделяет честный инструмент от генератора
фальшивых челюстей.
Честный ответ: достроить десну «правдоподобно» = выдумать её. Данных за кромкой нет и взяться им неоткуда. Три варианта, по убыванию честности:
Бриф исходит из того, что у A-09 утрачена половина челюсти. Замер этого не подтверждает.
| A-09 верхняя | A-01 верхняя (норма) | |
|---|---|---|
| зубов на месте | 14 | 14 |
| площадь поверхности | 5277 мм² — максимум из 20 | 4637 мм² |
| зубных вершин (сырые метки) | 88 270 | 60 891 |
| замкнутых дыр | 7 (+17 на нижней) | 0 |
| открытая кромка | 4296 (в 1.6× длиннее) | 2669 |
У A-09 больше геометрии и больше размеченных зубных вершин, чем у здорового скана. Ничего не утрачено. Он рваный и дырявый, а не обрезанный.
Перекос зубной поверхности 3.3× возникает после нашего собственного
пайплайна — его создаёт наш trim / apron_trim /
demote_flap_teeth. В сырых метках перекос всего 1.66×, и почти не размечен только
зуб 23 (493 вершины). Это наш дефект, а не дефект сканера — и он важнее любой дорисовки.
Не строить реконструкцию. Строить детектор неполноты, который вешает плашку «скан неполный — рекомендуется пересканирование». Порог берётся из переписи и лежит в пустом промежутке:
Порог откалиброван на одном выбросе и одном сканере. Это заготовка, а не закон.
| путь | оффлайн / CPU | риск канона | вердикт |
|---|---|---|---|
| Второй / старый скан того же пациента регистрация Open3D по палатальным складкам |
✅ / ✅ | управляемый: скан мог устареть | Единственный честный путь. Это не генерация, а реальные данные пациента. Гейты: невязка в перекрытии, совпадение номеров зубов, подтверждение врача. Слой помечается «данные из скана от <дата>», не «реконструкция». |
| Зеркальная реконструкция | ✅ / ✅ | высокий: переносит зубы сохранной стороны | Только как беззубая подложка по решению врача. При односторонней агенезии (4–5 % населения) или после экстракции зеркало сфабрикует зуб, которого нет. |
| Генеративные меши (MeshDiffusion / PVD / LION) | ❌ GPU обязателен | критический: мультимодальность | Отклонить. «Несколько правдоподобных вариантов» — буквально машина выдумывания зубов. Валидировано лишь на утратах 5–20 %, не на половине дуги. |
| SSM (статистическая модель формы) | ✅ / ✅ | средний, измеримый | Тёмная лошадка, и она реальна: детерминированный результат + мера неуверенности. Но готовой открытой SSM верхней челюсти по IOS не существует. R&D-трек, не фича. Умеет работать детектором «зуб есть / зуба нет». |
license.txt, osf.io/xctdy) —
CC BY-NC-ND 4.0. NC запрещает обучение в интересах коммерческого продукта прямо;
позиция самого Creative Commons («Using CC-licensed Works for AI Training», 2025) это
подтверждает. Единственный путь — письменный запрос коммерческой лицензии у правообладателей
(CRNS Sfax / Udini / Inria). Публичной оферты нет.
Открытых IOS-датасетов с коммерчески пригодной лицензией не существует вообще. Проверены все: Teeth3DS+ (NC-ND), 3Shape FDI-16 (NC-SA), ортодонтический Tsinghua (DUA запрещает коммерцию), Open-Full-Jaw (NC-SA, к тому же КТ-кость), MedShapeNet (наследует NC-ND). Зеркала лицензию не отмывают.
Self-supervised «вырежи и восстанови» на своих полных сканах. Прямой прецедент: J Dent 2025 обучил достройку IOS на 314 сканах, симулируя дефекты удалением 5–20 % точек. Ground truth = наш же исходный меш. Лицензионно чисто на 100 %.
Качественный полный скан = полная дуга 7→7 без обрезки, десна захвачена апикально с запасом ≥5–8 мм (именно этот запас и есть ground truth для дорисовки края), нёбо для верхней, связный меш, сырой экспорт без постобработки сканера.
Интраоральный скан — это биометрические персональные данные (GDPR ст. 9 — подтверждено профильной юр-работой J Forensic Leg Med 2023; 152-ФЗ ст. 11). По 3D-облаку зубов и нёбных складок человек идентифицируется — удаление ФИО из файла НЕ делает скан анонимным. Чтобы Игорь мог копить сканы для обучения, нужна отдельная форма согласия с явно названной целью «разработка и обучение ПО / ИИ».
Спайк показал, что гарантия достижима структурно, а не на честном слове — шестью проверяемыми инвариантами:
assert V_out[:n] == V_in. Любой метод, который пересобирает меш (Poisson),
падает на нём автоматически. Это и есть «оригинал нетронут» — не обещание, а проверяемое
равенство.synthetic — флаг на вершину. Вьювер её красит («доработано»),
кнопка возврата = выбросить грани с synthetic-вершинами; оригинал восстанавливается ровно,
потому что инвариант 1 его сохранил. Сейчас такой маски в коде нет вообще —
дорисованное неотличимо от сканированного. Эту дыру надо закрыть первой.present до реконструкции обязано
совпасть с посчитанным после. Это механически запрещает «создать или убрать зуб».Инварианты 1, 3 и 4 — это ассерты в CI на всех 20 сканах. Дешёвые, и ловят регресс молча.
synthetic + кнопка возврата + инварианты 1/3/4. Без этого нельзя
включать никакую дорисовку. Фундамент обоих ярусов.