error_level_map — IMGFORENSICS compression op

데이터 종류: image2dimage2d

호출: import imgforensics; imgforensics.error_level_map(image, quality: 'int' = 90, normalize: 'bool' = True) -> 'np.ndarray'(또는 opsimgforensics.get("error_level_map"))

사용법

ELA(오차 수준 분석). 지정 품질로 재압축한 차분의 지도. `image2d`.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

Krawetz 2007。JPEG は 8x8 ブロックごとに量子化するので、一度圧縮された領域

同じ品質で再圧縮しても誤差が小さく、後から貼られた / 描かれた領域は誤差が

大きく残る、という考え方に基づく。

`normalize=True`(既定)なら最大値で割って [0, 1] にする(見るため)。

`False` なら 8 bit 階調そのままの絶対誤差(数えるため)。

**Pillow が無ければ :class:ImportError。近似には落ちない。** DCT の量子化だけを

numpy で真似ると、符号化器の丸め・色空間変換・チャネル間引きが消えた *別物* に

なる。それを ELA と名乗ると、この族が潰そうとしている「もっともらしく間違う」を

自分でやることになる。

この地図が言えないこと(`tests/test_imgforensics.py` が数で固定。

256x256 の 1/f^1.6 画像の中央 64x64 に別画像を貼ったもの):

==================================== =============== =============== =========

元の画像 貼付部の ELA 背景の ELA 比

==================================== =============== =============== =========

無圧縮(一度も JPEG を通らない) 0.1966 0.1793 1.096

一度 JPEG 品質 75 を通した 0.1966 0.0401 4.898

==================================== =============== =============== =========

無圧縮 PNG では何も言えない。上の 1.096 倍は「貼った所と貼っていない所が

区別できない」という意味である。**ELA が意味を持つのは「元が JPEG」のとき

だけ**で、そのとき初めて 4.898 倍という差になる。

• よく言われる「ELA は高周波を追っているだけ」も、この画像では成り立たない ——

ELA と Sobel 勾配強度の相関は 0.003(無圧縮)/ 0.057(JPEG 済み)。

ELA は 8x8 ブロックの量子化残差を見ているので、勾配とは別のものを測っている。

それでも上の表のとおり 無圧縮では改竄を分離しない。「勾配の言い換えだから

駄目」なのではなく、比べる基準になる量子化履歴が無いから駄目である。

• 平坦な領域は圧縮しても誤差が出ないので、改竄されていても暗いままになる。

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

image_forensics_auditpy -3.11 examples/image_forensics_audit.py

타입이 이어지는 다음 연산자(image2d 를 입력으로 받는 것)

perceptual_hash · fingerprint_correlate · jpeg_quality_estimate · jpeg_ghost_map · noise_inconsistency_map · copy_move_regions · watermark_embed · watermark_extract

같은 카테고리(compression)

jpeg_quality_estimate · jpeg_ghost_map · jpeg_ghost_quality


*Provenance: imgforensics.py — IMGFORENSICS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.