validate op• 데이터 종류: flow2d → mask
• 호출: import fullseye as fs; fs.ledger.piv_outlier_mask(flow, threshold=2.0, epsilon=0.1)(구현을 직접 호출하려면 import pivops; pivops.piv_outlier_mask(flow, threshold=2.0, epsilon=0.1), 원장에서 가져오려면 opspiv.get("piv_outlier_mask"))
정규화 중앙값 검정(Westerweel & Scarano 2005)으로 이상 벡터를 찾는다.
각 벡터에 대해, 8 근방의 중앙값으로부터의 잔차를 근방 잔차의 중앙값으로 나눈다. 분모에 epsilon(기본값 0.1 px, PIV 측정 불확도의 기준)을 더하는 것은, 균일한 장에서 분모가 0이 되어 전부가 이상값이 되는 것을 막기 위해서이다 —— 이 항이없으면 이상적인 입력일수록 검정이 무너진다.
★경사가 급한 장에서는 해가 된다(2026-09-06 실측). Rankine형 소용돌이(심의 반경 28 px)에 다단 PIV를 걸었더니, 임계값 2가 주운 5개는모두 심의 가장자리(중심에서 32 px)에 늘어서 있었고, 실제 오차는 0.07-0.45 px —— 이상값이 아니라 속도 분포가 꺾이는 곳이었다. 근방 중앙값으로 고르게 하면 RMS가 0.134에서 0.230으로 악화된다(임계값 5에서는 1개도 줍지 않고 0.134 그대로).
검정은 "근방과 다름 = 잘못"이라는 가정에 서 있으므로, 진짜 불연속을잘못이라고 부른다. 걸지 말지는 장의 성질을 보고 정할 것.
Args:
flow: (2, h, w).
threshold: 이 값을 넘으면 이상값. 관행은 2.
epsilon: 분모의 바닥값 [px].
Returns:
(h, w)의 bool. True가 이상값(nan도 True).
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• piv_flow_from_particles — py -3.11 examples/piv_flow_from_particles.py
• poc_change_detection_misreg — py -3.11 examples/poc_change_detection_misreg.py
• poc_river_surface_velocity — py -3.11 examples/poc_river_surface_velocity.py
mask 를 입력으로 받는 것)validate)*Provenance: pivops.py — PIV 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.