[ipywidgets] 33. interactで3D画像ビューア

ipywidgets

はじめに

このページでは、Jupyter Notebook/Labで使用できるipywidgetsのinteract機能を利用して、3D画像データの断面をインタラクティブに表示するビューアを作成する方法について解説します。ユーザーが直感的にスライダーなどを操作して、3D画像の任意の断面を動的に確認できるようになります。

コード

解説

モジュールのインポートなど

バージョン

データの読み込み

skimage.dataに含まれる細胞の3D蛍光顕微鏡像を使用します。配列の形状は(z, c, y, x)となっており、c=0は細胞膜の3D像、c=1は核の3D像を表します。

スライス画像の表示

60枚あるスライス画像のうち、index=2から4刻みでスライス画像を表示します。各画像には、ax.set_title()を使用してindexの値をタイトルとして表示しています。

3Dグラフで立方体を表示する関数

この関数は下記ページと同様に、3Dグラフ上に立方体とスライス位置を示すポリゴンを作成して表示します。3Dグラフのアスペクト比はset_box_aspectで調整しています。

How to draw a parallelepiped
I am trying to draw a parallelepiped. Actually I started from the python script drawing a cube as:import numpy as npfrom...

interactで任意の位置のスライス画像を表示

左側にスライス画像を表示し、右側には「fig.add_subplot(122, projection=”3d”)」を使用して3D画像を配置します。

「@interact(plane=(0, N – 1))」の下には、スライダーでplane値が変更された時の処理を記述します。この実装では、「ax.cla()」で前の画像を消去してから、新しいplane位置のスライス画像と3Dグラフを表示する方法を採用しています。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

本記事では、ipywidgetsのinteract機能を活用して3D画像データの断面を対話的に表示するビューアの作成方法について解説しました。この方法を利用することで、以下のようなメリットがあります:

  • スライダーなどのウィジェットを使って直感的に3D画像の任意の断面を表示できる
  • データ解析や医療画像の閲覧などに役立つインタラクティブなツールを簡単に構築できる
  • Jupyter環境で手軽に実装でき、データサイエンスワークフローに組み込みやすい

ipywidgetsを活用することで、プログラミングの知識が限られているユーザーでも、複雑な3Dデータを視覚的に探索することが可能になります。

参考

Explore 3D images (of cells) — skimage 0.25.2 documentation
skimage.data — skimage 0.26.0rc0.dev0 documentation
Using Interact — Jupyter Widgets 8.1.7 documentation

コメント