ラクラミのデジタル・デンタル・タメになる!

応用情報技術者の歯科医師による歯科診療に活かせるデジタル知識のおぼえがき

Slicer - DentalSegmentator がうまく動かない方へ

TwitterのDMで3名からご相談していただきました。 Slicerの画面が途中で止まるというものです。

どんなエラーが起きる?

どうやらDentalSegmentatorで使っているacvl_utilsというモジュールのインストール時にエラーが起こるようになっているようです

github.com

discourse.slicer.org

対策としてはacvl_utilsのバージョンを指定してインストールすることになります。

対策

Python Consoleの表示

まずslicerを起動して、右上にある

python consoleボタン
こちらをクリックします。 すると、画面下の方に
python console
このような、英字だらけの領域が表示されるはずです。 そこをクリックして、エンターキーを押すと >>>が表示されるはずです。

Python Consoleでpip_installを実行

>>>が表示されたら、そこに

pip_install("acvl_utils==0.2")

と入力し、エンターキーを押してください。すると、いかにもハッカー!って感じの文字がずらーっと表示されるはずです。

うまく行けばこれで治っているはずですが それでもうまくいかない場合、以下のコマンドも同様に試してみてください。

pip_install("tqdm")
pip_install("blosc2")
pip_install("nibabel")
pip_install("dynamic_network_architectures")
pip_install("batchgeneratorsv2")
pip_install("matplotlib")
pip_install("seaborn")

これでもうまくいかない場合、是非私までご相談いただければ、使えるようにお手伝いさせていただきます!

https://x.com/lacramydent?s=21

(別の話題)DICOMが読み込めない…

他に、自前のDICOMデーターが読み込めない、という相談も受けているのですが… これはCTから出力されるDICOMデータの形式がメーカーによって様々あることが原因のようです。 私も現在調査中です(読み込めないDICOMが手元にあり、色々試しましたがSlicerでは読み込めていません…) こちらについて、なにか情報をお持ちの方がいらっしゃいましたら、是非コメントかDMをいただけましたら幸いです…!

技工納期表を作ってみました

みなさま、お久しぶりでございます。 熱しやすく冷めやすいラクラミでございます。 前回の更新から大分間が空いてしまいました…

今回は技工物の納期をパッと見で確認できる技工納期表を作ってみましたので公開します! エクセルファイルで、マクロも使用していないため、色々制限のある職場でも安心ですね!

こちらからダウンロードして使ってください。

納期表(カレンダー形式)

デザインセンスがないのでシンプルです

納期表(表形式)

縦のプリントを想定した、表形式です

使い方

config

configシート
configシートで設定します。

作りたい表の年、1つの日付に対して表示する納期の数、納期(中◯日=◯営業日として、最大5つ設定できます)、休業日(日〜土、祝が設定できます最大5つ)を設定し、

月はドロップダウンリストから選びます
印刷したい月を選択するとカレンダー風, カレンダー風(編集可), 表形式, 表形式(編集可)のそれぞれのシートに納期表が表示されます。
(編集可)と書かれたシートは編集可能なので、好きなデザインにすることができます。

休日の設定

政府の発表した2024~2025年の日本の祝日に対応していますが、お盆休みや年末年始などは休日シートに入力する必要があります。

祝日たくさんほしい

この例のように、A列に日付(YYYY/M/d)B列に休日の名前(カレンダー風には名前も表示されます)を設定してください。

ファイルは自由に編集可、再配布可能です。みなさまのお役に立てるよう祈っています!

説明とか読み飛ばしちゃう方へ、記事の冒頭にもリンクがありますが、再掲します こちらからダウンロードして使ってください。

要望などがございましたらX(@lacramydent)やこの記事へコメントしてくださいますと幸いです。可能な限り対応します!

PCを遠隔操作!リモートデスクトップについて

はじめに

私はapple製品が好きです。
特に、apple製品どうしのシームレスな連携*1、そしてトラックパッドの操作性とカスタマイズ性*2に惚れ込んでいます。
いつもm1 macbook airちゃんをカタカタして色々やっています。しかしどんなに素晴らしいmacbook airちゃんでも

  • ノートPCだとパワー不足な作業
  • ドングルが入ったPCでないと操作できないソフト
  • windowsしか対応していないソフト

