compression op• 데이터 종류: images → image2d
• 호출: import fullseye as fs; fs.ledger.jpeg_ghost_quality(ghosts, qualities=None) -> 'np.ndarray'(구현을 직접 호출하려면 import imgforensics; imgforensics.jpeg_ghost_quality(ghosts, qualities=None) -> 'np.ndarray', 원장에서 가져오려면 opsimgforensics.get("jpeg_ghost_quality"))
고스트 지도의 열 → 화소마다 잔차가 최소가 되는 품질의 지도. image2d.
qualities를 생략하면 jpeg_ghost_map의 기본값(40..95 step 5)을 가정한다 —— 장수가 맞지 않으면 ValueError(첨자와 품질이 어긋난 지도를 반환하지 않는다).
반환은 품질 그 자체를 화소값으로 갖는 (H, W)이므로, 값 범위는 [0, 1]이 아니다. 표시할 때는 정규화할 것(이 op는 수치를 반환하는 것이지 그림을 반환하지 않는다).
★ 합성 후에 한 번이라도 저장하면 이 argmin은 쓸 수 없다. 2026-09-06에쟀다. 배경 q92·소재 q60으로 32x32를 붙인 128x128에서:
==================== ================== ================
조건 붙인 곳 최빈 품질 배경 최빈 품질
==================== ================== ================
합성 후 저장 안 함 60(정답) 95
합성 후 q95로 저장 95(배경 동일) 95
==================== ================== ================
이유는 스윕의 잔차가 품질에 대해 단조 감소한다는 것 —— 마지막 저장 품질이스윕의 상단에 있으면 argmin은 모든 화소에서 거기에 들러붙는다(실측: 저장 후의잔차 평균은 230.7 → 5.9e-02로 일직선으로 내려간다). 실운용의 변조는 반드시 저장을거치므로, 이 읽기는 실제 화상에서는 상수 지도가 된다. 기존 테스트 test_jpeg_ghost_finds_the_pasted_quality가 통과하는 것은 합성 후에 한 번도저장하지 않았기 때문이다(그 자체는 올바른 단위 테스트이며, argmin의 구현은틀리지 않았다 —— 읽는 방식이 현장에 맞지 않는다).
대신 쓰는 것: 스윕 방향 잔차 곡선의 골의 깊이(국소적인 오목함). 같은 실험에서 화소별 ROC를 구하면 argmin 읽기는 AUC 0.500(난수와 같음), 골 깊이 읽기는 AUC 0.997 / 위양성 1 %에서 검출률 0.944였다(examples/poc_forensics_roc.py). 그래도 전체를 q60으로 다시 저장하면 0.475까지 떨어진다 —— JPEG 고스트는 후처리에 약하다, 는 것이 올바른 요약이다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• image_forensics_audit — py -3.11 examples/image_forensics_audit.py
• poc_forensics_roc — py -3.11 examples/poc_forensics_roc.py
image2d 를 입력으로 받는 것)perceptual_hash · fingerprint_correlate · error_level_map · jpeg_quality_estimate · jpeg_ghost_map · noise_inconsistency_map · copy_move_regions · watermark_embed
compression)error_level_map · jpeg_quality_estimate · jpeg_ghost_map
*Provenance: imgforensics.py — IMGFORENSICS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.