Форматы данных, используемые в VeriDepth API. Источник истины — DataFormatRegistry.CreateDefault() в src/Storage.DataCatalog.Abstractions.
PNG-файл с embedded метаданными в tEXt-чанках. Кадр самоописателен — все ключевые поля сервер извлекает автоматически.
Content-Type при загрузке: image/png
Ключевые tEXt-поля внутри PNG:
| Поле (JSON-путь) | Описание |
|---|---|
| FrameMetadata.SchemaVersion | Должно быть measurement_capture_png/v1 |
| FrameMetadata.Device.DeviceUniqueId | → EvidenceDeviceId / DeviceId |
| FrameMetadata.Device.HardwareDeviceId | → HardwareDeviceId |
| FrameMetadata.CalibrationLinkage.CalibrationId | → CalibrationRef |
| FrameMetadata.CalibrationLinkage.BaselineMm | Базис стерео в мм |
| Calibration | Полный профиль калибровки JSON |
Правый кадр встроен в PNG. Сервер вычисляет ImageSha256 = SHA256 пикселей изображения (без EXIF/tEXt) для дедупликации.
AVI-файл со стерео-видео side-by-side (левый|правый кадр, RGB24, без потерь). Используется для 3D-реконструкции.
Content-Type при загрузке: video/x-msvideo
Обязательный заголовок: X-Format-Version: stereo-scan-video/v1
HTTP-заголовки (метаданные):
| Заголовок | Описание | |
|---|---|---|
| X-Device-Id | ID устройства | обяз. |
| X-Hardware-Device-Id | Hardware ID прибора | |
| X-Calibration-Ref | ID калибровки | |
| X-Artifact-Uid | Стабильный UID артефакта (для связи с другими объектами) |
Кастомный RIFF-чанк vdMt: UTF-8 JSON структуры StereoScanVideoMetadata — artifact_uid, device_id, hardware_device_id, calibration_id, calibration_profile_json, stereo_layout, fps, frame_count, pixel_format, created_at_utc, source_class, consent.
Полная спека: src/Storage.DataCatalog.Abstractions/StereoScanVideoMetadata.cs
JSON-документ, описывающий одно измерение и связанный с capture (PNG или видео).
{
"schemaVersion": "training-evidence/v1", // обязательно
"evidenceId": "gtpkg-<hex>", // обязательно, уникальный ID
"captureSha256": "<sha256>", // обязательно, capture должен существовать
"deviceId": "0454628", // обязательно
"sourceClass": "point_to_point", // обязательно
"conditionBucket": "standard", // обязательно
"consent": "explicit_opt_in", // обязательно, только это значение
"measurementJson": { ... }, // данные измерения
"groundTruthJson": { ... } // наземная истина (опц.)
}
| sourceClass | Описание |
|---|---|
| point_to_point | Измерение расстояния между двумя точками |
| scan | Полный видео-скан эндоскопа |
| our_real3d_cube | Куб с вмятинами (наш реальный 3D-объект) |
| other_device_metrology_board | Калибровочная доска от другого устройства |
JSON-документ с полной стерео-калибровкой прибора. Загружается через POST /api/calibrations/v1/devices/{serial}/calibrations.
| Поле | Тип | Описание |
|---|---|---|
| schemaVersion | string | Должно быть calibration-profile/v1 * |
| calibrationId | string | Уникальный ID, напр. cal-<hex> * |
| deviceSerial | string | Серийный номер прибора * |
| rmsStereoPx | double | RMS стерео в пикселях * |
| baselineMm | double | Базис между камерами в мм * |
| k5Passed | bool | Прошёл ли тест k5 * |
| isRecommendedActive | bool | Рекомендована ли как активная * |
| computedAt | ISO 8601 | Время вычисления |
| softwareVersion | string | Версия ПО, вычислившего калибровку |
| orientation | object | rotationDegrees, flipHorizontal, flipVertical |
| profileJson | object | Полные интринсики L/R, экстринсика (R, T) * |
Спека: CalibrationApiModule.vb, метод TryValidateProfile. Текущий активный профиль 1/11: serial 0454628, cal-ee1abd6a3a501ff5cd759a6c6a95ad9e, baselineMm=3.556, rmsStereo=0.803px.
ZIP-архив Windows-дистрибутива. Content-Type при загрузке: application/zip. X-Platform: windows.
TAR GZ-архив Linux-дистрибутива. Content-Type при загрузке: application/x-tar. X-Platform: linux-x64.
DataFormatRegistry.CreateDefault()