台風の衛星画像データベース
ハリケーンから台風になったという台風200612号の衛星画像を探していたら,
デジタル台風
http://agora.ex.nii.ac.jp/digital-typhoon/
という台風を対象にした画像データベースを見つけた.
雲画像をもとにして,自己組織化マップの作成や類似度検索などができる.
似通った複数の対象(台風)の時間発展を見比べるというモードは重要だと思った.
類似度や特徴量の定義とか,位置や回転に対する不変性の有無などにも興味がわく.衛星画像や気象に特有の問題やノウハウがきっと色々あるのだろう….
[PR]
# by edogawadai_bio | 2006-09-02 20:02 | img
Pythonの高速化
Pyrex
http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
Pythonに型宣言子等を加えた独自言語を,拡張モジュール(のCソースファイル)に変換するというもの.Python/C APIのPyObjectとCの単純型を比較的シームレスに混在できるような気がする.

既存のC等で書かれたライブラリをwrapするという使い方に加えて,Pythonコードのボトルネック部分を(Cで書き直さず)Pyrex形式で書き直して高速化する,という使い方ができる.Cソースをスクリプト中にインラインで埋め込むよりは自然な感じもする.SWIGだとどうももどかしいが,Python/C APIを直接触るのもめどい場合にも適しているかもしれない.

全体がPythonソースっぽいのに,
cdef char *s
とか
cdef int eggs(unsigned long l, float f):
とかC要素が自然に含まれるのが面白い.

Psyco
http://psyco.sourceforge.net/
JITっぽいもの.x86用.Pythonソース冒頭やmain()の最初にて,
import psyco
psyco.full()
とする.平均的(?)なPythonスクリプトだと2倍くらい速くなるが,科学計算のようなボトルネックが局所化しやすいプログラムではもっと効果的とのこと.流れとしてはまずPsycoを試し,まだ速度が要るならPyrex,という感じだろうか.

開発は終了しているらしいが,PyPy(an implementation of Python in Python)に何らかの形で引き継がれていくのかもしれない.
[PR]
# by edogawadai_bio | 2006-08-30 02:20 | comp
モアレパターンの軽減
スクリーントーンを使ったイラストをスキャナで読み込む際,しばしば余分なモアレパターンが生じる.これを軽減する簡単な方法を試してみた.単に対応する周波数成分だけを遮断するというもので,画像に含まれる周期的パターンを軽減する基本的手法として古くから伝わる(例えばRosenfeld A and Kak AC (1976) Digital Picture Processing).感度が揃っていない線検出器を走査して得た衛星画像から線状パターンを除く例をどこかで見た覚えがある.
b0095474_23291482.jpg

左上: 元画像の一部.全体に格子状のモアレがみられる.右上: 元画像を二次元フーリエ変換して得たパワースペクトル表現.中心が直流成分.4隅にモアレ由来のピークがある.右下: モアレ由来のピーク付近を0に置き換えたもの.左下: フーリエ逆変換で得た画像.モアレが抑えられている.
[PR]
# by edogawadai_bio | 2006-08-28 23:56 | img
画像関係メモ
http://graphics.stanford.edu/papers/lfmicroscope/
Light Field Microscopy.マイクロレンズアレイを顕微鏡に追加し,1枚の画像からXYZデータを得る.