などなど、太刀打ちできないこともたくさん存在します。

愛しのmacbook airちゃん

ところで、みなさまはPCサポートを受けたことはありますか?電話でサポートを受けながらPCを遠隔操作してもらって…みたいなやつです
このような遠隔操作をリモートデスクトップと呼びます

リモートデスクトップを使えば、macbookでなんでもやりたいなんて夢が、叶うのです!

今回の記事では、リモートデスクトップについて、安全性についてをメインに書きました。この記事が役に立つことを祈っています!

リモートデスクトップとは

物理的に離れた場所にあるコンピュータを、ネットワークを介して操作する技術です。

リモートデスクトップを利用すると、接続先のコンピュータの画面を端末に表示しながら、端末のキーボードやマウスを使ったり、タップ操作などで操作することができ、離れたところからも接続先のコンピュータを使うことができるようになるのです!

リモートデスクトップの仕組み

wikipediaのリモートデスクトップ - Wikipediaの項には、リモートデスクトップを実現するソフトウェアがいくつも列挙してありますが、今回はその中で、導入が簡単・セキュリティがしっかりしているChrome Remote Desktopを紹介したいと思います。

安全性について

この仕組み、悪用できたら何でもアリですよね?
実はnetflixで話題の「地面師たち」でもリモートデスクトップが登場しています。

「地面師たち」めちゃくちゃおもしろかったです

第2話でニンベン師長井はホテルの端末にリモートデスクトップを仕掛け、見事ハッキングを成功させています。
以下netflixを繰り返し見て写経した、劇中に表示されていた画面です*3

sudo apt update sudo apt install freerdp2-x11
sudo dnf install freerdp
root@e049ecc733df:/# brew start freerdp /v:455.546.646.777

怖いですねーー怖いです。リモートデスクトップコワイ。
…実際には、簡単には悪用されることがないように、セキュリティ対策がなされていますので、詳しく説明します。

Googleアカウントのセキュリティ

Chrome リモートデスクトップを利用するには、接続元と接続先の両方で同じGoogleアカウントにサインインしている必要があります。このため、Googleアカウントのセキュリティを強化しておくことで、リモートデスクトップ利用時の安全性を高めることができます。セキュリティ対策が十分に講じられていれば、アカウントが不正にアクセスされるリスクを大幅に減らすことが可能です。

  1. 2要素認証
    2要素認証は、Googleアカウントのセキュリティを飛躍的に向上させる重要な機能です。通常のパスワードに加えて、もう一つの認証方法を追加することで、セキュリティが強化されます。具体的には、ログイン時にスマートフォンに送られる確認コードを入力したり、認証アプリでログインを承認したりする手順が追加されます。この方法を導入することで、仮にパスワードが第三者に漏洩した場合でも、不正アクセスを未然に防ぐことが可能です。

  2. セキュリティ通知
    Googleは、アカウントの安全を守るために、異常なログイン活動が検出された場合や、新しいデバイスからログインが試みられた際に、即座にアカウント所有者に通知を送信します。例えば、通常使用していない国や地域からのアクセスがあった場合、すぐに通知を受け取ることができます。この通知を受けたユーザーは、速やかに不正アクセスの可能性を確認し、必要に応じてパスワードの変更やアカウントのロックなどの対策を取ることができます。不正アクセスを受けたとしても、被害が拡大する前にすぐに対応することができるわけですね。

  3. セキュリティチェック
    Googleが提供している「セキュリティチェック」ツールは、アカウントのセキュリティについて、改善点などを一覧で確認できる便利な機能です。

特に、2要素認証の設定は非常に重要で、もし設定していなければ、まず設定してから、読み進めてください!

リモートデスクトップのためのPINコード

PINコードとは、その端末でだけ有効な、何桁かの数字です。他の端末では使えないため、流出しても大丈夫です。(流用しないようにしましょう)
googleアカウントのセキュリティを突破された、あるいはGoogleアカウントにログインしたまま端末を放置してしまっても、PINコードが設定されていれば、第三者が勝手にリモートデスクトップを使用することを防ぐことができます。もしgoogleアカウントのログイン状態を保持している場合は、PINコードは端末に記憶させないで毎回入力する方が安心です。

通信の暗号化

chromeリモートデスクトップでは、webrtcの規則に沿って通信は暗号化されているため、盗聴のリスクは十分低いと言えます。

