describe op• 데이터 종류: voxel → descriptor
• 호출: import fullseye as fs; fs.ledger.sh_descriptor(vol, L=8, nradii=12, ntheta=32, nphi=64, device='cpu')(구현을 직접 호출하려면 import match3d; match3d.sh_descriptor(vol, L=8, nradii=12, ntheta=32, nphi=64, device='cpu'), 원장에서 가져오려면 ops3d.get("sh_descriptor"))
• GPU: 이 연산자는 GPU 경로가 있습니다(device="cuda")
구면조화 기술자. 동심 shell 의 SH 대역 에너지 ‖f_l(r)‖ 를 (반지름 × 주파수) 로 돌려줍니다.
2D 닫힌 윤곽을 1D Fourier 기술자로 나타내는 것의 선→면 리프트: 3D 닫힌 곡면은 SH로 나타내고, 대역 에너지는회전이 m을 대역 안에서 섞을 뿐이므로 회전 불변(Kazhdan 2003). 모든 shell을 grid_sample로 취해고정 SH 기저와 내적 → 대역별 제곱합. retrieval/verification용 전역 시그니처. 반환값 (nradii,L+1).
honest 공개(2026-08-30 리뷰 실측): 구면 구적은 균일 θ×φ 격자 합(Gauss-Legendre 가 아님)이므로 값은 엄밀한 SH 대역 에너지의 근사(기본값 32×64에서 l=4 자기 내적이이론값의 ~0.62배, 해상도↑로 1에 수렴). match_sh_descriptor는 L2 정규화+코사인유사도이므로 같은 ntheta/nphi끼리의 비교에는 영향이 없지만, 절댓값을 물리량으로쓰거나 다른 해상도 설정 간에 비교하는 것은 불가.
인수: vol은 정육면체(N,N,N) 전제. 중심 c = (N−1)/2와 좌표 정규화에 축 0의 길이 N 만 쓰므로, 정육면체가 아니면 축 1,2의 샘플 위치가 왜곡된다(검증은 없음). shell 반경은 0.2·rmax ~ rmax = N/2 − 1을 nradii 등분(voxel 단위), 각 shell을 ntheta × nphi의 (θ,φ) 격자에서 trilinear 샘플링한다. L은 최대 차수. 반환값 (nradii, L+1) float32 numpy, [i, l]이 i번째 shell의 차수 l 에너지(음이 아님). 물체는 volume 중심에 둔다(중심이 어긋나면 회전 불변성이 무너진다. moment_axes의무게중심으로 먼저 중심 맞춤을). scipy의 sph_harm_y/sph_harm을 호출 시 import.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• sh_descriptor_retrieval — py -3.11 examples_3d/sh_descriptor_retrieval.py
• shape_descriptor — py -3.11 examples_3d/shape_descriptor.py
descriptor 를 입력으로 받는 것)fuse_to_voxel · shape_distance
describe)*Provenance: match3d.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.