rle_region op• 資料種類:rle_region × rle_region → rle_region
• 呼叫: import fullseye as fs; fs.ledger.vol_rle_union(a, b)(要直接呼叫實作,import volregion; volregion.vol_rle_union(a, b);從台帳取用則 ops3d.get("vol_rle_union"))
在 run 上求兩個 RLE 區域的聯集(不解碼)。
開銷與 run 數而不是 voxel 數相關 —— 合併兩個 512**3 遮罩時完全不會觸及 512**3 規模的任何東西。region 必須共享相同的 volume shape。
步驟(_rle_boolean 共用): 將兩個 region 的 run 映射到按每個平面列取 W + 1 步長的 1 條整數直線上(+1 的間隙使相鄰列的 run 不會連接), 將各 run 的 start/end 作為事件排列,掃掠每個區間的覆蓋狀態 (在 a 內側, 在 b 內側), 把 ia | ib 為真的區間重新合併為最大長度的 run。計算量相對 run 數 n 為 O(n log n)(np.unique 的排序)。
回傳值: 相同 shape 的新 VolRLE(run 按列順序、x 遞增,相鄰和重疊的 run 已合併為 1 個)。兩者都為空時為 run 0 個的 region。vol_rle_decode(union) == decode(a) | decode(b) 在 voxel 層級成立。
驗證(ValueError): 任一方不是 VolRLE 或一致性檢查失敗 / a.shape != b.shape(位於不同 volume 中的 region 無法合成)。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• rle_region_efficiency — py -3.11 examples_3d/rle_region_efficiency.py
rle_region 作為輸入)vol_rle_decode · vol_rle_volume · vol_rle_bbox · vol_rle_centroid · vol_rle_intersect · vol_rle_difference · fuse_to_voxel
rle_region)vol_rle_encode · vol_rle_decode · vol_rle_volume · vol_rle_bbox · vol_rle_centroid · vol_rle_intersect · vol_rle_difference · vol_rle_components
*Provenance: volregion.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.