リスクについて…インターネット接続の危険性

Chromeリモートデスクトップでは、接続元(クライアント)、接続先(ホスト)のPCそれぞれをインターネットに接続する必要性があります。
これはセキュリティ上でのリスクと言えます。よりセキュアにリモートデスクトップを行いたいのであれば、インターネットを介さない他の方法を検討すべきです。
ただし、これは「すべての器具を滅菌すべき」ぐらいの極論なのでは?と感じています。

セキュリティ対策のため、Chrome リモートデスクトップで接続できるIPアドレスを制限すべきなどと書いてあるブログもあるのですが、Chrome リモートデスクトップにはIP制限の機能はありません。なので、Googleアカウントのセキュリティを強化する必要があるわけです。
逆に言えばGoogleアカウントのセキュリティ対策を怠らなければ、安全にリモートデスクトップを行えるのではないか、と私は考えています。
もちろん、患者情報など、機密情報を扱うPCにリモートデスクトップを使う場合には施設の責任者の許可を必ず得てくださいね。

導入方法

Chrome リモートデスクトップのインストール方法を詳細に説明しようと思ったのですが、こちらのブログがとっても丁寧でしたので、導入にあたってはぜひこちらをご覧になってください。手抜きじゃないよ!!!!! www.pckujira.jp

おわりに

今回の記事はこれで終わりです。これでmacbookからWindows機を動かして実質的なブートキャンプ!だったり、

CTのセグメンテーションデータの活用については、こんなことを準備しています!乞うご期待!

*1:ipadで文献読みながら、引用したい図をスクショ→macbookのパワポにコピペ、iphoneで開いていたページをそのままワンクリックでmacで開くなど

*2:いずれ記事にしたいのですが、BetterTouchToolという有料アプリが神です

*3:これはリモートデスクトップのソフトfreerdpをパッケージマネージャapt dnf brewで3度もインストールしようとしています、この面白さ、伝わる人に伝われ!w

顎骨データと口腔内スキャンを重ね合わせる 〜デジタルの強み!マッチング!〜

前回の記事ではCTから顎骨・歯のSTLデータを切り出しました。

lacramy.hateblo.jp

このデータを活用するため、今回は口腔内スキャンのデータとの重ね合わせをしていこうと思います。

マッチング(重ね合わせ)とは?

STLデータについて軽く説明

さて、STLというファイル形式は現在3Dの分野で広く使用されているフォーマットで、物体(3Dオブジェクト)の表面座標を三角形の集合として表現しています。

STLとは
より詳しい説明は、興味があれば以下のサイトからどうぞ↓ programming-surgeon.com (今回口腔内スキャンのデータは.plyを使ってるしもともとは.dxdじゃねーかっていうツッコミができる人は是非お友達になりましょう)

形状と座標

STLは三角形の座標で表されているので、たとえば同じ形をもつものでも、座標が違えば違うデータになります。

開口時と閉口時では別のデータになる
まさに口腔内スキャンではバイトスキャンを用いて上顎データと下顎データの座標を合わせているわけです。

どうやって重ね合わせているのか(脱線)

アルゴリズムについて(クリックで展開) 形状が同じで、座標が異なる2つの物体を重ね合わせるアルゴリズムに、ICP(Intercuspal positionではなくIterative Closest Point)というものがあります。
これは ・いろいろな座標変換(移動・回転など)を行い、その中で一番近いものを選択
ICPの説明の図
という操作を何度も繰り返して座標を一致させるものです。
・どうやって「一番近い」を評価するか
・どんな操作をするか
・一度の操作で何種類試すか
・局所解にハマらないために、悪化する選択肢も受け入れる(山登り法→焼きなまし法) みたいなところを工夫して性能を高めていくことを、ヒューリスティックといいます。
これを競うコンテストがあり、著者はどっぷりハマっていました。興味がある方はぜひお友達に(略)(脱線おわり)

Medit designを使ったマッチング

ここからが本題です。i700などのスキャナに付属するmedit linkというアプリなのですが、なんと、データの移行など多少の使い勝手の悪さはあるものの、 基本的には他社のスキャナからも無料で使うことができるのです!

さっそくインストールしてみましょう!

Medit linkの登録

