月別アーカイブ: 2013年4月

[Connectome] Contour-Propagation Algorithms for Semi-Automated Reconstruction of Neural Processes

Mache et al., 2007 より

新しい技法である”Serial Block Face Scanning Electron Microscopy(SBFSEM)”は電子顕微鏡での生物組織のsectioningとimagingの自動化を可能にした。 (Denk and Horstmann, 2004)
この技法による画像のスタックは、シナプス構造を含む異なる細胞の部分を区別するのに十分な解像度をもち、これにより完全な神経回路の解剖学的知識の詳細が得られる。
画像のスタックは数千枚の画像からなり、最小ボクセルサイズはx-y軸が10-20nm、y軸が30nm。数百TB。(Briggman and Denk, 2006)
故に、(人の手で作業するには膨大で)高度な3D再構築自動化アルゴリズムが必要とされている。

最初のステップとして、細胞膜の正確な輪郭トレースのための半自動化アルゴリズムを開発。
画像のスタックのセグメント間の抽出したオブジェクトの3D観測を可能にした。
手動でのトレーシングと比べると、処理時間は大幅に向上した。

本論では、ハエの視覚神経節の一部を再構築するアルゴリズムの開発を行っている。
(Strausfeld, 1984)によると、ハエの視覚システムは蛍光顕微鏡で見ることができる解像度では、すでによく観察されているが、ultrastructural levelの知識は、visual motion processingでの回路を見るために必要である。(Borst and Haag, 2002)

原理的には3次元画像ブロックを直接セグメント化することは可能であり、事前の画像から得られる情報を使って、シーケンス内の各画像のセグメントを選択した。

処理のステップ
1. 同じmedianとinter-quartile rangeを持つように各画像の輝度値 intensity value の正規化
2. 空間フィルタの適用。Gaussian broadeningか非線形拡散nonlinear diffusionを選択。(Perona and Malik, 1990)
非線形拡散は、ノイズ除去エッジ保存フィルタリング手法であり、各場所で輝度勾配の推定に依存するフィルタの度数をを決定。これにより、強いエッジは保存されるが、そうでない部分はかなり平滑化される。
MATLAB Toolbox(D’Almeida, 2000)を利用。
フィルタ性能がパラメータのとり方にsensitiveであることから、パラメータを最適化するのが望ましいadvisable。あるいは、人の手でラベルづけされた画像からフィルタを学習(Vollgraf et al., 2004)
3. 隣り合う画像同士のクロス相関を計算。これにより、欠陥画像の検知と除去が可能。例えばゴミが入ったりした場合に。

セグメンテーションアルゴリズム
一般的なアプローチ
スタック全体を一度にやるのではなく、シーケンシャルに行った。?
オブジェクトが隣接する画像にかけて連続していると仮定。
連続性を確かなものにするため、事前の画像のセグメンテーションからの情報と、現在の画像のピクセル強度 the pixel-intensities を組み合わせる必要がある。
一つの画像のセグメントは次の画像に伝播する。
ただし、最初の画像に対しては別の戦略を用いた。(後述)

Level Set 法
陽にオブジェクトの境界を表現する方法(例:スプライン関数)は使用せず、陰に符号化距離関数Φのゼロレベル集合を使用。
foregroundとbackgroundに分ける画像セグメントI:Ω->Rを探索。I(x)は画像のグレイスケール。
(Osher and Fedkiw, 2003; Sethian, 1999)によるレベル集合フレームワークでは、Ω+={x:Φ(x)>0}をforeground(例:ニューロン内部のビクセル集合)、Ω-={x: Φ(x)<0}をbackgroundとするような関数Φ:Ω->Rを見つけたい。
オブジェクトとbackgroundを分ける輪郭contourは、Γ={x:Φ(x)=0}で与えられる。
注意すべきは、複数のオブジェクトをもつ画像は、オブジェクトをforeground領域の接続要素として定義することで、一つのセグメンテーション関数Φによってセグメント化できるということ。

この埋め込みはユニークではない、Φは時々signed distance function (SDF)によって制約を受ける。
例:絶対値は境界に境界最近傍への距離を与えることによる ?
しかしながら、その場合になることはない。
例えば、セグメンテーションに対する確率モデルが与えられたとき、Φ(x)+t (tはスカラー値オフセット)は、ピクセルxがforegroundに属する確率の対数とみなせる。この場合、Φ(x)はあるピクセルが何の領域に割り当てられているかのみならず、割り当て対する信頼度としても表現される。

