compression op• 데이터 종류: image2d → images
• 호출: import fullseye as fs; fs.ledger.jpeg_ghost_map(image, qualities=None, block: 'int' = 16) -> 'list'(구현을 직접 호출하려면 import imgforensics; imgforensics.jpeg_ghost_map(image, qualities=None, block: 'int' = 16) -> 'list', 원장에서 가져오려면 opsimgforensics.get("jpeg_ghost_map"))
JPEG 고스트(Farid 2009). 품질을 훑어 얻은 재압축 잔차 지도의 열. images.
어떤 영역이 품질 q0로 한 번 압축되어 있으면, q = q0로 재압축했을 때그 영역의 차분이 골이 된다. 화상 전체가 같은 q0이면 골은 전면에 나오지만, 다른 품질로 압축된 부분이 붙어 있으면 그 영역만 다른 q에서 골이 된다.
반환은 len(qualities)개의 (H, W) 지도(block 정사각의 박스 평균으로 평활화한제곱 차). 골의 위치를 화소마다 읽는 것은 jpeg_ghost_quality.
Pillow 필수(ImportError). 이유는 error_level_map과 같다.
실측(tests/test_imgforensics.py::test_jpeg_ghost_finds_the_pasted_quality, 품질 92의 배경에 품질 60으로 압축한 64x64를 붙인 192x192, 스윕 40..95 step 5):
붙인 영역의 골은 품질 60(참값 60, 오차 0), 배경의 골은 품질 95. 배경이 92가 아니라 95가 되는 것은 스윕이 5 스텝이라 92를 포함하지 않기 때문이며, 골은 스윕한 품질 중에서만 나온다 —— 스텝보다 세밀한 품질은 읽을 수 없다.
• 샘플 데이터 카탈로그(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
images 를 입력으로 받는 것)sensor_fingerprint · jpeg_ghost_quality
compression)error_level_map · jpeg_quality_estimate · jpeg_ghost_quality
*Provenance: imgforensics.py — IMGFORENSICS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.