日々鍛錬

日本で一番?わかり易い??システムの落書き帳???を目指し????,日々鍛錬中な元SEさん主婦によるデベロッパとユーザと自分のための雑記帳

自由度について

自由度(Degrees of Freedom: DOF)の定義

変数のうち,独立して選択できる変数の数,すなわち,式において,全変数から相互間に成り立つ関係式(束縛条件、拘束条件)の変数の数を引いた数.(WikiPediaより)
 例:系の状態がN個で表現される時,「その系の自由度はNである」

任意の物体(質点)において,

  • 並進(平行移動)の場合
    • 前後方向や左右方向,上下方向というように,一つの方向しか移動できない→ 自由度1
    • 上記において,2つの方向を組み合わせた平行移動 →自由度2
    • 3つの方向を組み合わせた平行移動 → 自由度3

上記は重心の平行移動を考えたもの.
つまり,3方向のみを考えるので,並進の3方向で最大は自由度3

さらに,ひねり,つまり,回転などを考慮すると,

  • 並進+回転
    • Yaw: Y軸方向の回転→ 天井から吊り下げてくるくる回転した感じ
    • Pitch: X軸方向の回転→ 鉄棒でくるくると回転している感じ
    • Roll: Z軸方向の回転→ 北極星を中心にくるくると回転させる感じ

つまり,3方向の回転も加わる.
従って, 3+3=6方向,ゆえに 自由度6となる.

この自由度について表現した図*1が以下になる.

*1:図中の飛行機は,Microsoftさんのクリップアートを利用規定に基いて使用させて頂いてます.そのため,無断複製について固くお断り致します.

 Radial Basis Function

通称,RBFでお馴染みの関数.


\phi({\bf x}) = \phi(||{\bf x}||)
\phi(x_i, \: {\bf c}) = \phi(||x_i \:- \:{\bf c}||)


つまり,任意の点がその原点からの距離に依存する実数値を表現する関数.
これに,日本語があったのですね!(お恥ずかしいことに,今まで日本語の存在を全く知らなかった!)

「放射基底関数」


たしかに,Radial(放射状の)Basis(基底)関数(Function)

よく考えれば日本語に直訳できることなのに,すっかり,RBFとか,「Radial Basis」でお馴染みになってました.
本日一番勉強になったキーワードでもありました.
そして,とにかく勉強不足だ!ということを猛省したキーワードでもありました.


恥ずかしかったけど,質問してよかったと自分では思います.
でもやっぱり,この日本語訳より,「RBF」というキーワードのほうが私にはしっくり来てしまいます.
#ご専門の方々はどちらを通常で使うのかしら,,


こういう,大失敗談も載せていきながら,勉強不足を解消したいと思います.(本気の雑記帳)

 医用画像,解剖学における方向

毎回良くわからなくなるので,メモ書き

  • 解剖学的正位 (anatomical position)
    • 手のひらを,顔が向いている方向に向けてまっすぐ立った姿勢
    • この方向を基準にして記述


上記は,解剖学的正位を用いて,各方向と平面を示した図*1

  • 上部方向(Superior)
  • 下部方向(Inferior)
  • 前部(Anterior)
  • 後部(Posterior)
  • 右部(Right)
  • 左部(Left)

ただし,左右については,観察される側(患者)から見た左右の表現

  • 臨床医が患者と向かい合う場合(Posterior方向へ観測),臨床医から見て右側は患者の左半身
  • 臨床医が患者の後ろから観測の場合(Inferior方向へ観測),臨床医から見て右側は患者の右半身

画像の軸方向(Orientation)の例については,以下のとおり

  • RPI:各軸が,「右部から左部」,「後部から前部」,「下部から上部」
  • RAI:各軸が,「右部から左部」,「前部から後部」,「下部から上部」
  • RAS:各軸が,「右部から左部」,「後部から前部」,「上部から下部」


