frequency op• 데이터 종류: voxel → voxel
• 호출: import fullseye as fs; fs.ledger.vol_fft_lowpass(vol, cutoff, spacing=None)(구현을 직접 호출하려면 import volfreq; volfreq.vol_fft_lowpass(vol, cutoff, spacing=None), 원장에서 가져오려면 ops3d.get("vol_fft_lowpass"))
가우스 저역통과: 1/cutoff 보다 거친 구조를 남깁니다(복셀 단위 또는 실치수).
더 미세한 디테일은 부드럽게 감쇠된다. 전달 함수 exp(-f^2 / (2 cutoff^2)) — DC 성분(평균 강도)은 그대로통과한다. 대표적 용도: 조명/두께 드리프트 추출.
절차: np.fft.rfftn으로 실수 FFT → 각 주파수 bin의 크기 |f| = sqrt(fz^2 + fy^2 + fx^2) 에 전달 함수 exp(-|f|^2 / (2 cutoff^2))를 곱함 → irfftn으로 되돌린다. 입력과 같은 (D, H, W)의 float64를 반환한다(spacing을 전달해도 shape는 바뀌지 않는다).
인자:
• cutoff: 양의 유한값. spacing=None이면 cycles/voxel(Nyquist = 0.5), spacing=(sz, sy, sx)(mm, 또는 spacing_mm을 가진 volio.VolumeMeta)를전달하면 cycles/mm. 비등방 voxel에서는 축마다 fftfreq(n, d=spacing)로 물리주파수로 바꾸므로, 같은 물리 구조가 같게 취급된다.
• 감쇠는 Gaussian이며, |f| = cutoff에서 exp(-1/2) ≈ 0.61(brick-wall이아니다. 링잉은 생기지 않는다).
검증(ValueError): 3-D가 아님 / NaN·Inf / voxel 수가 MAX_VOXELS(1 << 27) 초과 / cutoff가 비양수·비유한·2제곱이 언더플로할 만큼 작음 / spacing이길이 3이 아님·비양수.
주의: FFT는 volume을 주기적으로 간주한다. 마주 보는 면의 휘도 차가 크면 wrap을넘어 누설된다(창 적용은 말없이 하지 않는다). vol_fft_highpass는 엄밀히 이것의 여집합 1 - lowpass이며, 둘의 합은 입력과 일치한다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• deconv_fft_restore — py -3.11 examples_3d/deconv_fft_restore.py
voxel 를 입력으로 받는 것)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
frequency)vol_fft_highpass · vol_fft_bandpass
*Provenance: volfreq.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.