vol_label_color_flicker — VOLCOLOR diagnose op

• 数据种类:voxel → table

• 调用: import fullseye as fs; fs.ledger.vol_label_color_flicker(vol_binary, axis='z', seed: 'int' = 0, connectivity: 'int' = 26, connectivity_2d: 'int' = 8)(要直接调用实现,import volcolor; volcolor.vol_label_color_flicker(vol_binary, axis='z', seed: 'int' = 0, connectivity: 'int' = 26, connectivity_2d: 'int' = 8);从台账取用则 opsvolcolor.get("vol_label_color_flicker"))

用法

数出「先分割再上色」与「先上色再分割」的差异。

对同一个 2 值体数据走 2 种流程:

A. 逐切片 —— 对各断面做 2-D 连通分量标注,

用与 imgio.colorize_labels 相同的调色板上色。

每个断面都会重新编号,所以即使是同一部件,层一变颜色也可能改变。

B. 在体数据上 —— 用 volops.vol_label 标注后

用 vol_colorize_labels 上色,之后再切。

返回 dict:

n_components 3-D 成分数 · n_slices 断面数 ·

slices_with_change 在 A 中有 1 个以上成分的颜色改变的断面数 ·

changed_pairs 在 A 中颜色改变的 (成分, 断面) 组数 ·

changed_components 在 A 中颜色至少变过一次的成分数 ·

volume_slices_with_change / volume_changed_pairs /

volume_changed_components B 的同样的量(结构上为 0) ·

pairs_checked 比较过的 (成分, 断面) 总数 ·

flicker_rate changed_pairs / pairs_checked。

比较的定义: 对各 3-D 成分 c,以 c 首次出现的断面上的颜色为基准,之后的断面上若 c 像素的众数颜色与基准不同则计为 1 件(1 个 3-D 成分可能在 1 个断面上裂成多个 2-D 碎片,所以代表取众数颜色。数量相同时取 RGB 字典序较小者 = 确定性)。

实测((24, 48, 48)、16 个球的参考体模,seed=0,axis="z", connectivity=26 / connectivity_2d=8): pairs_checked=108, slices_with_change=20 / 24,changed_pairs=62(57.4 %), changed_components=16 / 16。B 一侧 3 项全为 0 —— 是结构上的 0, 不是碰巧为 0(因为标签编号在整个体数据中唯一)。

对不正确的体数据、未知的 *axis*,或不是 6 / 18 / 26 (2-D: 4 / 8)的 *connectivity*,抛出 ValueError。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• voxel_labels_color — py -3.11 examples/voxel_labels_color.py

类型可衔接的下一个算子(可接受 table 作为输入)

—

同类别(diagnose)

—


*Provenance: volcolor.py — VOLCOLOR 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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