また,各平面について

  • 体軸断面
    • Axial
    • 体に対して水平方向(InferiorとSuperiorを結ぶ体軸)の断面
  • 矢状面(しじょう)
    • coronal
    • 左右(正中)方向(RightとLeftを結ぶ軸)に垂直な面
  • 冠状面(かんじょう)
    • sagittal
    • 上下方向(AnteriorとPosteriorを結ぶ軸)に対し平行な断面,,つまり,体軸断面に対して平行な断面

このように,医用画像はそれぞれ軸と平面の表記方法がある.
これを画像間で間違えると泣きそうになるので,注意されたい.
#私は以前,プロジェクト全員から違うOrientationのデータ集約からのスタートという状態が来て,夜中に泣いたことがある.
#そしてこの苦しみを誰にもわかってもらえなかった...orz

*1:図はダウンロードフリーですが,一応著作権ありと言っておきます.
だって,学生さんたちにも笑われながらも見てもらったので...

Lp normの表記について

論文でよく見かける,Lpノルム
この表記について,「L」の表記は大文字なのだろうか,小文字なのだろうか.
正しい表記を色々調べたが,どこにも掲載されていなかった.
ただ,調べた所,最も多い表記法はCapsでの表記だった.
つまり,「大文字」の表記です.
今後はこの情報に一応,従う.

 Pythonのインストール

Pythonとは?
Object思考のオープンソーススクリプト言語
最近は,ライブラリ化が非常に進んでいて,数値計算,画像処理,CG,モデリングにも応用可能です.
2013年11月17日現在,Ver,として,2.7x系と3.xが同時並行で開発が進んでますが,私は今のところ,ライブラリの整理が十分に行われた2.7系を利用中
#VTKを利用するにあたっては,2.7x系のみサービス

インストール

  1. Pythonの公式サイトから,OS情報に従ってSourceをダウンロード
  2. 指示に従って,Installを行う.
  3. インストール先は私の場合,「C:\MySytem\MyCodeLang\Python27\」として設定.
  4. インストール後,上記のインストール先へ,環境変数の設定でパスを通す.
  5. コマンドプロンプトを起動し,pythonとコマンドを行う
  6. pythonが起動できたなら,OK

 VTK + Pythonの諸準備

今回の記事は全て,Windows 7の環境であることに注意.
Macについては,後ほど記載

今回の設定環境

PythonをVTKで利用する際,x86, x64どちらも利用可能.
ただし,KinectPythonを一緒に利用するのなら,現在,PyKinectはx86のみに対応可なので,
Pythonx86でインストールする.
x64 なら,VTKインストールの際にWrapperへチェックを入れるだけで,Pythonにおいて,VTKライブラリを利用することが可能
今回は,CmakeでインストールしたVTKのバージョンはx64, だけども,Pythonで利用したいのはx86なので共存はむり
別でPython WrapperにVTKを入れるようにする.

また,現在,WrapperはVTK6.xに対応していないらしい

  1. 非公式だけど,PythonのWrapperをたくさん取り扱ってる便利なサイトへ行く

Unofficial Windows Binaries for Python Extension Packages

  1. VTK-5.10.1.win32-py2.7.exeをダウンロード
  2. ダウンロード後,そのまま,exeを展開しインストール
  3. コマンドプロンプト上でPythonを起動し,「import vtk」を打ち込む
  4. エラーが出力されなければ,インストールが完了.

VTKのインストール

VTKのインストール方法のあんちょこについて


準備と確認

  • VTK から,インストールのためのSourceをダウンロード
  • Sourceのダウンロードはこちらから
  • 2013年,11月17日現在,Ver.6.0までリリース
  • 私は,研究室の学生さんたちとの兼ね合いからVer.5.10をインストール
  • javaとのWrapperが必要なら,JDKがインストールされていることを確認する
  • PythonKinectのインタラクションが必要なら,32Bitの2.7系でインストールし,Wrapperはしない
  • Visual studio 2010がインストールされていて,.x64コンパイラがあたっていること
  • CMakeがインストールされていること

