生成元: tools/gen_wingvox_gallery.py(py -3.11 tools/gen_wingvox_gallery.py)。
画像はすべて fullseye の op(volcolor / volops / render3d)と numpy 合成で
描いており(matplotlib 不使用)、図に焼いた数値は 1 つ残らずその場で op を呼んで
得た実測値である。乱数は seed 固定・幾何も固定なので再生成でバイト列が一致する
(--verify で検査)。
このウィングの主張は 1 つ ―― 3-D のラベルは、切る前に色を付けなければならない。 断面ごとに色を付けるとラベル番号が断面ごとに振り直され、同じ部品が層ごとに 別の色になる。展示 2 がその差を本数で示す。
束ね方は tools/exhibit_tile.py の 3 種に従う。静止画の Markdown は
すべて サムネイル表示 + クリックで原寸 の形で出してある。

↑ 色分けしたボクセルの断面送り ―― 16 粒子を 26 連結でラベリングし、ボリュームのまま色を付けてから 24 枚の断面へ切り出した。1 つの粒子は最初から最後まで 1 色 (実測: 全 16 成分の色数が 1)。spacing (0.50, 0.20, 0.20) mm で 総体積 62.560 mm3。 使用 op: vol_label, vol_colorize_labels, vol_label_slice_rgb, vol_label_shape_stats, vol_label_palette。
docs/articles/assets/media/wingvox_slice_flow.gif (24 コマ, 432x616 px, 0.33 MB)docs/articles/assets/thumbs/wingvox_slice_flow_thumb.jpg769ad42caa6786932daf625bafa14a34686fc299dc96b23a11404564b9343228
↑ ちらつきの対比 ―― 違うのは色を付ける順序だけ ―― 左は断面ごとに 2-D ラベリングして色を付けたもの。断面が変わるたびに番号が振り直されるので、20 / 24 断面で少なくとも 1 粒子の色が変わる ((粒子, 断面) の変化 62 / 108 組 = 57.4 %、16 粒子すべてが一度は変わる)。右はボリュームで色を付けてから切ったもので、変化は 0 断面 / 0 組。同じパレット・同じ seed で、違うのは順序だけである。 使用 op: vol_label, vol_label_color_flicker, vol_colorize_labels, vol_label_slice_rgb, colorize_labels。
docs/articles/assets/media/wingvox_flicker.gif (24 コマ, 596x468 px, 0.37 MB)docs/articles/assets/thumbs/wingvox_flicker_thumb.jpgb22e88054154f9ce33e1504ed9e4b109955e2e7f86d24227cdff77f8fd732a41↑ 6 / 18 / 26 連結 ―― 近傍の定義が成分数を決める ―― 同じ 2 つの立方体でも、頂点 1 点だけで接している場合は 6 連結 2 成分 / 18 連結 2 成分 / 26 連結 1 成分、稜線で接している場合は 2 / 1 / 1 となる。色数は成分数にそのまま連動する ―― 融合すれば色が 1 つ減る。 使用 op: vol_label, vol_label_volume_render, vol_label_palette。
docs/articles/assets/wingvox_connectivity.png (774x692 px, 31 kB, 6 パネル / 3 列)docs/articles/assets/wingvox_connectivity_thumb.jpg (57 kB)1e71d481fec54a3b648163520a0c954e2077d102f7859d1b9da06e36196a01d6
↑ 体積でふるいにかけても、残った粒子の色は動かない ―― min_volume を 0 から 9.320 mm3 まで 17 段で上げ、粒子を 1 つずつ落としていく。落ちた粒子は背景になるが、残った粒子の色は 1 画素も変わらない(全 17 コマで実測・確認)。番号を振り直さない (relabel=False)からで、振り直すとパレットの行が動いて色は総取り替えになる。 使用 op: vol_label, vol_label_shape_stats, vol_select_labels, vol_label_volume_render, vol_colorize_labels。
docs/articles/assets/media/wingvox_sieve.gif (17 コマ, 432x616 px, 0.30 MB)docs/articles/assets/thumbs/wingvox_sieve_thumb.jpged2622bdcb2dbbd98d792fb9c4e15c65ef20c0c688f4e3f272345affcfc97bd6
↑ 元の CT に色ラベルを重ねる ―― α を掃引する ―― 断面 z=8 で alpha を 0 から 1 へ往復させる。前景の平均変化は 0.0000 → 0.0262 と alpha に直線で比例し、背景の変化は alpha に依らず 0.0000(色はラベルの上にしか乗らない)。輪郭だけ塗る mode='boundary' なら前景 3128 ボクセルのうち 1648(52.7 %)しか塗らないので、下の構造が完全に見える。 使用 op: vol_label, vol_label_overlay, vol_label_slice_rgb。
docs/articles/assets/media/wingvox_overlay_alpha.gif (20 コマ, 432x616 px, 0.99 MB)docs/articles/assets/thumbs/wingvox_overlay_alpha_thumb.jpgfcb879348b2dcf66cdf37bc2aad03a7cc786499ee3c358d304a6d6f6636c1ca7
↑ 色付きメッシュのターンテーブル ―― 16 個の成分それぞれの bbox 部分体に marching cubes をかけ、三角形 7088 枚のメッシュ 16 個にした。頂点は spacing (0.50, 0.20, 0.20) mm を掛けた物理座標で、render3d.render_mesh の z バッファで合成している。粒が縦に伸びて見えるのはそのほうが正しいからで、z の刻みが面内の 2.5 倍あるためである(展示 4 と同じ話)。色は断面図とまったく同じパレットの同じ行なので、切った絵と回した絵で同じ粒子を目で追える。 使用 op: vol_label, vol_labels_to_meshes, look_at, intrinsics_from_fov, render_mesh。
docs/articles/assets/media/wingvox_mesh_turntable.gif (24 コマ, 380x538 px, 0.45 MB)docs/articles/assets/thumbs/wingvox_mesh_turntable_thumb.jpg4a2ba556d6751c838b4b68264026913f89e33a444e67eb73fc2606ec9d344240↑ 凡例つきの計測表 ―― どの色がどの粒子か ―― 色分けした図は、凡例が無ければ「きれいなだけ」で終わる。16 粒子の色見本・体積 mm3・全体比・等価直径・球形度・伸長度・視野端への接触を並べた。総体積 62.5600 mm3、比率の合計 1.000000。1 ボクセル = 0.020000 mm3。最大は #2ddc8a の 9.3200 mm3、最小は #15d4c9 の 0.5600 mm3。 使用 op: vol_label, vol_region_props, vol_label_shape_stats, vol_label_legend, vol_label_palette。
docs/articles/assets/wingvox_legend.png (900x626 px, 104 kB)docs/articles/assets/wingvox_legend_thumb.jpg (79 kB)996d79e05286f61b29e5add295e2a5519b6e7b87a2eede1d8e5fdec023a2e504