support.medit.com こちらが公式の説明です。かいつまんで説明します。

https://www.meditlink.com/へアクセスし、右上のloginをクリック Don't have an account? sign upをクリックして新規登録画面へ

アカウントの種類の選択
ここで、4種類のアカウントがありますが、上段を選んでください(左:歯科医院、右:技工所)
(メンバーアカウント(下段)は基本的に同じ施設で2つ目以降のアカウントが対象です) アカウントの種類の選択につまづきやすそうですが、以降は指示の通りフォームを埋めていけば、登録できるはずです。
(質問、要望あればここも詳しく追記しますね!)

Medit linkのインストール

ログインしたら、左下のダウンロードボタンをクリックします。

ここから先は公式が詳しいのでリンクを御覧ください!

[Medit Link v3.3.0] Windowsへのインストール – Medit Help Center

[Medit Link v3.3.0] macOS へのインストール – Medit Help Center

Medit designのインストール

Medit linkをインストール、起動したら

App box→Medit design
左段のApp boxをクリックし、アプリの一覧からUtilityのMedit designを探し、インストールします

データの取り込み

患者の登録


Saveで記録します

ケースの登録

登録した患者をクリック
画面右上new caseから症例を登録


必要であれば症例に名前をつけて、Registerをクリック
(Register & Scanはi700などを持っている方むけです)

サンプルファイル

私の顎骨と口腔内を大公開!!!
match_sample(Onedrive共有フォルダへのリンク)
フォルダ内のファイルは以下の通りで、すべて使用しますのでお好きなフォルダにダウンロードしてください。

match_sample
├── ios_lower.ply  口腔内スキャナ下顎
├── ios_upper.ply  口腔内スキャナ上顎
├── seg_lower_teeth.stl   CT下顎歯列
├── seg_mandible.stl  CT下顎骨
├── seg_maxilla.stl  CT上顎骨
└── seg_upper_teeth.stl  CT上顎歯列

データの取り込み

