vol_resize — 3D geom_transform op

資料種類:voxelvoxel

呼叫: import fullseye as fs; fs.ledger.vol_resize(vol, factor=None, shape=None, order=1, spacing=None, mode='nearest', cval=0.0)(要直接呼叫實作,import volxform; volxform.vol_resize(vol, factor=None, shape=None, order=1, spacing=None, mode='nearest', cval=0.0);從台帳取用則 ops3d.get("vol_resize"))

經台帳呼叫的回傳值: fullseye.ledger.vol_resize(...) 只回傳**宣告的 out 型別 voxel 的值**(底層函式還會回傳輔助資訊)。需要被捨棄的部分時,請用 fullseye.ledger.vol_resize.raw(...),或直接呼叫 volxform.vol_resize

• 底層回傳: spacing 付き時

用法

把體重取樣到新網格(`scipy.ndimage.zoom`,cell 語義)。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

Exactly one of *factor* / *shape* selects the target grid:

• `factor — a positive scalar or (fz, fy, fx)`; the output shape is

`round(dim * f) per axis (scipy's rule, each >= 1`).

• `shape — the exact output (D', H', W')` (positive integers).

Sampling uses `grid_mode=True` (cell semantics): a voxel is a *cell*, so

an integer upscale `f maps input voxel i` exactly onto the output

block `[f*i, f*(i+1)) (exact at order=0`), and the volume's physical

extent is preserved by the recomputed spacing — not the endpoint-aligned

convention of scipy's `grid_mode=False` default.

*mode* / *cval* set how samples that fall outside the input cells (the outer

half-voxel shell of every upscale at `order >= 1`) are filled. The default

`"nearest"` extends the border voxel, so **a constant volume resizes to

the same constant** and a ramp keeps its end values. Until 2026-09-03 the

call was hard-wired to `"grid-constant" with cval=0`, which blended

the outer shell toward 0 — an upscale x2 of an all-ones volume came back

with `min = 0.42` on its faces, an artefact that then leaked into every

downstream measurement. Other accepted modes: `"reflect", "mirror"`,

`"grid-mirror", "grid-wrap", and "grid-constant"` (with *cval*)

when a zero-padded border is genuinely wanted. `"constant" / "wrap"`

are rejected with a hint (scipy needs the `grid-` variants here).

The return shape depends on *spacing*:

• `spacing=None (default) — returns the resampled (D', H', W')`

float64 volume alone.

• *spacing* given (`(sz, sy, sx) or a VolumeMeta`) — returns a

2-tuple `(out, new_spacing)` where

`new_spacing = (sz * D/D', sy * H/H', sx * W/W')`, so

`out.shape * new_spacing == vol.shape * spacing` per axis: the physical

size in millimetres is invariant. Keep the new spacing — every

spacing-aware operator downstream needs it.

*order* is the spline degree (exact integer 0..5; 0 = nearest — the choice

for masks / labels, 1 = trilinear — the grey-value default; >1 can

overshoot, see the module notes). Shrinking aliases (no band-limiting) —

mean-pool with :func:volops.volume_downsample first for large reductions.

Raises `ValueError` when both or neither of *factor* / *shape* are given,

or when the output would exceed `MAX_VOXELS` (checked before any

allocation — a huge factor cannot balloon memory).

參考(範例資料・文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

vol_geometry_transformpy -3.11 examples_3d/vol_geometry_transform.py

型別可銜接的下一個運算子(可接受 voxel 作為輸入)

voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa

同類別(geom_transform)

vol_rotate · vol_affine


*Provenance: volxform.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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