# Project Status

## 기능 현황

| 기능 | 상태 | 비고 |
|------|------|------|
| YouTube 다운로드 | ✅ 완료 | yt-dlp, 1080p 우선 다운로드 |
| 프레임 추출 | ✅ 완료 | fps=2, MAX_FRAME_WIDTH=1280 캡 |
| 패턴 감지 (overlay) | ✅ 완료 | Tab 라인 검증 포함 |
| 패턴 감지 (split) | ✅ 완료 | 밝기 기준 엄격화 |
| 패턴 감지 (scroll) | ✅ 완료 | 기본 폴백 |
| HSV 기반 Tab 검출 | ✅ 완료 | 2-tier HSV 마스크, 960px 업스케일 |
| MSE 기반 중복 제거 | ✅ 완료 | 480px 정규화 비교 |
| pHash 클러스터 중복제거 | ✅ 완료 | dHash 32×32(1024bit), max_hamming=20 |
| 파노라마 스티칭 | ✅ 완료 | 템플릿 매칭 수평 스크롤 합성 |
| 오버레이 정규화 비교 | ✅ 완료 | 480×180 정규화 + 전체 히스토리 MSE 비교 |
| OCR 기반 마디번호 중복 제거 | ✅ 완료 | easyocr 기반 상단 숫자 판독 보조 |
| PDF/PNG 생성 | ✅ 완료 | A4 + 롱 이미지 |

## 처리 파이프라인 (scroll)

```
Raw Frames → HSV Strip 검출 → Median Crop → MSE 1차 → 파노라마 스티칭 → pHash 2차 → OCR 3차 → PDF
```

## 최근 변경

| 날짜 | 변경 내용 |
|------|-----------|
| 2026-03-29 | **[BUG4]** 재생 커서의 픽셀 면적 비중에 따른 무한 페이지 복제 버그 탈피 → 가로폭(Column) 변화율 기반 감지 공식 전면 교체 |
| 2026-03-29 | **[REFACTOR]** `ScoreExtractor` 객체지향 타일링 도입 (A4 크롭 오차 방지) 및 디버그 분리 |
| 2026-03-27 | **[BUG1]** `_merge_scroll_candidates` 씬전환 가속도 조건 제거 → 씬전환 오탐 9→1 |
| 2026-03-27 | **[BUG2]** `merge_panoramas_list` 매칭 임계치 0.60→0.50 → 파노라마 분리 3→1 |
| 2026-03-27 | **[BUG3]** `_detect_measure_bars` 마디선 최소간격 필터 100px 추가 → 오탐(17px) 제거 |
| 2026-03-25 | 마디번호 기반 중복 검색 기능(OCR) 파이프라인 적용 |
| 2026-03-25 | 1080p 우선 다운로드 + MAX_FRAME_WIDTH=1280 캡 (OOM 방지) |
| 2026-03-25 | dHash 32×32 + max_hamming=20으로 pHash 정밀도 향상 |
| 2026-03-25 | 파노라마 스티칭: 템플릿 매칭 스크롤 오프셋 검출 + 연속 프레임 합성 |
| 2026-03-24 | 패턴 감지 고도화: overlay→split→scroll 우선순위 |

## 알려진 제한사항

- 순차 영상 처리 시 메모리 누적 주의 (gc.collect 필수)
- test_pipeline.py 아직 메인 코드와 완전 통합 안 됨