ケース名(今回はmatching's case)をクリック

今回は制作物種類・部位などの入力が必要ないのでFile viewerをクリック

ファイルをFinderやエクスプローラからドラッグアンドドロップするか、 右上クリップのマーク、attachからファイルを選択して必要なデータを取り込み

今回はmatch_sampleフォルダ内のすべてのファイルを読み込みます 取り込み完了!!

medit designについて

medit designの起動


medit linkではインストールされているアプリのアイコンが右上に並んでいます。
その中で今回は道具箱のアイコン、medit designを起動しましょう!
起動すると公式Webサイトによるアプリの使い方動画へ誘導する画面が出ます。 Learn More About the App
をクリックすると飛べます。いろいろな操作方法が学べます。私は未視聴です。あれ?

今回はContinue Workingをクリックしましょう。

データの選択


ポチポチとクリックして、サンプルデータ6つをすべて読み込みます。Confirmをクリックします。

この画面が出たら成功です

操作説明

画面左に取り込んだファイルたちが表示されます
ここで表示/非表示や、不透明度(透け具合)の設定ができます。

右クリックメニューの解説です。

マッチング!


上段一番左のアライメントモードをクリックして、起動します

いっつもこれ混乱するんですよね ターゲットが動く方です

すると、取り込んだファイルの中から、マッチングさせるファイルを選択する画面が出てきます。
語感から、「ターゲット」に合わせるイメージがありますが、
ReferenceのモデルにTargetのモデルを合わせる作業をします。
Referenceは動きません Targetは動きます

下に3種類のマッチング(Meditではアライメントと呼ばれてます、)が表示されています

左から ①Automatic alignment: 自動アライメント おまかせでマッチングします かなりいい位置にreferenceとtargetが近づいていないと成功しません

②Manual alignment: 手動アライメント それぞれのモデルの共通するところを何点か選んでマッチングさせます 一番使う機能です。

③Align Selected Areas: 領域に合わせてアライメント 選択した領域が一致するようにマッチングさせます たとえばフルブリッジの支台歯模型とプロビの模型の口蓋で合わせる場合に便利です

基本的に②か③でおおまかに合わせる→①で微調整してもらう、という使い方をすることが多いです。

では、実際に 口腔内スキャナの上顎のモデルをCTに合わせてみましょう!

モデルの観察

まずは合わせたいモデルの一致していそうな点を探します
特に今回CTデータは結構歪んでいるように見えるので、特徴的な点を探しましょう。 可能なら3点、可能ならできるだけ離れた点の方が正確にマッチングできます。

今回は
①左上4番 遠心隅角

②右上1番 切縁近心隅角

③右上3番 尖頭咬耗部 の3点で合わせてみました。 どちらにせよあとで微調整するので、そこまで時間をかけなくても大丈夫です。

マッチング

それぞれのモデルでポイントを選択します 同じ順番で選ぶことに注意です
間違った場所を選択した場合、左下のundoをクリックして取り消すことができます。

Manual Alignmentが終わったら、Automatic Alignmentをクリックして微調整してもらいます。

ズレの確認

画面上部左から2番目、Deviation Display Modeをクリックするとこの画面になり

各部どのぐらいのずれがあるか確認することができます 今回、CTの臼歯部はインレーのアーチファクトの影響で歪んでいるため、大きく歪んでいますが、歯列全体で見ると歪んでいないので、うまくマッチングできていると判断します。 ここで納得いかない場合、マッチングポイントを変更したり、画面上部左から5番目Transformation Modeで手動で合わせることになります(今回は割愛させてください)

マッチングの精度について(読み飛ばし可能)

STLデータを作る方法は色々あり、それぞれの特徴について知り、考察することが大事です
(言い訳)引用している文献はさらっと探した一部で、報告により数値はかなりばらつきがあることに注意、だってレビューだと元の文献が10年前とかで機種が古いからあてにならなくて…(言い訳終わり) 口腔内スキャナについては補綴学会のこれが一番よくまとまっている気がします。 doi.org

口腔内スキャナ 一度の撮影範囲が狭いため、重ね合わせのエラーによって歪みが生じる可能性があり、テクニックセンシティブである。
自分でスキャンしたデータであれば、硬組織でスキャンパスを通せたかどうかを覚えておく。(可動する軟組織が映り込むと正確性に劣る)

細部の再現性は最も高く、裂溝なども再現される。
○細部の再現性が高い ○アンダーカットも読み込める ✖️大きな範囲のスキャンでは歪む 真度40μm 精度50μm(オムニカム)*1

ラボ用スキャナ 固定してスキャンするため、真度はもっとも高いと思われる。つまり歪みが少ない。
一方で撮影角度が限られるため、アンダーカットとなる部分など、細部の再現性に劣る。

○精度が高い ○歪みが少ない ✖️細部の再現性が低い 真度20μm 精度30μm*2 機種によりもっと正確になる。

CBCT ○CTと比較すると細部の再現性が高い ✖️照射野の端では像が歪む ✖️アーチファクト 正確性は数百μmのオーダー*3※私はこの文献、ざっと目を通しただけで、ちゃんと読んでないのに引用しましたすみません!!!!!!!!!!

以上から、例えば、 - ラボ用スキャナと口腔内スキャナを重ね合わせ分析した際に咬合面や歯間部のエラーに関しては無視できる、左右大臼歯間距離が異なる場合はラボスキャナを信用する
- CBCTと口腔内スキャナの重ね合わせでは、口腔内スキャンした状況によりどちらが信用できるか判断する
- 口腔内スキャン同士の比較で大きく歪む場合、スキャンパスの通し方を見直す
みたいなことが言えるのではないでしょうか。

このあたり、コメントやツイートなどでご意見いただけたら非常に嬉しいです。

結果の保存

画面上部右端のCompleteをクリックすると結果を保存することができます。
今回の操作では口腔内スキャンの上顎モデルの座標を変更しました。
Overwrite上顎モデルの座標を上書き保存します。元の位置は失われます。 Export座標を動かした上顎モデルに名前をつけて保存します。

今回はExportを選びましょう。 ファイル名を入力する画面が出てくるので、入力しConfirmをクリックします。


つぎに出てくるこの画面は、今回行った作業自体を保存するか聞かれています。
例えば読み込んだファイルの情報などが保存されています。ここで保存しなければ、また読み込むファイルを選択するところから作業をスタートすることになります。 Exit Program After Saving→Save asでプロジェクト名を入力しSaveをクリックすれば今回の作業は完了です!!!!!!!

お疲れ様でした!!!

次回は、マッチングの続き、複数モデルのマッチングを行うことで咬合時の顎骨の位置関係を再現したいと思います。 2記事目、なんとか1万字以下におさえることができました、ツイッターアカウントの凍結を食らったりしましたが私は元気です。 これからもどうぞよろしくお願い申し上げます!!

*1:Zimmermann M, Ender A, Mehl A. Local accuracy of actual intraoral scanning systems for single-tooth preparations in vitro. J Am Dent Assoc. 2020;151:127-35. https://doi.org/10.1016/j.adaj.2019.10.022, PMID:31883705

*2:Shota Fukazawa, Chikayuki Odaira, Hisatomo Kondo,Investigation of accuracy and reproducibility of abutment position by intraoral scanners, Journal of Prosthodontic Research;61-4;450-459.https://doi.org/10.1016/j.jpor.2017.01.005

*3:Fokas G, Vaughn VM, Scarfe WC, Bornstein MM. Accuracy of linear measurements on CBCT images related to presurgical implant treatment planning: A systematic review. Clin Oral Impl Res. 2018; 29(Suppl. 16): 393–415. https://doi.org/10.1111/clr.13142

macbook airでもできる!CTから顎骨・歯のSTLデータの切り出し!

ことの発端は S.Aokiさんのツイート…(ありがとうございます!)

CTからSTL…どういうこと?

CTはDICOMというデータ形式で、ボクセルという単位でCT値が記録されています。 それを3方向から断面図で診る…というのが一般的な使い方ではないでしょうか。

3方向から見た私の何故か4根ある上顎6番

セグメンテーション

CTのセグメンテーション(Computed Tomography Segmentation)は、CTスキャン画像から特定の構造や領域を見つけて分ける作業です。 つまり、先程の3面図の集合であるCTデータから、こんな↓感じの3Dデータを切り出す作業のことです。

従来のセグメンテーションは、手動で行う*1と時間がかかりますが、最近では深層学習や機械学習…いわゆるAIを使った自動化が進んでいます。

ノートパソコンでも動かせるAIセグメンテーション!

AIを使った計算は通常ハイスペックなパソコンが必要になることが多いのですが、今回m1 macbook air(4年もののノートパソコン)でもこのAIによるセグメンテーションを行えるソフトウェアが発表されたので、使い方を紹介させていただきます。

3D Slicer

www.slicer.org

3D Slicerは、無料でオープンソースのソフトウェアプラットフォームで、医療や生物医学の画像の可視化、処理、セグメンテーション、登録、および解析を行うことができます。 外科手術の計画やナビゲーション、AIによるセグメンテーションなど、多様な拡張機能があるのが特徴で、BSDライセンスの下で商用利用も可能です。 今回この3D SlicerにDentalSegmentatorという拡張機能が出たので、紹介していきます。

3D Slicerのインストール

1. ソフトウェアのダウンロード

まず、公式ウェブサイトから3D Slicerのインストーラをダウンロードします。`Download*ページにアクセスし、previewバージョンのインストーラを選択してダウンロードボタンをクリックします。

ダウンロードページ:今回の機能を使うためには下段をダウンロードしてください

2. インストーラの実行

Macの場合

macのインストーラ
ダウンロードフォルダにあるインストーラをダブルクリックします
ライセンス契約が表示されます
Agreeをクリックすると、アプリケーションフォルダとSlicerアイコンが表示されるので、Slicerのアイコンをアプリケーションフォルダにドラッグアンドドロップします。

Windowsの場合

ダウンロードフォルダにあるインストーラをダブルクリックします

Winのインストーラ
インストーラの起動
同意するをクリック
同意するをクリックすると、インストール先を選択する画面になります、通常そのまま次へを押して進んでOKです。
インストール先
インストール先を変更する必要のある場合は、例えばCドライブの容量が足りずDドライブにインストールしたいとき、などです(Pytorchやcudaや学習モデルのインストールでざっくり5GBぐらい必要になります)
スタートメニューへの登録
こちらも通常はそのままインストールをクリック
2つチェックボックスがあります
上のチェックをすると、すぐに3D Slicerが起動されます。 下のチェックをすると、デスクトップにSlicerのショートカットが作成されます。

これでインストール完了です!!

!!上級者向け:homebrew*2を使ったインストール

brew install slicer@previewで2. インストールの手順を飛ばすことができます。というかこれ分かる人はこの記事読む必要がないと思いますが…
一応、homebrewでインストールした後は、アプリケーションフォルダから右クリック→開くで起動しましょう(釈迦に説法)

terminalが開ける人向けの説明です

3D Slicerの実行

èµ·å‹•

Macの場合

Launchpadから起動しましょう

インターネットからインストールするとこのエラーが出ることがある
このエラーが出た場合、アプリケーションフォルダを開き、Slicerを右クリックして開くを押して起動しましょう
右クリック→開くから起動するとこの画面から開けるようになります

Windowsの場合

デスクトップにショートカットを作製した場合は、そこから
作製しなかった場合は、スタートメニューから起動しましょう

操作方法

初回起動時のメッセージ
初めて起動した際には、

このソフトは医療用に開発されたわけじゃないよ

と表示されます。薬機登録されてないからですね*3

ここからはWindows Mac共通の操作です。

DentalSegmentatorのインストール

3D Slicerというソフトの追加機能が今回使いたい機能ですので、これを追加していきましょう。

Install Extensionsをクリックします

Extension Manager
右上にDentalSegと入力してDentalSegmentatorを検索し、Installをクリックします

その後、右下のrestartをクリックして、拡張機能の追加を反映させるためにSlicerを再起動します

サンプルデータのダウンロード

サンプルデータのダウンロード

Download Sample Dataをクリックします

サンプルデータ
CBCTDentalSurgeryをクリックします すると、右側にCTが表示されます。それぞれのスライスはスクロールできます。

セグメンテーション

メニューのModules:Sample Dataと書いてあるところのドロップダウンメニューから、Segmentation→DentalSegmentatorをクリック

注意:上の方にあるSegmentationsではないことに注意!

DentalSegmentator
DentalSegmentatorを起動できたら、Device:cudaとなっているドロップダウンメニューをクリック - cuda: geforce系のグラフィックボードが搭載されているPCの場合、こちらを選びます。高速です(数十秒で完了) - cpu: それ以外の場合(macを含む)はこちらを選択します。低速です(十数分かかります)

mpsは選択しないでください。まだ対応していません!

Applyをクリックするとセグメンテーションが始まります!!

初回は、機械学習のためのソフトをインストールします、という警告が表示されます。 a few minutesとかseveral minutesかかるとか書いてありますが、普通に十数分かかることもあります。待ちましょう。

待ち時間暇な方へ(インストールされる各モジュールの説明) ここでインストールされるプログラムたちは機械学習のために使われます。 chatGPTにそれぞれがどんな役割を持つか聞いてみたので、暇つぶしに読んでみるのも一興だと思います。

  1. pandas:
    • データ操作と分析のための高性能なデータ構造とデータ解析ツールを提供します。特に、データフレーム(2次元のラベル付きデータ構造)が有名です。
  2. pillow (PIL):
    • 画像処理ライブラリで、画像の開閉、変換、操作、保存などを簡単に行えます。画像ファイルを扱う際によく使われます。
  3. nnunetv2:
  4. acvl-utils:
    • 機械学習およびコンピュータビジョン関連のユーティリティツールを提供します。主にデータ前処理や評価指標に関する機能があります。
  5. batchgenerators:
    • データ前処理やデータ拡張のためのジェネレータを提供するライブラリです。主にバッチ処理を効率的に行うために使います。
  6. scikit-image:
    • 画像処理のためのライブラリで、様々な画像処理アルゴリズムを提供します。画像の変換、フィルタリング、セグメンテーションなどに利用されます。
  7. networkx:
    • グラフ(ネットワーク)理論に基づいたデータ構造とアルゴリズムを提供するライブラリです。グラフの操作、解析、視覚化が可能です。
  8. imageio:
    • 画像とビデオの読み込みや書き込みを簡単に行うためのライブラリです。多くのファイル形式に対応しています。
  9. tifffile:
    • TIFF形式の画像ファイルを読み書きするためのライブラリです。特に科学的画像データの処理に使われます。
  10. lazy-loader:
    • 必要になるまでモジュールやパッケージを遅延して読み込むためのツールです。リソースの効率的な管理に役立ちます。
  11. scikit-learn:
  12. joblib:
    • 高速なピクル化(データの保存)と並列処理をサポートするライブラリです。大規模なデータセットや計算に便利です。
  13. threadpoolctl:
    • スレッドプールの制御を提供するライブラリで、並列処理のパフォーマンスを調整するために使用されます。
  14. future:
    • Python 2とPython 3の互換性を確保するためのツールです。特に、Python 3の機能をPython 2で使えるようにします。
  15. unittest2:
    • Pythonの標準ユニットテストライブラリの拡張版で、Python 2.7以前のバージョンでのテスト機能を提供します。
  16. argparse:
  17. traceback2:
    • エラーメッセージを追跡するためのライブラリで、Python 2.6および2.7の機能を提供します。
  18. linecache2:
    • ソースコードファイルの行をキャッシュするためのライブラリで、デバッグやエラーメッセージの生成に役立ちます。
  19. connected-components-3d:
    • 3Dデータに対する連結成分分析を行うためのライブラリです。3Dのバイナリデータのラベリングに使用されます。
  20. dynamic-network-architectures:
    • 動的に構築できるネットワークアーキテクチャのライブラリです。特に機械学習や深層学習において柔軟なネットワーク設計を支援します。
  21. tqdm:
    • 進捗バーを表示するためのライブラリで、長時間かかる処理の進捗を可視化します。
  22. dicom2nifti:
    • DICOM形式の医療画像をNIfTI形式に変換するためのツールです。医療画像処理に利用されます。
  23. nibabel:
    • ニューロイメージングデータ(NIfTI、Analyze形式など)の読み書きをサポートするライブラリです。
  24. python-gdcm:
    • DICOM画像の読み書きを行うためのライブラリで、GDcm(Grassroots DICOM)ライブラリに基づいています。
  25. graphviz:
    • グラフやネットワークの視覚化を行うためのツールです。グラフ構造を描画する際に使用されます。
  26. matplotlib:
    • データ可視化のためのライブラリで、グラフや図を描画するための豊富な機能を提供します。
  27. contourpy:
    • 等高線の描画や計算を行うためのライブラリです。主にデータの可視化に使用されます。
  28. cycler:
    • プロットのスタイルや色をサイクルするためのツールです。matplotlibなどの可視化ライブラリで使われます。
  29. fonttools:
    • フォントの処理や変換を行うためのライブラリです。フォントのメタデータやフォーマット変換をサポートします。
    • すべてpythonのライブラリです。興味ある方は私と一緒に勉強してkaggle*4とかやってみませんか!?

      4分41秒経過・残り45分26秒 210回(イテレーション)の学習を行う予定で、1回の学習に19秒かかると書いてあります

      セグメンテーション完了です!!

      8/1追記☆セグメンテーションの修正

      akinaせんせい(@nakixa)が、セグメンテーションを手動で修正する方法を動画にしてくださいました!!! ありがとうございます! 以下内容説明↓

      0:08 セグメンテーションモデルの表示/非表示
      0:16 3Dモデルの動かし方
      0:24 画面のレイアウトの変更について
      0:33 セグメンテーションの修正の仕方

      STLデータのエクスポート(書き出し)

      画面左側、下の方にあるExportをクリックするだけです!
      指定したフォルダに保存されます。

      STLデータの活用

      コンサルにつかうもよし、移植につかうもよし、埋伏歯の骨削のシミュレーションや口腔内スキャンとのマッチングなど… 後日追記予定です。

      3Dプリンタで印刷した、私の上顎骨

      さて、これが初めての記事でしたが1万字超えの大作になってしまいました… これからもデジタルデンタルタメになるような情報を発信していけたらと考えています! なにとぞよろしくお願いします。

      *1:スライスごとに色を塗っていく、地道で地道で地道な作業!!!

      *2:homebrew, scoop, aptなどパッケージマネージャと呼ばれるソフトは、入れておくとソフトのインストールやバージョン管理が楽になります。わざわざwebサイトまでダウンロードしにいかなくても、コマンド一行でインストール完了!アンインストールもコマンド一行!

      *3:このソフトを使って治療を行う際は、保険診療ではなく自費診療で、患者さんに同意を得て使うようにしましょう。詳しくは語りません。

      *4:kaggle: 機械学習のコンテスト モデルを最適化し、最良のものを競い合う、優勝賞金もあります!