← 목록
기타 2026-06-11 6KB 읽기 6분

CIF v3.0 + CVF v2 트릿트리 고도화 — 실사진/실영상 충실 코덱

개요

크라우니 벡터형 4상균형3진 이미지(CIF)·비디오(CVF) 코덱을 실사진/실영상을 충실히 인코딩·렌더하도록 병렬 고도화. 딥리서치 + 울트라 병렬. 근본원인은 좌표 직렬화 폭이었고, 좌표폭 확장으로 양쪽 모두 해결.

근본 원인 (역설계 + 키스톤 검증)

  • CIF/CVF 모두 씨앗 x/y/w/h를 3트릿(±13) 으로 직렬화 → 13×13 / 27×27 모자이크 한계.
  • 그러나 트릿트리 재귀 분할(tritTreeEncode)과 절대좌표 사각형 렌더(cifToPixelBuffer)는 이미 정상.
  • 키스톤 실측: 좌표폭 8트릿(±3280)으로 넓히니 81×81 실사진 모사 이미지 PSNR 37.6dB / 6.5:1 충실 복원.
→ 좌표 직렬화만 넓히면 해결. (빌드 전 검증으로 리스크 제거)

무엇을 했는지 (울트라 병렬 4 에이전트)

CIF v3.0 (crowny-image/server.js, :9872)

  • 좌표폭:8 헤더 + encodeSeedLineV3/decodeSeedLineV3(x,y,w,h 각 CW트릿).
  • rasterToCIFv3(pixels,W,H) — 실픽셀 → 트릿트리(균일임계<24, MAX_DEPTH 9) → v3 직렬화.
  • POST /encode{w,h,pixels:[r,g,b,...]}(729×729 가드) → 충실 CIF 등록(6561 티어).
  • GET /png/:id?w=&h=zlib 기반 PNG 인코더 직접 구현(IHDR/IDAT filter0/IEND) → 브라우저 표시.
  • 하위호환: 좌표폭 헤더 없으면 3트릿(v2.1)으로 폴백 — 라이브 구 포맷 정확 재현 검증.
  • 실측: 81×81 PSNR 39.6dB, 씨앗 897<6561px, /png 유효 PNG, /encode→/png 라운드트립 39.6dB.

CVF v2 (crowny-video, :9877)

  • 신규 lib/cvf-codec.js(좌표폭8 씨앗, 트릿트리 spatialEncode, I/P델타, 렌더, PSNR).
  • cvf-encoder.js 재작성(encodeVideo I=공간/P=델타/GOP, ffmpeg MP4→PPM 경로).
  • server.js 디코더/플레이어(CVFDecoder.parse/parseSeed/renderFrame) 광좌표 동기화 + 포맷 불일치 버그 수정(가짜 바이너리헤더→텍스트헤더, 마지막 프레임 flush off-by-one).
  • 실측: I프레임 34.5dB, HD 720p 33.5dB, 9/9·11/11 프레임 재생, npm test 57/57, 서버 부활.

interior (crowny-interior, :9741)

  • 사진 업로드를 12×12 그리드 → 실해상도(최대 243×243) 픽셀로 고도화.
  • chat.js canvas 전체 RGB 추출 → server.js가 이미지서버 /encode 호출 → 충실 CIF(cifId).
  • 원본 PNG 표시 유지 + CIF 이제 충실(13×13 시그니처 → 실해상도). graceful 폴백.

한선씨 동반

  • crowny-interior/engine/CIF트릿트리.한선(좌표폭8 씨앗, 균일판정, 트릿트리 재귀) — 컴파일 통과.
  • crowny-video/CVF인코딩.한선(프레임타입 I/P/M, 씨앗큐브, 델타판정) — 컴파일 통과.

