field op• 데이터 종류: flow2d → image2d
• 호출: import fullseye as fs; fs.ledger.piv_divergence(flow, spacing=1.0)(구현을 직접 호출하려면 import pivops; pivops.piv_divergence(flow, spacing=1.0), 원장에서 가져오려면 opspiv.get("piv_divergence"))
발산 d(dy)/dy + d(dx)/dx. 비압축이면 0 —— 독립적인 검산에 쓸 수 있다.
식: gradient(flow[0], spacing, axis=0) + gradient(flow[1], spacing, axis=1) (numpy.gradient: 내부는 중앙 차분, 격자의 끝은 한쪽 차분). flow[0]이 행 방향의 변위 dy, flow[1]이 열 방향의 변위 dx, x = 열, y = 행. 행이 아래쪽이어도 발산의 부호는 좌표의 방향에 의존하지 않는다(와도 piv_vorticity와는 달리 반전하지 않는다). 양 = 솟아남, 음 = 빨려 들어감.
• flow: (2, h, w), 성분 (dy, dx) [px/frame] (piv_cross_correlate / piv_multipass의 반환값). h, w >= 2가 아니면 미분할 수 없으므로 ValueError(창이 너무 커서 벡터가 1개뿐인 경우). 유한성은 검사하지 않는다 ―― piv_replace_outliers(method="nan")의 NaN은인접 2셀로 퍼진다.
• spacing: 벡터 간격 [px], 양의 유한값. info["step"]을 넘긴다(기본값 1.0 그대로이면 단위가 "1/벡터 간격"이 된다).
• 반환값: (h, w) float64, 단위 1/frame(spacing이 px일 때). piv_to_velocity로 m/s로 만든 장과 spacing을 m로 하면 1/s.
2-D PIV에서 평면 밖의 속도 성분이 있으면 0이 아니게 되므로, "비압축인데 발산이크다"는 면외류나 이상값(piv_outlier_mask)의 지표. piv_velocity_gradient는 4성분 모두를 반환한다.
• 샘플 데이터 카탈로그(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_what_a_picture_cannot_check — py -3.11 examples/poc_what_a_picture_cannot_check.py
image2d 를 입력으로 받는 것)piv_cross_correlate · piv_multipass · piv_deform_pass · strain_from_displacement · correlation_quality · speckle_quality
field)piv_vorticity · piv_flow_magnitude · piv_to_velocity · piv_velocity_gradient · piv_q_criterion · piv_swirling_strength · piv_strain_rate
*Provenance: pivops.py — PIV 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.