lf_synthetic_aperture — LIGHTFIELD refocus op

데이터 종류: lightfieldimage2d

호출: import lightfield; lightfield.lf_synthetic_aperture(lf, slope=0.0, mask=None, *, reduce='mean', interp='linear', edge='nearest')(또는 opslightfield.get("lf_synthetic_aperture"))

사용법

모양을 준 조리개로 재초점 —— `reduce="median"` 이면 가림물 너머로도.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

Same shift-and-add geometry as :func:lf_refocus, with two additions:

• *mask* — a `(V, U) weight array from :func:lf_aperture_mask` (or your

own). A small mask is a stopped-down aperture: less defocus blur, less

light. `None` weights every view equally.

• *reduce* — how the aligned views are combined. `mean` is the classical

(and linear) synthetic aperture. `median` is the interesting one: when

a foreground occluder covers a *minority* of the views at a pixel, the

median rejects it and the background behind it is reconstructed —

looking through a fence, or through a rack of parts. `max / min`

are the order-statistic extremes, useful for specular / shadow work.

`median, max and min` use the mask only to *select* views

(weight > 0), because an order statistic has no meaningful weighting;

that is stated here rather than silently ignoring the weights.

The see-through result is not a metaphor. When fewer than half the views

are blocked at a hidden pixel, more than half of them carry the identical

background sample and the median is that sample exactly. Measured

2026-09-01 on a 9x9x64x64 field with an occluder covering 25% of the centre

view at slope 3.0 (blocking at most 46% of the views at any hidden pixel):

RMS against the true, hidden background was 0.0 for `median` and

0.159 for `mean`, with the centre view itself at 0.280. Push the coverage

to 35% (up to 60% of views blocked) and the guarantee is gone — the median

lands at 0.133, worse than nothing.

Returns a `(H, W)` 2-D image.

Raises `ValueError`: *lf* not a valid light field, a *mask* whose

shape is not `(V, U)` or which is non-finite / negative / selects no view,

a non-finite or over-large *slope*, unknown *reduce* / *interp* / *edge*.

자세한 사용 가이드

lightfield_depth 패밀리 가이드

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

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

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

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

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

lightfield_depthpy -3.11 examples/lightfield_depth.py

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

lf_from_mla · lf_disparity_to_depth · lf_all_in_focus

같은 카테고리(refocus)

lf_refocus · lf_focal_stack · lf_aperture_mask


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

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