Files
GhiVideo_v4/docs/history/2026-07-09_1754_카메라감지-라벨박스-영상콤보.md
T
b23042andClaude Fable 5 84f4921826 제주 드론 도로영상 지원: DJI 로그 어댑터·분할영상 연속재생·카메라 자동감지·오버레이 개선
- 제주 DJI 시간기반 비행로그(CSV) 파싱 어댑터: 세그먼트 창 정렬, 가상 fps 환산
- 분할 영상(이름 오름차순) 연속재생 + 좌상단 영상목록 콤보(선택 재생), 세그먼트별 드론 로그 재정렬
- KML 다중 파일 병합 파싱: STA 체이니지 측점(71개) + 지장물 신포맷(타입/이름/텍스트박스_색상)
- 시설물 라벨: 지정색 배경 박스 + 흰 글자, 팝업 중앙 정렬, 호버 구간 깜빡임 수정
- 카메라 자동감지(djmd: ZenmuseP1, focal 29.9mm) + <영상명>.camera.json PC 저장/폴더 자동 적용
- Yaw 자동추정(GPS 진행방위 기반) + 라벨 드래그 Yaw 역산 모드
- 스테이션바: GPS 이동거리 진행도(호버 시 정지), 노선밖 거리 표기, 원거리 구조물 마크 제외
- 서버: /api/camera 라우트, ecosystem 포트 54000·제주 데이터 경로
- docs/history: 작업 이력 21건

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 20:58:49 +09:00

51 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-07-09 드론 카메라 자동 감지 + 라벨 박스 스타일 + 영상목록 콤보
**소요 시간**: 16분
**Context 사용량**: input 430k / output 12k tokens
## 작업 내용 (요청 4건)
### 1. 드론 카메라 정보 자동 감지 → 카메라 파라미터 적용 (POI 매핑 어긋남의 핵심 원인)
DJI MP4의 `djmd` 데이터 트랙(프레임별 protobuf 텔레메트리)을 분석해 필드 구조 해독:
| 필드 | 내용 | 제주 값 |
|------|------|--------|
| 1.1.2 | 카메라 모델 | **DJI ZenmuseP1** (풀프레임 측량 카메라) |
| 1.7 / 1.6 / 1.8 | 해상도 / fps | 3840×2160 / 59.94 |
| 6.4 / 6.5 / 6.6 | 위경도(라디안) / 타원체고(mm) | 33.40°/126.29°/174.4m |
| **8.6** | **초점거리 (0.1mm, 35mm 환산)** | **299 → 29.9mm** |
- 기존 기본값 24mm vs 실제 29.9mm(DL 24mm 렌즈 × 4K 비디오 크롭 ≈1.25) → FOV 과대 → POI 어긋남
- `client/src/utils/cameraMeta.ts` 신규: 브라우저에서 영상 File 앞 8MB를 읽어 djmd 첫 샘플 파싱
(모델 문자열 탐색 → 샘플 경계 역추적 → protobuf 필드 수집). 실파일 검증 완료
- `loadFolderGeoData`: 감지 정보를 FolderGeoData/geoStore(cameraInfo)에 적재, 드론 프레임 focalLen에도 반영
- StationOverlay: **저장된 보정(localStorage calib)이 없는 데이터셋은 감지 focal 자동 적용**,
카메라 파라미터 패널에 "📷 모델 · 초점 · fps" 표시 + **[적용] 버튼**(수동 적용 — 이미 튜닝한
데이터셋은 자동 적용을 건너뛰므로 이 버튼 사용)
### 2. '드론 높이와 POI 이격거리' 슬라이더 최대값 120 → 300
### 3. 영상목록 → 좌상단 타이틀 아래 콤보 드롭다운
- 우하단 패널/하단 버튼 제거 → 노선 배너(타이틀) 아래 `left:8, top:paramTop` 콤보 버튼
(현재 파일명 + n/m + ▼). 클릭 시 목록이 아래로 펼쳐지고 선택 시 즉시 전환·접힘
- RoutePanel이 paramTop+40부터 시작해 겹침 없음
### 4. POI 라벨: 십자/아이콘 제거, 지정색 배경 + 흰 글자
- 캔버스 렌더를 "텍스트 박스"로 변경: 배경 = KML 텍스트박스_색상(라운드 사각형), 글자 = 흰색
- POI 지점에 가로 중앙 정렬, 히트박스도 박스 영역으로 갱신
## 검증
- tsc+vite 빌드 통과, 54000 포트 새 번들(index-Bn6Gs0g2.js) 서빙
- 카메라 감지 알고리즘을 실파일 앞 8MB로 재현 검증: ZenmuseP1 / 29.9mm / 3840×2160@59.94 정확 추출
## 다음 단계 참고
- **이미 캘리브레이션이 저장된 데이터셋(이번 세션에서 슬라이더 만진 경우)은 focal 자동 적용이
건너뛰어짐** → 카메라 파라미터 패널의 [적용] 버튼으로 29.9mm 반영 필요
- djmd 6.x(위경도 라디안/타원체고)는 CSV보다 정밀한 포즈 소스 — 향후 CSV 대체 후보
- 8.8(변화 필드)은 포커스 거리로 추정 — 미사용