http://research.microsoft.com/vision/cambridge/pub.htm
C. Rother, V. Kolmogorov and A. Blake. Interactive Foreground Extraction using Iterated Graph Cuts. ACM Transactions on Graphics (SIGGRAPH'04), 2004
カラー写真の領域抽出

http://www.shellandslate.com/fastmedian.html
O(log フィルタ半径)な速いmedian filterとbilateral filter.

http://www.cfar.umd.edu/~aagrawal/sig06/sig06.html
Coded Exposure Photography.幾つかの露光時間で動くものを連続撮影してデコンボリューション.連続露光と違いill-posedではないらしい.

http://www.cs.rice.edu/~sschaefe/research/contourpaper.pdf
Convex Contouring of Volumetric Data.ボリュームデータからのisosurface抽出.Marching Cubeと同じくらいの速度で,穴が開かない.
[PR]
# by edogawadai_bio | 2006-08-22 00:30 | img
Lenna
最も有名な標準画像であるLennaお姉さまに捧げた詩を見つけた.
http://www.hacksaw.org/~thomasc/old_mit/stories/lena.html
Your silky hair contains a thousand lines
Hard to match with sums of discrete cosines.

http://www.cs.cmu.edu/~chuck/lennapg/playboy_backups/lena.html

"I would ask who she was and they would say, 'She's Lena.' And I would say, 'Who's Lena?' And they'd say, 'I don't know. Just Lena.'"
[PR]
# by edogawadai_bio | 2006-07-28 01:11 | img
ImageJ/Jythonを試す
PythonでImageJをインタラクティブに操作したり,プラグインをPythonで書いたりできると素敵だろうなと思い,JythonをWindowsマシンに導入し,ImageJから使ってみた.試した環境はWindows XP,SunのJVM 1.5.0_01-b08,ImageJ 1.37f.
方法やダウンロードすべきファイルへのリンクは
http://www.pensament.net/java/other_plugins.html#interpreter
にあった.また,
http://marcora.caltech.edu/jython_imagej_howto.htm
はWindows環境向けに手順が丁寧に書かれている.

Jythonの導入
http://www.jython.org/Project/index.html
から jython_21.class をもってきて,コマンドプロンプトから起動.
> java -cp . jython-21
これでGUIインストーラが動く.全部導入しても10MB程度.
以降は導入したディレクトリで,
> jython (.bat)
でJythonインタプリタが動く.
>>> import java.awt.Point
等ができることを確認.

ImageJにclasspath追加
ImageJ起動時のclasspathにjython.jarを加える.つまりjavaの-cpオプションに追加.Windowsで最近のImageJではC:\Program Files\ImageJ\ImageJ.cfg中の-cp後にC:\OPT\jython-2.1\jython.jarなどと追加.

便利なImageJ/Jythonプラグイン導入
http://www.pensament.net/java/Jython.zip
をImageJ/plugins/Jythonに展開.このディレクトリに置いた*.pyファイルは,ImageJメニューのPlugins - Jython - Refresh Jython Listによって,同メニュー階層中に登録され,プラグインとして実行可能になる.
また, ImageJ/macros/StartupMacros.txt に macro "AutoRun" { run("Refresh Jython List"); } と加えることで,ImageJ起動時に*.pyファイルのメニュー登録は自動的に行なわれるようになる.なお,このStartupMacros.txtはautoexec.batのような使われ方をする特別扱いのマクロファイルで,ImageJのツールバー設定なども行なっている.

Jythonは遅い印象だったが,インタプリタから簡単な文字列やリストの処理をするだけではとくに問題を感じなかった.そこで1024*1024の8bpsグレイスケール画像に対して,getPixelValue()とputPixelValue()を使った画素単位の反転処理を行なったところ,Java版が0.5秒以下なのに対し,Jython版では10秒以上を要した.やはり画像自体の処理は苦しそうだ.遅くてもいいメタなレベルの処理や,その場限りのマクロ書き(ImageJメニューのPlugins - Jython - Jython interpreterが便利そうだ)には向いていると思う.

JNI経由でImageJ/CPythonの方が実行速度は数倍良さそうだが,ImageJのクラス群を簡単にCPythonから利用できるようにする仕組みが思い浮かばない.ImageJは開発が活発なので手書きでインタフェイスを作るのは避けたい.JavaのことだからC/C++とのインタフェイスの自動生成ツールなどは多いにありそうだが,未調査.

ただ,「プラグイン」と呼んでいるものには,基本機能を組み合わせたマクロ的なものと,新たな画像処理アルゴリズムを提供する下請け的なもの,という両方の方向性がImageJではあるようなので,前者はJython等で密に結合させ,後者は簡素なインタフェイスを介して別プロセスとして動かす,という使い分けをするのが現実的かもしれない.
[PR]
# by edogawadai_bio | 2006-07-26 04:28 | img
OCaml関係
日本語で書かれたチュートリアル等
Objective Caml 入門. 詳しくて丁寧.
http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/mltext/ocaml.html
OCaml入門.簡潔.
http://ocaml.jp/archive/document/intro1.html
情報科学実験I ML演習.講義資料としてPowerPointファイルやソースが公開されている.MiniMLインタプリタ作成.
http://www.yl.is.s.u-tokyo.ac.jp/~kohei/lecture/caml-enshu/
プログラミングの基本 - Ocaml編. はいぱーワークブックという教育資料の17章4節でOCamlが使われている.
http://hwb.ecc.u-tokyo.ac.jp/
超特急: 一時間でわかるML超入門.MinCamlコンパイラ作者による.簡潔.
http://min-caml.sourceforge.net/index2.html
OCaml プログラミング入門.
http://www.i.kyushu-u.ac.jp/~bannai/ocaml-intro/
Ocamlについて.Functorやocamllex, ocamlyaccについても書かれている.
http://web.yl.is.s.u-tokyo.ac.jp/~ganat/ocaml/ocaml.html
初心者が書いた OCaml 入門.CやRubyとの比較.
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=19700102
本家のマニュアルの和訳.ありがたい.
http://ocaml.jp/archive/ocaml-manual-3.06-ja/

英語で書かれた解説等
本家のDocumentationページ.
http://caml.inria.fr/resources/doc/index.en.html
Developing Applications With Objective Caml.700頁くらい.PDFとHTMLで読める.もとはフランス語の本らしい.α-β探索によるゲームやネットワークプログラミングなど実例が載っている.
http://caml.inria.fr/pub/docs/oreilly-book/html/index.html
Introduction to the Objective Caml Programming Language.100頁くらいのチュートリアル.
http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf
Objective CAML Tutorial.Cとの比較を通じての紹介.
http://www.ocaml-tutorial.org/

他言語とのインタフェイス
SWIG.OCamlもサポートしていた.
http://www.swig.org/
Pycaml.Pythonとのインタフェイス.OCamlからPython C/APIがタプルをとる関数に見えるようだ.
http://pycaml.sourceforge.net/
perl4caml.Perlとのインタフェイス.
http://merjis.com/developers/perl4caml/
CamlJava.Cを介したJavaとのインタフェイス.JNIのthin wrapperっぽい.
http://pauillac.inria.fr/~xleroy/software.html#camljava
O'Jacare.OCamlからJava,JavaからOCamlが使えるらしい.上のCamlJavaが必要.
http://www.pps.jussieu.fr/~henry/ojacare/index.en.html

その他
ExtLib.本家に含まれていないが基本的なモジュール群.データ構造,入出力,文字列等.
http://ocaml-lib.sourceforge.net/
annexlib.ExtLibと同様のコンセプト.
http://raevnos.pennmush.org/code/annexlib/index.html
The Caml Hump.ラクダのコブ.OCamlで書かれたアプリやモジュールのリスト.
http://caml.inria.fr//cgi-bin/hump.en.cgi
CamlImages.画像ファイルの入出力と基本的な画像処理のモジュール.FloatのTIFFファイル等は残念ながら未対応.
http://pauillac.inria.fr/camlimages/
cairo-ocaml.ベクター描画ライブラリCairoへのインタフェイス.
http://www.cairographics.org/cairo_2docaml
GD4O.ラスター描画や画像ファイル入出力のライブラリGDへのインタフェイス.
http://gushee.net/matt/software/gd4o/
ImageMagick Binding for OCaml.ラスター描画や画像ファイル入出力のライブラリImageMagickへのインタフェイス.
http://www.linux-nantes.org/~fmonnier/OCaml/ImageMagick.php
OCamlplot.GNU plotutilsへのインタフェイス.
http://ocamlplot.sourceforge.net/
OcamlSDL.SDLへのインタフェイス.
http://ocamlsdl.sourceforge.net/home.html
PsiLAB.各種数値計算ライブラリへのインタフェイス等.NumPyやSciPyみたいなもの?
http://psilab.sourceforge.net/
FFTW, BLAS, LAPACK, Gnuplot等へのインタフェイス.
http://math.umh.ac.be/an/software.php
mod_caml,wiki,perl4caml,postgreSQL,CSV入出力等のモジュールやツール.
http://merjis.com/developers
hhl.Hidden Markov Modelsライブラリ.OCamlネイティブらしい.
http://connex.lip6.fr/~binsztok/hhld.html
BioCaml.
http://www.biocaml.org/

モジュールの多くは一人か少数で開発されているようで,中には何年もアップデートされてない状態のものや,完全ではないものもある.他の言語・ライブラリとのインタフェイスは時間の経過とともに動かなくなっている可能性も多いにある.また,PostScript出力やBLASへのインタフェイス等,重複してモジュールが存在するものもあった.
[PR]
# by edogawadai_bio | 2006-07-23 02:27 | comp
ImageJプラグイン等メモ
Colour Deconvolution.明視野での多重染色像(減色混合された画像)の各色素成分への分解を行なう.
http://www.dentistry.bham.ac.uk/landinig/software/cdeconv/cdeconv.html
3D Toolkit Plugins.VTKとMetaImageのファイル読み書き.
http://ij-plugins.sourceforge.net/ij-3D-toolkit.html
Visible Human Projectでの前処理プラグインと,ディレクトリの全画像ファイルへのバッチ処理プラグイン.
http://ciar.rcm.upr.edu/projects/imageJ
Spectral Unmixing Plugins.JAMA利用.
http://rsb.info.nih.gov/ij/plugins/spectral-unmixing.html
100以上のLUT.
http://rsb.info.nih.gov/ij/download/luts/luts.zip
Handle Extra File Types.主に顕微鏡や画像処理ソフトウェアの画像フォーマットの入力プラグイン.
http://rsb.info.nih.gov/ij/plugins/file-handler.html
PDF Viewer.PDFを読み込む.JPedal利用.
http://www.pensament.net/java/other_plugins.html#pdf_viewer
bilevel/grayscale morphologyや色処理.
http://www.dentistry.bham.ac.uk/landinig/software/software.html
k-meansによる色画像のmulti-level segment,maximum entropy threshold.
http://ij-plugins.sourceforge.net/plugins/clustering/index.html
Image I/O.LZWのTIFFや16bit PNGの入出力プラグイン.
http://ij-plugins.sourceforge.net/plugins/imageio/
joglを介したOpenGL利用例.
http://www.ulfdittmer.com/imagej/index.html
Gif Stack Writer.RGBと8bpsのアニメーションGIF出力.
http://rsb.info.nih.gov/ij/plugins/gif-stack-writer.html
SplineSnake.SNAKEによるsegment.
http://ip.beckman.uiuc.edu/Software/SplineSnake/
Daniel SageのBiomedical Imaging Groupのプラグイン群.焦点合成, 点の追跡, Matlab binding, SNR測定など.
http://bigwww.epfl.ch/sage/bioimaging.html
輝度補正や二値化など.
http://helios.univ-reims.fr/Labos/INSERM514/ImageJ/
OrtView.インタラクティブなstackデータのorthogonal viewer.
http://www.disi.unige.it/person/BerteroM/MedNuc/OrtView/OrtView.html
LOCI 4D Data Browser Plugin.XYZTデータのviewer.
http://www.loci.wisc.edu/4d/
LOCI Bio-Formats package.主に顕微鏡制御ソフトの画像フォーマットの入出力ライブラリとImageJ用プラグイン.
http://www.loci.wisc.edu/ome/formats.html
Radial Profile Plot.2Dフーリエ変換像等を扱う際に便利.
http://rsb.info.nih.gov/ij/plugins/radial-profile.html
stackデータの手動アラインメント補助や斜め切りをする.
http://www.med.harvard.edu/JPNM/ij/plugins/
NeuronJ.神経軸索の顕微鏡像を手動~自動で抽出する大規模なプラグイン.
http://imagescience.bigr.nl/meijering/software/neuronj/
Yet Another Wand for ImageJ 2D.2次元画像の手動領域抽出のためのマジックワンド.
http://yawi3d.sourceforge.net/
SurfCharJ.いくつかのテクスチャ特徴を計測する.
http://www.gcsca.net/IJ/SurfCharJ.html
基本的な形状特徴(CompactnessやRoundness)を計測する.
http://www.gcsca.net/IJ/Shapes.html
TrakEM2.連続切片画像のアラインメントや輪郭線手動抽出,立体構築などの統合的なプラグイン.
http://www.ini.unizh.ch/~acardona/trakem2.html
ImageJのDebianパッケージ.最新ではないが新しい.
http://www.personalweb.unito.it/paolo.ariano/imagej.html
UNIX環境用のImageJ起動スクリプト.画像ファイルをコマンドラインから開いたりできる.
http://rsb.info.nih.gov/ij/download/linux/unix-script.txt

* ImageJと関係ないライブラリ

Colt.Javaの幅広い数値計算パッケージ.
http://dsd.lbl.gov/~hoschek/colt/
JAMA: A Java Matrix Package.Javaの行列計算パッケージ.
http://math.nist.gov/javanumerics/jama/
Jampack(JAva Matrix PACKage).Javaの行列計算パッケージ.
ftp://math.nist.gov/pub/Jampack/Jampack/AboutJampack.html
ITK.National Library of Medicine Insight Segmentation and Registration Toolkit (ITK).2~高次元データのsegment等のオープンソースライブラリ.Visible Human Projectの一環.
http://www.itk.org/index.htm
jogl.java bindings for OpenGL.
https://jogl.dev.java.net/
ij-VTK.
http://ij-plugins.sourceforge.net/ij-vtk/index.html
JPedal.Java PDF development tools.
http://www.jpedal.org/
VisBio.Javaによる3~高次元画像処理ソフトウェア.
http://www.loci.wisc.edu/visbio/
VolPack.C/C++用のvolume rendering library.
http://www-graphics.stanford.edu/software/volpack/
JDEE:Java Development Environment for Emacs.Java開発用Emacsマクロ.
http://jdee.sunsite.dk/
http://www.02.246.ne.jp/~torutk/jdee/jdee.html

* プラグイン作成メモ

ウインドウの絶対座標を指定する.
WindowManager.getFrame("Window Title").setLocation(x, y)

"Save changes?"ダイアログを出さずにwindowを閉じる.
imp.changes = false;
imp.close();

LUT適用.
at macro: run("Fire");

raw bytesデータからToolkitを介してImagePlus化.
Image img = Toolkit.getDefaultToolkit().createImage(bytes);
new ImagePlus("title", img).show();
ただしRGBデータのみ.

* 論文

Hiraoka Y, Sedat JW, Agard DA (?) Determination of three-dimensional imaging properties of a light microscope system. Partial confocal behavior in epifluorescence microscopy. Biophys J 57: 325-333.

Ruifrok AC, Johnston DA (2001) Quantification of histological staining by color deconvolution. Anal Quant Cytol Histol 23: 291-299.

Howard, Reed () Unbiased Stereology
Peter Mouton () Principles and Practices of Unbiased Stereology
Stereologyの本.2枚の切片や1枚の厚い切片から定量的な立体解析を行なう.

Camp et al (2002) Nature Medicine 8: 1323-1328.
RESA (rapid exponential subtraction algorithm) によるouf-of-focus像の除去.

Sezgin M, Sankur B (2004) Survey over image thresholding techniques
and quantitative performance evaluation. J Electronic Imaging 13: 146-165.
http://www.busim.ee.boun.edu.tr/~sankur/SankurFolder/Threshold_survey.pdf
数十種類のthresholding法の紹介と比較

Della Mea V, Viel F, Beltrami CA (2005) A pixel-based autofocusing technique for digital histologic and cytologic slides. Computerized
Medical Imaging and Graphics 29(5): 333-341.

各種基本アルゴリズムの論文紹介.Cソースも少し.
http://emre.uta.edu/ImageProcessingComputerVisionSoftware.htm
[PR]
# by edogawadai_bio | 2006-07-20 20:06 | img
ImageJ/Jython
ImageJからJytyonを動かし,PythonでImageJを操作するためのプラグイン.
http://www.pensament.net/java/other_plugins.html#jython

以前,JNIとPython用C拡張をあわせてImageJ用プラグインの類をPythonで書こうとしたがリンクがうまくうかないので放置し,結局現在はImageJからPythonインタプリタを起動してファイル経由で画像やパラメタを入出力するという面白くない状態なので,折を見てImageJ/Jythonを試したい.JythonはCPythonやJavaに輪をかけて遅い印象があるが,プラグインを組み合わせるような高次な部分で使うぶんには問題にならないことを期待.
[PR]
# by edogawadai_bio | 2006-07-20 19:10 | img
ImageJプラグインを作る会社
ImageJプラグインをオーダーメイドで作ってくれる会社を見つけた.
http://www.optinav.com/imagej.html
解析画像のサンプルと欲しい機能についての記述をemailで送り,費用や開発期間の見積もりをしてから(Short, Tall, Grandeというランク分けでそれぞれ$200, $1000, $2000.なぜか喫茶店みたいな名前),プラグインを作ってもらうようだ.サポート期間は30日で,ソフトウェアはBSDライセンスらしい.フリーのプラグインも公開している.既存のプラグインを例にして,それがShortなのかGrandeなのかを示してあると,注文を考える際にいいなと思う.
[PR]
# by edogawadai_bio | 2006-07-20 18:54 | img
RGBケーブル補償器
Imagenics アナログRGBケーブル補償器 (Dsub 15pin) CAE-70D
1IN 2OUT; ケーブル長 10~70 m; 2.6 kg; 210*44*230 mm; 12万円
http://www.imagenics.co.jp/html/category/data/a_rgb-cae.htm
25mのケーブルで試用させてもらったところ,減衰して暗かったのがかなり明るくはなった.
[PR]
# by edogawadai_bio | 2006-05-27 23:58 | img
cygwinでの~/.emacs
;;; 不用意にterapadで保存すると\が¥に変換されてしまうので注意.
(set-language-environment "Japanese")

(create-fontset-from-request "tt16"
'((width . 8) ; フォントの幅(ピクセル)
(height . 16) ; フォントの高さ(ピクセル)
(weight . 400) ; フォントの太さ(通常400,ボールドで700)
(fixed . t) ; tで等幅
(italic . nil)) ; tでイタリック
'((family . "MS ゴシック") ; フォントファミリ
(family . "Courier New")))