검증 결과 (실측)

  • CIF /encode→/png 81×81 39.6dB / 236:1, PNG 시그니처 유효 ✓
  • interior 실해상도 업로드 → cifId 발급 → /png 충실 렌더 200 ✓
  • CVF /api/encode-test 9프레임 I 34.5dB 전부 ≥30dB, 좌표폭8 ✓
  • v2.1 라이브 하위호환: 구 3트릿 CIF 정확 재현 ✓
  • npm test 57/57, 전 파일 node -c 통과
  • 4서버 안정(interior 9741 / image 9872 / video 9877 / AI 9852)

관련 파일

  • /Users/ef/crowny-image/server.js — CIF v3 코덱 + /encode + /png
  • /Users/ef/crowny-video/lib/cvf-codec.js(신규) cvf-encoder.js server.js — CVF v2
  • /Users/ef/crowny-interior/server.js public/chat.js — 실해상도 CIF 연동
  • /Users/ef/crowny-interior/engine/CIF트릿트리.한선, /Users/ef/crowny-video/CVF인코딩.한선

v3.1 품질개선 (딥리서치 ROI 반영, 2026-06-11)

딥리서치(A− 검증, DPICT/HEVC/JPEG-LS 정합)의 고-ROI 개선을 적용. v3.0 기본경로·v2.1 호환은 버전플래그/회귀가드로 보호.

개선적용실측
잔차 near-losslessPOST /encode {lossless:true} → 헤더 잔차:1 + 리프 잔차 트릿PSNR ∞ 완전무손실(maxErr=0). 46KB→304KB 옵트인
smooth 렌더GET /png/:id?smooth=1 경계 가우시안 평활밴딩 점프 29.4→9.8(−67%), 37.9→42.0dB
디더링기본 ON(PSNR-중립 ordered), ?dither=0 OFF회귀 0(39.6dB 유지), 실사진 미드톤 밴딩 완화
CVF 디더링I/P 프레임 기본 ON(리프크기 게이트)I-PSNR 34.5 유지, npm test 57/57
CVF 경계블렌딩decodeVideo(cvf,{smooth:true}) 옵션기본 OFF
  • 핵심 발견: 블록채움 구조에선 고전 FS 오차확산이 PSNR을 낮춤 → PSNR-중립 디더 + smooth 렌더로 밴딩 처리.
  • 잔차 모드는 DPICT(trit-plane)·JPEG-LS가 검증한 lossy+residual 경로 = 트릿 정합 무손실.

v3.2 2차 고도화 (딥리서치 ROI #3·#5, 2026-06-11)

개선적용실측
CVF 모션(ROI#5)블록매칭 모션추정 + region-wise MC(인접 동일MV 병합) + 적응GOP(장면전환→강제I) + Motion프레임(MUUU)이동영상 232KB→82KB = 64.6% 절감, 팬영상 12/12 PSNR 32.8dB, 정지영상 회귀0, npm 57/57
CIF RD분할(ROI#3)Lagrangian J=D+λR + 이방성 분할(3×3/1×3/3×1 중 최소J) + quality 0~100동일 39.6dB에 씨앗 969→881(9%↑) + λ 율-왜곡 연속제어. 포맷·디코드 불변(회귀0)
  • CVF closed-loop 인코딩(복원프레임 기준), 디코더/플레이어 MUUU 평행이동 1:1.
  • CIF RD는 엔코더 전용 — 씨앗 라인 포맷·잔차·좌표폭 헤더 불변. rd:false로 v3.0 폴백.
  • 한선씨 동반: CVF모션.한선(블록매칭/장면전환/모션씨앗), CIF_RD분할.한선(J=D+λR/분할이득/분산가중).

잔여 이슈

  • 딥리서치 ROI: YCbCr 채널배분, 비정방 분할 깊이확장, B-프레임(양방향) — 후속.
  • crowny-video JS 작성분 일부 .한선 동반 추가 변환(헌법).
  • v3.1 smooth/잔차·v3.2 RD quality는 옵트인 — 사이트 기본표시는 원본 PNG 유지.