CMakeのインストール
CMakeはコンパイラに依存することない,Buildの自動化を支援するためのツールのこと.
通常,システムを構築する際,ライブラリやInclude関連を手作業で自分自身のIDEへ登録して,依存関係を解決するようにしている.
このような作業を出来るだけ効率的に自動化してくれることが望ましい.
その時に,CMakeを行うことで,依存関係の自動化を行うことが可能である.
( 2013年,11月17日現在,Latest Release (2.8.12.1)です)

  1. CMake - Cross Platform MakeからCMakeのソースをOSにあわせてダウンロード
  2. x86のツールのみがダウンロードになっているが,x64にも対応出来る.
  3. 展開して,指示に従うと,出来上がる.
  4. CMakeの記述方法については,後日記載予定

VTKのインストールの準備

  • Sourceのインストールとインストール先を指定
  1. VTKからSourceをダウンロードして,適宜の場所に保存.
    • 私の場合は,「C:\MySytem\Mylib\VTK510」
    • ここには,BuildするためのForder,VTKDataも入れるようにする.
  2. 先と同様,VTKからインストールVer.と併せてDataを同じ場所にダウンロードし,保存
  3. ダウンロードされたSourceとVTKDataをそれぞれ,展開
    • C:\MySytem\Mylib\VTK\VTK510\VTKSource\ としてSourceを展開
    • C:\MySytem\Mylib\VTK\VTK510\VTKData\ として,vtkDataを展開
  4. CMakeを起動して,「Where is the source code:」に,先ほど展開した「C:\MySytem\Mylib\VTK\VTK510\VTK1510Source\」を記述
  5. 「Where to build the binaries :」に,「C:\MySytem\Mylib\VTK\VTK510\VTK510bin\」を記述
  6. Configureボタンをクリックし,上記のフォルダがないから作りますか?と聞かれるのでOKをクリック
  7. 時間かけて真っ赤な一覧が出てきます.
  8. check項目「BUILD SHARED_LIBS」のチェックを入れる*1,Documentation Example, TESTは時間がものすごいかかるから外す.
  9. Congifuration Typesを「Release」に
  10. 「INSTALL PREFIX」に,上記のBuildのためのBinaryフォルダで指定したフォルダを「C:\MySytem\Mylib\VTK\VTK510\VTK510bin\」を記述
  11. 「VTK_DATA_ROOT」に,vtkDataの展開先を記述
  12. 「VTK_LARGE_DATA_ROOT」に,vtkRargeDataの展開先を記述
  13. 改めてConfigボタン
  14. Java, PythonのWrappを行うなら,チェックをいれる.
  15. Configボタンを押下して,Java ,Pythonの環境を指定する.
  16. 赤の警告ラインが消えたらなら,Generateボタン(だいぶ長いので,コーヒーを飲みに行って下さい)
  17. Generate後,Biuldのフォルダに移動して,VTK.slnがあるので,開く
  18. 全て読み込み終了後,「ALL_BUILD」を右クリックで「ビルド」を選択する.(だいぶ長いので,ランチに行って下さい)
  19. エラーがないことを確認し,同様にINSTALLで「ビルド」を行う.
  20. ユーザの環境変数にインストール先のPathを指定する.
    1. 環境変数:VTKPath
    2. Pathの場所:C:\MySytem\Mylib\VTK\VTK510\VTK510bin\
  21. VTKのWrapper設定(限定でx64のみ,Pythonx86との合わせ技ならこちらをアクセス)を行うなら,%Python%\lib\site-lispにvtk.pthを作成し,以下を入力する.

「%VTK%lib\site-packages\vtk」(%VTK%は自分の環境に置き換えること)

以上です.


参考サイト
資料集:Pythonの使い方

*1:このインストールはPython, JavaなどのWrapperを行うためのチェックです.もしWrapperが必要ないなら,チェックを入れないほうがいいです.