histogram_match — COLORTRANSPORT matching op

• 데이터 종류: image2d × image2d → image2d

• 호출: import fullseye as fs; fs.ledger.histogram_match(src, ref, bins=None, ties='average')(구현을 직접 호출하려면 import colortransport; colortransport.histogram_match(src, ref, bins=None, ties='average'), 원장에서 가져오려면 opscolortransport.get("histogram_match"))

사용법

src 의 값 분포를 ref 에 맞춥니다(1 차원 엄밀 최적수송).

순위를 유지한 채 참조의 분위점으로 바꿔 넣는다. bins를 지정하면, 그 단수의누적 분포로 근사한다 -- 빠르지만 엄밀하지 않게 되므로, 기본값은 None (엄밀)으로 해 두었다.

같은 값의 화소를 어떻게 다루느냐로, 그림의 의미가 바뀐다. 단조 사상이라면 "같은 입력은 같은 출력에 사상된다"여야 하지만, 소박하게 순위로 바꿔 넣으면 같은 값이 찢어진다. 실측(값 2가 4 화소 있는 정수 영상): 출력은 0.2222 / 0.3333 / 0.4444 / 0.5556의 4개로 나뉘었다. 즉 평탄했던 영역에, 원래 그림에 없던 농담이돋아난다. 정수 영상은 같은 값투성이이므로, 이것은 예외가 아니라 일상적인 상태.

• ties="average"(기본값) -- 같은 값의 화소에는, 거기에 할당된 참조값의 평균을 준다. 같은 입력은 같은 출력에 사상되어, 단조성이 유지된다. 그 대신 출력의 분포는 참조와 엄밀히는 일치하지 않게 된다(같은 값의 덩어리만큼, 분포가 계단 모양으로 뭉개진다). 연속인 입력(같은 값이 없음)이라면 엄밀 일치 그대로.

• ties="break" -- 순위 그대로 찢는다. 출력의 분포는 참조와 엄밀히일치하지만, 평탄부에 가짜 농담이 나온다. 분포를 엄밀히 맞추는 것이 목적이고, 그림으로 보지 않는다고 알고 있을 때만.

어느 쪽을 골라도 잃는 것이 있으므로(분포의 엄밀함 또는 평탄부의 평탄함), 말없이 한쪽으로 정하지 않고 인수로 했다.

다채널 그림에 그대로 걸면 채널 간 상관을 깨뜨린다. 각 축의 주변 분포는 맞지만, 색의 조합이 원래 없던 것이 될 수 있다. 상관째로 나르고 싶을 때는 color_transfer의 method="gaussian".

배경 지식 가이드(이 연산자 앞에 있는 물리·규약)

• colorimetry — 측색과 분광 지식 — 색은 ‘분광 × 광원 × 관찰자’로만 정해진다

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

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

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

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

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

• color_transport — py -3.11 examples/color_transport.py

• poc_change_detection_misreg — py -3.11 examples/poc_change_detection_misreg.py

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

poisson_blend

같은 카테고리(matching)

color_transfer · gaussian_transport_map


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

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