(setq default-frame-alist (append (list
;'(font . "tt16") ; フォントセット
'(width . 80) ; 一行の字数
'(height . 59) ; 行数
'(left . 595) ; ディスプレイのX座標
'(top . 29) ; ディスプレイのY座標
'(background-color . "black") ; 背景の色
'(foreground-color . "white") ; 文字の色
'(cursor-color . "green") ; カーソルの色
) default-frame-alist))

; font-lockの設定
(if window-system (progn
(setq font-lock-support-mode 'lazy-lock-mode)
(global-font-lock-mode t)))
(setq font-lock-support-mode
'((emacs-lisp-mode . jit-lock-mode) ;; モードによって切りかえたい時
(c++-mode . fast-lock-mode)
(t . jit-lock-mode))) ;; デフォルト
;;コメントの色
;(set-face-foreground 'font-lock-comment-face "medium purple")
;;name の色
(set-face-foreground 'font-lock-function-name-face "LightSkyBlue")

;; Cygwinのbashを利用
(setq explicit-shell-file-name "C:/cygwin/bin/bash.exe")
(setq shell-file-name "sh.exe")
(setq shell-command-switch "-c")
;; argument-editing の設定
(require 'mw32script)
(mw32script-init)
(setq exec-suffix-list '(".exe" ".sh" ".pl"))
(setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@`'.:()-")

;; SHELLで^Mが付く場合は^Mを削除
(add-hook 'shell-mode-hook
(lambda () (set-buffer-process-coding-system 'undecided-dos 'sjis-unix)))
;; shell-modeでの補完 (for drive letter)
(setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@`'.,:()-")

;;; SKK
(setq skk-egg-like-newline t) ;; 変換時,改行でも確定
(setq skk-japanese-message-and-error t) ;; メッセージは日本語で
(setq skk-auto-insert-paren t) ;;"「"を入力したら"」"も自動で挿入
(setq skk-check-okurigana-on-touroku t) ;;漢字登録のミスをチェックする
(setq skk-kuten-touten-alist '((jp . ("。" . "、" )) (en . ("." . ",")))) (setq-default skk-kutouten-type 'en)
(setq skk-number-style nil) ;; @で挿入する日付表示を半角に
(setq skk-show-tooltip t) ;; 変換候補をツールチップに表示
(setq skk-show-inline t) ;; 変換候補をインラインに表示
(setq skk-isearch-start-mode 'latin) ;; isearch時にSKKをオフ
(setq skk-henkan-face 'underline)
(setq skk-auto-insert-paren nil)
(setq skk-auto-okuri-process nil)
(setq skk-date-ad t) ;自動日付入力の西暦化
(setq skk-dcomp-active t)
(setq skk-large-jisyo nil)
(setq skk-server-host "127.0.0.1" skk-portnum 1178)
(setq skk-latin-mode-string "a")
(setq skk-hiragana-mode-string "あ")
(setq skk-katakana-mode-string "ア")
(setq skk-jisx0208-latin-mode-string "a")

;; モード名を短くする
(add-hook 'texinfo-mode-hook '(lambda () (setq mode-name "Texi")))
(add-hook 'lisp-interaction-mode-hook '(lambda () (setq mode-name "Lisp-Int")))
(add-hook 'emacs-lisp-mode-hook '(lambda () (setq mode-name "Elisp")))
(eval-after-load "encoded-kb"
'(setcar (cdr (assq 'encoded-kbd-mode minor-mode-alist)) ""))
(add-hook 'isearch-mode-hook
'(lambda () (setcar (cdr (assq 'isearch-mode minor-mode-alist)) "")))