陽表現と比較して、陰表現はトポロジー変化(オブジェクトの結合merging と分割splitting)に対して容易に対処でき、高次元への拡張が容易に可能であるという利点がある。
画像のエッジ検出によらない領域ベースな方法に焦点をあてながらも、fore-とbackground領域のピクセル強度の分布の差を利用することにフォーカスする。
実用上は、時間変数tを導入し、Φtが何らかのエネルギー関数E(Φ,I)を最小化するために含まれる。(Cremaers et al., 2006)

共焦点や多光子顕微鏡から得られた画像の解析のために、神経構造は円形構造が連なるチューブ様としてモデル化することが可能であるという仮定に基づくが、本論では円と異なるという観測から、その仮定はおかない。

レベル集合法は、生物医学応用で3次元物体のセグメンテーションのためによく使用される手法。(Whitaker et al., 2001)
本論で提案されている手法は、ひとつの画像から次の画像へ情報が伝播するという点やエネルギー関数の抽出形式において、既存の手法と異なる。
アプローチとしては(Jurrus et al., 2006)と関連しており、彼らの研究によるとkalman filterに基づくpropagation schemeを使用し、オブジェクトの表現にレベル集合よりも明示的な境界を使用していた。

確率的フレームワーク
統計モデル
I_nを画像n\phi_nを対応するセグメンテーションとする。
すでにセグメント化が済んだ前の画像が存在し、\phi){n-1}は既知とする。
我々は、I_n\phi_{n-1}が与えられたとき、最も確率の高いセグメンテーション\phi_nを見つけたい。P(\phi_n|I_n,\phi_{n-1})を最大化。(Cremers et al., 2006)
Bayes’ Ruleより、
  P(\phi_n|I_n, \phi_{n-1}) \propto P(I_n|\phi_n, \phi_{n-1})P(\phi_n|\phi_{n-1})
を得る。
P(\phi_n|\phi_{n-1})は、可能なセグメンテーション\phi_nについての事前分布priorとみなせることができ、隣接する画像間のオブジェクトの連続性を確証する指標として使用できる。
これは、複数の画像にかけて構造をトレースすることを助ける。
加えて、滑らかな輪郭の支持やセグメント化されたオブジェクトの形状についての事前知識としても使用される。
実際は、手作業でラベルづけされた画像から学習されるが、訓練集合が十分でないことから、事前分布のための関数形式を選択する必要があった。

単純化のために、画像I_nは前画像\phi_{n-1}と独立しているものとして、現在のセグメントを\phi_nとする。
独立性よりP(I_n|\phi_n)=P(I_n|\phi_n,\phi_{n-1})
与えられた符号付き距離dに対し、P(I_n(x)|\phi_n(x)=d)が、外部(あるいは内部。\phi(x)の符号による)のすべてのピクセルの強度に対する確率分布を与え、closest boundaryまでの距離dを与える。
簡便のため、現在の画像\phi_n\phi、一つ前の画像\phi_{n-1}\phi_0と表記する。

事後確率 P(\phi|I) 最大化は、その負のlogの最小化と同値。
エネルギー関数は、
E(\phi|I) = -{\rm log}(P(I|\phi)) - {\rm log}(P(\phi|\phi_0)) = E_I + E_\pi
これを最小化する。
エネルギーの合計は画像の独立部分E_Iと事前独立部分E_\piの和で表される。
以下、P(I|\phi)P(\phi|\phi_0)について詳細に特徴づけ、データからnon-parametricに分布を学習するような可能な代案についてもみる。

単純なアルゴリズム
ピクセル強度I(x)の分布には、平均\alpha\phi(x)-\betaと分散\sigma^2の正規分布を仮定、

[BCI] EEG-based “Serious” Games Design for Medical Applications

Wang et al.

EEGを利用したNeurofeedbackゲームとbrain-computer interfacesに関する論文。
エンターテインメント、e-learningや医療で使用され始めている。
Neurofeedbackを利用したゲームの設計とアルゴリズムとその実装について。

Neurofeedbackとは

ユーザーの頭蓋からEEGを取得し、ディスプレイへの音(など)によって、ユーザーへのリアルタイムフィードバックを表示する技術。

