synthesize_silhouette — 3D space_carving op

• 데이터 종류: points → image2d

• 호출: import fullseye as fs; fs.ledger.synthesize_silhouette(points, K, R, t, size: 'Tuple[int, int]', *, fill: 'bool' = True, dilate: 'int' = 1) -> 'np.ndarray'(구현을 직접 호출하려면 import visualhull; visualhull.synthesize_silhouette(points, K, R, t, size: 'Tuple[int, int]', *, fill: 'bool' = True, dilate: 'int' = 1) -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("synthesize_silhouette"))

사용법

3-D 점군을 (K,R,t) 카메라로 투영해 점유 화소가 True 인 실루엣(H,W bool)을 돌려줍니다.

GT 생성용. points (N,3) 를 X_cam = R X + t 로 투영하고, depth>0 이면서 영상 안에떨어진 화소를 True 로 한다. 희소한 점군에서는 투영상에 구멍이 생기므로, 기본값으로 구멍 메우기(fill, scipy.ndimage.binary_fill_holes)를 하여 속이 꽉 찬 전경 마스크로 만든다. 그다음 dilate 화소만큼 팽창시켜 "pixel 이 조금이라도 물체에 닿으면 전경"이라는피복(coverage) 의미의 실루엣으로 만든다 — 이것이 visual hull 의 recall(물체 voxel 을놓치지 않음)을 이산화 오차 아래에서도 보장하기 위한 보수 쪽의 반올림이다.

Parameters

points : (N, 3) array_like 월드 좌표의 점군(물체 표면/내부의 샘플).

K : (3, 3) 내부 파라미터.

R, t : (3, 3), (3,) 월드->카메라의 회전·병진.

size : (H, W) 출력 영상 크기.

fill : bool 투영상의 구멍을 메워 solid 로 만든다(기본값 True).

dilate : int 피복 마진으로 팽창시킬 화소 수(기본값 1, 0 이면 비활성).

Returns

(H, W) bool ndarray 전경이 True 인 실루엣.

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

• blender_interop — Blender와 함께 쓰기 — 형상을 만들고 fullseye로 측정(축·단위·정답 데이터의 함정)

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

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

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

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

• space_carving — py -3.11 examples_3d/space_carving.py

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

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

같은 카테고리(space_carving)

carve · visual_hull · carve_look_at


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

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