(setq display-time-string-forms
'(month "/" day " " 24-hours ":" minutes))
(display-time)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; all lines below are derived from ~/.emacs of Linux box (su7d1)
(setq load-path (cons (expand-file-name "~/elisp") load-path))
;;; 編集モード設定
(setq default-major-mode 'indented-text-mode)
;(setq initial-major-mode 'indented-text-mode)
(setq completion-ignored-extensions (append
(list ".ps" ".gif" ".dvi" ".lzh" ".jpg" ".jpeg" ".gz" ".deb"
".zip" ".mid" ".mod" ".mp3" ".o" ".tar.gz" ".gz" ".tgz"
".pyc" ".pyo" ".a" ".tar.bz2" "bz2")
(if (boundp 'completion-ignored-extensions)
completion-ignored-extensions)))
(setq next-line-add-newlines nil) ;C-nで新たな行をつくらない(nil)
(setq track-eol t)
(setq require-final-newline t)
(line-number-mode 1)
(column-number-mode 1)
(setq scroll-step 1)
(setq scroll-conservatively 1)
(setq-default truncate-lines nil) ;行の折り返し表示 nil:する t:しない($)
(setq transient-mark-mode 1);リージョンを色付きで
(set-face-background 'region "blue")
(setq make-backup-files nil);バックアップ(foo~)をつくらない
(setq auto-save-default nil);.saves-...をつくらない
(setq auto-save-list-file-name nil)
(setq auto-save-list-file-prefix nil)
(setq-default dired-listing-switches "-alF")
(setq mouse-yank-at-point t) ;カーソル位置に貼り付け
(tool-bar-mode nil) ;disable tool-bar
(blink-cursor-mode 0) ;stop cursor blink
(setq cursor-in-non-selected-windows nil); disable cursor of non-active window
(setq frame-title-format (format "Meadow: %%f")) ;;; タイトルバーにファイル名を表示する
;;; キーバインド
(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\M-g" 'goto-line)
(global-set-key "\M-n" 'expand-abbrev)
(global-set-key "\C-x'" 'just-one-space)
(global-set-key "\M- " 'dabbrev-expand)
(global-set-key "\M-/" 'expand-abbrev)
(eval-after-load "abbrev" '(global-set-key "\M-/" 'expand-abbrev))
(global-set-key [S-right] 'forward-word)
(global-set-key [S-left] 'backward-word)
(global-set-key [S-up] 'backward-paragraph)
(global-set-key [S-down] 'forward-paragraph)
(global-set-key [f11] 'call-last-kbd-macro)
(global-set-key [f12] 'next-error)
(setq inhibit-startup-message t) ; Don't Display Startup Message
(setq initial-scratch-message nil)
(iswitchb-default-keybindings) ; C-x b で buffers を選ぶ時便利
(resize-minibuffer-mode)
(add-hook 'find-file-not-found-hooks 'new-file-p) ;;; new fileをopenする際,確認を求める
(defun new-file-p ()
(interactive)
(or (y-or-n-p (format "\"%s\": not found. Do you want to create new file?" buffer-file-name))
(keyboard-quit)))
;;; 書込時のフック
(setq write-file-hooks '(lambda nil (trim-eob) (trim-buffer)))
(defun trim-region (start end) "リージョン中の行末の無駄な空白を消去"
(interactive "r") (save-excursion (save-restriction
(narrow-to-region start end) (goto-char start)
(replace-regexp "[ \t]+$" ""))))
(defun trim-buffer nil "バッファ中の行末の無駄な空白を消去"
(interactive) (save-excursion
(mark-whole-buffer) (trim-region (region-beginning) (region-end)) ))
(defun trim-eob nil "バッファの最後に溜った空行を消去"
(interactive) (save-excursion (progn (goto-char (point-max))
(delete-blank-lines) nil)))
[PR]
# by edogawadai_bio | 2006-05-14 23:30 | comp
cygwinでの~/.bashrc
umask 022
set -o notify
set -o ignoreeof
shopt -s histappend

HISTIGNORE="[ ]*:&:bg:fg:exit"
HISTCONTROL=ignoredups
HISTFILESIZE=5000
HISTSIZE=5000
COMP_TAR_INTERNAL_PATHS=1

export BZIP2="-9"
export CHECKEROPTS="--disp-args -o=CHECKER -p -v --Wfree-null -t"
#export EDITOR="emacsclient"
export GZIP="-9"
export JAVA_HOME=`cygpath -w "C:\Program Files\Java\jdk1.5.0_01"`
export LANG=C
export LESS="-Mrfix8Xd"
export LS_COLORS='no=0:fi=0:di=36:ex=31:ln=0:pi=33:so=35:do=35:bd=33:cd=33:or=31';
export PAGER="/usr/bin/less"
export PROMPT_COMMAND="history -a"
#export RSYNC_PATH="ssh"

alias ..='cd ..'
alias c='less -x4'
alias cp='cp -iav'
alias df='df -h'
alias dif='diff -burN'
alias du='du -h'
alias free='free -m'
alias gdb='gdb -silent'
alias hex='od -Ax -tx1'
alias his='history'
alias indent='indent -kr -ts255'
alias j='jobs -l'
alias loc='locate'
alias mv='mv -i'
alias open='/bin/cygstart'
alias p='python'
alias pd='pushd'
alias po='popd'
alias s='less'
alias sss='sync; sync; sync'
alias sym='nm \!* | cut -b 10- | egrep "^[TU] " | sort'
alias top='top d 1'

# about grep
alias grep='grep --color=AUTO'
alias g='grep -i'
alias G='grep'
alias gn='grep -in'
alias gv='grep -v'

# about ls
alias ls='ls -hF --show-control-chars --color=auto'
alias l='ls'
alias la='ls -a'
alias ll='ls -l'
alias lla='ls -al'

complete -d cd
complete -c man

# function settitle() { echo -ne "\e]2;$@\a\e]1;$@\a"; }

if [ $TERM == dumb ]
then PS1='$?$SHLVL:\w\$ '
else PS1='$?:\w\$ '
fi
[ $TERM = cygwin ] && TERM=cygwinB19
function ff { diff $1~ $1 ; }
function ffc { diff -c $1~ $1 ; }
function va { v -a "$@" | more ; }

function edit() { 'C:\\OPT\\tpad089a\\TeraPad.exe' `cygpath -w $*` & }
function emacs() { 'C:\\OPT\\Meadow\\bin\RunMW32.exe' `cygpath -w $*` & }
[PR]
# by edogawadai_bio | 2006-05-14 23:18 | comp
外付けHDD
湯島で物理の話を聞く.新鮮な気持ちになった.帰りに秋葉原に寄りHDDを買う.日立のHDT722525DLAT80 (PATA, 250 GB, 3.5 inch) で 9180円だった.先日壊れたHDX-UE300のガワ(AC電源とIEEE1394 or USB/PATA変換基板が一緒になっている)に入れたところ,とくに問題なく使えるようだ.
[PR]
# by edogawadai_bio | 2006-05-14 23:05 | comp
ImageJ設定ファイル: IJ_Props.txtとIJ_Prefs.txt
ImageJの設定ファイル,IJ_Props.txtとIJ_Prefs.txtについて.

IJ_Props.txt

ImageJの起動時に読込まれる設定ファイルで,普通はij.jar内にアーカイブされているものが利用される.ImageJはこのファイルを読込むだけであり,書換えは行なわない.ij.jar内からIJ_Props.txtを外したり,ソース(Prefs.java)を改変すると,メニューについてカスタマイズがIJ_Props.txtを編集するだけで可能.とくにFile/Open Samples,右クリックメニューはカスタマイズしがいがある.また,メニューのPlugins/Shortcuts/*では割り振ることのできないショートカットキーも,IJ_Props.txtを編集することで利用可能.

IJ_Prefs.txt

ImageJの起動時に読込まれ,終了時に書き出される設定ファイル.主に各ユーザによる設定内容を保存する.無い場合には終了時に作られる.起動時には imageJ.main() → imageJ.ImageJ() → Prefs.load()でIJ_Props.txt読込 → Pres.loadPreferences()でIJ_Prefs.txt読込,という流れで設定ファイルが読込まれる.

ImageJの実行中は各プラグイン等によってPrefs.get*()やPrefs.set*()で各設定項目の参照ないし更新が行なわれる.組込みのプラグインでなくとも,これらのメソッドを使うことでIJ_Prefs.txtに独自のフィールドを設け,参照することができる.なお設定ファイル中ではこのような非組込みプラグインの設けたフィールド名の先頭に"."が自動的につけられている(おそらく組込みプラグインの利用するフィールドの衝突回避のため).

終了時には imageJ.quit() → Prefs.savePreferences() ImageJ組込プラグイン(例えばplugin/filter/ParticleAnalyzer)等のsavePreferencesメソッド呼出によるstaticフィールド書出準備 → Prefs.savePrefs() によってIJ_Prefs.txt が更新される.IJ_Props.txt はImageJによって改変されることはない.

初期状態は以下の項目が記録されている.

fps=7.0
Image/Stacks/Animation Options.../Speed で設定するstack画像のアニメーション表示におけるコマ送り速度.単位はframe/second.

new.type=0
new.width=400
fcolor=#000000
gel.options=2
div-by-zero=Infinity
pp.options=1
raw.type=0

ij.y=32
ImageJ終了時におけるメインウインドウの画面上の場所(Y座標.単位はピクセル).Xではxwininfoの-geometryでの値と同じ.(少なくともXでは)次回の起動時の場所とは限らない.

roicolor=#FFFF00

ij.x=441
ImageJ終了時におけるメインウインドウの画面上の場所(X座標.単位はピクセル).

ap.bins=20
noise.sd=25.0
prefs.options=2
new.slices=1
raw.width=512
new.height=400
new.fill=0
bcolor=#FFFFFF
ap.options=64
measurements=19
precision=3
mark.width=0
raw.gap=0
raw.height=512
raw.options=0
new.name=Untitled
raw.n=1
jpeg=75
raw.offset=0

以下はImageJ上で設定したり作業すると必要に応じて作られる項目.

dir.image=/foo/bar
最後に開いた画像ファイルのディレクトリ.

plugin00=h,"*foo[B]",ij.plugin.Hotkeys("foo")

Plugins/Shortcuts/Create Shortcut で登録したショートカット(ホットキー).
[B]がショートカットを示す.IJ_Props.txtで既に設定されているものは使えない.

plugin01=p,"bar[H]",bar

Plugins/Shortcuts/Install Plugin で登録したプラグイン."="の次の文字(上記例ではp)はメニューにおける配置を決めている.定数ij/Menus.*_MENUとして定義されており,以下の通り.

p: Plugins/
i: File/Import/
s: File/Save as/
h: Plugins/Shortcuts/
a: Help/About Plugins/
f: Process/Filters/
t: Analze/Tools/
u: Plugins/Utilities/

recent00=/home/maro/wc/ijp/ss-col-mf-vm-03.gif
最近 File/Openで開いた画像ファイル.File/Open Recentにあらわれる.
[PR]
# by edogawadai_bio | 2006-05-14 03:04 | img
alias
alias dif diff -burN #よく使うので.
alias import import_ #Pythonインタプリタ中と勘違いしてimportを入力するとImageMagickのキャプチャが実行して混乱するので.
[PR]
# by edogawadai_bio | 2006-05-14 02:47 | comp
Let's Note; tune2fs
半月くらいT1に代わりR4を持ち歩いているが,Linuxではサスペンドができず,電源を入れるたびにブートプロセスが終わるのを待たねばならない.ファイルシステムマウント時のディスクチェックで不意に起動が遅くなるのを避けることにした.
sudo tune2fs -c -1 /dev/hda2
sudo tune2fs -i 0 /dev/hda2
[PR]
# by edogawadai_bio | 2006-05-14 02:46 | comp
HDD故障
2年くらい使っていた外付けHDD,IO-DATA HDX-UE300 がカランコロンと音を立てて壊れた.この1月ほど壊れそうな音をときどき立てて予告してくれていたので,心の準備はできていたが….IEEE1394でメインマシンに常時接続していたが,USB接続の他の外付けHDDに比べてレスポンスや転送速度が高く,認識も安定していてよいドライブだった.

中身を取り替えて再利用しようと開けてみた.上下のプラスチック板と側板の間をこじあけると後はネジを外すだけだった.中身は Maxtor MaxLineII 5A300J0 だった.実働時間はMTTF(100万時間らしい)の2%以下だったのか….
[PR]
# by edogawadai_bio | 2006-05-14 02:16 | comp
AntによるImageJ構築(Windows)
これまでImageJ自体をいじる際には,改変対象のjavaファイルそれぞれについてコンパイルとクラスファイルツリー上へのコピーを行ってきたが,効率化のためJava版makeらしいAntを使うことにした.この類のビルドツール?はmakeしか使ったことがなく,Antも名前しか知らなかったが,すでにAnt用のbuild.xmlがImageJのソースファイルに入っており,また親切なことに
http://rsb.info.nih.gov/ij/download/tools/ant/ant.zip
にWindows+ImageJ用に設定されたAnt自体が置いてあったため導入は容易だった.

まずあらかじめ,J2SE5を導入しておく.これはデフォルトのC:/Program Files/下に導入した.

http://rsb.info.nih.gov/ij/download/src/
から最新のソースアーカイブファイル(現時点はij137f-src.zip)を入手し,展開.ディレクトリ名を
C:/opt/ImageJ/src/...
に変更した.また,build.xmlも下記のように編集した.
* "MANIFEST.MF"を小文字にした(そのままだとLinuxでエラーになった).
* build-localというターゲットを作った.build後,ij.jarをソースツリーの上(C:/opt/ImageJ)にコピー.
* デフォルトの挙動をrunからbuild-localに変更.

Windows/ImageJ用設定が含まれているAnt
http://rsb.info.nih.gov/ij/download/tools/ant/ant.zip
を C:/opt/ImageJ/ant/ に展開.C:/opt/ImageJ/ant/bin/ant.bat の冒頭を以下のように書き換える.
set ANT_HOME=C:\opt\ImageJ\ant
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_06
また,cygwinからはbin/ant.batとbin/ant(これはシェルスクリプト)の両方とも実行できてしまい混乱のもとなので,後者はrenameした.

JREなしのWindows用ImageJインストーラである
http://rsb.info.nih.gov/ij/download/win32/ij136-nojre-setup.exe
をインストール.C:/Program Files/ImageJ/ 下の各種ファイル(LUTsとかMacrosとか)を C:/opt/ImageJ/ にコピー.不要になったC:/Program Files/ImageJ/* はアンインストールした.

ImageJ.exeからImageJを起動できるようにImageJ.cfgを編集.プラグインの場所はデフォルトでは C:/opt/ImageJ/plugins/ だが -Dplugins.dir で変更可能.

これでImageJ自体の編集~実行はコマンドプロンプト上から,
C:\opt\ImageJ\src> edit IJ\ImageJ.java # ソースをいじる
C:\opt\ImageJ\src> ..\ant\bin\ant[.bat] # 構築とij.jarの..へのコピー
C:\opt\ImageJ\src> ..\ImageJ[.exe] # 実行
という感じになった.

コマンドライン以外ではNetBeansが利用できたとの報告をMLで見た.eclipseでも試みた人がいたようだが苦戦していたようだ.
[PR]
# by edogawadai_bio | 2006-05-14 01:50 | img
cygwin
いくつか国内ミラーサイトを試したところ,パッケージダウンロードはring.asahi-net.or.jpが安定しているようであった.
[PR]
# by edogawadai_bio | 2006-05-11 17:08 | comp
movファイルからstack tifへ
WindowsマシンにてQuickTime動画像ファイル(拡張子mov)をImageJ可読に変換後,処理する必要が生じた.ImageJ用のplugin(QuickTime OpenerとAVI Reader)はうまくいかなかったため,foo.mov → (QTConverter 1.3.0) → foo.avi → (VirtualDub 1.6.14) → foo*.bmp としてフレームごとの連番ファイルを得て,ImageJのFile/Import/Import Sequence... で読み込んだ.
[PR]
# by edogawadai_bio | 2006-05-11 00:25 | img
背景輝度の勾配の平滑化
背景輝度の空間分布にはしばしば勾配がみられる.主な原因は光学系にあるが,蛍光像の場合は培地が弱い蛍光を発する場合にも起こる.この「背景勾配」は,輝度の値にもとづいて目的の領域を得る際に支障になる.単純な解決法は何も視界に捉えていない背景画像を撮像しておき,他の画像から差し引くことである.その際,露光時間が背景輝度に関係するため,露光時間を揃えるか,引き算の前に輝度をスケーリングする必要がある.また,背景勾配の原因が培地等の蛍光に由来する場合,勾配パターンは時間経過やサンプルごとに変化するため正しい背景画像を得るのは困難である.

撮影時に負担のない方法として,蛍光画像から背景画像を推定し,それを原画像から差し引くというアプローチがある.とくに単純かつ高速な背景画像の推定法として,縮小→salt&pepperノイズ除去→ランクフィルタ(蛍光像なら最小値,コントラスト像なら中央値)→low passフィルタ→拡大がある.縮小しているのはランクフィルタの計算量を抑えるためで,low passフィルタはランクフィルタの出力に含まれるエッジがアーティファクトになるのを防ぐため.

ランクフィルタのサイズは,被写体の大きさより一回り大きいとうまくいくはずではあるが,推定された背景画像を見て主観的に決めた方が確実.小さすぎると被写体の内部に,大きすぎると被写体と背景の境界に,それぞれアーティファクトを生じる.自動化する場合,カーネルサイズを大きくするにつれて輝度の分散が低下し,背景の推定が正しくなってくると分散の減少がなまってくる性質を利用するとよい.
b0095474_0191755.jpg


左から原画像,推定背景画像,背景平滑化像.下段はそれぞれの画像の右上から左下にかけての輝度プロファイル.
[PR]
# by edogawadai_bio | 2006-05-10 00:21 | img
Chamfer Matching
骨格化や輪郭抽出によって得られるような,線分からなる画像同士をマッチングする際に,前もって距離変換する手法?

(普通の画像)
(↓)
骨格画像や輪郭画像のような線画像

距離画像

マッチング

例えばマッチングの際の画像間の類似性の尺度に相関係数を用いた場合,距離変換によって相関関数のピークの肩が広がり探索にとって都合がよい?? 線画像のトポロジーの影響が大きいため,安定した線画像化法が必要そう.
[PR]
# by edogawadai_bio | 2006-05-09 23:30 | img
ImageJ本
Burger W, Burge MJ (2006) Digitale Bildverarbeitung. Eine Einfuehrung mit Java und ImageJ; ISBN 3540309403

の英訳の出版は2006年11月頃になるらしい.以前は4月に出る予定だったので,また遅れるかもしれないが….

ソースコードは
http://www.imagingbook.com/
からemail経由で入手可能.コメントは幸い独語ではなく英語で書かれている.
[PR]
# by edogawadai_bio | 2006-05-09 23:21 | img
大津の判別分析法にもとづくグレイスケール画像の高速多値化
ImageJ MLで紹介されていた

Liao PS, Chen TS, Chung PC (2001) A fast algorithm for multilevel thresholding. J Info Sci Eng 17: 713-727.

の実装がImageJ本家にプラグインとして置いてあるのを見つけた.
http://rsb.info.nih.gov/ij/plugins/multi-otsu-threshold.html

8bitグレイスケール用で,指定した1〜4つの閾値を求める.ただし画像生成部分で閾値と画素の輝度との比較の判定に等号が抜けており,得られる画像を足しあわせるとちょうど閾値相当の画素が黒く欠けてしまう.

b0095474_0172789.jpg

4値化の例.左は原画像by2dapi-8(512*512 pixel, 8bits/pixel),右は4値化像の擬似色表示像.計算はAthlon64 3500+/Linux/SunJ2SE5環境で3.5秒かかった.
[PR]
# by edogawadai_bio | 2006-05-09 23:03 | img
モノクロレーザープリンタ ブラザー HL-2040
モノクロレーザープリンタ,ブラザーのHL-2040を自宅用に購入した.これでわざわざ研究室まで行かなくてもいろいろプリントアウトできる.やはり電気食いらしく,使っていると部屋の蛍光灯がたまに暗くなったりする.スリープモードに入るとファンも止まるため,電源ONにしてたことを忘れる.スリープからの復帰は宣伝の通り速やか.しかし結局うちでは電源を切っておく.
http://www.brother.co.jp/jp/printer/info/hl2040/hl2040_ove.html
[PR]
# by edogawadai_bio | 2006-03-18 04:02 | comp
ポリゴンデータレンダラ in sarge
ポリゴンデータのレンダリングには,かつてはOpenDX(IBM由来),最近はmayavi(Vtk系)かamira(市販品. OpenInventor系)を使ってきた.他に何か選択肢は無いものかと思い,手元のDebian sarge(3.1)でパッケージ化されてるものを漁った.

まずgeomview.3Dレンダラとして有名なようだが,残念ながら手持ちのフォーマットに対応してなかった.OFFフォーマットが読めるようなので,そのうちSPLY→OFFを作ろうと思う.パッケージのDependsによればMotif(or lesstif)とXFormsのライブラリに依存している.両方使うGUIなんてのもあるのか….Windowsでもcygwin下でmakeすれば動くらしい.

aqsis, k3dもパッケージから導入した.これらはRenderManフォーマット(rib)を読めるが,手持ちのデータ(数百k faces)だと分オーダーで待たされる.結局レンダリングまで調べなかった.aqsisはコマンドラインベースっぽい.k3dはaqsisをレンダリングエンジンとして使うことができ,ツールキットはGtk.

* OpenDX; http://www.opendx.org/
* Amira; http://www.amiravis.com/
* mayavi; http://mayavi.sourceforge.net/
* geomview; http://www.geomview.org/
* aqsis; http://www.aqsis.com/
* k3d; http://www.k-3d.org/
[PR]
# by edogawadai_bio | 2006-03-08 04:05 | img
立体再構築〜描画の手順
自分で作ったのにいっこうに覚えられないのでメモ.

% cd wc/now/rrrrr.1.0.0
% ./img2scnt.py ~/tmp/foo*.tif
=> OUT.scnt
% mv OUT.scnt ~/tmp/foo.scnt
=> foo.scnt
% ./scnt.py -s 0.064935 -z 0.5 ~/tmp/foo.scnt

## 3-D reconstruction
% ./scnt2sply_sf.py -r 2 ~/tmp/foo.scnt
=> foo.dt.sply

## plygon format conversion
% ./sply.py -o VTK ~/tmp/foo.dt.sply
=> foo.dt.vtk
% ./sply.py -o DX ~/tmp/foo.dt.sply
=> foo.dt.dx
% ./sply.py -o DXF ~/tmp/foo.dt.sply
=> foo.dt.dxf

## rendering
% mayavi
- File/Open/VTK file: foo.dt.vtk
- Visualize/Modules/PolyData
- Visualize/Filters/PolyDataNormals
-- ComputePointNormalsOn
-- ConsistencyOn
-- or
-- AutoOrientNormalsOn
-- ComputePointNormalsOn
-- ConsistencyOn
-- FlipNormalsOn
- Options/Configure Lights/Raymond
- File/Save Scene to/TIFF image
[PR]
# by edogawadai_bio | 2006-03-07 23:11 | img
libnvidia-tls.so.1: cannot handle TLS data
sargeにて久しぶりにLinux/X用mayaviを使おうとすると起動に失敗した.

% mayavi
Traceback (most recent call last):
File "/usr/bin/mayavi", line 288, in ?
import mayavi
File "/usr/lib/python2.3/site-packages/mayavi/__init__.py", line 5, in ?
import Common, Base.Objects
File "/usr/lib/python2.3/site-packages/mayavi/Base/__init__.py", line 19, in ?
import Objects
File "/usr/lib/python2.3/site-packages/mayavi/Base/Objects.py", line 20, in ?
import Tkinter, vtkpython, math, tkColorChooser
File "/usr/lib/python2.3/site-packages/vtk_python/vtkpython.py", line 7, in ?
from vtk import *
File "/usr/lib/python2.3/site-packages/vtk_python/vtk/__init__.py", line 43, in ?
__helper.refine_import_err('rendering', exc)
File "/usr/lib/python2.3/site-packages/vtk_python/vtk/__helper.py", line 15, in refine_import_err
raise LinkError, str(exc)
vtk.__helper.LinkError: libnvidia-tls.so.1: cannot handle TLS data
1で終了しました

Pythonインタプリタでimport vtkしても同じ例外エラーになった.

% python
Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import vtk
Traceback (most recent call last):
File "", line 1, in ?
File "/usr/lib/python2.3/site-packages/vtk_python/vtk/__init__.py", line 43, in ?
__helper.refine_import_err('rendering', exc)
File "/usr/lib/python2.3/site-packages/vtk_python/vtk/__helper.py", line 15, in refine_import_err
raise LinkError, str(exc)
vtk.__helper.LinkError: libnvidia-tls.so.1: cannot handle TLS data

% locate libnvidia-tls.so.1
/usr/lib/libnvidia-tls.so.1 (sym link)
/usr/lib/libnvidia-tls.so.1.0.7174
/usr/lib/nvidia/libnvidia-tls.so.1.0.7174
/usr/lib/tls/libnvidia-tls.so.1 (sym link)
/usr/lib/tls/libnvidia-tls.so.1.0.7174 (sym link)

サイズの違う実体が2つあったので逆を参照するようにしたら動いた.いつのまに2つになったか不明.
[PR]
# by edogawadai_bio | 2006-03-07 22:29 | img
"30日でできる! OS自作入門
大宮ジュンク堂に行く."/.J"などで話題になっていた,
川合秀実 (2006) 30日でできる! OS自作入門, 毎日コミュニケーションズ
を買う.

ぱらぱらめくっただけだが,会話調な親しみやすい文章,多岐にわたる内容,豊富な文章量,と良い感じだ.直線の描画,FATの読み書き,ビープ音によるMML再生…といった箱庭チックかつ現場的な話題は,DOSが幅をきかせていた"古き良き"時代を思い起こさせる.イラストも著者本人の手によるものらしいが,これまた吾妻ひでおや小山田いくみたいな懐しい絵柄で,最近の「萌え本」的な押しつけがましさと一線を画しており好感をもった.総じて,コンパクトなGUI+OSを話の軸にして,WindowsやWeb以前をふりかえる本なのかもしれない.OS本という点では,「はじめて読む80486」などで x86 アーキテクチャの概念を整理してから読んだ方がわかりやすそうだ.

ついでに著者の開発・公開しているコンパクトなOS,osaskも試してみる.久しぶりに聴くフロッピーディスクのシーク音に癒やされる.
http://osask.jp/

同OSは未踏ユースに竹内郁雄先生をPMとして選ばれたこともあるようだ.
http://www.ipa.go.jp/NBP/14nendo/14youth/mdata/2-3.htm
[PR]
# by edogawadai_bio | 2006-03-06 22:12 | comp