Attention Deficit Hyperactivity Disorder (ADHD)、Autistic Spectrum Disorders (ASD)やアルコールやドラッグなどを含むSubstance Use Disorder (SUD)のような精神疾患では、EEGやERP(Event Related Potential)に健常者とは異なる特徴がみられる。

他の身体部位と同様に、自身のEEGもセルフコントロールできる可能性がある。
通常治療の他に、Neurofeedbackがこれらの疾患に対する治療となる。

多くのNeurofeedbackゲームがADHDの治癒に効果的であることが分かっている。
ADHD患者は
- EEGの大きな歪み
- θ/β波の比に異常
- SCP(Slow Cortical Potential)
という特徴があることが知られている。

Gevensleben et al.(2009)ではfrequency neurofeedback trainingとSCP neurofeedback trainingでADHD患者に対して良い治癒効果が認められたと述べている。

ASDは、興味の限定や同じ行動の繰り返しに加えて、社会的な交流やコミュニケーション異常と関連した精神疾患。
先のGevenslebenらの研究では、ASDの8歳の少女を対象にして、目を開けた状態でresting conditionの時のEEGを解析。
αバンドとθバンドの信号異常。
これに対して、neurofeedbackのスキーマを考案。

[SQLite] Command Line Shell For SQLite

SQLiteライブラリは、シンプルなコマンドラインユーティリティであるsqlite3を含んでいます。これにより、ユーザはSQLiteデータベースに対して、手動でSQLを入力、実行することができます。

ことはじめ

SQLiteデータベースを保持しているファイルの名前を引数にして、sqlite3プログラムを起動する。

プログラムを終了する際は、システムのEnd-Of-Fileキャラクタを入力する(通常はControl-D)か、割り込みキャラクタ(通常はControl-C)を入力して停止する。

セミコロンがSQLコマンドの終端となるので、これを入力するまでは複数行にわたって改行して入力することもできる。

補足: SQLite_MASTERテーブル

データベーススキーマは、SQLiteデータベースの中に”sqlite_master”とよばれる特別なテーブルとして保存されている。
この特別なテーブルに対してSELECTステートメントを実行することでスキーマの情報が得られる。

しかし、このsqlite_masterテーブルについては、DROP TABLE、UPDATE、INSERTやDELETEは使用できない。何かデータベースに変更があるときは、このテーブルは自動的に変更されるため、手動で値を変更することはできない。

sqlite3の特別なコマンド

入力の際に、ドット”.”つきのコマンドを入力すると、sqlite3プログラム自身へのコマンドとして解釈される。これら”ドット・コマンド”は、典型的にはクエリに対する出力フォーマットの形式を変更する際やクエリ文に対してあるプレパッケージを実行する際に使用される。

使用可能なドット・コマンドを確認するには、”.help”コマンドを入力する。

出力フォーマットを変更する

sqlite3プログラムは、8つの異なるフォーマットに対応している。
“csv”、”column”、”html”、”insert”、”line”、”list”、”tabs”、”tcl”
“.mode”コマンドを使うことで、これら出力フォーマットを切り替えることができる。

“list”モード

“.separator”コマンドを使用すると、リストモードのセパレータを変更することができる。
例えば、カンマとスペースをセパレータにすると、

“line”モード
各列はデータベースの行を表しており、それぞれの行は”属性名 = データ”で表される。
連続したレコードは空行で区切られる。

“column”モード
各レコードは対応する属性ごとに列で分けられ、各行で表示される。

デフォルトでは、各列は少なくとも10文字”———-”分の幅で表示される。
列の幅が広すぎる場合、”.width”コマンドで列の幅を変更できる。

最初の2行は列の属性が出力されていた。この表示は”.header”コマンドで設定することができる。

“insert”モードは、得られた出力を他のデータベースへの入力として使用できる。

“html”モードは、XHTMLテーブルとして結果を表示する。ただし、開始タグ

と終了タグ
は出力されない。要素ととのみ。CGI作成時に便利?

結果をファイルへ出力する

デフォルトでは、sqlite3のクエリの結果は標準出力へ送られる。”.output”コマンドを使用すると、これを変更できる。引数にファイル名を与えればよい。再び標準出力に戻すには、”.output stdout”とすればよい。