feat(pipeline): v3-v4 dedup + panorama stitching + 1080p support
- HSV-aware _trim_to_content (white ratio 30-97%) - pHash cluster dedup: dHash 32x32(1024bit), max_hamming=20 - Panoramic stitching: template matching scroll offset detection - 4-stage pipeline: MSE -> Panorama -> pHash - 1080p download priority + MAX_FRAME_WIDTH=1280 cap - test_pipeline.py with YouTube URLs and --download mode - 3 new known-issues documented - devlog + STATUS.md updated
This commit is contained in:
7
docs/devlog/2026-03-25.md
Normal file
7
docs/devlog/2026-03-25.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Devlog — 2026-03-25
|
||||
|
||||
| # | 시간 | 작업 설명 | 커밋 | 상태 |
|
||||
|---|------|-----------|------|------|
|
||||
| 1 | 00:00~01:00 | HSV 트림 + pHash 클러스터 중복 제거 (v3 고도화) | `pending` | ✅ |
|
||||
| 2 | 01:00~01:30 | 파노라마 스티칭: 템플릿 매칭 스크롤 오프셋 + 연속 프레임 합성 | `pending` | ✅ |
|
||||
| 3 | 12:00~21:50 | 1080p 다운로드 + dHash 32×32 + OOM 방지 (MAX_FRAME_WIDTH=1280) | `pending` | 🔧 |
|
||||
34
docs/devlog/entries/20260325-001.md
Normal file
34
docs/devlog/entries/20260325-001.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Pipeline v3→v4: Dedup + 파노라마 + 1080p 고도화
|
||||
|
||||
- **시간**: 2026-03-25 00:00~21:50
|
||||
- **Commit**: `pending`
|
||||
- **Vikunja**: 신규 태스크 생성 예정
|
||||
|
||||
## 작업 내용
|
||||
|
||||
### v3 고도화 (HSV + 트림)
|
||||
- `_trim_to_content`: HSV 색공간 기반 흰색비율(30~97%) 분석으로 Tab 영역 정밀 트림
|
||||
- Two-tier HSV 마스크 (pure white + bright pastel) → 노란 하이라이트/컬러 배경 정확 배제
|
||||
- 검출용 업스케일 960px width로 Tab 라인 인식률 향상
|
||||
|
||||
### v4 중복 제거 (pHash + 파노라마)
|
||||
- `_dhash` + `_dedup_by_hash`: pHash 클러스터링으로 반복 연습 구간 제거
|
||||
- `_detect_scroll_offset`: 템플릿 매칭(오른쪽 60%)으로 수평 스크롤 오프셋 측정
|
||||
- `_stitch_scroll_segment` + `_merge_scroll_candidates`: 연속 스크롤 프레임 파노라마 합성
|
||||
- 4단계 파이프라인: MSE → 파노라마 → pHash
|
||||
|
||||
### 1080p 전환
|
||||
- yt-dlp 포맷을 1080p 우선으로 변경 (기존 720p fallback to 360p 문제 해결)
|
||||
- MAX_FRAME_WIDTH=1280 캡으로 4K OOM 방지
|
||||
- dHash 16×16→32×32 (256→1024bit), max_hamming 50→20
|
||||
- test_pipeline.py에 YouTube URL 추가 + --download 모드 + gc.collect()
|
||||
|
||||
## 결정 사항
|
||||
- **MSE → 파노라마 → pHash 순서**: MSE가 완전 동일 제거, 파노라마가 겹침 합성, pHash가 반복 구간 제거. 각 단계가 다른 특성의 중복 처리
|
||||
- **dHash 32×32 선택**: 16×16은 Tab의 6선 구조를 구분 못함(모두 유사 hash). 32×32는 마디번호/음표 위치까지 차별화
|
||||
- **MAX_FRAME_WIDTH=1280**: 1920은 OOM 유발, 960은 360p와 큰 차이 없음. 1280은 1080p 소스에서 충분한 품질 + RAM 절약
|
||||
|
||||
## 미완료
|
||||
- **1080p 파이프라인 전체 테스트 미완료**: 3개 영상 순차 실행 시 메모리 행으로 결과 미확인
|
||||
- 사용자 피드백: "여전히 중복 있음" → 마디번호 기반 추가 검증 로직 필요
|
||||
- test_pipeline.py ↔ youtube_tab_to_pdf.py 완전 통합 미정
|
||||
Reference in New Issue
Block a user